diff --git a/Godeps/Godeps.json b/Godeps/Godeps.json
index 0989c3a65759..7c70406ff2fb 100644
--- a/Godeps/Godeps.json
+++ b/Godeps/Godeps.json
@@ -23,33 +23,38 @@
},
{
"ImportPath": "github.com/Azure/azure-sdk-for-go/arm/compute",
- "Comment": "v11.1.1-beta",
- "Rev": "509eea43b93cec2f3f17acbe2578ef58703923f8"
+ "Comment": "v12.4.0-beta",
+ "Rev": "f111fc2fa3861c5fdced76cae4c9c71821969577"
},
{
"ImportPath": "github.com/Azure/azure-sdk-for-go/arm/containerregistry",
- "Comment": "v11.1.1-beta",
- "Rev": "509eea43b93cec2f3f17acbe2578ef58703923f8"
+ "Comment": "v12.4.0-beta",
+ "Rev": "f111fc2fa3861c5fdced76cae4c9c71821969577"
},
{
"ImportPath": "github.com/Azure/azure-sdk-for-go/arm/disk",
- "Comment": "v11.1.1-beta",
- "Rev": "509eea43b93cec2f3f17acbe2578ef58703923f8"
+ "Comment": "v12.4.0-beta",
+ "Rev": "f111fc2fa3861c5fdced76cae4c9c71821969577"
},
{
"ImportPath": "github.com/Azure/azure-sdk-for-go/arm/network",
- "Comment": "v11.1.1-beta",
- "Rev": "509eea43b93cec2f3f17acbe2578ef58703923f8"
+ "Comment": "v12.4.0-beta",
+ "Rev": "f111fc2fa3861c5fdced76cae4c9c71821969577"
},
{
"ImportPath": "github.com/Azure/azure-sdk-for-go/arm/storage",
- "Comment": "v11.1.1-beta",
- "Rev": "509eea43b93cec2f3f17acbe2578ef58703923f8"
+ "Comment": "v12.4.0-beta",
+ "Rev": "f111fc2fa3861c5fdced76cae4c9c71821969577"
+ },
+ {
+ "ImportPath": "github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute",
+ "Comment": "v12.4.0-beta",
+ "Rev": "f111fc2fa3861c5fdced76cae4c9c71821969577"
},
{
"ImportPath": "github.com/Azure/azure-sdk-for-go/storage",
- "Comment": "v11.1.1-beta",
- "Rev": "509eea43b93cec2f3f17acbe2578ef58703923f8"
+ "Comment": "v12.4.0-beta",
+ "Rev": "f111fc2fa3861c5fdced76cae4c9c71821969577"
},
{
"ImportPath": "github.com/Azure/go-ansiterm",
@@ -61,33 +66,33 @@
},
{
"ImportPath": "github.com/Azure/go-autorest/autorest",
- "Comment": "v9.1.0",
- "Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
+ "Comment": "v9.9.0",
+ "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab"
},
{
"ImportPath": "github.com/Azure/go-autorest/autorest/adal",
- "Comment": "v9.1.0",
- "Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
+ "Comment": "v9.9.0",
+ "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab"
},
{
"ImportPath": "github.com/Azure/go-autorest/autorest/azure",
- "Comment": "v9.1.0",
- "Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
+ "Comment": "v9.9.0",
+ "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab"
},
{
"ImportPath": "github.com/Azure/go-autorest/autorest/date",
- "Comment": "v9.1.0",
- "Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
+ "Comment": "v9.9.0",
+ "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab"
},
{
"ImportPath": "github.com/Azure/go-autorest/autorest/to",
- "Comment": "v9.1.0",
- "Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
+ "Comment": "v9.9.0",
+ "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab"
},
{
"ImportPath": "github.com/Azure/go-autorest/autorest/validation",
- "Comment": "v9.1.0",
- "Rev": "e14a70c556c8e0db173358d1a903dca345a8e75e"
+ "Comment": "v9.9.0",
+ "Rev": "d4e6b95c12a08b4de2d48b45d5b4d594e5d32fab"
},
{
"ImportPath": "github.com/JeffAshton/win_pdh",
@@ -401,7 +406,7 @@
},
{
"ImportPath": "github.com/cockroachdb/cmux",
- "Rev": "30d10be492927e2dcae0089c374c455d42414fcb"
+ "Rev": "112f0506e7743d64a6eb8fedbcff13d9979bbf92"
},
{
"ImportPath": "github.com/codedellemc/goscaleio",
@@ -412,8 +417,13 @@
"Rev": "20e2ce2cf8852dc78bd42b76698dcd8dcd77b7b1"
},
{
- "ImportPath": "github.com/container-storage-interface/spec/lib/go/csi",
- "Rev": "ec298903f94e1d6d954de121b28044a2e1fdbf48"
+ "ImportPath": "github.com/container-storage-interface/spec/lib/go/csi/v0",
+ "Comment": "v0.2.0",
+ "Rev": "35d9f9d77954980e449e52c3f3e43c21bd8171f5"
+ },
+ {
+ "ImportPath": "github.com/containerd/console",
+ "Rev": "84eeaae905fa414d03e07bcd6c8d3f19e7cf180e"
},
{
"ImportPath": "github.com/containerd/containerd/api/services/containers/v1",
@@ -565,293 +575,342 @@
},
{
"ImportPath": "github.com/coreos/etcd/alarm",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/auth",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/auth/authpb",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/client",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/clientv3",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/clientv3/concurrency",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/compactor",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/discovery",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/embed",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/error",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/api",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/etcdhttp",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v2http/httptypes",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3client",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3election",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/gw",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3lock",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/gw",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/auth",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/etcdserverpb",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/etcdserver/etcdserverpb/gw",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/membership",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/etcdserver/stats",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/lease",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/lease/leasehttp",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/lease/leasepb",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/mvcc",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/mvcc/backend",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/mvcc/mvccpb",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/adt",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/contention",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/cors",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/cpuutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/crc",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/pkg/debugutil",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/fileutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/httputil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/idutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/ioutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/logutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/monotime",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/netutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/pathutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/pbutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/runtime",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/schedule",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/pkg/srv",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/tlsutil",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/transport",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/types",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/pkg/wait",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
+ },
+ {
+ "ImportPath": "github.com/coreos/etcd/proxy/grpcproxy/adapter",
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/raft",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/raft/raftpb",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/rafthttp",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/snap",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/snap/snappb",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/store",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/version",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/wal",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
"ImportPath": "github.com/coreos/etcd/wal/walpb",
- "Comment": "v3.1.11",
- "Rev": "960f4604bc821241b94906da5fe7f66306a77472"
- },
- {
- "ImportPath": "github.com/coreos/go-oidc/http",
- "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f"
- },
- {
- "ImportPath": "github.com/coreos/go-oidc/jose",
- "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f"
- },
- {
- "ImportPath": "github.com/coreos/go-oidc/key",
- "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f"
- },
- {
- "ImportPath": "github.com/coreos/go-oidc/oauth2",
- "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f"
+ "Comment": "v3.2.13",
+ "Rev": "95a726a27e09030f9ccbd9982a1508f5a6d25ada"
},
{
- "ImportPath": "github.com/coreos/go-oidc/oidc",
- "Rev": "a4973d9a4225417aecf5d450a9522f00c1f7130f"
+ "ImportPath": "github.com/coreos/go-oidc",
+ "Rev": "065b426bd41667456c1a924468f507673629c46b"
},
{
"ImportPath": "github.com/coreos/go-semver/semver",
@@ -892,21 +951,6 @@
"Comment": "v2-8-gfa29b1d",
"Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8"
},
- {
- "ImportPath": "github.com/coreos/pkg/health",
- "Comment": "v2-8-gfa29b1d",
- "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8"
- },
- {
- "ImportPath": "github.com/coreos/pkg/httputil",
- "Comment": "v2-8-gfa29b1d",
- "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8"
- },
- {
- "ImportPath": "github.com/coreos/pkg/timeutil",
- "Comment": "v2-8-gfa29b1d",
- "Rev": "fa29b1d70f0beaddd4c7021607cc3c3be8ce94b8"
- },
{
"ImportPath": "github.com/coreos/rkt/api/v1alpha",
"Comment": "v1.25.0",
@@ -917,6 +961,11 @@
"Comment": "v1.0.4",
"Rev": "71acacd42f85e5e82f70a55327789582a5200a90"
},
+ {
+ "ImportPath": "github.com/cyphar/filepath-securejoin",
+ "Comment": "v0.2.1-1-gae69057",
+ "Rev": "ae69057f2299fb9e5ba2df738607e6a505b74ab6"
+ },
{
"ImportPath": "github.com/d2g/dhcp4",
"Rev": "a1d1b6c41b1ce8a71a5121a9cee31809c4707d9c"
@@ -1129,13 +1178,18 @@
"Comment": "docs-v1.12.0-rc4-2016-07-15-7401-g4f3616fb1",
"Rev": "4f3616fb1c112e206b88cb7a9922bf49067a7756"
},
+ {
+ "ImportPath": "github.com/docker/docker/pkg/parsers",
+ "Comment": "docs-v1.12.0-rc4-2016-07-15-7401-g4f3616fb1",
+ "Rev": "4f3616fb1c112e206b88cb7a9922bf49067a7756"
+ },
{
"ImportPath": "github.com/docker/docker/pkg/stdcopy",
"Comment": "docs-v1.12.0-rc4-2016-07-15-7401-g4f3616fb1",
"Rev": "4f3616fb1c112e206b88cb7a9922bf49067a7756"
},
{
- "ImportPath": "github.com/docker/docker/pkg/symlink",
+ "ImportPath": "github.com/docker/docker/pkg/sysinfo",
"Comment": "docs-v1.12.0-rc4-2016-07-15-7401-g4f3616fb1",
"Rev": "4f3616fb1c112e206b88cb7a9922bf49067a7756"
},
@@ -1432,7 +1486,7 @@
},
{
"ImportPath": "github.com/go-openapi/spec",
- "Rev": "7abd5745472fff5eb3685386d5fb8bf38683154d"
+ "Rev": "1de3e0542de65ad8d75452a595886fdd0befb363"
},
{
"ImportPath": "github.com/go-openapi/strfmt",
@@ -1444,7 +1498,7 @@
},
{
"ImportPath": "github.com/go-openapi/validate",
- "Rev": "deaf2c9013bc1a7f4c774662259a506ba874d80f"
+ "Rev": "d509235108fcf6ab4913d2dcb3a2260c0db2108e"
},
{
"ImportPath": "github.com/godbus/dbus",
@@ -1492,6 +1546,10 @@
"ImportPath": "github.com/golang/protobuf/proto",
"Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
},
+ {
+ "ImportPath": "github.com/golang/protobuf/protoc-gen-go/descriptor",
+ "Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
+ },
{
"ImportPath": "github.com/golang/protobuf/ptypes",
"Rev": "1643683e1b54a9e88ad26d98f81400c8c9d9f4f9"
@@ -1522,213 +1580,213 @@
},
{
"ImportPath": "github.com/google/cadvisor/accelerators",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/api",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/cache/memory",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/collector",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/common",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/containerd",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/crio",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/docker",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/libcontainer",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/raw",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/rkt",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/container/systemd",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/devicemapper",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/events",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/fs",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/healthz",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/http",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/http/mux",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/info/v1",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/info/v2",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/machine",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/manager",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/manager/watcher",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/manager/watcher/raw",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/manager/watcher/rkt",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/metrics",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/pages",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/pages/static",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/storage",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/summary",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils/cloudinfo",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils/cpuload",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils/cpuload/netlink",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils/docker",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils/oomparser",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils/sysfs",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/utils/sysinfo",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/validate",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/version",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/cadvisor/zfs",
- "Comment": "v0.28.3",
- "Rev": "1e567c2ac359c3ed1303e0c80b6cf08edefc841d"
+ "Comment": "v0.29.1",
+ "Rev": "2e02d28350c5fbbad9cfb7e5a1733468b75ab3f9"
},
{
"ImportPath": "github.com/google/certificate-transparency/go",
@@ -1768,123 +1826,123 @@
},
{
"ImportPath": "github.com/gophercloud/gophercloud",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/blockstorage/v1/volumes",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/common/extensions",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/volumeattach",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/compute/v2/flavors",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/compute/v2/images",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/compute/v2/servers",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tenants",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v2/tokens",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v3/extensions/trusts",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/identity/v3/tokens",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/external",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/listeners",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/loadbalancers",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/monitors",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/lbaas_v2/pools",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/groups",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/security/rules",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/networks",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/networking/v2/ports",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/openstack/utils",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gophercloud/gophercloud/pagination",
- "Rev": "8183543f90d1aef267a5ecc209f2e0715b355acb"
+ "Rev": "6da026c32e2d622cc242d32984259c77237aefe1"
},
{
"ImportPath": "github.com/gorilla/mux",
@@ -1910,18 +1968,18 @@
},
{
"ImportPath": "github.com/grpc-ecosystem/grpc-gateway/runtime",
- "Comment": "v1.1.0-25-g84398b9",
- "Rev": "84398b94e188ee336f307779b57b3aa91af7063c"
+ "Comment": "v1.3.0",
+ "Rev": "8cc3a55af3bcf171a1c23a90c4df9cf591706104"
},
{
"ImportPath": "github.com/grpc-ecosystem/grpc-gateway/runtime/internal",
- "Comment": "v1.1.0-25-g84398b9",
- "Rev": "84398b94e188ee336f307779b57b3aa91af7063c"
+ "Comment": "v1.3.0",
+ "Rev": "8cc3a55af3bcf171a1c23a90c4df9cf591706104"
},
{
"ImportPath": "github.com/grpc-ecosystem/grpc-gateway/utilities",
- "Comment": "v1.1.0-25-g84398b9",
- "Rev": "84398b94e188ee336f307779b57b3aa91af7063c"
+ "Comment": "v1.3.0",
+ "Rev": "8cc3a55af3bcf171a1c23a90c4df9cf591706104"
},
{
"ImportPath": "github.com/hashicorp/errwrap",
@@ -2048,13 +2106,8 @@
},
{
"ImportPath": "github.com/json-iterator/go",
- "Comment": "1.0.0",
- "Rev": "36b14963da70d11297d313183d7e6388c8510e1e"
- },
- {
- "ImportPath": "github.com/juju/ratelimit",
- "Comment": "1.0",
- "Rev": "5b9ff866471762aa2ab2dced63c9fb6f53921342"
+ "Comment": "1.0.4-7-g13f8643",
+ "Rev": "13f86432b882000a51c6e610c620974462691a97"
},
{
"ImportPath": "github.com/kardianos/osext",
@@ -2124,6 +2177,11 @@
"ImportPath": "github.com/mailru/easyjson/jwriter",
"Rev": "2f5df55504ebc322e4d52d34df6a1f5b503bf26d"
},
+ {
+ "ImportPath": "github.com/marstr/guid",
+ "Comment": "v1.1.0-2-g8bdf7d1",
+ "Rev": "8bdf7d1a087ccc975cf37dd6507da50698fd19ca"
+ },
{
"ImportPath": "github.com/mattn/go-runewidth",
"Comment": "v0.0.1-10-g737072b",
@@ -2203,78 +2261,83 @@
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/apparmor",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/cgroups",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/cgroups/fs",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
- },
- {
- "ImportPath": "github.com/opencontainers/runc/libcontainer/cgroups/rootless",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/cgroups/systemd",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/configs",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/configs/validate",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/criurpc",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
+ },
+ {
+ "ImportPath": "github.com/opencontainers/runc/libcontainer/intelrdt",
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/keys",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
+ },
+ {
+ "ImportPath": "github.com/opencontainers/runc/libcontainer/mount",
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/seccomp",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/stacktrace",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/system",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/user",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runc/libcontainer/utils",
- "Comment": "v1.0.0-rc4-50-g4d6e6720",
- "Rev": "4d6e6720a7c885c37b4cb083c0d372dda3425120"
+ "Comment": "v1.0.0-rc4-221-g595bea02",
+ "Rev": "595bea022f077a9e17d7473b34fbaf1adaed9e43"
},
{
"ImportPath": "github.com/opencontainers/runtime-spec/specs-go",
@@ -2328,6 +2391,14 @@
"ImportPath": "github.com/pkg/sftp",
"Rev": "4d0e916071f68db74f8a73926335f809396d6b42"
},
+ {
+ "ImportPath": "github.com/pquerna/cachecontrol",
+ "Rev": "0dec1b30a0215bb68605dfc568e8855066c9202d"
+ },
+ {
+ "ImportPath": "github.com/pquerna/cachecontrol/cacheobject",
+ "Rev": "0dec1b30a0215bb68605dfc568e8855066c9202d"
+ },
{
"ImportPath": "github.com/prometheus/client_golang/prometheus",
"Comment": "v0.8.0-83-ge7e9030",
@@ -2365,7 +2436,7 @@
},
{
"ImportPath": "github.com/quobyte/api",
- "Rev": "cb10db90715b14d4784465d2fa3b915dfacc0628"
+ "Rev": "f2b94aa4aa4f8fcf279fe667ccd916abe6a064d5"
},
{
"ImportPath": "github.com/r2d4/external-storage/lib/controller",
@@ -2411,9 +2482,9 @@
"Rev": "91d7393ff85980ba3a8966405871a3d446ca28f2"
},
{
- "ImportPath": "github.com/satori/uuid",
- "Comment": "v1.1.0-8-g5bf94b6",
- "Rev": "5bf94b69c6b68ee1b541973bb8e1144db23a194b"
+ "ImportPath": "github.com/satori/go.uuid",
+ "Comment": "v1.1.0",
+ "Rev": "879c5887cd475cd7864858769793b2ceb0d44feb"
},
{
"ImportPath": "github.com/seccomp/libseccomp-golang",
@@ -2446,11 +2517,13 @@
},
{
"ImportPath": "github.com/spf13/cobra",
- "Rev": "f62e98d28ab7ad31d707ba837a966378465c7b57"
+ "Comment": "v0.0.1-32-g6644d46",
+ "Rev": "6644d46b81fa1831979c4cded0106e774e0ef0ab"
},
{
"ImportPath": "github.com/spf13/cobra/doc",
- "Rev": "f62e98d28ab7ad31d707ba837a966378465c7b57"
+ "Comment": "v0.0.1-32-g6644d46",
+ "Rev": "6644d46b81fa1831979c4cded0106e774e0ef0ab"
},
{
"ImportPath": "github.com/spf13/jwalterweatherman",
@@ -2458,7 +2531,8 @@
},
{
"ImportPath": "github.com/spf13/pflag",
- "Rev": "9ff6c6923cfffbcd502984b8e0c80539a94968b7"
+ "Comment": "v1.0.0-10-g4c012f6",
+ "Rev": "4c012f6dcd9546820e378d0bdda4d8fc772cdfea"
},
{
"ImportPath": "github.com/spf13/viper",
@@ -2466,24 +2540,24 @@
"Rev": "25b30aa063fc18e48662b86996252eabdcf2f0c7"
},
{
- "ImportPath": "github.com/square/go-jose",
- "Rev": "789a4c4bd4c118f7564954f441b29c153ccd6a96"
- },
- {
- "ImportPath": "github.com/square/go-jose/cipher",
- "Rev": "789a4c4bd4c118f7564954f441b29c153ccd6a96"
+ "ImportPath": "github.com/storageos/go-api",
+ "Comment": "0.3.4",
+ "Rev": "3a4032328d99c1b43fbda3d85bd3c80fa06e1707"
},
{
- "ImportPath": "github.com/square/go-jose/json",
- "Rev": "789a4c4bd4c118f7564954f441b29c153ccd6a96"
+ "ImportPath": "github.com/storageos/go-api/netutil",
+ "Comment": "0.3.4",
+ "Rev": "3a4032328d99c1b43fbda3d85bd3c80fa06e1707"
},
{
- "ImportPath": "github.com/storageos/go-api",
- "Rev": "74f9beb613cacf0cc282facc2e1550a3231e126f"
+ "ImportPath": "github.com/storageos/go-api/serror",
+ "Comment": "0.3.4",
+ "Rev": "3a4032328d99c1b43fbda3d85bd3c80fa06e1707"
},
{
"ImportPath": "github.com/storageos/go-api/types",
- "Rev": "74f9beb613cacf0cc282facc2e1550a3231e126f"
+ "Comment": "0.3.4",
+ "Rev": "3a4032328d99c1b43fbda3d85bd3c80fa06e1707"
},
{
"ImportPath": "github.com/syndtr/gocapability/capability",
@@ -2495,105 +2569,110 @@
},
{
"ImportPath": "github.com/vishvananda/netlink",
- "Rev": "f5a6f697a596c788d474984a38a0ac4ba0719e93"
+ "Rev": "f67b75edbf5e3bb7dfe70bb788610693a71be3d1"
},
{
"ImportPath": "github.com/vishvananda/netlink/nl",
- "Rev": "f5a6f697a596c788d474984a38a0ac4ba0719e93"
+ "Rev": "f67b75edbf5e3bb7dfe70bb788610693a71be3d1"
},
{
"ImportPath": "github.com/vishvananda/netns",
- "Rev": "86bef332bfc3b59b7624a600bd53009ce91a9829"
+ "Rev": "be1fbeda19366dea804f00efff2dd73a1642fdcc"
},
{
"ImportPath": "github.com/vmware/govmomi",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/find",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/list",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
+ },
+ {
+ "ImportPath": "github.com/vmware/govmomi/nfc",
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/object",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/pbm",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/pbm/methods",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/pbm/types",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/property",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/session",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/task",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25/debug",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25/methods",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25/mo",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25/progress",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25/soap",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25/types",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/govmomi/vim25/xml",
- "Comment": "v0.14.0-11-gb8b228c",
- "Rev": "b8b228cfbad7f0a69ed90393ca9aee085d3c6ef1"
+ "Comment": "v0.16.0-97-g0f82f03",
+ "Rev": "0f82f03a2bbf14037d2331cf02f1d4157bbef6cc"
},
{
"ImportPath": "github.com/vmware/photon-controller-go-sdk/SSPI",
@@ -2808,6 +2887,10 @@
"ImportPath": "golang.org/x/sys/windows/registry",
"Rev": "95c6576299259db960f6c5b9b69ea52422860fce"
},
+ {
+ "ImportPath": "golang.org/x/sys/windows/svc",
+ "Rev": "95c6576299259db960f6c5b9b69ea52422860fce"
+ },
{
"ImportPath": "golang.org/x/text/cases",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
@@ -2872,41 +2955,53 @@
"ImportPath": "golang.org/x/text/width",
"Rev": "b19bf474d317b857955b12035d2c5acb57ce8b01"
},
+ {
+ "ImportPath": "golang.org/x/time/rate",
+ "Rev": "f51c12702a4d776e4c1fa9b0fabab841babae631"
+ },
{
"ImportPath": "golang.org/x/tools/container/intsets",
"Rev": "2382e3994d48b1d22acc2c86bcad0a2aff028e32"
},
{
"ImportPath": "google.golang.org/api/cloudmonitoring/v2beta2",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
},
{
"ImportPath": "google.golang.org/api/compute/v0.alpha",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
},
{
"ImportPath": "google.golang.org/api/compute/v0.beta",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
},
{
"ImportPath": "google.golang.org/api/compute/v1",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
},
{
"ImportPath": "google.golang.org/api/container/v1",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
},
{
"ImportPath": "google.golang.org/api/gensupport",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
},
{
"ImportPath": "google.golang.org/api/googleapi",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
},
{
"ImportPath": "google.golang.org/api/googleapi/internal/uritemplates",
- "Rev": "c0dae069ee96c9261a04c81efd9e0f1e55f565ac"
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
+ },
+ {
+ "ImportPath": "google.golang.org/api/tpu/v1alpha1",
+ "Rev": "7f657476956314fee258816aaf81c0ff65cf8bee"
+ },
+ {
+ "ImportPath": "google.golang.org/genproto/googleapis/api/annotations",
+ "Rev": "09f6ed296fc66555a25fe4ce95173148778dfa85"
},
{
"ImportPath": "google.golang.org/genproto/googleapis/rpc/status",
@@ -2914,73 +3009,93 @@
},
{
"ImportPath": "google.golang.org/grpc",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
+ },
+ {
+ "ImportPath": "google.golang.org/grpc/balancer",
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/codes",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
+ },
+ {
+ "ImportPath": "google.golang.org/grpc/connectivity",
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/credentials",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
- "ImportPath": "google.golang.org/grpc/grpclb/grpc_lb_v1",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "ImportPath": "google.golang.org/grpc/grpclb/grpc_lb_v1/messages",
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/grpclog",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
+ },
+ {
+ "ImportPath": "google.golang.org/grpc/health/grpc_health_v1",
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/internal",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/keepalive",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/metadata",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/naming",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/peer",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
+ },
+ {
+ "ImportPath": "google.golang.org/grpc/resolver",
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/stats",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/status",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/tap",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "google.golang.org/grpc/transport",
- "Comment": "v1.3.0",
- "Rev": "d2e1b51f33ff8c5e4a15560ff049d200e83726c5"
+ "Comment": "v1.7.5",
+ "Rev": "5b3c4e850e90a4cf6a20ebd46c8b32a0a3afcb9e"
},
{
"ImportPath": "gopkg.in/cheggaaa/pb.v1",
@@ -3017,6 +3132,26 @@
"Comment": "v1.0-16-g20b71e5",
"Rev": "20b71e5b60d756d3d2f80def009790325acc2b23"
},
+ {
+ "ImportPath": "gopkg.in/square/go-jose.v2",
+ "Comment": "v2.1.3",
+ "Rev": "f8f38de21b4dcd69d0413faf231983f5fd6634b1"
+ },
+ {
+ "ImportPath": "gopkg.in/square/go-jose.v2/cipher",
+ "Comment": "v2.1.3",
+ "Rev": "f8f38de21b4dcd69d0413faf231983f5fd6634b1"
+ },
+ {
+ "ImportPath": "gopkg.in/square/go-jose.v2/json",
+ "Comment": "v2.1.3",
+ "Rev": "f8f38de21b4dcd69d0413faf231983f5fd6634b1"
+ },
+ {
+ "ImportPath": "gopkg.in/square/go-jose.v2/jwt",
+ "Comment": "v2.1.3",
+ "Rev": "f8f38de21b4dcd69d0413faf231983f5fd6634b1"
+ },
{
"ImportPath": "gopkg.in/warnings.v0",
"Comment": "v0.1.1",
@@ -3024,7 +3159,7 @@
},
{
"ImportPath": "gopkg.in/yaml.v2",
- "Rev": "53feefa2559fb8dfa8d81baad31be332c97d6c77"
+ "Rev": "670d4cfef0544295bc27a114dbac37980d83185a"
},
{
"ImportPath": "k8s.io/heapster/metrics/api/v1/types",
@@ -3033,3426 +3168,3511 @@
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/aggregator",
- "Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
+ "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/builder",
- "Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
+ "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/common",
- "Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
+ "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/handler",
- "Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
+ "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/util",
- "Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
+ "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto",
- "Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
+ "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
},
{
"ImportPath": "k8s.io/kube-openapi/pkg/util/proto/validation",
- "Rev": "39a7bf85c140f972372c2a0d1ee40adbf0c8bfe1"
+ "Rev": "50ae88d24ede7b8bad68e23c805b5d3da5c8abaf"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/cmd/controller-manager/app",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/cmd/controller-manager/app/options",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kube-apiserver/app",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kube-apiserver/app/options",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kube-controller-manager/app",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/cmd/kube-controller-manager/app/config",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kube-controller-manager/app/options",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kube-proxy/app",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/cmd/kube-scheduler/app",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kubeadm/app/constants",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kubelet/app",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/cmd/kubelet/app/options",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/endpoints",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/events",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/legacyscheme",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/persistentvolume",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/persistentvolumeclaim",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/pod",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/ref",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/resource",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/service",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/v1/endpoints",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/v1/node",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/v1/pod",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/v1/resource",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/api/v1/service",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/abac",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/abac/latest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/abac/v0",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/abac/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admission",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admission/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admission/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/admissionregistration/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/apps",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/apps/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/apps/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/apps/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/apps/v1beta2",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/apps/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authentication",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authentication/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authorization",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/authorization/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/v2beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/autoscaling/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/batch",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/batch/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/batch/v2alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/batch/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/certificates",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/certificates/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/componentconfig/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/helper",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/helper/qos",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/pods",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1/helper",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1/helper/qos",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/v1/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/core/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/events",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/events/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/events/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/extensions",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/extensions/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/imagepolicy/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/networking",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/networking/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/networking/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/networking/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/policy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/policy/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/policy/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/policy/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/rbac",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/rbac/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/scheduling/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/settings",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/settings/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/settings/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/settings/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/storage/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/storage/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/storage/v1beta1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/apis/storage/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/auth/authorizer/abac",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/auth/nodeidentifier",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/bootstrap/api",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/capabilities",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/chaosclient",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/scheme",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/admissionregistration/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/apps/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authentication/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/authorization/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/autoscaling/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/batch/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/certificates/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/core/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/events/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/extensions/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/networking/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/policy/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/rbac/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/scheduling/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/settings/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/clientset_generated/internalclientset/typed/storage/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/admissionregistration/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/apps/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/autoscaling/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/batch/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/certificates/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/core/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/extensions/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/internalinterfaces",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/networking/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/policy/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/rbac/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/scheduling/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/settings/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/informers/informers_generated/internalversion/storage/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/leaderelectionconfig",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/admissionregistration/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/apps/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/autoscaling/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/batch/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/certificates/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/core/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/extensions/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/networking/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/policy/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/rbac/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/scheduling/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/settings/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/client/listers/storage/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/client/unversioned",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/aws",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/azure",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/azure/auth",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/cloudstack",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/filter",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/gce/cloud/meta",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/openstack",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/ovirt",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/photon",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/cloudprovider/providers/vsphere/vclib/diskmanagers",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/bootstrap",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/certificates",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/certificates/approver",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/certificates/cleaner",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/certificates/signer",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/clusterroleaggregation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/cronjob",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/daemon",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/daemon/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/deployment",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/deployment/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/disruption",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/endpoint",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/garbagecollector",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/garbagecollector/metaonly",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/history",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/job",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/namespace",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/namespace/deletion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/node",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/nodeipam",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/node/ipam",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/nodeipam/ipam",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/node/ipam/cidrset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/nodeipam/ipam/cidrset",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/node/ipam/sync",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/nodeipam/ipam/sync",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/node/scheduler",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/nodelifecycle",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/node/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/nodelifecycle/scheduler",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/podautoscaler",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/podautoscaler/metrics",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/podgc",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/replicaset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/replication",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/resourcequota",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/route",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/service",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/serviceaccount",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/statefulset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/ttl",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/util/node",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/cache",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/populator",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/reconciler",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/statusupdater",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/attachdetach/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/events",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/expand",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/expand/cache",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/expand/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/persistentvolume",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/persistentvolume",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/persistentvolume/metrics",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/controller/volume/pvcprotection",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/controller/volume/pvprotection",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/credentialprovider",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/aws",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/azure",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/gcp",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/rancher",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/credentialprovider/secrets",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/features",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/fieldpath",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/generated/openapi",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/admission",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/admission/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/authenticator",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/authorizer",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/authorizer/modes",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/options",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubeapiserver/server",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/apps",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/categories",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/cmd/templates",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/cmd/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/cmd/util/openapi/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/plugins",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/resource",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/scheme",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/util/hash",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/util/slice",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/util/term",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/kubectl/util/transport",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubectl/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/cri",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/cri/v1alpha1/runtime",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/cri/runtime/v1alpha2",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1alpha",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/deviceplugin/v1beta1",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/scheme",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/v1beta1",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/kubeletconfig/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/apis/stats/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/cadvisor",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/certificate",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/certificate/bootstrap",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/checkpoint",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/client",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/state",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpumanager/topology",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/cpuset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/deviceplugin",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/devicemanager",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/cm/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/config",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/configmap",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/container",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/cm",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/libdocker",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/metrics",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/dockershim/remote",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/envvars",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/events",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/eviction",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/eviction/api",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/gpu",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/gpu/nvidia",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/images",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/checkpoint/store",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/configfiles",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/status",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/codec",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/equal",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/files",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/log",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kubeletconfig/util/panic",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kuberuntime",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/kuberuntime/logs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/leaky",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/lifecycle",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/kubelet/logs",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/metrics",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/kubelet/metrics/collectors",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/mountpod",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/network",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/cni",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/dns",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/hairpin",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/hostport",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/kubenet",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/network/metrics",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/pleg",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/pod",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/preemption",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/prober",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/prober/results",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/qos",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/remote",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/rkt",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/secret",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/server",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/portforward",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/remotecommand",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/stats",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/server/streaming",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/stats",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/status",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/sysctl",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/types",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/cache",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/format",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/ioutils",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/queue",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/sliceutils",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/util/store",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/cache",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/populator",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/volumemanager/reconciler",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/kubelet/winstats",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/master",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/master/controller/crdregistration",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/master/ports",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/master/reconcilers",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/master/tunneler",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/printers",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/printers/internalversion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/printers/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/probe",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/probe/exec",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/probe/http",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/probe/tcp",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/scheme",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/apis/kubeproxyconfig/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/config",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/healthcheck",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/iptables",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/ipvs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/metrics",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/userspace",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/winkernel",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/proxy/winuserspace",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/quota",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/quota/evaluator/core",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/quota/generic",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/quota/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/initializerconfiguration",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/initializerconfiguration/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/mutatingwebhookconfiguration",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/mutatingwebhookconfiguration/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingwebhookconfiguration",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/admissionregistration/validatingwebhookconfiguration/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/apps/controllerrevision",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/apps/controllerrevision/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/daemonset",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/daemonset/storage",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/deployment",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/deployment/storage",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/replicaset",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/registry/apps/replicaset/storage",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/apps/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/apps/statefulset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/apps/statefulset/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authentication/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authentication/tokenreview",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/localsubjectaccessreview",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/selfsubjectaccessreview",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/selfsubjectrulesreview",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/subjectaccessreview",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/authorization/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/autoscaling/horizontalpodautoscaler",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/autoscaling/horizontalpodautoscaler/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/autoscaling/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/batch/cronjob",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/batch/cronjob/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/batch/job",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/batch/job/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/batch/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/cachesize",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/certificates/certificates",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/certificates/certificates/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/certificates/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/componentstatus",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/configmap",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/configmap/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/endpoint",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/endpoint/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/event",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/event/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/limitrange",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/limitrange/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/namespace",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/namespace/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/node",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/node/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/node/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolume",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolume/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/persistentvolumeclaim/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/pod",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/pod/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/pod/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/podtemplate",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/podtemplate/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/rangeallocation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/replicationcontroller",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/replicationcontroller/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/resourcequota",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/resourcequota/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/secret",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/secret/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/allocator",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/allocator/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/ipallocator",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/ipallocator/controller",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/portallocator",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/portallocator/controller",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/service/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/serviceaccount",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/core/serviceaccount/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/events/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/controller/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/daemonset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/daemonset/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/deployment",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/deployment/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/ingress",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/ingress/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/podsecuritypolicy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/podsecuritypolicy/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/replicaset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/replicaset/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/extensions/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/networking/networkpolicy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/networking/networkpolicy/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/networking/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/policy/poddisruptionbudget",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/policy/poddisruptionbudget/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/policy/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrole",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrole/policybased",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrole/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding/policybased",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/clusterrolebinding/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/reconciliation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/role",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/role/policybased",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/role/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rolebinding",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rolebinding/policybased",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/rolebinding/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/rbac/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/scheduling/priorityclass",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/scheduling/priorityclass/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/scheduling/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/settings/podpreset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/settings/podpreset/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/settings/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/storage/rest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/storage/storageclass",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/storage/storageclass/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/storage/volumeattachment",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/registry/storage/volumeattachment/storage",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/routes",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm/predicates",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithm/priorities/util",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithmprovider",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/algorithmprovider/defaults",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/api",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/api/latest",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/api/v1",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/api/validation",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/core",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/factory",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/metrics",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/schedulercache",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/util",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/scheduler/volumebinder",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/apparmor",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/apparmor",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/capabilities",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/group",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/seccomp",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/selinux",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/sysctl",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/user",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/security/podsecuritypolicy/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/securitycontext",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/serviceaccount",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/ssh",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/async",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/bandwidth",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/config",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/configz",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/util/conntrack",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/dbus",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/ebtables",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/env",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/file",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/filesystem",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/util/flag",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/flock",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/goroutinemap/exponentialbackoff",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/hash",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/interrupt",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/io",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/ipconfig",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/ipset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/iptables",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/ipvs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/keymutex",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/labels",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/limitwriter",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/maps",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/metrics",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/mount",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/util/net",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/net/sets",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/netsh",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/node",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/nsenter",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/oom",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/parsers",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/pointer",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/procfs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/reflector/prometheus",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/removeall",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/resizefs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/resourcecontainer",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/rlimit",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/selinux",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/slice",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/strings",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/sysctl",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/system",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/tail",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/taints",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/term",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/tolerations",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/version",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/util/workqueue/prometheus",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/version",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/version/verflag",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/aws_ebs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/azure_dd",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/azure_file",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/cephfs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/cinder",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/configmap",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/csi",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/downwardapi",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/empty_dir",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/fc",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/flexvolume",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/flocker",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/gce_pd",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/git_repo",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/glusterfs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/host_path",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/iscsi",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/local",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/nfs",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/photon_pd",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/portworx",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/projected",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/quobyte",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/rbd",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/scaleio",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/secret",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/storageos",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/volume/util/fs",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/util/nestedpendingoperations",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/util/operationexecutor",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/pkg/volume/util/recyclerclient",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/util/types",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/pkg/volume/util/volumehelper",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/volume/util/volumepathhandler",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/pkg/volume/vsphere_volume",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/plugin/cmd/kube-scheduler/app",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/pkg/windows/service",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/admit",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/alwayspullimages",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/antiaffinity",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/defaulttolerationseconds",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/deny",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/eventratelimit/apis/eventratelimit/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/exec",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/extendedresourcetoleration",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/gc",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/imagepolicy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/initialresources",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/limitranger",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/namespace/autoprovision",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/namespace/exists",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/noderestriction",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/label",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/persistentvolume/resize",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/persistentvolumeclaim/pvcprotection",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podnodeselector",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podpreset",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/podtolerationrestriction/apis/podtolerationrestriction/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/priority",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/install",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/v1alpha1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/resourcequota/apis/resourcequota/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/security/podsecuritypolicy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/securitycontext/scdeny",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/serviceaccount",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/storageclass/setdefault",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/storage/storageclass/setdefault",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
+ },
+ {
+ "ImportPath": "k8s.io/kubernetes/plugin/pkg/admission/storage/storageobjectinuseprotection",
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authenticator/token/bootstrap",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authorizer/node",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/plugin/pkg/auth/authorizer/rbac/bootstrappolicy",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/predicates",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithm/priorities/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/algorithmprovider/defaults",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api/latest",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api/v1",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/api/validation",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/core",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/factory",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/metrics",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/schedulercache",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/util",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
- },
- {
- "ImportPath": "k8s.io/kubernetes/plugin/pkg/scheduler/volumebinder",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/third_party/forked/golang/expansion",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph/internal/linear",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph/simple",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/kubernetes/third_party/forked/gonum/graph/traverse",
- "Comment": "v1.9.4",
- "Rev": "bee2d1505c4fe820744d26d41ecd3fdd4a3d6546"
+ "Comment": "v1.10.0",
+ "Rev": "fc32d2f3698e36b93322a3465f63a14e9f0eaead"
},
{
"ImportPath": "k8s.io/utils/clock",
diff --git a/Makefile b/Makefile
index 45f6f1a35f02..f5db646e4b9c 100755
--- a/Makefile
+++ b/Makefile
@@ -52,7 +52,7 @@ STORAGE_PROVISIONER_TAG := v1.8.1
# Set the version information for the Kubernetes servers, and build localkube statically
K8S_VERSION_LDFLAGS := $(shell $(PYTHON) hack/get_k8s_version.py 2>&1)
MINIKUBE_LDFLAGS := -X k8s.io/minikube/pkg/version.version=$(VERSION) -X k8s.io/minikube/pkg/version.isoVersion=$(ISO_VERSION) -X k8s.io/minikube/pkg/version.isoPath=$(ISO_BUCKET)
-LOCALKUBE_LDFLAGS := "$(K8S_VERSION_LDFLAGS) $(MINIKUBE_LDFLAGS) -s -w -extldflags '-static'"
+LOCALKUBE_LDFLAGS := "$(K8S_VERSION_LDFLAGS) $(MINIKUBE_LDFLAGS) -s -w"
MAKEDEPEND := GOPATH=$(GOPATH) ./makedepend.sh
@@ -98,14 +98,14 @@ out/minikube$(IS_EXE): out/minikube-$(GOOS)-$(GOARCH)$(IS_EXE)
cp $< $@
out/localkube.d:
- $(MAKEDEPEND) out/localkube $(ORG) $(LOCALKUBEFILES) $^ > $@
+ GOOS=linux GOARCH=amd64 $(MAKEDEPEND) out/localkube $(ORG) $(LOCALKUBEFILES) $^ > $@
-include out/localkube.d
out/localkube:
ifeq ($(LOCALKUBE_BUILD_IN_DOCKER),y)
$(call DOCKER,$(BUILD_IMAGE),/usr/bin/make $@)
else
- CGO_ENABLED=1 go build -tags static_build -ldflags=$(LOCALKUBE_LDFLAGS) -o $(BUILD_DIR)/localkube ./cmd/localkube
+ CGO_ENABLED=1 go build -ldflags=$(LOCALKUBE_LDFLAGS) -o $(BUILD_DIR)/localkube ./cmd/localkube
endif
out/minikube-windows-amd64.exe: out/minikube-windows-amd64
diff --git a/deploy/addons/addon-manager.yaml b/deploy/addons/addon-manager.yaml
index ea2314c64259..0dfce2519cf0 100644
--- a/deploy/addons/addon-manager.yaml
+++ b/deploy/addons/addon-manager.yaml
@@ -19,13 +19,13 @@ metadata:
namespace: kube-system
labels:
component: kube-addon-manager
- version: v6.5
+ version: v8.6
kubernetes.io/minikube-addons: addon-manager
spec:
hostNetwork: true
containers:
- name: kube-addon-manager
- image: gcr.io/google-containers/kube-addon-manager:v6.5
+ image: gcr.io/google-containers/kube-addon-manager:v8.6
env:
- name: KUBECONFIG
value: /var/lib/localkube/kubeconfig
diff --git a/pkg/localkube/apiserver.go b/pkg/localkube/apiserver.go
index 1946e1166682..6d0c84b45987 100644
--- a/pkg/localkube/apiserver.go
+++ b/pkg/localkube/apiserver.go
@@ -28,9 +28,9 @@ import (
apiserveroptions "k8s.io/apiserver/pkg/server/options"
"k8s.io/apiserver/pkg/storage/storagebackend"
+ genericoptions "k8s.io/apiserver/pkg/server/options"
apiserver "k8s.io/kubernetes/cmd/kube-apiserver/app"
"k8s.io/kubernetes/cmd/kube-apiserver/app/options"
- kubeapioptions "k8s.io/kubernetes/pkg/kubeapiserver/options"
)
func (lk LocalkubeServer) NewAPIServer() Server {
@@ -69,7 +69,7 @@ func StartAPIServer(lk LocalkubeServer) func() error {
config.AllowPrivileged = true
- config.APIEnablement = &kubeapioptions.APIEnablementOptions{
+ config.APIEnablement = &genericoptions.APIEnablementOptions{
RuntimeConfig: lk.RuntimeConfig,
}
diff --git a/pkg/localkube/controller-manager.go b/pkg/localkube/controller-manager.go
index ef642ebaf5d4..735ee1179a24 100644
--- a/pkg/localkube/controller-manager.go
+++ b/pkg/localkube/controller-manager.go
@@ -18,6 +18,7 @@ package localkube
import (
controllerManager "k8s.io/kubernetes/cmd/kube-controller-manager/app"
+ "k8s.io/kubernetes/cmd/kube-controller-manager/app/config"
"k8s.io/kubernetes/cmd/kube-controller-manager/app/options"
"k8s.io/minikube/pkg/util"
)
@@ -27,24 +28,28 @@ func (lk LocalkubeServer) NewControllerManagerServer() Server {
}
func StartControllerManagerServer(lk LocalkubeServer) func() error {
- config := options.NewCMServer()
+ opts := options.NewKubeControllerManagerOptions()
- config.Kubeconfig = util.DefaultKubeConfigPath
+ opts.Generic.Kubeconfig = util.DefaultKubeConfigPath
// defaults from command
- config.DeletingPodsQps = 0.1
- config.DeletingPodsBurst = 10
- config.NodeEvictionRate = 0.1
+ opts.Generic.ComponentConfig.DeletingPodsQps = 0.1
+ opts.Generic.ComponentConfig.DeletingPodsBurst = 10
+ opts.Generic.ComponentConfig.NodeEvictionRate = 0.1
- config.EnableProfiling = true
- config.VolumeConfiguration.EnableHostPathProvisioning = true
- config.VolumeConfiguration.EnableDynamicProvisioning = true
- config.ServiceAccountKeyFile = lk.GetPrivateKeyCertPath()
- config.RootCAFile = lk.GetCAPublicKeyCertPath()
+ opts.Generic.ComponentConfig.EnableProfiling = true
+ opts.Generic.ComponentConfig.VolumeConfiguration.EnableHostPathProvisioning = true
+ opts.Generic.ComponentConfig.VolumeConfiguration.EnableDynamicProvisioning = true
+ opts.Generic.ComponentConfig.ServiceAccountKeyFile = lk.GetPrivateKeyCertPath()
+ opts.Generic.ComponentConfig.RootCAFile = lk.GetCAPublicKeyCertPath()
- lk.SetExtraConfigForComponent("controller-manager", &config)
+ lk.SetExtraConfigForComponent("controller-manager", &opts)
+ cfg := config.Config{}
+ if err := opts.ApplyTo(&cfg); err != nil {
+ panic(err)
+ }
return func() error {
- return controllerManager.Run(config)
+ return controllerManager.Run(cfg.Complete())
}
}
diff --git a/pkg/localkube/kubelet.go b/pkg/localkube/kubelet.go
index 7a7435f2564b..0c81548230b1 100644
--- a/pkg/localkube/kubelet.go
+++ b/pkg/localkube/kubelet.go
@@ -17,7 +17,6 @@ limitations under the License.
package localkube
import (
- "k8s.io/apiserver/pkg/util/flag"
kubelet "k8s.io/kubernetes/cmd/kubelet/app"
"k8s.io/kubernetes/cmd/kubelet/app/options"
"k8s.io/minikube/pkg/util"
@@ -38,14 +37,13 @@ func StartKubeletServer(lk LocalkubeServer) func() error {
}
// Master details
- config.KubeConfig = flag.NewStringFlag(util.DefaultKubeConfigPath)
- config.RequireKubeConfig = true
+ config.KubeConfig = util.DefaultKubeConfigPath
// Set containerized based on the flag
config.Containerized = lk.Containerized
config.AllowPrivileged = true
- config.PodManifestPath = "/etc/kubernetes/manifests"
+ config.StaticPodPath = "/etc/kubernetes/manifests"
// Networking
config.ClusterDomain = lk.DNSDomain
@@ -54,6 +52,7 @@ func StartKubeletServer(lk LocalkubeServer) func() error {
config.PodCIDR = "10.180.1.0/24"
config.NodeIP = lk.NodeIP.String()
+ config.FailSwapOn = false
if lk.NetworkPlugin != "" {
config.NetworkPluginName = lk.NetworkPlugin
diff --git a/pkg/localkube/localkube.go b/pkg/localkube/localkube.go
index 3b08b90d602e..d8346d1e0410 100644
--- a/pkg/localkube/localkube.go
+++ b/pkg/localkube/localkube.go
@@ -26,6 +26,7 @@ import (
"net/http"
"path"
"strconv"
+ "strings"
"github.com/golang/glog"
"github.com/pkg/errors"
@@ -179,6 +180,27 @@ func (lk LocalkubeServer) SetExtraConfigForComponent(component string, config in
}
}
+func (lk LocalkubeServer) GetFeatureGates() (map[string]bool, error) {
+ fg := map[string]bool{}
+ if lk.FeatureGates == "" {
+ return fg, nil
+ }
+ gates := strings.Split(lk.FeatureGates, ",")
+ for _, g := range gates {
+
+ kvp := strings.SplitN(g, "=", 2)
+ if len(kvp) != 2 {
+ return nil, fmt.Errorf("invalid feature gate specification: %s", g)
+ }
+ value, err := strconv.ParseBool(kvp[1])
+ if err != nil {
+ return nil, fmt.Errorf("invalid feature gate specification: %s", g)
+ }
+ fg[kvp[0]] = value
+ }
+ return fg, nil
+}
+
func (lk LocalkubeServer) loadCert(path string) (*x509.Certificate, error) {
contents, err := ioutil.ReadFile(path)
if err != nil {
diff --git a/pkg/localkube/proxy.go b/pkg/localkube/proxy.go
index e617ad79a11b..3b53f84fe087 100644
--- a/pkg/localkube/proxy.go
+++ b/pkg/localkube/proxy.go
@@ -43,6 +43,10 @@ func StartProxyServer(lk LocalkubeServer) func() error {
}
opts := kubeproxy.NewOptions()
+ fg, err := lk.GetFeatureGates()
+ if err != nil {
+ panic(err)
+ }
config := &kubeproxyconfig.KubeProxyConfiguration{
OOMScoreAdj: &OOMScoreAdj,
ClientConnection: kubeproxyconfig.ClientConnectionConfiguration{
@@ -58,17 +62,15 @@ func StartProxyServer(lk LocalkubeServer) func() error {
},
BindAddress: bindaddress,
Mode: kubeproxyconfig.ProxyModeIPTables,
- FeatureGates: lk.FeatureGates,
+ FeatureGates: fg,
// Disable the healthz check
- HealthzBindAddress: "0",
+ HealthzBindAddress: "",
}
- _, err := opts.ApplyDefaults(config)
- if err != nil {
+ if _, err := opts.ApplyDefaults(config); err != nil {
panic(err)
}
- opts.SetConfig(config)
-
lk.SetExtraConfigForComponent("proxy", &config)
+ opts.SetConfig(config)
return func() error {
return opts.Run()
diff --git a/pkg/localkube/scheduler.go b/pkg/localkube/scheduler.go
index 6fda922593d6..59616dfc55fb 100644
--- a/pkg/localkube/scheduler.go
+++ b/pkg/localkube/scheduler.go
@@ -17,8 +17,8 @@ limitations under the License.
package localkube
import (
+ scheduler "k8s.io/kubernetes/cmd/kube-scheduler/app"
"k8s.io/kubernetes/pkg/apis/componentconfig"
- scheduler "k8s.io/kubernetes/plugin/cmd/kube-scheduler/app"
"k8s.io/minikube/pkg/util"
)
diff --git a/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go b/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go
index e8114b7f4516..0c776c234ef8 100644
--- a/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go
+++ b/pkg/minikube/bootstrapper/kubeadm/kubeadm_test.go
@@ -34,7 +34,7 @@ func TestGenerateConfig(t *testing.T) {
description: "no extra args",
cfg: config.KubernetesConfig{
NodeIP: "192.168.1.100",
- KubernetesVersion: "v1.8.0",
+ KubernetesVersion: "v1.10.0",
NodeName: "minikube",
},
expectedCfg: `apiVersion: kubeadm.k8s.io/v1alpha1
@@ -42,20 +42,22 @@ kind: MasterConfiguration
api:
advertiseAddress: 192.168.1.100
bindPort: 8443
-kubernetesVersion: v1.8.0
+kubernetesVersion: v1.10.0
certificatesDir: /var/lib/localkube/certs/
networking:
serviceSubnet: 10.96.0.0/12
etcd:
dataDir: /data
nodeName: minikube
+apiServerExtraArgs:
+ admission-control: "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
`,
},
{
description: "extra args all components",
cfg: config.KubernetesConfig{
NodeIP: "192.168.1.101",
- KubernetesVersion: "v1.8.0-alpha.0",
+ KubernetesVersion: "v1.10.0-alpha.0",
NodeName: "extra-args-minikube",
ExtraOptions: util.ExtraOptionSlice{
util.ExtraOption{
@@ -80,7 +82,7 @@ kind: MasterConfiguration
api:
advertiseAddress: 192.168.1.101
bindPort: 8443
-kubernetesVersion: v1.8.0-alpha.0
+kubernetesVersion: v1.10.0-alpha.0
certificatesDir: /var/lib/localkube/certs/
networking:
serviceSubnet: 10.96.0.0/12
@@ -88,6 +90,7 @@ etcd:
dataDir: /data
nodeName: extra-args-minikube
apiServerExtraArgs:
+ admission-control: "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
fail-no-swap: "true"
controllerManagerExtraArgs:
kube-api-burst: "32"
@@ -99,7 +102,7 @@ schedulerExtraArgs:
description: "two extra args for one component",
cfg: config.KubernetesConfig{
NodeIP: "192.168.1.101",
- KubernetesVersion: "v1.8.0-alpha.0",
+ KubernetesVersion: "v1.10.0-alpha.0",
NodeName: "extra-args-minikube",
ExtraOptions: util.ExtraOptionSlice{
util.ExtraOption{
@@ -119,7 +122,7 @@ kind: MasterConfiguration
api:
advertiseAddress: 192.168.1.101
bindPort: 8443
-kubernetesVersion: v1.8.0-alpha.0
+kubernetesVersion: v1.10.0-alpha.0
certificatesDir: /var/lib/localkube/certs/
networking:
serviceSubnet: 10.96.0.0/12
@@ -127,6 +130,7 @@ etcd:
dataDir: /data
nodeName: extra-args-minikube
apiServerExtraArgs:
+ admission-control: "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
fail-no-swap: "true"
kube-api-burst: "32"
`,
@@ -135,7 +139,7 @@ apiServerExtraArgs:
description: "enable feature gates",
cfg: config.KubernetesConfig{
NodeIP: "192.168.1.101",
- KubernetesVersion: "v1.8.0-alpha.0",
+ KubernetesVersion: "v1.10.0-alpha.0",
NodeName: "extra-args-minikube",
FeatureGates: "HugePages=true,OtherFeature=false",
},
@@ -144,7 +148,7 @@ kind: MasterConfiguration
api:
advertiseAddress: 192.168.1.101
bindPort: 8443
-kubernetesVersion: v1.8.0-alpha.0
+kubernetesVersion: v1.10.0-alpha.0
certificatesDir: /var/lib/localkube/certs/
networking:
serviceSubnet: 10.96.0.0/12
@@ -152,6 +156,7 @@ etcd:
dataDir: /data
nodeName: extra-args-minikube
apiServerExtraArgs:
+ admission-control: "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
feature-gates: "HugePages=true,OtherFeature=false"
controllerManagerExtraArgs:
feature-gates: "HugePages=true,OtherFeature=false"
@@ -163,7 +168,7 @@ schedulerExtraArgs:
description: "enable feature gates and extra config",
cfg: config.KubernetesConfig{
NodeIP: "192.168.1.101",
- KubernetesVersion: "v1.8.0-alpha.0",
+ KubernetesVersion: "v1.10.0-alpha.0",
NodeName: "extra-args-minikube",
FeatureGates: "HugePages=true,OtherFeature=false",
ExtraOptions: util.ExtraOptionSlice{
@@ -179,7 +184,7 @@ kind: MasterConfiguration
api:
advertiseAddress: 192.168.1.101
bindPort: 8443
-kubernetesVersion: v1.8.0-alpha.0
+kubernetesVersion: v1.10.0-alpha.0
certificatesDir: /var/lib/localkube/certs/
networking:
serviceSubnet: 10.96.0.0/12
@@ -187,6 +192,7 @@ etcd:
dataDir: /data
nodeName: extra-args-minikube
apiServerExtraArgs:
+ admission-control: "Initializers,NamespaceLifecycle,LimitRanger,ServiceAccount,DefaultStorageClass,DefaultTolerationSeconds,NodeRestriction,MutatingAdmissionWebhook,ValidatingAdmissionWebhook,ResourceQuota"
fail-no-swap: "true"
feature-gates: "HugePages=true,OtherFeature=false"
controllerManagerExtraArgs:
diff --git a/pkg/minikube/bootstrapper/kubeadm/versions.go b/pkg/minikube/bootstrapper/kubeadm/versions.go
index c54700724085..df5583ba81fe 100644
--- a/pkg/minikube/bootstrapper/kubeadm/versions.go
+++ b/pkg/minikube/bootstrapper/kubeadm/versions.go
@@ -173,7 +173,14 @@ var versionSpecificOpts = []VersionedExtraOption{
// Kubeconfig args
NewUnversionedOption(Kubelet, "kubeconfig", "/etc/kubernetes/kubelet.conf"),
NewUnversionedOption(Kubelet, "bootstrap-kubeconfig", "/etc/kubernetes/bootstrap-kubelet.conf"),
- NewUnversionedOption(Kubelet, "require-kubeconfig", "true"),
+ {
+ Option: util.ExtraOption{
+ Component: Apiserver,
+ Key: "require-kubeconfig",
+ Value: "true",
+ },
+ LessThanOrEqual: semver.MustParse("1.9.10"),
+ },
NewUnversionedOption(Kubelet, "hostname-override", "minikube"),
// System pods args
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go
index bf1a8fc34e38..76c20408fb13 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/availabilitysets.go
@@ -90,7 +90,9 @@ func (client AvailabilitySetsClient) CreateOrUpdatePreparer(resourceGroupName st
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
// http.Response Body if it receives an error.
func (client AvailabilitySetsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
@@ -155,7 +157,9 @@ func (client AvailabilitySetsClient) DeletePreparer(resourceGroupName string, av
// DeleteSender sends the Delete request. The method will close the
// http.Response Body if it receives an error.
func (client AvailabilitySetsClient) DeleteSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// DeleteResponder handles the response to the Delete request. The method always
@@ -220,7 +224,9 @@ func (client AvailabilitySetsClient) GetPreparer(resourceGroupName string, avail
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client AvailabilitySetsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -284,7 +290,9 @@ func (client AvailabilitySetsClient) ListPreparer(resourceGroupName string) (*ht
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client AvailabilitySetsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -350,7 +358,9 @@ func (client AvailabilitySetsClient) ListAvailableSizesPreparer(resourceGroupNam
// ListAvailableSizesSender sends the ListAvailableSizes request. The method will close the
// http.Response Body if it receives an error.
func (client AvailabilitySetsClient) ListAvailableSizesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAvailableSizesResponder handles the response to the ListAvailableSizes request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go
index 98b1c0dad648..93a44f2f20ba 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/client.go
@@ -1,6 +1,8 @@
// Package compute implements the Azure ARM Compute service API version .
//
// Compute Client
+//
+// Deprecated: Please instead use github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-03-30/compute
package compute
// Copyright (c) Microsoft and contributors. All rights reserved.
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/containerservices.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/containerservices.go
index 98c1706eef7b..a09f4c3357f3 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/containerservices.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/containerservices.go
@@ -144,6 +144,7 @@ func (client ContainerServicesClient) CreateOrUpdatePreparer(resourceGroupName s
func (client ContainerServicesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -229,6 +230,7 @@ func (client ContainerServicesClient) DeletePreparer(resourceGroupName string, c
func (client ContainerServicesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -296,7 +298,9 @@ func (client ContainerServicesClient) GetPreparer(resourceGroupName string, cont
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ContainerServicesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -358,7 +362,9 @@ func (client ContainerServicesClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ContainerServicesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -493,7 +499,9 @@ func (client ContainerServicesClient) ListByResourceGroupPreparer(resourceGroupN
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
// http.Response Body if it receives an error.
func (client ContainerServicesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/disks.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/disks.go
index 47e9e4029ce7..18efc73b229d 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/disks.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/disks.go
@@ -131,6 +131,7 @@ func (client DisksClient) CreateOrUpdatePreparer(resourceGroupName string, diskN
func (client DisksClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -213,6 +214,7 @@ func (client DisksClient) DeletePreparer(resourceGroupName string, diskName stri
func (client DisksClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -279,7 +281,9 @@ func (client DisksClient) GetPreparer(resourceGroupName string, diskName string)
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client DisksClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -372,6 +376,7 @@ func (client DisksClient) GrantAccessPreparer(resourceGroupName string, diskName
func (client DisksClient) GrantAccessSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -433,7 +438,9 @@ func (client DisksClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client DisksClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -566,7 +573,9 @@ func (client DisksClient) ListByResourceGroupPreparer(resourceGroupName string)
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
// http.Response Body if it receives an error.
func (client DisksClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
@@ -717,6 +726,7 @@ func (client DisksClient) RevokeAccessPreparer(resourceGroupName string, diskNam
func (client DisksClient) RevokeAccessSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -801,6 +811,7 @@ func (client DisksClient) UpdatePreparer(resourceGroupName string, diskName stri
func (client DisksClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/images.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/images.go
index bbde2bc7f95f..6a5c06ad1535 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/images.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/images.go
@@ -119,6 +119,7 @@ func (client ImagesClient) CreateOrUpdatePreparer(resourceGroupName string, imag
func (client ImagesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -200,6 +201,7 @@ func (client ImagesClient) DeletePreparer(resourceGroupName string, imageName st
func (client ImagesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -269,7 +271,9 @@ func (client ImagesClient) GetPreparer(resourceGroupName string, imageName strin
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ImagesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -331,7 +335,9 @@ func (client ImagesClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ImagesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -464,7 +470,9 @@ func (client ImagesClient) ListByResourceGroupPreparer(resourceGroupName string)
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
// http.Response Body if it receives an error.
func (client ImagesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/resourceskus.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/resourceskus.go
index 9dd7fffa8564..c92374bfaa5f 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/resourceskus.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/resourceskus.go
@@ -83,7 +83,9 @@ func (client ResourceSkusClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ResourceSkusClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/snapshots.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/snapshots.go
index 2c7135292156..2c77c51ce8e0 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/snapshots.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/snapshots.go
@@ -131,6 +131,7 @@ func (client SnapshotsClient) CreateOrUpdatePreparer(resourceGroupName string, s
func (client SnapshotsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -213,6 +214,7 @@ func (client SnapshotsClient) DeletePreparer(resourceGroupName string, snapshotN
func (client SnapshotsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -279,7 +281,9 @@ func (client SnapshotsClient) GetPreparer(resourceGroupName string, snapshotName
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client SnapshotsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -373,6 +377,7 @@ func (client SnapshotsClient) GrantAccessPreparer(resourceGroupName string, snap
func (client SnapshotsClient) GrantAccessSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -434,7 +439,9 @@ func (client SnapshotsClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client SnapshotsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -567,7 +574,9 @@ func (client SnapshotsClient) ListByResourceGroupPreparer(resourceGroupName stri
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
// http.Response Body if it receives an error.
func (client SnapshotsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
@@ -718,6 +727,7 @@ func (client SnapshotsClient) RevokeAccessPreparer(resourceGroupName string, sna
func (client SnapshotsClient) RevokeAccessSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -802,6 +812,7 @@ func (client SnapshotsClient) UpdatePreparer(resourceGroupName string, snapshotN
func (client SnapshotsClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usage.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usage.go
index 86e9ebabf3b7..ddf8917e3cbe 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usage.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/usage.go
@@ -94,7 +94,9 @@ func (client UsageClient) ListPreparer(location string) (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client UsageClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go
index 2f9cac6f3bc7..00a3106b8812 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/version.go
@@ -19,10 +19,10 @@ package compute
// UserAgent returns the UserAgent string to use when sending http.Requests.
func UserAgent() string {
- return "Azure-SDK-For-Go/v11.0.0-beta arm-compute/"
+ return "Azure-SDK-For-Go/v12.4.0-beta arm-compute/"
}
// Version returns the semantic version (see http://semver.org) of the client.
func Version() string {
- return "v11.0.0-beta"
+ return "v12.4.0-beta"
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go
index c486f63ced50..2a9a4d28930f 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensionimages.go
@@ -90,7 +90,9 @@ func (client VirtualMachineExtensionImagesClient) GetPreparer(location string, p
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineExtensionImagesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -155,7 +157,9 @@ func (client VirtualMachineExtensionImagesClient) ListTypesPreparer(location str
// ListTypesSender sends the ListTypes request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineExtensionImagesClient) ListTypesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListTypesResponder handles the response to the ListTypes request. The method always
@@ -230,7 +234,9 @@ func (client VirtualMachineExtensionImagesClient) ListVersionsPreparer(location
// ListVersionsSender sends the ListVersions request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineExtensionImagesClient) ListVersionsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListVersionsResponder handles the response to the ListVersions request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go
index e8f0b27f1b00..4b8af16c9018 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineextensions.go
@@ -109,6 +109,7 @@ func (client VirtualMachineExtensionsClient) CreateOrUpdatePreparer(resourceGrou
func (client VirtualMachineExtensionsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -192,6 +193,7 @@ func (client VirtualMachineExtensionsClient) DeletePreparer(resourceGroupName st
func (client VirtualMachineExtensionsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -263,7 +265,9 @@ func (client VirtualMachineExtensionsClient) GetPreparer(resourceGroupName strin
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineExtensionsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go
index 9eda416e9584..2e1e20b04424 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineimages.go
@@ -91,7 +91,9 @@ func (client VirtualMachineImagesClient) GetPreparer(location string, publisherN
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineImagesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -168,7 +170,9 @@ func (client VirtualMachineImagesClient) ListPreparer(location string, publisher
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineImagesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -233,7 +237,9 @@ func (client VirtualMachineImagesClient) ListOffersPreparer(location string, pub
// ListOffersSender sends the ListOffers request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineImagesClient) ListOffersSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListOffersResponder handles the response to the ListOffers request. The method always
@@ -297,7 +303,9 @@ func (client VirtualMachineImagesClient) ListPublishersPreparer(location string)
// ListPublishersSender sends the ListPublishers request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineImagesClient) ListPublishersSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListPublishersResponder handles the response to the ListPublishers request. The method always
@@ -364,7 +372,9 @@ func (client VirtualMachineImagesClient) ListSkusPreparer(location string, publi
// ListSkusSender sends the ListSkus request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineImagesClient) ListSkusSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListSkusResponder handles the response to the ListSkus request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineruncommands.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineruncommands.go
index f422c92f58c0..287566a6a98f 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineruncommands.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachineruncommands.go
@@ -94,7 +94,9 @@ func (client VirtualMachineRunCommandsClient) GetPreparer(location string, comma
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineRunCommandsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -164,7 +166,9 @@ func (client VirtualMachineRunCommandsClient) ListPreparer(location string) (*ht
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineRunCommandsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go
index ad1d829d14dc..086463240a42 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachines.go
@@ -119,6 +119,7 @@ func (client VirtualMachinesClient) CapturePreparer(resourceGroupName string, VM
func (client VirtualMachinesClient) CaptureSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -201,6 +202,7 @@ func (client VirtualMachinesClient) ConvertToManagedDisksPreparer(resourceGroupN
func (client VirtualMachinesClient) ConvertToManagedDisksSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -310,6 +312,7 @@ func (client VirtualMachinesClient) CreateOrUpdatePreparer(resourceGroupName str
func (client VirtualMachinesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -392,6 +395,7 @@ func (client VirtualMachinesClient) DeallocatePreparer(resourceGroupName string,
func (client VirtualMachinesClient) DeallocateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -473,6 +477,7 @@ func (client VirtualMachinesClient) DeletePreparer(resourceGroupName string, VMN
func (client VirtualMachinesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -538,7 +543,9 @@ func (client VirtualMachinesClient) GeneralizePreparer(resourceGroupName string,
// GeneralizeSender sends the Generalize request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachinesClient) GeneralizeSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GeneralizeResponder handles the response to the Generalize request. The method always
@@ -607,7 +614,9 @@ func (client VirtualMachinesClient) GetPreparer(resourceGroupName string, VMName
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachinesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -672,7 +681,9 @@ func (client VirtualMachinesClient) InstanceViewPreparer(resourceGroupName strin
// InstanceViewSender sends the InstanceView request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachinesClient) InstanceViewSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// InstanceViewResponder handles the response to the InstanceView request. The method always
@@ -737,7 +748,9 @@ func (client VirtualMachinesClient) ListPreparer(resourceGroupName string) (*htt
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachinesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -868,7 +881,9 @@ func (client VirtualMachinesClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachinesClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -1002,7 +1017,9 @@ func (client VirtualMachinesClient) ListAvailableSizesPreparer(resourceGroupName
// ListAvailableSizesSender sends the ListAvailableSizes request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachinesClient) ListAvailableSizesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAvailableSizesResponder handles the response to the ListAvailableSizes request. The method always
@@ -1084,6 +1101,7 @@ func (client VirtualMachinesClient) PerformMaintenancePreparer(resourceGroupName
func (client VirtualMachinesClient) PerformMaintenanceSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1167,6 +1185,7 @@ func (client VirtualMachinesClient) PowerOffPreparer(resourceGroupName string, V
func (client VirtualMachinesClient) PowerOffSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1249,6 +1268,7 @@ func (client VirtualMachinesClient) RedeployPreparer(resourceGroupName string, V
func (client VirtualMachinesClient) RedeploySender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1330,6 +1350,7 @@ func (client VirtualMachinesClient) RestartPreparer(resourceGroupName string, VM
func (client VirtualMachinesClient) RestartSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1423,6 +1444,7 @@ func (client VirtualMachinesClient) RunCommandPreparer(resourceGroupName string,
func (client VirtualMachinesClient) RunCommandSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1504,6 +1526,7 @@ func (client VirtualMachinesClient) StartPreparer(resourceGroupName string, VMNa
func (client VirtualMachinesClient) StartSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetextensions.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetextensions.go
index 9a198f148d20..882339202b15 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetextensions.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetextensions.go
@@ -110,6 +110,7 @@ func (client VirtualMachineScaleSetExtensionsClient) CreateOrUpdatePreparer(reso
func (client VirtualMachineScaleSetExtensionsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -193,6 +194,7 @@ func (client VirtualMachineScaleSetExtensionsClient) DeletePreparer(resourceGrou
func (client VirtualMachineScaleSetExtensionsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -264,7 +266,9 @@ func (client VirtualMachineScaleSetExtensionsClient) GetPreparer(resourceGroupNa
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetExtensionsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -330,7 +334,9 @@ func (client VirtualMachineScaleSetExtensionsClient) ListPreparer(resourceGroupN
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetExtensionsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetrollingupgrades.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetrollingupgrades.go
index 45cc6e5c51cb..230b5da939c1 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetrollingupgrades.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetrollingupgrades.go
@@ -106,6 +106,7 @@ func (client VirtualMachineScaleSetRollingUpgradesClient) CancelPreparer(resourc
func (client VirtualMachineScaleSetRollingUpgradesClient) CancelSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -171,7 +172,9 @@ func (client VirtualMachineScaleSetRollingUpgradesClient) GetLatestPreparer(reso
// GetLatestSender sends the GetLatest request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetRollingUpgradesClient) GetLatestSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetLatestResponder handles the response to the GetLatest request. The method always
@@ -254,6 +257,7 @@ func (client VirtualMachineScaleSetRollingUpgradesClient) StartOSUpgradePreparer
func (client VirtualMachineScaleSetRollingUpgradesClient) StartOSUpgradeSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go
index 72a868579acb..64c5c6d7a17f 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesets.go
@@ -133,6 +133,7 @@ func (client VirtualMachineScaleSetsClient) CreateOrUpdatePreparer(resourceGroup
func (client VirtualMachineScaleSetsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -222,6 +223,7 @@ func (client VirtualMachineScaleSetsClient) DeallocatePreparer(resourceGroupName
func (client VirtualMachineScaleSetsClient) DeallocateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -303,6 +305,7 @@ func (client VirtualMachineScaleSetsClient) DeletePreparer(resourceGroupName str
func (client VirtualMachineScaleSetsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -397,6 +400,7 @@ func (client VirtualMachineScaleSetsClient) DeleteInstancesPreparer(resourceGrou
func (client VirtualMachineScaleSetsClient) DeleteInstancesSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -462,7 +466,9 @@ func (client VirtualMachineScaleSetsClient) GetPreparer(resourceGroupName string
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -527,7 +533,9 @@ func (client VirtualMachineScaleSetsClient) GetInstanceViewPreparer(resourceGrou
// GetInstanceViewSender sends the GetInstanceView request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetsClient) GetInstanceViewSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetInstanceViewResponder handles the response to the GetInstanceView request. The method always
@@ -591,7 +599,9 @@ func (client VirtualMachineScaleSetsClient) ListPreparer(resourceGroupName strin
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -723,7 +733,9 @@ func (client VirtualMachineScaleSetsClient) ListAllPreparer() (*http.Request, er
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetsClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -858,7 +870,9 @@ func (client VirtualMachineScaleSetsClient) ListSkusPreparer(resourceGroupName s
// ListSkusSender sends the ListSkus request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetsClient) ListSkusSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListSkusResponder handles the response to the ListSkus request. The method always
@@ -1016,6 +1030,7 @@ func (client VirtualMachineScaleSetsClient) PowerOffPreparer(resourceGroupName s
func (client VirtualMachineScaleSetsClient) PowerOffSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1104,6 +1119,7 @@ func (client VirtualMachineScaleSetsClient) ReimagePreparer(resourceGroupName st
func (client VirtualMachineScaleSetsClient) ReimageSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1192,6 +1208,7 @@ func (client VirtualMachineScaleSetsClient) ReimageAllPreparer(resourceGroupName
func (client VirtualMachineScaleSetsClient) ReimageAllSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1280,6 +1297,7 @@ func (client VirtualMachineScaleSetsClient) RestartPreparer(resourceGroupName st
func (client VirtualMachineScaleSetsClient) RestartSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1368,6 +1386,7 @@ func (client VirtualMachineScaleSetsClient) StartPreparer(resourceGroupName stri
func (client VirtualMachineScaleSetsClient) StartSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1452,6 +1471,7 @@ func (client VirtualMachineScaleSetsClient) UpdatePreparer(resourceGroupName str
func (client VirtualMachineScaleSetsClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1546,6 +1566,7 @@ func (client VirtualMachineScaleSetsClient) UpdateInstancesPreparer(resourceGrou
func (client VirtualMachineScaleSetsClient) UpdateInstancesSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go
index 5a15edae9131..0be36c9ac63a 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinescalesetvms.go
@@ -107,6 +107,7 @@ func (client VirtualMachineScaleSetVMsClient) DeallocatePreparer(resourceGroupNa
func (client VirtualMachineScaleSetVMsClient) DeallocateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -191,6 +192,7 @@ func (client VirtualMachineScaleSetVMsClient) DeletePreparer(resourceGroupName s
func (client VirtualMachineScaleSetVMsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -258,7 +260,9 @@ func (client VirtualMachineScaleSetVMsClient) GetPreparer(resourceGroupName stri
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetVMsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -325,7 +329,9 @@ func (client VirtualMachineScaleSetVMsClient) GetInstanceViewPreparer(resourceGr
// GetInstanceViewSender sends the GetInstanceView request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetVMsClient) GetInstanceViewSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetInstanceViewResponder handles the response to the GetInstanceView request. The method always
@@ -401,7 +407,9 @@ func (client VirtualMachineScaleSetVMsClient) ListPreparer(resourceGroupName str
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineScaleSetVMsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -555,6 +563,7 @@ func (client VirtualMachineScaleSetVMsClient) PowerOffPreparer(resourceGroupName
func (client VirtualMachineScaleSetVMsClient) PowerOffSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -639,6 +648,7 @@ func (client VirtualMachineScaleSetVMsClient) ReimagePreparer(resourceGroupName
func (client VirtualMachineScaleSetVMsClient) ReimageSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -723,6 +733,7 @@ func (client VirtualMachineScaleSetVMsClient) ReimageAllPreparer(resourceGroupNa
func (client VirtualMachineScaleSetVMsClient) ReimageAllSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -807,6 +818,7 @@ func (client VirtualMachineScaleSetVMsClient) RestartPreparer(resourceGroupName
func (client VirtualMachineScaleSetVMsClient) RestartSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -890,6 +902,7 @@ func (client VirtualMachineScaleSetVMsClient) StartPreparer(resourceGroupName st
func (client VirtualMachineScaleSetVMsClient) StartSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go
index dc2f2778bea2..0833578d5a6c 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/compute/virtualmachinesizes.go
@@ -93,7 +93,9 @@ func (client VirtualMachineSizesClient) ListPreparer(location string) (*http.Req
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualMachineSizesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/client.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/client.go
index b3eea6cb2f49..08485cae6140 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/client.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/client.go
@@ -1,6 +1,6 @@
// Package containerregistry implements the Azure ARM Containerregistry service API version 2017-10-01.
//
-//
+// Deprecated: Please instead use github.com/Azure/azure-sdk-for-go/services/containerregistry/mgmt/2017-10-01/containerregistry
package containerregistry
// Copyright (c) Microsoft and contributors. All rights reserved.
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/operations.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/operations.go
index a9143e739664..5a5aa26f42c3 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/operations.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/operations.go
@@ -79,7 +79,9 @@ func (client OperationsClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client OperationsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/registries.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/registries.go
index c1c9af59e838..955b6ae1c439 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/registries.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/registries.go
@@ -100,7 +100,9 @@ func (client RegistriesClient) CheckNameAvailabilityPreparer(registryNameCheckRe
// CheckNameAvailabilitySender sends the CheckNameAvailability request. The method will close the
// http.Response Body if it receives an error.
func (client RegistriesClient) CheckNameAvailabilitySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// CheckNameAvailabilityResponder handles the response to the CheckNameAvailability request. The method always
@@ -202,6 +204,7 @@ func (client RegistriesClient) CreatePreparer(resourceGroupName string, registry
func (client RegistriesClient) CreateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -295,6 +298,7 @@ func (client RegistriesClient) DeletePreparer(resourceGroupName string, registry
func (client RegistriesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -368,7 +372,9 @@ func (client RegistriesClient) GetPreparer(resourceGroupName string, registryNam
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client RegistriesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -429,7 +435,9 @@ func (client RegistriesClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client RegistriesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -562,7 +570,9 @@ func (client RegistriesClient) ListByResourceGroupPreparer(resourceGroupName str
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
// http.Response Body if it receives an error.
func (client RegistriesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
@@ -705,7 +715,9 @@ func (client RegistriesClient) ListCredentialsPreparer(resourceGroupName string,
// ListCredentialsSender sends the ListCredentials request. The method will close the
// http.Response Body if it receives an error.
func (client RegistriesClient) ListCredentialsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListCredentialsResponder handles the response to the ListCredentials request. The method always
@@ -779,7 +791,9 @@ func (client RegistriesClient) ListUsagesPreparer(resourceGroupName string, regi
// ListUsagesSender sends the ListUsages request. The method will close the
// http.Response Body if it receives an error.
func (client RegistriesClient) ListUsagesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListUsagesResponder handles the response to the ListUsages request. The method always
@@ -856,7 +870,9 @@ func (client RegistriesClient) RegenerateCredentialPreparer(resourceGroupName st
// RegenerateCredentialSender sends the RegenerateCredential request. The method will close the
// http.Response Body if it receives an error.
func (client RegistriesClient) RegenerateCredentialSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// RegenerateCredentialResponder handles the response to the RegenerateCredential request. The method always
@@ -952,6 +968,7 @@ func (client RegistriesClient) UpdatePreparer(resourceGroupName string, registry
func (client RegistriesClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/replications.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/replications.go
index 79fce2d21ee8..5b82038ef1d7 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/replications.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/replications.go
@@ -125,6 +125,7 @@ func (client ReplicationsClient) CreatePreparer(resourceGroupName string, regist
func (client ReplicationsClient) CreateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -224,6 +225,7 @@ func (client ReplicationsClient) DeletePreparer(resourceGroupName string, regist
func (client ReplicationsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -302,7 +304,9 @@ func (client ReplicationsClient) GetPreparer(resourceGroupName string, registryN
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ReplicationsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -376,7 +380,9 @@ func (client ReplicationsClient) ListPreparer(resourceGroupName string, registry
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ReplicationsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -547,6 +553,7 @@ func (client ReplicationsClient) UpdatePreparer(resourceGroupName string, regist
func (client ReplicationsClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/version.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/version.go
index 6e3ee863831d..57af0d04a4de 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/version.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/version.go
@@ -19,10 +19,10 @@ package containerregistry
// UserAgent returns the UserAgent string to use when sending http.Requests.
func UserAgent() string {
- return "Azure-SDK-For-Go/v11.1.0-beta arm-containerregistry/2017-10-01"
+ return "Azure-SDK-For-Go/v12.4.0-beta arm-containerregistry/2017-10-01"
}
// Version returns the semantic version (see http://semver.org) of the client.
func Version() string {
- return "v11.1.0-beta"
+ return "v12.4.0-beta"
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/webhooks.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/webhooks.go
index ff5f9ce7844d..e61ce83a9739 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/webhooks.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/containerregistry/webhooks.go
@@ -131,6 +131,7 @@ func (client WebhooksClient) CreatePreparer(resourceGroupName string, registryNa
func (client WebhooksClient) CreateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -229,6 +230,7 @@ func (client WebhooksClient) DeletePreparer(resourceGroupName string, registryNa
func (client WebhooksClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -307,7 +309,9 @@ func (client WebhooksClient) GetPreparer(resourceGroupName string, registryName
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client WebhooksClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -386,7 +390,9 @@ func (client WebhooksClient) GetCallbackConfigPreparer(resourceGroupName string,
// GetCallbackConfigSender sends the GetCallbackConfig request. The method will close the
// http.Response Body if it receives an error.
func (client WebhooksClient) GetCallbackConfigSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetCallbackConfigResponder handles the response to the GetCallbackConfig request. The method always
@@ -460,7 +466,9 @@ func (client WebhooksClient) ListPreparer(resourceGroupName string, registryName
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client WebhooksClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -608,7 +616,9 @@ func (client WebhooksClient) ListEventsPreparer(resourceGroupName string, regist
// ListEventsSender sends the ListEvents request. The method will close the
// http.Response Body if it receives an error.
func (client WebhooksClient) ListEventsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListEventsResponder handles the response to the ListEvents request. The method always
@@ -756,7 +766,9 @@ func (client WebhooksClient) PingPreparer(resourceGroupName string, registryName
// PingSender sends the Ping request. The method will close the
// http.Response Body if it receives an error.
func (client WebhooksClient) PingSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// PingResponder handles the response to the Ping request. The method always
@@ -858,6 +870,7 @@ func (client WebhooksClient) UpdatePreparer(resourceGroupName string, registryNa
func (client WebhooksClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/client.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/client.go
index 8bab7acc1324..54634794d677 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/client.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/client.go
@@ -2,6 +2,8 @@
// 2016-04-30-preview.
//
// The Disk Resource Provider Client.
+//
+// Deprecated: Please instead use github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2016-04-30-preview/compute
package disk
// Copyright (c) Microsoft and contributors. All rights reserved.
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/version.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/version.go
index 11c4a35ee9c3..2981a37ce5bb 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/version.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/disk/version.go
@@ -19,10 +19,10 @@ package disk
// UserAgent returns the UserAgent string to use when sending http.Requests.
func UserAgent() string {
- return "Azure-SDK-For-Go/v10.2.0-beta arm-disk/2016-04-30-preview"
+ return "Azure-SDK-For-Go/v12.4.0-beta arm-disk/2016-04-30-preview"
}
// Version returns the semantic version (see http://semver.org) of the client.
func Version() string {
- return "v10.2.0-beta"
+ return "v12.4.0-beta"
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go
index c000be117bcd..0d1605ac2975 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationgateways.go
@@ -109,6 +109,7 @@ func (client ApplicationGatewaysClient) BackendHealthPreparer(resourceGroupName
func (client ApplicationGatewaysClient) BackendHealthSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -209,6 +210,7 @@ func (client ApplicationGatewaysClient) CreateOrUpdatePreparer(resourceGroupName
func (client ApplicationGatewaysClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -290,6 +292,7 @@ func (client ApplicationGatewaysClient) DeletePreparer(resourceGroupName string,
func (client ApplicationGatewaysClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -354,7 +357,9 @@ func (client ApplicationGatewaysClient) GetPreparer(resourceGroupName string, ap
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationGatewaysClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -418,7 +423,9 @@ func (client ApplicationGatewaysClient) GetSslPredefinedPolicyPreparer(predefine
// GetSslPredefinedPolicySender sends the GetSslPredefinedPolicy request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationGatewaysClient) GetSslPredefinedPolicySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetSslPredefinedPolicyResponder handles the response to the GetSslPredefinedPolicy request. The method always
@@ -482,7 +489,9 @@ func (client ApplicationGatewaysClient) ListPreparer(resourceGroupName string) (
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationGatewaysClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -612,7 +621,9 @@ func (client ApplicationGatewaysClient) ListAllPreparer() (*http.Request, error)
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationGatewaysClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -742,7 +753,9 @@ func (client ApplicationGatewaysClient) ListAvailableSslOptionsPreparer() (*http
// ListAvailableSslOptionsSender sends the ListAvailableSslOptions request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationGatewaysClient) ListAvailableSslOptionsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAvailableSslOptionsResponder handles the response to the ListAvailableSslOptions request. The method always
@@ -803,7 +816,9 @@ func (client ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesPrepar
// ListAvailableSslPredefinedPoliciesSender sends the ListAvailableSslPredefinedPolicies request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationGatewaysClient) ListAvailableSslPredefinedPoliciesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAvailableSslPredefinedPoliciesResponder handles the response to the ListAvailableSslPredefinedPolicies request. The method always
@@ -933,7 +948,9 @@ func (client ApplicationGatewaysClient) ListAvailableWafRuleSetsPreparer() (*htt
// ListAvailableWafRuleSetsSender sends the ListAvailableWafRuleSets request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationGatewaysClient) ListAvailableWafRuleSetsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAvailableWafRuleSetsResponder handles the response to the ListAvailableWafRuleSets request. The method always
@@ -1014,6 +1031,7 @@ func (client ApplicationGatewaysClient) StartPreparer(resourceGroupName string,
func (client ApplicationGatewaysClient) StartSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1095,6 +1113,7 @@ func (client ApplicationGatewaysClient) StopPreparer(resourceGroupName string, a
func (client ApplicationGatewaysClient) StopSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationsecuritygroups.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationsecuritygroups.go
index 1e84e706466f..954b113d4228 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationsecuritygroups.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/applicationsecuritygroups.go
@@ -107,6 +107,7 @@ func (client ApplicationSecurityGroupsClient) CreateOrUpdatePreparer(resourceGro
func (client ApplicationSecurityGroupsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -190,6 +191,7 @@ func (client ApplicationSecurityGroupsClient) DeletePreparer(resourceGroupName s
func (client ApplicationSecurityGroupsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -255,7 +257,9 @@ func (client ApplicationSecurityGroupsClient) GetPreparer(resourceGroupName stri
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationSecurityGroupsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -319,7 +323,9 @@ func (client ApplicationSecurityGroupsClient) ListPreparer(resourceGroupName str
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationSecurityGroupsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -449,7 +455,9 @@ func (client ApplicationSecurityGroupsClient) ListAllPreparer() (*http.Request,
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client ApplicationSecurityGroupsClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/availableendpointservices.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/availableendpointservices.go
index 26bcaf8b647c..a010418e9ded 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/availableendpointservices.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/availableendpointservices.go
@@ -86,7 +86,9 @@ func (client AvailableEndpointServicesClient) ListPreparer(location string) (*ht
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client AvailableEndpointServicesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/bgpservicecommunities.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/bgpservicecommunities.go
index 10cfa2cdd558..5c4f4786a90e 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/bgpservicecommunities.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/bgpservicecommunities.go
@@ -83,7 +83,9 @@ func (client BgpServiceCommunitiesClient) ListPreparer() (*http.Request, error)
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client BgpServiceCommunitiesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go
index a3576c393aa9..ea0952c7ca9b 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/client.go
@@ -1,6 +1,8 @@
// Package network implements the Azure ARM Network service API version .
//
// Network Client
+//
+// Deprecated: Please instead use github.com/Azure/azure-sdk-for-go/services/network/mgmt/2017-09-01/network
package network
// Copyright (c) Microsoft and contributors. All rights reserved.
@@ -102,7 +104,9 @@ func (client ManagementClient) CheckDNSNameAvailabilityPreparer(location string,
// CheckDNSNameAvailabilitySender sends the CheckDNSNameAvailability request. The method will close the
// http.Response Body if it receives an error.
func (client ManagementClient) CheckDNSNameAvailabilitySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// CheckDNSNameAvailabilityResponder handles the response to the CheckDNSNameAvailability request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/defaultsecurityrules.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/defaultsecurityrules.go
index 9a3ded19d5c2..1fd3e18d92aa 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/defaultsecurityrules.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/defaultsecurityrules.go
@@ -89,7 +89,9 @@ func (client DefaultSecurityRulesClient) GetPreparer(resourceGroupName string, n
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client DefaultSecurityRulesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -155,7 +157,9 @@ func (client DefaultSecurityRulesClient) ListPreparer(resourceGroupName string,
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client DefaultSecurityRulesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go
index 9b7fd524e73c..3ea822813dc1 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitauthorizations.go
@@ -111,6 +111,7 @@ func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdatePreparer(res
func (client ExpressRouteCircuitAuthorizationsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -195,6 +196,7 @@ func (client ExpressRouteCircuitAuthorizationsClient) DeletePreparer(resourceGro
func (client ExpressRouteCircuitAuthorizationsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -261,7 +263,9 @@ func (client ExpressRouteCircuitAuthorizationsClient) GetPreparer(resourceGroupN
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitAuthorizationsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -326,7 +330,9 @@ func (client ExpressRouteCircuitAuthorizationsClient) ListPreparer(resourceGroup
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitAuthorizationsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go
index af9fc67e0394..c454167020dc 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuitpeerings.go
@@ -109,6 +109,7 @@ func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdatePreparer(resourceG
func (client ExpressRouteCircuitPeeringsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -193,6 +194,7 @@ func (client ExpressRouteCircuitPeeringsClient) DeletePreparer(resourceGroupName
func (client ExpressRouteCircuitPeeringsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -259,7 +261,9 @@ func (client ExpressRouteCircuitPeeringsClient) GetPreparer(resourceGroupName st
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitPeeringsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -324,7 +328,9 @@ func (client ExpressRouteCircuitPeeringsClient) ListPreparer(resourceGroupName s
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitPeeringsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go
index 63cfeff9e0a1..8a497d166afc 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressroutecircuits.go
@@ -107,6 +107,7 @@ func (client ExpressRouteCircuitsClient) CreateOrUpdatePreparer(resourceGroupNam
func (client ExpressRouteCircuitsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -188,6 +189,7 @@ func (client ExpressRouteCircuitsClient) DeletePreparer(resourceGroupName string
func (client ExpressRouteCircuitsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -252,7 +254,9 @@ func (client ExpressRouteCircuitsClient) GetPreparer(resourceGroupName string, c
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -319,7 +323,9 @@ func (client ExpressRouteCircuitsClient) GetPeeringStatsPreparer(resourceGroupNa
// GetPeeringStatsSender sends the GetPeeringStats request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitsClient) GetPeeringStatsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetPeeringStatsResponder handles the response to the GetPeeringStats request. The method always
@@ -384,7 +390,9 @@ func (client ExpressRouteCircuitsClient) GetStatsPreparer(resourceGroupName stri
// GetStatsSender sends the GetStats request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitsClient) GetStatsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetStatsResponder handles the response to the GetStats request. The method always
@@ -448,7 +456,9 @@ func (client ExpressRouteCircuitsClient) ListPreparer(resourceGroupName string)
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -578,7 +588,9 @@ func (client ExpressRouteCircuitsClient) ListAllPreparer() (*http.Request, error
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteCircuitsClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -732,6 +744,7 @@ func (client ExpressRouteCircuitsClient) ListArpTablePreparer(resourceGroupName
func (client ExpressRouteCircuitsClient) ListArpTableSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -817,6 +830,7 @@ func (client ExpressRouteCircuitsClient) ListRoutesTablePreparer(resourceGroupNa
func (client ExpressRouteCircuitsClient) ListRoutesTableSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -902,6 +916,7 @@ func (client ExpressRouteCircuitsClient) ListRoutesTableSummaryPreparer(resource
func (client ExpressRouteCircuitsClient) ListRoutesTableSummarySender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go
index 5e39087b2a5c..ccd76e9968d4 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/expressrouteserviceproviders.go
@@ -84,7 +84,9 @@ func (client ExpressRouteServiceProvidersClient) ListPreparer() (*http.Request,
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client ExpressRouteServiceProvidersClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/inboundnatrules.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/inboundnatrules.go
index eab80ac57669..8a43aee1b914 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/inboundnatrules.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/inboundnatrules.go
@@ -132,6 +132,7 @@ func (client InboundNatRulesClient) CreateOrUpdatePreparer(resourceGroupName str
func (client InboundNatRulesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -216,6 +217,7 @@ func (client InboundNatRulesClient) DeletePreparer(resourceGroupName string, loa
func (client InboundNatRulesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -285,7 +287,9 @@ func (client InboundNatRulesClient) GetPreparer(resourceGroupName string, loadBa
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client InboundNatRulesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -350,7 +354,9 @@ func (client InboundNatRulesClient) ListPreparer(resourceGroupName string, loadB
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client InboundNatRulesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceipconfigurations.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceipconfigurations.go
index ca0359f09006..4885110b27f9 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceipconfigurations.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceipconfigurations.go
@@ -89,7 +89,9 @@ func (client InterfaceIPConfigurationsClient) GetPreparer(resourceGroupName stri
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client InterfaceIPConfigurationsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -154,7 +156,9 @@ func (client InterfaceIPConfigurationsClient) ListPreparer(resourceGroupName str
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client InterfaceIPConfigurationsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceloadbalancers.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceloadbalancers.go
index c7b7d272f729..e9f00e491e50 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceloadbalancers.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaceloadbalancers.go
@@ -87,7 +87,9 @@ func (client InterfaceLoadBalancersClient) ListPreparer(resourceGroupName string
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client InterfaceLoadBalancersClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go
index c2fdb3e901b7..cfe3238c53aa 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/interfaces.go
@@ -107,6 +107,7 @@ func (client InterfacesClient) CreateOrUpdatePreparer(resourceGroupName string,
func (client InterfacesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -188,6 +189,7 @@ func (client InterfacesClient) DeletePreparer(resourceGroupName string, networkI
func (client InterfacesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -256,7 +258,9 @@ func (client InterfacesClient) GetPreparer(resourceGroupName string, networkInte
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client InterfacesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -338,6 +342,7 @@ func (client InterfacesClient) GetEffectiveRouteTablePreparer(resourceGroupName
func (client InterfacesClient) GetEffectiveRouteTableSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -410,7 +415,9 @@ func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfacePreparer
// GetVirtualMachineScaleSetNetworkInterfaceSender sends the GetVirtualMachineScaleSetNetworkInterface request. The method will close the
// http.Response Body if it receives an error.
func (client InterfacesClient) GetVirtualMachineScaleSetNetworkInterfaceSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetVirtualMachineScaleSetNetworkInterfaceResponder handles the response to the GetVirtualMachineScaleSetNetworkInterface request. The method always
@@ -474,7 +481,9 @@ func (client InterfacesClient) ListPreparer(resourceGroupName string) (*http.Req
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client InterfacesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -604,7 +613,9 @@ func (client InterfacesClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client InterfacesClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -755,6 +766,7 @@ func (client InterfacesClient) ListEffectiveNetworkSecurityGroupsPreparer(resour
func (client InterfacesClient) ListEffectiveNetworkSecurityGroupsSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -821,7 +833,9 @@ func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesPrepar
// ListVirtualMachineScaleSetNetworkInterfacesSender sends the ListVirtualMachineScaleSetNetworkInterfaces request. The method will close the
// http.Response Body if it receives an error.
func (client InterfacesClient) ListVirtualMachineScaleSetNetworkInterfacesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListVirtualMachineScaleSetNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetNetworkInterfaces request. The method always
@@ -958,7 +972,9 @@ func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesPrep
// ListVirtualMachineScaleSetVMNetworkInterfacesSender sends the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method will close the
// http.Response Body if it receives an error.
func (client InterfacesClient) ListVirtualMachineScaleSetVMNetworkInterfacesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListVirtualMachineScaleSetVMNetworkInterfacesResponder handles the response to the ListVirtualMachineScaleSetVMNetworkInterfaces request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerbackendaddresspools.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerbackendaddresspools.go
index de14c3556084..e15b18fc5835 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerbackendaddresspools.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerbackendaddresspools.go
@@ -90,7 +90,9 @@ func (client LoadBalancerBackendAddressPoolsClient) GetPreparer(resourceGroupNam
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerBackendAddressPoolsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -155,7 +157,9 @@ func (client LoadBalancerBackendAddressPoolsClient) ListPreparer(resourceGroupNa
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerBackendAddressPoolsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerfrontendipconfigurations.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerfrontendipconfigurations.go
index 515b875a1831..7ba6f72fb532 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerfrontendipconfigurations.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerfrontendipconfigurations.go
@@ -91,7 +91,9 @@ func (client LoadBalancerFrontendIPConfigurationsClient) GetPreparer(resourceGro
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerFrontendIPConfigurationsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -156,7 +158,9 @@ func (client LoadBalancerFrontendIPConfigurationsClient) ListPreparer(resourceGr
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerFrontendIPConfigurationsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerloadbalancingrules.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerloadbalancingrules.go
index 2ecd6be0d4f0..4a4747ccda11 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerloadbalancingrules.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerloadbalancingrules.go
@@ -90,7 +90,9 @@ func (client LoadBalancerLoadBalancingRulesClient) GetPreparer(resourceGroupName
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerLoadBalancingRulesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -155,7 +157,9 @@ func (client LoadBalancerLoadBalancingRulesClient) ListPreparer(resourceGroupNam
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerLoadBalancingRulesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancernetworkinterfaces.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancernetworkinterfaces.go
index 35650354255b..def71135275e 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancernetworkinterfaces.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancernetworkinterfaces.go
@@ -88,7 +88,9 @@ func (client LoadBalancerNetworkInterfacesClient) ListPreparer(resourceGroupName
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerNetworkInterfacesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerprobes.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerprobes.go
index daee51e0f355..2b43d041b026 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerprobes.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancerprobes.go
@@ -89,7 +89,9 @@ func (client LoadBalancerProbesClient) GetPreparer(resourceGroupName string, loa
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerProbesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -154,7 +156,9 @@ func (client LoadBalancerProbesClient) ListPreparer(resourceGroupName string, lo
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancerProbesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go
index 3a2528d85f4b..980478937e8d 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/loadbalancers.go
@@ -106,6 +106,7 @@ func (client LoadBalancersClient) CreateOrUpdatePreparer(resourceGroupName strin
func (client LoadBalancersClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -187,6 +188,7 @@ func (client LoadBalancersClient) DeletePreparer(resourceGroupName string, loadB
func (client LoadBalancersClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -255,7 +257,9 @@ func (client LoadBalancersClient) GetPreparer(resourceGroupName string, loadBala
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancersClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -319,7 +323,9 @@ func (client LoadBalancersClient) ListPreparer(resourceGroupName string) (*http.
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancersClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -449,7 +455,9 @@ func (client LoadBalancersClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client LoadBalancersClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go
index 64cdea20a72b..5431d244efe9 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/localnetworkgateways.go
@@ -119,6 +119,7 @@ func (client LocalNetworkGatewaysClient) CreateOrUpdatePreparer(resourceGroupNam
func (client LocalNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -210,6 +211,7 @@ func (client LocalNetworkGatewaysClient) DeletePreparer(resourceGroupName string
func (client LocalNetworkGatewaysClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -281,7 +283,9 @@ func (client LocalNetworkGatewaysClient) GetPreparer(resourceGroupName string, l
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client LocalNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -345,7 +349,9 @@ func (client LocalNetworkGatewaysClient) ListPreparer(resourceGroupName string)
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client LocalNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/packetcaptures.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/packetcaptures.go
index 1ad97a5e2aa1..d089ca61dbb6 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/packetcaptures.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/packetcaptures.go
@@ -122,6 +122,7 @@ func (client PacketCapturesClient) CreatePreparer(resourceGroupName string, netw
func (client PacketCapturesClient) CreateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -205,6 +206,7 @@ func (client PacketCapturesClient) DeletePreparer(resourceGroupName string, netw
func (client PacketCapturesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -271,7 +273,9 @@ func (client PacketCapturesClient) GetPreparer(resourceGroupName string, network
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client PacketCapturesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -355,6 +359,7 @@ func (client PacketCapturesClient) GetStatusPreparer(resourceGroupName string, n
func (client PacketCapturesClient) GetStatusSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -420,7 +425,9 @@ func (client PacketCapturesClient) ListPreparer(resourceGroupName string, networ
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client PacketCapturesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -503,6 +510,7 @@ func (client PacketCapturesClient) StopPreparer(resourceGroupName string, networ
func (client PacketCapturesClient) StopSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go
index af7e7ec85b66..63733fbd4824 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/publicipaddresses.go
@@ -122,6 +122,7 @@ func (client PublicIPAddressesClient) CreateOrUpdatePreparer(resourceGroupName s
func (client PublicIPAddressesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -203,6 +204,7 @@ func (client PublicIPAddressesClient) DeletePreparer(resourceGroupName string, p
func (client PublicIPAddressesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -271,7 +273,9 @@ func (client PublicIPAddressesClient) GetPreparer(resourceGroupName string, publ
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client PublicIPAddressesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -346,7 +350,9 @@ func (client PublicIPAddressesClient) GetVirtualMachineScaleSetPublicIPAddressPr
// GetVirtualMachineScaleSetPublicIPAddressSender sends the GetVirtualMachineScaleSetPublicIPAddress request. The method will close the
// http.Response Body if it receives an error.
func (client PublicIPAddressesClient) GetVirtualMachineScaleSetPublicIPAddressSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetVirtualMachineScaleSetPublicIPAddressResponder handles the response to the GetVirtualMachineScaleSetPublicIPAddress request. The method always
@@ -410,7 +416,9 @@ func (client PublicIPAddressesClient) ListPreparer(resourceGroupName string) (*h
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client PublicIPAddressesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -540,7 +548,9 @@ func (client PublicIPAddressesClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client PublicIPAddressesClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -676,7 +686,9 @@ func (client PublicIPAddressesClient) ListVirtualMachineScaleSetPublicIPAddresse
// ListVirtualMachineScaleSetPublicIPAddressesSender sends the ListVirtualMachineScaleSetPublicIPAddresses request. The method will close the
// http.Response Body if it receives an error.
func (client PublicIPAddressesClient) ListVirtualMachineScaleSetPublicIPAddressesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListVirtualMachineScaleSetPublicIPAddressesResponder handles the response to the ListVirtualMachineScaleSetPublicIPAddresses request. The method always
@@ -816,7 +828,9 @@ func (client PublicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddres
// ListVirtualMachineScaleSetVMPublicIPAddressesSender sends the ListVirtualMachineScaleSetVMPublicIPAddresses request. The method will close the
// http.Response Body if it receives an error.
func (client PublicIPAddressesClient) ListVirtualMachineScaleSetVMPublicIPAddressesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListVirtualMachineScaleSetVMPublicIPAddressesResponder handles the response to the ListVirtualMachineScaleSetVMPublicIPAddresses request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilterrules.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilterrules.go
index 7c0ab17904c8..b3dc3883bec4 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilterrules.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilterrules.go
@@ -122,6 +122,7 @@ func (client RouteFilterRulesClient) CreateOrUpdatePreparer(resourceGroupName st
func (client RouteFilterRulesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -206,6 +207,7 @@ func (client RouteFilterRulesClient) DeletePreparer(resourceGroupName string, ro
func (client RouteFilterRulesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -272,7 +274,9 @@ func (client RouteFilterRulesClient) GetPreparer(resourceGroupName string, route
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client RouteFilterRulesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -337,7 +341,9 @@ func (client RouteFilterRulesClient) ListByRouteFilterPreparer(resourceGroupName
// ListByRouteFilterSender sends the ListByRouteFilter request. The method will close the
// http.Response Body if it receives an error.
func (client RouteFilterRulesClient) ListByRouteFilterSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByRouteFilterResponder handles the response to the ListByRouteFilter request. The method always
@@ -493,6 +499,7 @@ func (client RouteFilterRulesClient) UpdatePreparer(resourceGroupName string, ro
func (client RouteFilterRulesClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilters.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilters.go
index 711e58fc9c98..0d35b6d9c06c 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilters.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routefilters.go
@@ -107,6 +107,7 @@ func (client RouteFiltersClient) CreateOrUpdatePreparer(resourceGroupName string
func (client RouteFiltersClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -188,6 +189,7 @@ func (client RouteFiltersClient) DeletePreparer(resourceGroupName string, routeF
func (client RouteFiltersClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -256,7 +258,9 @@ func (client RouteFiltersClient) GetPreparer(resourceGroupName string, routeFilt
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client RouteFiltersClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -317,7 +321,9 @@ func (client RouteFiltersClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client RouteFiltersClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -450,7 +456,9 @@ func (client RouteFiltersClient) ListByResourceGroupPreparer(resourceGroupName s
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
// http.Response Body if it receives an error.
func (client RouteFiltersClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
@@ -604,6 +612,7 @@ func (client RouteFiltersClient) UpdatePreparer(resourceGroupName string, routeF
func (client RouteFiltersClient) UpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go
index 0dcde6fa01d0..48d11f3afce2 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routes.go
@@ -108,6 +108,7 @@ func (client RoutesClient) CreateOrUpdatePreparer(resourceGroupName string, rout
func (client RoutesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -192,6 +193,7 @@ func (client RoutesClient) DeletePreparer(resourceGroupName string, routeTableNa
func (client RoutesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -258,7 +260,9 @@ func (client RoutesClient) GetPreparer(resourceGroupName string, routeTableName
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client RoutesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -323,7 +327,9 @@ func (client RoutesClient) ListPreparer(resourceGroupName string, routeTableName
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client RoutesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go
index e9b557bc0b37..3a2f4ca69e6c 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/routetables.go
@@ -107,6 +107,7 @@ func (client RouteTablesClient) CreateOrUpdatePreparer(resourceGroupName string,
func (client RouteTablesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -188,6 +189,7 @@ func (client RouteTablesClient) DeletePreparer(resourceGroupName string, routeTa
func (client RouteTablesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -256,7 +258,9 @@ func (client RouteTablesClient) GetPreparer(resourceGroupName string, routeTable
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client RouteTablesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -320,7 +324,9 @@ func (client RouteTablesClient) ListPreparer(resourceGroupName string) (*http.Re
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client RouteTablesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -450,7 +456,9 @@ func (client RouteTablesClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client RouteTablesClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go
index b1a5ae4a6e29..3606e6d82c89 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securitygroups.go
@@ -107,6 +107,7 @@ func (client SecurityGroupsClient) CreateOrUpdatePreparer(resourceGroupName stri
func (client SecurityGroupsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -189,6 +190,7 @@ func (client SecurityGroupsClient) DeletePreparer(resourceGroupName string, netw
func (client SecurityGroupsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -257,7 +259,9 @@ func (client SecurityGroupsClient) GetPreparer(resourceGroupName string, network
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client SecurityGroupsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -321,7 +325,9 @@ func (client SecurityGroupsClient) ListPreparer(resourceGroupName string) (*http
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client SecurityGroupsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -451,7 +457,9 @@ func (client SecurityGroupsClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client SecurityGroupsClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go
index 9c76ef54e8b9..6fcecae5f9c1 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/securityrules.go
@@ -122,6 +122,7 @@ func (client SecurityRulesClient) CreateOrUpdatePreparer(resourceGroupName strin
func (client SecurityRulesClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -205,6 +206,7 @@ func (client SecurityRulesClient) DeletePreparer(resourceGroupName string, netwo
func (client SecurityRulesClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -271,7 +273,9 @@ func (client SecurityRulesClient) GetPreparer(resourceGroupName string, networkS
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client SecurityRulesClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -337,7 +341,9 @@ func (client SecurityRulesClient) ListPreparer(resourceGroupName string, network
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client SecurityRulesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go
index 62a1789e591d..298cb989ffa8 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/subnets.go
@@ -109,6 +109,7 @@ func (client SubnetsClient) CreateOrUpdatePreparer(resourceGroupName string, vir
func (client SubnetsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -192,6 +193,7 @@ func (client SubnetsClient) DeletePreparer(resourceGroupName string, virtualNetw
func (client SubnetsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -261,7 +263,9 @@ func (client SubnetsClient) GetPreparer(resourceGroupName string, virtualNetwork
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client SubnetsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -326,7 +330,9 @@ func (client SubnetsClient) ListPreparer(resourceGroupName string, virtualNetwor
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client SubnetsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go
index 85c220065404..ab2c9b8fcb3e 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/usages.go
@@ -93,7 +93,9 @@ func (client UsagesClient) ListPreparer(location string) (*http.Request, error)
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client UsagesClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go
index 7f510b4e4c6d..423a7117d8ff 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/version.go
@@ -19,10 +19,10 @@ package network
// UserAgent returns the UserAgent string to use when sending http.Requests.
func UserAgent() string {
- return "Azure-SDK-For-Go/v11.0.0-beta arm-network/"
+ return "Azure-SDK-For-Go/v12.4.0-beta arm-network/"
}
// Version returns the semantic version (see http://semver.org) of the client.
func Version() string {
- return "v11.0.0-beta"
+ return "v12.4.0-beta"
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go
index 7db4d5de6c38..faac6f8a6797 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgatewayconnections.go
@@ -126,6 +126,7 @@ func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdatePreparer(reso
func (client VirtualNetworkGatewayConnectionsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -209,6 +210,7 @@ func (client VirtualNetworkGatewayConnectionsClient) DeletePreparer(resourceGrou
func (client VirtualNetworkGatewayConnectionsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -274,7 +276,9 @@ func (client VirtualNetworkGatewayConnectionsClient) GetPreparer(resourceGroupNa
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewayConnectionsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -341,7 +345,9 @@ func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeyPreparer(resour
// GetSharedKeySender sends the GetSharedKey request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewayConnectionsClient) GetSharedKeySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetSharedKeyResponder handles the response to the GetSharedKey request. The method always
@@ -406,7 +412,9 @@ func (client VirtualNetworkGatewayConnectionsClient) ListPreparer(resourceGroupN
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewayConnectionsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -574,6 +582,7 @@ func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeyPreparer(reso
func (client VirtualNetworkGatewayConnectionsClient) ResetSharedKeySender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -670,6 +679,7 @@ func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeyPreparer(resour
func (client VirtualNetworkGatewayConnectionsClient) SetSharedKeySender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go
index 5f56a204badf..6edd19644c5b 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkgateways.go
@@ -117,6 +117,7 @@ func (client VirtualNetworkGatewaysClient) CreateOrUpdatePreparer(resourceGroupN
func (client VirtualNetworkGatewaysClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -200,6 +201,7 @@ func (client VirtualNetworkGatewaysClient) DeletePreparer(resourceGroupName stri
func (client VirtualNetworkGatewaysClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -284,6 +286,7 @@ func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackagePreparer(reso
func (client VirtualNetworkGatewaysClient) GeneratevpnclientpackageSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -370,6 +373,7 @@ func (client VirtualNetworkGatewaysClient) GenerateVpnProfilePreparer(resourceGr
func (client VirtualNetworkGatewaysClient) GenerateVpnProfileSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -436,7 +440,9 @@ func (client VirtualNetworkGatewaysClient) GetPreparer(resourceGroupName string,
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewaysClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -520,6 +526,7 @@ func (client VirtualNetworkGatewaysClient) GetAdvertisedRoutesPreparer(resourceG
func (client VirtualNetworkGatewaysClient) GetAdvertisedRoutesSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -606,6 +613,7 @@ func (client VirtualNetworkGatewaysClient) GetBgpPeerStatusPreparer(resourceGrou
func (client VirtualNetworkGatewaysClient) GetBgpPeerStatusSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -689,6 +697,7 @@ func (client VirtualNetworkGatewaysClient) GetLearnedRoutesPreparer(resourceGrou
func (client VirtualNetworkGatewaysClient) GetLearnedRoutesSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -773,6 +782,7 @@ func (client VirtualNetworkGatewaysClient) GetVpnProfilePackageURLPreparer(resou
func (client VirtualNetworkGatewaysClient) GetVpnProfilePackageURLSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -837,7 +847,9 @@ func (client VirtualNetworkGatewaysClient) ListPreparer(resourceGroupName string
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewaysClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -972,7 +984,9 @@ func (client VirtualNetworkGatewaysClient) ListConnectionsPreparer(resourceGroup
// ListConnectionsSender sends the ListConnections request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewaysClient) ListConnectionsSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListConnectionsResponder handles the response to the ListConnections request. The method always
@@ -1128,6 +1142,7 @@ func (client VirtualNetworkGatewaysClient) ResetPreparer(resourceGroupName strin
func (client VirtualNetworkGatewaysClient) ResetSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1194,7 +1209,9 @@ func (client VirtualNetworkGatewaysClient) SupportedVpnDevicesPreparer(resourceG
// SupportedVpnDevicesSender sends the SupportedVpnDevices request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewaysClient) SupportedVpnDevicesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// SupportedVpnDevicesResponder handles the response to the SupportedVpnDevices request. The method always
@@ -1263,7 +1280,9 @@ func (client VirtualNetworkGatewaysClient) VpnDeviceConfigurationScriptPreparer(
// VpnDeviceConfigurationScriptSender sends the VpnDeviceConfigurationScript request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkGatewaysClient) VpnDeviceConfigurationScriptSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// VpnDeviceConfigurationScriptResponder handles the response to the VpnDeviceConfigurationScript request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkpeerings.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkpeerings.go
index 0a945c1bb8d7..30bed99c02cd 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkpeerings.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworkpeerings.go
@@ -109,6 +109,7 @@ func (client VirtualNetworkPeeringsClient) CreateOrUpdatePreparer(resourceGroupN
func (client VirtualNetworkPeeringsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -193,6 +194,7 @@ func (client VirtualNetworkPeeringsClient) DeletePreparer(resourceGroupName stri
func (client VirtualNetworkPeeringsClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -259,7 +261,9 @@ func (client VirtualNetworkPeeringsClient) GetPreparer(resourceGroupName string,
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkPeeringsClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -324,7 +328,9 @@ func (client VirtualNetworkPeeringsClient) ListPreparer(resourceGroupName string
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworkPeeringsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go
index 58ac8ab11229..47c71480661f 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/virtualnetworks.go
@@ -91,7 +91,9 @@ func (client VirtualNetworksClient) CheckIPAddressAvailabilityPreparer(resourceG
// CheckIPAddressAvailabilitySender sends the CheckIPAddressAvailability request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworksClient) CheckIPAddressAvailabilitySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// CheckIPAddressAvailabilityResponder handles the response to the CheckIPAddressAvailability request. The method always
@@ -176,6 +178,7 @@ func (client VirtualNetworksClient) CreateOrUpdatePreparer(resourceGroupName str
func (client VirtualNetworksClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -257,6 +260,7 @@ func (client VirtualNetworksClient) DeletePreparer(resourceGroupName string, vir
func (client VirtualNetworksClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -325,7 +329,9 @@ func (client VirtualNetworksClient) GetPreparer(resourceGroupName string, virtua
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworksClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -389,7 +395,9 @@ func (client VirtualNetworksClient) ListPreparer(resourceGroupName string) (*htt
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworksClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -519,7 +527,9 @@ func (client VirtualNetworksClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworksClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -653,7 +663,9 @@ func (client VirtualNetworksClient) ListUsagePreparer(resourceGroupName string,
// ListUsageSender sends the ListUsage request. The method will close the
// http.Response Body if it receives an error.
func (client VirtualNetworksClient) ListUsageSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListUsageResponder handles the response to the ListUsage request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/watchers.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/watchers.go
index 798d8c1bb221..b075417ddbee 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/network/watchers.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/network/watchers.go
@@ -120,6 +120,7 @@ func (client WatchersClient) CheckConnectivityPreparer(resourceGroupName string,
func (client WatchersClient) CheckConnectivitySender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -188,7 +189,9 @@ func (client WatchersClient) CreateOrUpdatePreparer(resourceGroupName string, ne
// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
// http.Response Body if it receives an error.
func (client WatchersClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
@@ -270,6 +273,7 @@ func (client WatchersClient) DeletePreparer(resourceGroupName string, networkWat
func (client WatchersClient) DeleteSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -334,7 +338,9 @@ func (client WatchersClient) GetPreparer(resourceGroupName string, networkWatche
// GetSender sends the Get request. The method will close the
// http.Response Body if it receives an error.
func (client WatchersClient) GetSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetResponder handles the response to the Get request. The method always
@@ -431,6 +437,7 @@ func (client WatchersClient) GetAzureReachabilityReportPreparer(resourceGroupNam
func (client WatchersClient) GetAzureReachabilityReportSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -525,6 +532,7 @@ func (client WatchersClient) GetFlowLogStatusPreparer(resourceGroupName string,
func (client WatchersClient) GetFlowLogStatusSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -620,6 +628,7 @@ func (client WatchersClient) GetNextHopPreparer(resourceGroupName string, networ
func (client WatchersClient) GetNextHopSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -694,7 +703,9 @@ func (client WatchersClient) GetTopologyPreparer(resourceGroupName string, netwo
// GetTopologySender sends the GetTopology request. The method will close the
// http.Response Body if it receives an error.
func (client WatchersClient) GetTopologySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetTopologyResponder handles the response to the GetTopology request. The method always
@@ -792,6 +803,7 @@ func (client WatchersClient) GetTroubleshootingPreparer(resourceGroupName string
func (client WatchersClient) GetTroubleshootingSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -886,6 +898,7 @@ func (client WatchersClient) GetTroubleshootingResultPreparer(resourceGroupName
func (client WatchersClient) GetTroubleshootingResultSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -980,6 +993,7 @@ func (client WatchersClient) GetVMSecurityRulesPreparer(resourceGroupName string
func (client WatchersClient) GetVMSecurityRulesSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1044,7 +1058,9 @@ func (client WatchersClient) ListPreparer(resourceGroupName string) (*http.Reque
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client WatchersClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -1105,7 +1121,9 @@ func (client WatchersClient) ListAllPreparer() (*http.Request, error) {
// ListAllSender sends the ListAll request. The method will close the
// http.Response Body if it receives an error.
func (client WatchersClient) ListAllSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAllResponder handles the response to the ListAll request. The method always
@@ -1190,6 +1208,7 @@ func (client WatchersClient) ListAvailableProvidersPreparer(resourceGroupName st
func (client WatchersClient) ListAvailableProvidersSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1288,6 +1307,7 @@ func (client WatchersClient) SetFlowLogConfigurationPreparer(resourceGroupName s
func (client WatchersClient) SetFlowLogConfigurationSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -1386,6 +1406,7 @@ func (client WatchersClient) VerifyIPFlowPreparer(resourceGroupName string, netw
func (client WatchersClient) VerifyIPFlowSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go
index 0870a03ded6e..dfa59f957837 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/accounts.go
@@ -96,7 +96,9 @@ func (client AccountsClient) CheckNameAvailabilityPreparer(accountName AccountCh
// CheckNameAvailabilitySender sends the CheckNameAvailability request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) CheckNameAvailabilitySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// CheckNameAvailabilityResponder handles the response to the CheckNameAvailability request. The method always
@@ -208,6 +210,7 @@ func (client AccountsClient) CreatePreparer(resourceGroupName string, accountNam
func (client AccountsClient) CreateSender(req *http.Request) (*http.Response, error) {
return autorest.SendWithSender(client,
req,
+ azure.DoRetryWithRegistration(client.Client),
azure.DoPollForAsynchronous(client.PollingDelay))
}
@@ -286,7 +289,9 @@ func (client AccountsClient) DeletePreparer(resourceGroupName string, accountNam
// DeleteSender sends the Delete request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) DeleteSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// DeleteResponder handles the response to the Delete request. The method always
@@ -364,7 +369,9 @@ func (client AccountsClient) GetPropertiesPreparer(resourceGroupName string, acc
// GetPropertiesSender sends the GetProperties request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) GetPropertiesSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// GetPropertiesResponder handles the response to the GetProperties request. The method always
@@ -426,7 +433,9 @@ func (client AccountsClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
@@ -509,7 +518,9 @@ func (client AccountsClient) ListAccountSASPreparer(resourceGroupName string, ac
// ListAccountSASSender sends the ListAccountSAS request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) ListAccountSASSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListAccountSASResponder handles the response to the ListAccountSAS request. The method always
@@ -582,7 +593,9 @@ func (client AccountsClient) ListByResourceGroupPreparer(resourceGroupName strin
// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
@@ -660,7 +673,9 @@ func (client AccountsClient) ListKeysPreparer(resourceGroupName string, accountN
// ListKeysSender sends the ListKeys request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) ListKeysSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListKeysResponder handles the response to the ListKeys request. The method always
@@ -745,7 +760,9 @@ func (client AccountsClient) ListServiceSASPreparer(resourceGroupName string, ac
// ListServiceSASSender sends the ListServiceSAS request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) ListServiceSASSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListServiceSASResponder handles the response to the ListServiceSAS request. The method always
@@ -828,7 +845,9 @@ func (client AccountsClient) RegenerateKeyPreparer(resourceGroupName string, acc
// RegenerateKeySender sends the RegenerateKey request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) RegenerateKeySender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// RegenerateKeyResponder handles the response to the RegenerateKey request. The method always
@@ -914,7 +933,9 @@ func (client AccountsClient) UpdatePreparer(resourceGroupName string, accountNam
// UpdateSender sends the Update request. The method will close the
// http.Response Body if it receives an error.
func (client AccountsClient) UpdateSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// UpdateResponder handles the response to the Update request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go
index 133386ddbeb6..1c54682152d8 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/client.go
@@ -1,6 +1,8 @@
// Package storage implements the Azure ARM Storage service API version 2017-06-01.
//
// The Azure Storage Management API.
+//
+// Deprecated: Please instead use github.com/Azure/azure-sdk-for-go/services/storage/mgmt/2017-06-01/storage
package storage
// Copyright (c) Microsoft and contributors. All rights reserved.
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/operations.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/operations.go
index cc46c6997920..ca46f8e13601 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/operations.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/operations.go
@@ -79,7 +79,9 @@ func (client OperationsClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client OperationsClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/skus.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/skus.go
index 94d4d6f83ec5..cfad757fb223 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/skus.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/skus.go
@@ -83,7 +83,9 @@ func (client SkusClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client SkusClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usage.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usage.go
index 682e5c16c362..933c5d9617e8 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usage.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/usage.go
@@ -83,7 +83,9 @@ func (client UsageClient) ListPreparer() (*http.Request, error) {
// ListSender sends the List request. The method will close the
// http.Response Body if it receives an error.
func (client UsageClient) ListSender(req *http.Request) (*http.Response, error) {
- return autorest.SendWithSender(client, req)
+ return autorest.SendWithSender(client,
+ req,
+ azure.DoRetryWithRegistration(client.Client))
}
// ListResponder handles the response to the List request. The method always
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go
index 467102d59734..47e1b25d4059 100755
--- a/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/arm/storage/version.go
@@ -19,10 +19,10 @@ package storage
// UserAgent returns the UserAgent string to use when sending http.Requests.
func UserAgent() string {
- return "Azure-SDK-For-Go/v11.0.0-beta arm-storage/2017-06-01"
+ return "Azure-SDK-For-Go/v12.4.0-beta arm-storage/2017-06-01"
}
// Version returns the semantic version (see http://semver.org) of the client.
func Version() string {
- return "v11.0.0-beta"
+ return "v12.4.0-beta"
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/availabilitysets.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/availabilitysets.go
new file mode 100644
index 000000000000..f1f4cb5eb995
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/availabilitysets.go
@@ -0,0 +1,373 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "net/http"
+)
+
+// AvailabilitySetsClient is the compute Client
+type AvailabilitySetsClient struct {
+ BaseClient
+}
+
+// NewAvailabilitySetsClient creates an instance of the AvailabilitySetsClient client.
+func NewAvailabilitySetsClient(subscriptionID string) AvailabilitySetsClient {
+ return NewAvailabilitySetsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewAvailabilitySetsClientWithBaseURI creates an instance of the AvailabilitySetsClient client.
+func NewAvailabilitySetsClientWithBaseURI(baseURI string, subscriptionID string) AvailabilitySetsClient {
+ return AvailabilitySetsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate create or update an availability set.
+//
+// resourceGroupName is the name of the resource group. availabilitySetName is the name of the availability set.
+// parameters is parameters supplied to the Create Availability Set operation.
+func (client AvailabilitySetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, availabilitySetName string, parameters AvailabilitySet) (result AvailabilitySet, err error) {
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, availabilitySetName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.CreateOrUpdateSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "CreateOrUpdate", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "CreateOrUpdate", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client AvailabilitySetsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, availabilitySetName string, parameters AvailabilitySet) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "availabilitySetName": autorest.Encode("path", availabilitySetName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client AvailabilitySetsClient) CreateOrUpdateSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client AvailabilitySetsClient) CreateOrUpdateResponder(resp *http.Response) (result AvailabilitySet, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete delete an availability set.
+//
+// resourceGroupName is the name of the resource group. availabilitySetName is the name of the availability set.
+func (client AvailabilitySetsClient) Delete(ctx context.Context, resourceGroupName string, availabilitySetName string) (result OperationStatusResponse, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, availabilitySetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.DeleteSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Delete", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.DeleteResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Delete", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client AvailabilitySetsClient) DeletePreparer(ctx context.Context, resourceGroupName string, availabilitySetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "availabilitySetName": autorest.Encode("path", availabilitySetName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client AvailabilitySetsClient) DeleteSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client AvailabilitySetsClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get retrieves information about an availability set.
+//
+// resourceGroupName is the name of the resource group. availabilitySetName is the name of the availability set.
+func (client AvailabilitySetsClient) Get(ctx context.Context, resourceGroupName string, availabilitySetName string) (result AvailabilitySet, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, availabilitySetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client AvailabilitySetsClient) GetPreparer(ctx context.Context, resourceGroupName string, availabilitySetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "availabilitySetName": autorest.Encode("path", availabilitySetName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client AvailabilitySetsClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client AvailabilitySetsClient) GetResponder(resp *http.Response) (result AvailabilitySet, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List lists all availability sets in a resource group.
+//
+// resourceGroupName is the name of the resource group.
+func (client AvailabilitySetsClient) List(ctx context.Context, resourceGroupName string) (result AvailabilitySetListResult, err error) {
+ req, err := client.ListPreparer(ctx, resourceGroupName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client AvailabilitySetsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client AvailabilitySetsClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client AvailabilitySetsClient) ListResponder(resp *http.Response) (result AvailabilitySetListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ListAvailableSizes lists all available virtual machine sizes that can be used to create a new virtual machine in an
+// existing availability set.
+//
+// resourceGroupName is the name of the resource group. availabilitySetName is the name of the availability set.
+func (client AvailabilitySetsClient) ListAvailableSizes(ctx context.Context, resourceGroupName string, availabilitySetName string) (result VirtualMachineSizeListResult, err error) {
+ req, err := client.ListAvailableSizesPreparer(ctx, resourceGroupName, availabilitySetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListAvailableSizesSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListAvailableSizesResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.AvailabilitySetsClient", "ListAvailableSizes", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListAvailableSizesPreparer prepares the ListAvailableSizes request.
+func (client AvailabilitySetsClient) ListAvailableSizesPreparer(ctx context.Context, resourceGroupName string, availabilitySetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "availabilitySetName": autorest.Encode("path", availabilitySetName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/availabilitySets/{availabilitySetName}/vmSizes", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListAvailableSizesSender sends the ListAvailableSizes request. The method will close the
+// http.Response Body if it receives an error.
+func (client AvailabilitySetsClient) ListAvailableSizesSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListAvailableSizesResponder handles the response to the ListAvailableSizes request. The method always
+// closes the http.Response Body.
+func (client AvailabilitySetsClient) ListAvailableSizesResponder(resp *http.Response) (result VirtualMachineSizeListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/client.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/client.go
new file mode 100644
index 000000000000..b23c9ca74268
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/client.go
@@ -0,0 +1,51 @@
+// Package compute implements the Azure ARM Compute service API version .
+//
+// Compute Client
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "github.com/Azure/go-autorest/autorest"
+)
+
+const (
+ // DefaultBaseURI is the default URI used for the service Compute
+ DefaultBaseURI = "https://management.azure.com"
+)
+
+// BaseClient is the base client for Compute.
+type BaseClient struct {
+ autorest.Client
+ BaseURI string
+ SubscriptionID string
+}
+
+// New creates an instance of the BaseClient client.
+func New(subscriptionID string) BaseClient {
+ return NewWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewWithBaseURI creates an instance of the BaseClient client.
+func NewWithBaseURI(baseURI string, subscriptionID string) BaseClient {
+ return BaseClient{
+ Client: autorest.NewClientWithUserAgent(UserAgent()),
+ BaseURI: baseURI,
+ SubscriptionID: subscriptionID,
+ }
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/containerservices.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/containerservices.go
new file mode 100644
index 000000000000..7bc59c9ed406
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/containerservices.go
@@ -0,0 +1,472 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// ContainerServicesClient is the compute Client
+type ContainerServicesClient struct {
+ BaseClient
+}
+
+// NewContainerServicesClient creates an instance of the ContainerServicesClient client.
+func NewContainerServicesClient(subscriptionID string) ContainerServicesClient {
+ return NewContainerServicesClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewContainerServicesClientWithBaseURI creates an instance of the ContainerServicesClient client.
+func NewContainerServicesClientWithBaseURI(baseURI string, subscriptionID string) ContainerServicesClient {
+ return ContainerServicesClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate creates or updates a container service with the specified configuration of orchestrator, masters, and
+// agents.
+//
+// resourceGroupName is the name of the resource group. containerServiceName is the name of the container service in
+// the specified subscription and resource group. parameters is parameters supplied to the Create or Update a Container
+// Service operation.
+func (client ContainerServicesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, containerServiceName string, parameters ContainerService) (result ContainerServicesCreateOrUpdateFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: parameters,
+ Constraints: []validation.Constraint{{Target: "parameters.ContainerServiceProperties", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.CustomProfile", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.CustomProfile.Orchestrator", Name: validation.Null, Rule: true, Chain: nil}}},
+ {Target: "parameters.ContainerServiceProperties.ServicePrincipalProfile", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.ServicePrincipalProfile.ClientID", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.ContainerServiceProperties.ServicePrincipalProfile.Secret", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ {Target: "parameters.ContainerServiceProperties.MasterProfile", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.MasterProfile.DNSPrefix", Name: validation.Null, Rule: true, Chain: nil}}},
+ {Target: "parameters.ContainerServiceProperties.AgentPoolProfiles", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.ContainerServiceProperties.WindowsProfile", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.WindowsProfile.AdminUsername", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.WindowsProfile.AdminUsername", Name: validation.Pattern, Rule: `^[a-zA-Z0-9]+([._]?[a-zA-Z0-9]+)*$`, Chain: nil}}},
+ {Target: "parameters.ContainerServiceProperties.WindowsProfile.AdminPassword", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.WindowsProfile.AdminPassword", Name: validation.Pattern, Rule: `^(?=.*[a-z])(?=.*[A-Z])(?=.*[!@#$%\^&\*\(\)])[a-zA-Z\d!@#$%\^&\*\(\)]{12,123}$`, Chain: nil}}},
+ }},
+ {Target: "parameters.ContainerServiceProperties.LinuxProfile", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.LinuxProfile.AdminUsername", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.LinuxProfile.AdminUsername", Name: validation.Pattern, Rule: `^[a-z][a-z0-9_-]*$`, Chain: nil}}},
+ {Target: "parameters.ContainerServiceProperties.LinuxProfile.SSH", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.LinuxProfile.SSH.PublicKeys", Name: validation.Null, Rule: true, Chain: nil}}},
+ }},
+ {Target: "parameters.ContainerServiceProperties.DiagnosticsProfile", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.DiagnosticsProfile.VMDiagnostics", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "parameters.ContainerServiceProperties.DiagnosticsProfile.VMDiagnostics.Enabled", Name: validation.Null, Rule: true, Chain: nil}}},
+ }},
+ }}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.ContainerServicesClient", "CreateOrUpdate")
+ }
+
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, containerServiceName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client ContainerServicesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, containerServiceName string, parameters ContainerService) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "containerServiceName": autorest.Encode("path", containerServiceName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-01-31"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client ContainerServicesClient) CreateOrUpdateSender(req *http.Request) (future ContainerServicesCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client ContainerServicesClient) CreateOrUpdateResponder(resp *http.Response) (result ContainerService, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete deletes the specified container service in the specified subscription and resource group. The operation does
+// not delete other resources created as part of creating a container service, including storage accounts, VMs, and
+// availability sets. All the other resources created with the container service are part of the same resource group
+// and can be deleted individually.
+//
+// resourceGroupName is the name of the resource group. containerServiceName is the name of the container service in
+// the specified subscription and resource group.
+func (client ContainerServicesClient) Delete(ctx context.Context, resourceGroupName string, containerServiceName string) (result ContainerServicesDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, containerServiceName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client ContainerServicesClient) DeletePreparer(ctx context.Context, resourceGroupName string, containerServiceName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "containerServiceName": autorest.Encode("path", containerServiceName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-01-31"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client ContainerServicesClient) DeleteSender(req *http.Request) (future ContainerServicesDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client ContainerServicesClient) DeleteResponder(resp *http.Response) (result autorest.Response, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByClosing())
+ result.Response = resp
+ return
+}
+
+// Get gets the properties of the specified container service in the specified subscription and resource group. The
+// operation returns the properties including state, orchestrator, number of masters and agents, and FQDNs of masters
+// and agents.
+//
+// resourceGroupName is the name of the resource group. containerServiceName is the name of the container service in
+// the specified subscription and resource group.
+func (client ContainerServicesClient) Get(ctx context.Context, resourceGroupName string, containerServiceName string) (result ContainerService, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, containerServiceName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client ContainerServicesClient) GetPreparer(ctx context.Context, resourceGroupName string, containerServiceName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "containerServiceName": autorest.Encode("path", containerServiceName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-01-31"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices/{containerServiceName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client ContainerServicesClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client ContainerServicesClient) GetResponder(resp *http.Response) (result ContainerService, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List gets a list of container services in the specified subscription. The operation returns properties of each
+// container service including state, orchestrator, number of masters and agents, and FQDNs of masters and agents.
+func (client ContainerServicesClient) List(ctx context.Context) (result ContainerServiceListResultPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.cslr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.cslr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client ContainerServicesClient) ListPreparer(ctx context.Context) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-01-31"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.ContainerService/containerServices", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client ContainerServicesClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client ContainerServicesClient) ListResponder(resp *http.Response) (result ContainerServiceListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client ContainerServicesClient) listNextResults(lastResults ContainerServiceListResult) (result ContainerServiceListResult, err error) {
+ req, err := lastResults.containerServiceListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client ContainerServicesClient) ListComplete(ctx context.Context) (result ContainerServiceListResultIterator, err error) {
+ result.page, err = client.List(ctx)
+ return
+}
+
+// ListByResourceGroup gets a list of container services in the specified subscription and resource group. The
+// operation returns properties of each container service including state, orchestrator, number of masters and agents,
+// and FQDNs of masters and agents.
+//
+// resourceGroupName is the name of the resource group.
+func (client ContainerServicesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ContainerServiceListResultPage, err error) {
+ result.fn = client.listByResourceGroupNextResults
+ req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "ListByResourceGroup", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.cslr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "ListByResourceGroup", resp, "Failure sending request")
+ return
+ }
+
+ result.cslr, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "ListByResourceGroup", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
+func (client ContainerServicesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-01-31"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ContainerService/containerServices", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
+// http.Response Body if it receives an error.
+func (client ContainerServicesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
+// closes the http.Response Body.
+func (client ContainerServicesClient) ListByResourceGroupResponder(resp *http.Response) (result ContainerServiceListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listByResourceGroupNextResults retrieves the next set of results, if any.
+func (client ContainerServicesClient) listByResourceGroupNextResults(lastResults ContainerServiceListResult) (result ContainerServiceListResult, err error) {
+ req, err := lastResults.containerServiceListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ContainerServicesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
+func (client ContainerServicesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ContainerServiceListResultIterator, err error) {
+ result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/disks.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/disks.go
new file mode 100644
index 000000000000..6b812c6d34f5
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/disks.go
@@ -0,0 +1,676 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// DisksClient is the compute Client
+type DisksClient struct {
+ BaseClient
+}
+
+// NewDisksClient creates an instance of the DisksClient client.
+func NewDisksClient(subscriptionID string) DisksClient {
+ return NewDisksClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewDisksClientWithBaseURI creates an instance of the DisksClient client.
+func NewDisksClientWithBaseURI(baseURI string, subscriptionID string) DisksClient {
+ return DisksClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate creates or updates a disk.
+//
+// resourceGroupName is the name of the resource group. diskName is the name of the managed disk that is being created.
+// The name can't be changed after the disk is created. Supported characters for the name are a-z, A-Z, 0-9 and _. The
+// maximum name length is 80 characters. disk is disk object supplied in the body of the Put disk operation.
+func (client DisksClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, diskName string, disk Disk) (result DisksCreateOrUpdateFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: disk,
+ Constraints: []validation.Constraint{{Target: "disk.DiskProperties", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "disk.DiskProperties.CreationData", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "disk.DiskProperties.CreationData.ImageReference", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "disk.DiskProperties.CreationData.ImageReference.ID", Name: validation.Null, Rule: true, Chain: nil}}},
+ }},
+ {Target: "disk.DiskProperties.EncryptionSettings", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "disk.DiskProperties.EncryptionSettings.DiskEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "disk.DiskProperties.EncryptionSettings.DiskEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "disk.DiskProperties.EncryptionSettings.DiskEncryptionKey.SecretURL", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ {Target: "disk.DiskProperties.EncryptionSettings.KeyEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "disk.DiskProperties.EncryptionSettings.KeyEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "disk.DiskProperties.EncryptionSettings.KeyEncryptionKey.KeyURL", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ }},
+ }}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.DisksClient", "CreateOrUpdate")
+ }
+
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, diskName, disk)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client DisksClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, diskName string, disk Disk) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "diskName": autorest.Encode("path", diskName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", pathParameters),
+ autorest.WithJSON(disk),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) CreateOrUpdateSender(req *http.Request) (future DisksCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client DisksClient) CreateOrUpdateResponder(resp *http.Response) (result Disk, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete deletes a disk.
+//
+// resourceGroupName is the name of the resource group. diskName is the name of the managed disk that is being created.
+// The name can't be changed after the disk is created. Supported characters for the name are a-z, A-Z, 0-9 and _. The
+// maximum name length is 80 characters.
+func (client DisksClient) Delete(ctx context.Context, resourceGroupName string, diskName string) (result DisksDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, diskName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client DisksClient) DeletePreparer(ctx context.Context, resourceGroupName string, diskName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "diskName": autorest.Encode("path", diskName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) DeleteSender(req *http.Request) (future DisksDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client DisksClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get gets information about a disk.
+//
+// resourceGroupName is the name of the resource group. diskName is the name of the managed disk that is being created.
+// The name can't be changed after the disk is created. Supported characters for the name are a-z, A-Z, 0-9 and _. The
+// maximum name length is 80 characters.
+func (client DisksClient) Get(ctx context.Context, resourceGroupName string, diskName string) (result Disk, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, diskName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client DisksClient) GetPreparer(ctx context.Context, resourceGroupName string, diskName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "diskName": autorest.Encode("path", diskName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client DisksClient) GetResponder(resp *http.Response) (result Disk, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// GrantAccess grants access to a disk.
+//
+// resourceGroupName is the name of the resource group. diskName is the name of the managed disk that is being created.
+// The name can't be changed after the disk is created. Supported characters for the name are a-z, A-Z, 0-9 and _. The
+// maximum name length is 80 characters. grantAccessData is access data object supplied in the body of the get disk
+// access operation.
+func (client DisksClient) GrantAccess(ctx context.Context, resourceGroupName string, diskName string, grantAccessData GrantAccessData) (result DisksGrantAccessFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: grantAccessData,
+ Constraints: []validation.Constraint{{Target: "grantAccessData.DurationInSeconds", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.DisksClient", "GrantAccess")
+ }
+
+ req, err := client.GrantAccessPreparer(ctx, resourceGroupName, diskName, grantAccessData)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "GrantAccess", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.GrantAccessSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "GrantAccess", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// GrantAccessPreparer prepares the GrantAccess request.
+func (client DisksClient) GrantAccessPreparer(ctx context.Context, resourceGroupName string, diskName string, grantAccessData GrantAccessData) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "diskName": autorest.Encode("path", diskName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}/beginGetAccess", pathParameters),
+ autorest.WithJSON(grantAccessData),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GrantAccessSender sends the GrantAccess request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) GrantAccessSender(req *http.Request) (future DisksGrantAccessFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// GrantAccessResponder handles the response to the GrantAccess request. The method always
+// closes the http.Response Body.
+func (client DisksClient) GrantAccessResponder(resp *http.Response) (result AccessURI, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List lists all the disks under a subscription.
+func (client DisksClient) List(ctx context.Context) (result DiskListPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.dl.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.dl, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client DisksClient) ListPreparer(ctx context.Context) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/disks", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client DisksClient) ListResponder(resp *http.Response) (result DiskList, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client DisksClient) listNextResults(lastResults DiskList) (result DiskList, err error) {
+ req, err := lastResults.diskListPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.DisksClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.DisksClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client DisksClient) ListComplete(ctx context.Context) (result DiskListIterator, err error) {
+ result.page, err = client.List(ctx)
+ return
+}
+
+// ListByResourceGroup lists all the disks under a resource group.
+//
+// resourceGroupName is the name of the resource group.
+func (client DisksClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result DiskListPage, err error) {
+ result.fn = client.listByResourceGroupNextResults
+ req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "ListByResourceGroup", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.dl.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "ListByResourceGroup", resp, "Failure sending request")
+ return
+ }
+
+ result.dl, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "ListByResourceGroup", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
+func (client DisksClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
+// closes the http.Response Body.
+func (client DisksClient) ListByResourceGroupResponder(resp *http.Response) (result DiskList, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listByResourceGroupNextResults retrieves the next set of results, if any.
+func (client DisksClient) listByResourceGroupNextResults(lastResults DiskList) (result DiskList, err error) {
+ req, err := lastResults.diskListPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.DisksClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.DisksClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
+func (client DisksClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result DiskListIterator, err error) {
+ result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
+ return
+}
+
+// RevokeAccess revokes access to a disk.
+//
+// resourceGroupName is the name of the resource group. diskName is the name of the managed disk that is being created.
+// The name can't be changed after the disk is created. Supported characters for the name are a-z, A-Z, 0-9 and _. The
+// maximum name length is 80 characters.
+func (client DisksClient) RevokeAccess(ctx context.Context, resourceGroupName string, diskName string) (result DisksRevokeAccessFuture, err error) {
+ req, err := client.RevokeAccessPreparer(ctx, resourceGroupName, diskName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "RevokeAccess", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.RevokeAccessSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "RevokeAccess", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// RevokeAccessPreparer prepares the RevokeAccess request.
+func (client DisksClient) RevokeAccessPreparer(ctx context.Context, resourceGroupName string, diskName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "diskName": autorest.Encode("path", diskName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}/endGetAccess", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// RevokeAccessSender sends the RevokeAccess request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) RevokeAccessSender(req *http.Request) (future DisksRevokeAccessFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// RevokeAccessResponder handles the response to the RevokeAccess request. The method always
+// closes the http.Response Body.
+func (client DisksClient) RevokeAccessResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Update updates (patches) a disk.
+//
+// resourceGroupName is the name of the resource group. diskName is the name of the managed disk that is being created.
+// The name can't be changed after the disk is created. Supported characters for the name are a-z, A-Z, 0-9 and _. The
+// maximum name length is 80 characters. disk is disk object supplied in the body of the Patch disk operation.
+func (client DisksClient) Update(ctx context.Context, resourceGroupName string, diskName string, disk DiskUpdate) (result DisksUpdateFuture, err error) {
+ req, err := client.UpdatePreparer(ctx, resourceGroupName, diskName, disk)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "Update", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.UpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.DisksClient", "Update", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// UpdatePreparer prepares the Update request.
+func (client DisksClient) UpdatePreparer(ctx context.Context, resourceGroupName string, diskName string, disk DiskUpdate) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "diskName": autorest.Encode("path", diskName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPatch(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/disks/{diskName}", pathParameters),
+ autorest.WithJSON(disk),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// UpdateSender sends the Update request. The method will close the
+// http.Response Body if it receives an error.
+func (client DisksClient) UpdateSender(req *http.Request) (future DisksUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// UpdateResponder handles the response to the Update request. The method always
+// closes the http.Response Body.
+func (client DisksClient) UpdateResponder(resp *http.Response) (result Disk, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/images.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/images.go
new file mode 100644
index 000000000000..7cdb58154b44
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/images.go
@@ -0,0 +1,443 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// ImagesClient is the compute Client
+type ImagesClient struct {
+ BaseClient
+}
+
+// NewImagesClient creates an instance of the ImagesClient client.
+func NewImagesClient(subscriptionID string) ImagesClient {
+ return NewImagesClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewImagesClientWithBaseURI creates an instance of the ImagesClient client.
+func NewImagesClientWithBaseURI(baseURI string, subscriptionID string) ImagesClient {
+ return ImagesClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate create or update an image.
+//
+// resourceGroupName is the name of the resource group. imageName is the name of the image. parameters is parameters
+// supplied to the Create Image operation.
+func (client ImagesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, imageName string, parameters Image) (result ImagesCreateOrUpdateFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: parameters,
+ Constraints: []validation.Constraint{{Target: "parameters.ImageProperties", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.ImageProperties.StorageProfile", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.ImageProperties.StorageProfile.OsDisk", Name: validation.Null, Rule: true, Chain: nil}}},
+ }}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.ImagesClient", "CreateOrUpdate")
+ }
+
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, imageName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client ImagesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, imageName string, parameters Image) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "imageName": autorest.Encode("path", imageName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client ImagesClient) CreateOrUpdateSender(req *http.Request) (future ImagesCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client ImagesClient) CreateOrUpdateResponder(resp *http.Response) (result Image, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete deletes an Image.
+//
+// resourceGroupName is the name of the resource group. imageName is the name of the image.
+func (client ImagesClient) Delete(ctx context.Context, resourceGroupName string, imageName string) (result ImagesDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, imageName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client ImagesClient) DeletePreparer(ctx context.Context, resourceGroupName string, imageName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "imageName": autorest.Encode("path", imageName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client ImagesClient) DeleteSender(req *http.Request) (future ImagesDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client ImagesClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get gets an image.
+//
+// resourceGroupName is the name of the resource group. imageName is the name of the image. expand is the expand
+// expression to apply on the operation.
+func (client ImagesClient) Get(ctx context.Context, resourceGroupName string, imageName string, expand string) (result Image, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, imageName, expand)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client ImagesClient) GetPreparer(ctx context.Context, resourceGroupName string, imageName string, expand string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "imageName": autorest.Encode("path", imageName),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+ if len(expand) > 0 {
+ queryParameters["$expand"] = autorest.Encode("query", expand)
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images/{imageName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client ImagesClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client ImagesClient) GetResponder(resp *http.Response) (result Image, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List gets the list of Images in the subscription. Use nextLink property in the response to get the next page of
+// Images. Do this till nextLink is null to fetch all the Images.
+func (client ImagesClient) List(ctx context.Context) (result ImageListResultPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.ilr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.ilr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client ImagesClient) ListPreparer(ctx context.Context) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/images", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client ImagesClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client ImagesClient) ListResponder(resp *http.Response) (result ImageListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client ImagesClient) listNextResults(lastResults ImageListResult) (result ImageListResult, err error) {
+ req, err := lastResults.imageListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.ImagesClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.ImagesClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client ImagesClient) ListComplete(ctx context.Context) (result ImageListResultIterator, err error) {
+ result.page, err = client.List(ctx)
+ return
+}
+
+// ListByResourceGroup gets the list of images under a resource group.
+//
+// resourceGroupName is the name of the resource group.
+func (client ImagesClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result ImageListResultPage, err error) {
+ result.fn = client.listByResourceGroupNextResults
+ req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "ListByResourceGroup", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.ilr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "ListByResourceGroup", resp, "Failure sending request")
+ return
+ }
+
+ result.ilr, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "ListByResourceGroup", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
+func (client ImagesClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/images", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
+// http.Response Body if it receives an error.
+func (client ImagesClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
+// closes the http.Response Body.
+func (client ImagesClient) ListByResourceGroupResponder(resp *http.Response) (result ImageListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listByResourceGroupNextResults retrieves the next set of results, if any.
+func (client ImagesClient) listByResourceGroupNextResults(lastResults ImageListResult) (result ImageListResult, err error) {
+ req, err := lastResults.imageListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.ImagesClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.ImagesClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ImagesClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
+func (client ImagesClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result ImageListResultIterator, err error) {
+ result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/loganalytics.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/loganalytics.go
new file mode 100644
index 000000000000..f6cb3bd1ab66
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/loganalytics.go
@@ -0,0 +1,195 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// LogAnalyticsClient is the compute Client
+type LogAnalyticsClient struct {
+ BaseClient
+}
+
+// NewLogAnalyticsClient creates an instance of the LogAnalyticsClient client.
+func NewLogAnalyticsClient(subscriptionID string) LogAnalyticsClient {
+ return NewLogAnalyticsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewLogAnalyticsClientWithBaseURI creates an instance of the LogAnalyticsClient client.
+func NewLogAnalyticsClientWithBaseURI(baseURI string, subscriptionID string) LogAnalyticsClient {
+ return LogAnalyticsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// ExportRequestRateByInterval export logs that show Api requests made by this subscription in the given time window to
+// show throttling activities.
+//
+// parameters is parameters supplied to the LogAnalytics getRequestRateByInterval Api. location is the location upon
+// which virtual-machine-sizes is queried.
+func (client LogAnalyticsClient) ExportRequestRateByInterval(ctx context.Context, parameters RequestRateByIntervalInput, location string) (result LogAnalyticsExportRequestRateByIntervalFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: location,
+ Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._]+$`, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.LogAnalyticsClient", "ExportRequestRateByInterval")
+ }
+
+ req, err := client.ExportRequestRateByIntervalPreparer(ctx, parameters, location)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.LogAnalyticsClient", "ExportRequestRateByInterval", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.ExportRequestRateByIntervalSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.LogAnalyticsClient", "ExportRequestRateByInterval", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// ExportRequestRateByIntervalPreparer prepares the ExportRequestRateByInterval request.
+func (client LogAnalyticsClient) ExportRequestRateByIntervalPreparer(ctx context.Context, parameters RequestRateByIntervalInput, location string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/logAnalytics/apiAccess/getRequestRateByInterval", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ExportRequestRateByIntervalSender sends the ExportRequestRateByInterval request. The method will close the
+// http.Response Body if it receives an error.
+func (client LogAnalyticsClient) ExportRequestRateByIntervalSender(req *http.Request) (future LogAnalyticsExportRequestRateByIntervalFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// ExportRequestRateByIntervalResponder handles the response to the ExportRequestRateByInterval request. The method always
+// closes the http.Response Body.
+func (client LogAnalyticsClient) ExportRequestRateByIntervalResponder(resp *http.Response) (result LogAnalyticsOperationResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ExportThrottledRequests export logs that show total throttled Api requests for this subscription in the given time
+// window.
+//
+// parameters is parameters supplied to the LogAnalytics getThrottledRequests Api. location is the location upon which
+// virtual-machine-sizes is queried.
+func (client LogAnalyticsClient) ExportThrottledRequests(ctx context.Context, parameters ThrottledRequestsInput, location string) (result LogAnalyticsExportThrottledRequestsFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: location,
+ Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._]+$`, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.LogAnalyticsClient", "ExportThrottledRequests")
+ }
+
+ req, err := client.ExportThrottledRequestsPreparer(ctx, parameters, location)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.LogAnalyticsClient", "ExportThrottledRequests", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.ExportThrottledRequestsSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.LogAnalyticsClient", "ExportThrottledRequests", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// ExportThrottledRequestsPreparer prepares the ExportThrottledRequests request.
+func (client LogAnalyticsClient) ExportThrottledRequestsPreparer(ctx context.Context, parameters ThrottledRequestsInput, location string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/logAnalytics/apiAccess/getThrottledRequests", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ExportThrottledRequestsSender sends the ExportThrottledRequests request. The method will close the
+// http.Response Body if it receives an error.
+func (client LogAnalyticsClient) ExportThrottledRequestsSender(req *http.Request) (future LogAnalyticsExportThrottledRequestsFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// ExportThrottledRequestsResponder handles the response to the ExportThrottledRequests request. The method always
+// closes the http.Response Body.
+func (client LogAnalyticsClient) ExportThrottledRequestsResponder(resp *http.Response) (result LogAnalyticsOperationResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/models.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/models.go
new file mode 100644
index 000000000000..02848ce546bd
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/models.go
@@ -0,0 +1,5809 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/date"
+ "github.com/Azure/go-autorest/autorest/to"
+ "net/http"
+)
+
+// AccessLevel enumerates the values for access level.
+type AccessLevel string
+
+const (
+ // None ...
+ None AccessLevel = "None"
+ // Read ...
+ Read AccessLevel = "Read"
+)
+
+// CachingTypes enumerates the values for caching types.
+type CachingTypes string
+
+const (
+ // CachingTypesNone ...
+ CachingTypesNone CachingTypes = "None"
+ // CachingTypesReadOnly ...
+ CachingTypesReadOnly CachingTypes = "ReadOnly"
+ // CachingTypesReadWrite ...
+ CachingTypesReadWrite CachingTypes = "ReadWrite"
+)
+
+// ComponentNames enumerates the values for component names.
+type ComponentNames string
+
+const (
+ // MicrosoftWindowsShellSetup ...
+ MicrosoftWindowsShellSetup ComponentNames = "Microsoft-Windows-Shell-Setup"
+)
+
+// ContainerServiceOrchestratorTypes enumerates the values for container service orchestrator types.
+type ContainerServiceOrchestratorTypes string
+
+const (
+ // Custom ...
+ Custom ContainerServiceOrchestratorTypes = "Custom"
+ // DCOS ...
+ DCOS ContainerServiceOrchestratorTypes = "DCOS"
+ // Kubernetes ...
+ Kubernetes ContainerServiceOrchestratorTypes = "Kubernetes"
+ // Swarm ...
+ Swarm ContainerServiceOrchestratorTypes = "Swarm"
+)
+
+// ContainerServiceVMSizeTypes enumerates the values for container service vm size types.
+type ContainerServiceVMSizeTypes string
+
+const (
+ // StandardA0 ...
+ StandardA0 ContainerServiceVMSizeTypes = "Standard_A0"
+ // StandardA1 ...
+ StandardA1 ContainerServiceVMSizeTypes = "Standard_A1"
+ // StandardA10 ...
+ StandardA10 ContainerServiceVMSizeTypes = "Standard_A10"
+ // StandardA11 ...
+ StandardA11 ContainerServiceVMSizeTypes = "Standard_A11"
+ // StandardA2 ...
+ StandardA2 ContainerServiceVMSizeTypes = "Standard_A2"
+ // StandardA3 ...
+ StandardA3 ContainerServiceVMSizeTypes = "Standard_A3"
+ // StandardA4 ...
+ StandardA4 ContainerServiceVMSizeTypes = "Standard_A4"
+ // StandardA5 ...
+ StandardA5 ContainerServiceVMSizeTypes = "Standard_A5"
+ // StandardA6 ...
+ StandardA6 ContainerServiceVMSizeTypes = "Standard_A6"
+ // StandardA7 ...
+ StandardA7 ContainerServiceVMSizeTypes = "Standard_A7"
+ // StandardA8 ...
+ StandardA8 ContainerServiceVMSizeTypes = "Standard_A8"
+ // StandardA9 ...
+ StandardA9 ContainerServiceVMSizeTypes = "Standard_A9"
+ // StandardD1 ...
+ StandardD1 ContainerServiceVMSizeTypes = "Standard_D1"
+ // StandardD11 ...
+ StandardD11 ContainerServiceVMSizeTypes = "Standard_D11"
+ // StandardD11V2 ...
+ StandardD11V2 ContainerServiceVMSizeTypes = "Standard_D11_v2"
+ // StandardD12 ...
+ StandardD12 ContainerServiceVMSizeTypes = "Standard_D12"
+ // StandardD12V2 ...
+ StandardD12V2 ContainerServiceVMSizeTypes = "Standard_D12_v2"
+ // StandardD13 ...
+ StandardD13 ContainerServiceVMSizeTypes = "Standard_D13"
+ // StandardD13V2 ...
+ StandardD13V2 ContainerServiceVMSizeTypes = "Standard_D13_v2"
+ // StandardD14 ...
+ StandardD14 ContainerServiceVMSizeTypes = "Standard_D14"
+ // StandardD14V2 ...
+ StandardD14V2 ContainerServiceVMSizeTypes = "Standard_D14_v2"
+ // StandardD1V2 ...
+ StandardD1V2 ContainerServiceVMSizeTypes = "Standard_D1_v2"
+ // StandardD2 ...
+ StandardD2 ContainerServiceVMSizeTypes = "Standard_D2"
+ // StandardD2V2 ...
+ StandardD2V2 ContainerServiceVMSizeTypes = "Standard_D2_v2"
+ // StandardD3 ...
+ StandardD3 ContainerServiceVMSizeTypes = "Standard_D3"
+ // StandardD3V2 ...
+ StandardD3V2 ContainerServiceVMSizeTypes = "Standard_D3_v2"
+ // StandardD4 ...
+ StandardD4 ContainerServiceVMSizeTypes = "Standard_D4"
+ // StandardD4V2 ...
+ StandardD4V2 ContainerServiceVMSizeTypes = "Standard_D4_v2"
+ // StandardD5V2 ...
+ StandardD5V2 ContainerServiceVMSizeTypes = "Standard_D5_v2"
+ // StandardDS1 ...
+ StandardDS1 ContainerServiceVMSizeTypes = "Standard_DS1"
+ // StandardDS11 ...
+ StandardDS11 ContainerServiceVMSizeTypes = "Standard_DS11"
+ // StandardDS12 ...
+ StandardDS12 ContainerServiceVMSizeTypes = "Standard_DS12"
+ // StandardDS13 ...
+ StandardDS13 ContainerServiceVMSizeTypes = "Standard_DS13"
+ // StandardDS14 ...
+ StandardDS14 ContainerServiceVMSizeTypes = "Standard_DS14"
+ // StandardDS2 ...
+ StandardDS2 ContainerServiceVMSizeTypes = "Standard_DS2"
+ // StandardDS3 ...
+ StandardDS3 ContainerServiceVMSizeTypes = "Standard_DS3"
+ // StandardDS4 ...
+ StandardDS4 ContainerServiceVMSizeTypes = "Standard_DS4"
+ // StandardG1 ...
+ StandardG1 ContainerServiceVMSizeTypes = "Standard_G1"
+ // StandardG2 ...
+ StandardG2 ContainerServiceVMSizeTypes = "Standard_G2"
+ // StandardG3 ...
+ StandardG3 ContainerServiceVMSizeTypes = "Standard_G3"
+ // StandardG4 ...
+ StandardG4 ContainerServiceVMSizeTypes = "Standard_G4"
+ // StandardG5 ...
+ StandardG5 ContainerServiceVMSizeTypes = "Standard_G5"
+ // StandardGS1 ...
+ StandardGS1 ContainerServiceVMSizeTypes = "Standard_GS1"
+ // StandardGS2 ...
+ StandardGS2 ContainerServiceVMSizeTypes = "Standard_GS2"
+ // StandardGS3 ...
+ StandardGS3 ContainerServiceVMSizeTypes = "Standard_GS3"
+ // StandardGS4 ...
+ StandardGS4 ContainerServiceVMSizeTypes = "Standard_GS4"
+ // StandardGS5 ...
+ StandardGS5 ContainerServiceVMSizeTypes = "Standard_GS5"
+)
+
+// DiskCreateOption enumerates the values for disk create option.
+type DiskCreateOption string
+
+const (
+ // Attach ...
+ Attach DiskCreateOption = "Attach"
+ // Copy ...
+ Copy DiskCreateOption = "Copy"
+ // Empty ...
+ Empty DiskCreateOption = "Empty"
+ // FromImage ...
+ FromImage DiskCreateOption = "FromImage"
+ // Import ...
+ Import DiskCreateOption = "Import"
+)
+
+// DiskCreateOptionTypes enumerates the values for disk create option types.
+type DiskCreateOptionTypes string
+
+const (
+ // DiskCreateOptionTypesAttach ...
+ DiskCreateOptionTypesAttach DiskCreateOptionTypes = "Attach"
+ // DiskCreateOptionTypesEmpty ...
+ DiskCreateOptionTypesEmpty DiskCreateOptionTypes = "Empty"
+ // DiskCreateOptionTypesFromImage ...
+ DiskCreateOptionTypesFromImage DiskCreateOptionTypes = "FromImage"
+)
+
+// InstanceViewTypes enumerates the values for instance view types.
+type InstanceViewTypes string
+
+const (
+ // InstanceView ...
+ InstanceView InstanceViewTypes = "instanceView"
+)
+
+// IntervalInMins enumerates the values for interval in mins.
+type IntervalInMins string
+
+const (
+ // FiveMins ...
+ FiveMins IntervalInMins = "FiveMins"
+ // SixtyMins ...
+ SixtyMins IntervalInMins = "SixtyMins"
+ // ThirtyMins ...
+ ThirtyMins IntervalInMins = "ThirtyMins"
+ // ThreeMins ...
+ ThreeMins IntervalInMins = "ThreeMins"
+)
+
+// IPVersion enumerates the values for ip version.
+type IPVersion string
+
+const (
+ // IPv4 ...
+ IPv4 IPVersion = "IPv4"
+ // IPv6 ...
+ IPv6 IPVersion = "IPv6"
+)
+
+// MaintenanceOperationResultCodeTypes enumerates the values for maintenance operation result code types.
+type MaintenanceOperationResultCodeTypes string
+
+const (
+ // MaintenanceOperationResultCodeTypesMaintenanceAborted ...
+ MaintenanceOperationResultCodeTypesMaintenanceAborted MaintenanceOperationResultCodeTypes = "MaintenanceAborted"
+ // MaintenanceOperationResultCodeTypesMaintenanceCompleted ...
+ MaintenanceOperationResultCodeTypesMaintenanceCompleted MaintenanceOperationResultCodeTypes = "MaintenanceCompleted"
+ // MaintenanceOperationResultCodeTypesNone ...
+ MaintenanceOperationResultCodeTypesNone MaintenanceOperationResultCodeTypes = "None"
+ // MaintenanceOperationResultCodeTypesRetryLater ...
+ MaintenanceOperationResultCodeTypesRetryLater MaintenanceOperationResultCodeTypes = "RetryLater"
+)
+
+// OperatingSystemStateTypes enumerates the values for operating system state types.
+type OperatingSystemStateTypes string
+
+const (
+ // Generalized ...
+ Generalized OperatingSystemStateTypes = "Generalized"
+ // Specialized ...
+ Specialized OperatingSystemStateTypes = "Specialized"
+)
+
+// OperatingSystemTypes enumerates the values for operating system types.
+type OperatingSystemTypes string
+
+const (
+ // Linux ...
+ Linux OperatingSystemTypes = "Linux"
+ // Windows ...
+ Windows OperatingSystemTypes = "Windows"
+)
+
+// PassNames enumerates the values for pass names.
+type PassNames string
+
+const (
+ // OobeSystem ...
+ OobeSystem PassNames = "OobeSystem"
+)
+
+// ProtocolTypes enumerates the values for protocol types.
+type ProtocolTypes string
+
+const (
+ // HTTP ...
+ HTTP ProtocolTypes = "Http"
+ // HTTPS ...
+ HTTPS ProtocolTypes = "Https"
+)
+
+// ResourceIdentityType enumerates the values for resource identity type.
+type ResourceIdentityType string
+
+const (
+ // ResourceIdentityTypeNone ...
+ ResourceIdentityTypeNone ResourceIdentityType = "None"
+ // ResourceIdentityTypeSystemAssigned ...
+ ResourceIdentityTypeSystemAssigned ResourceIdentityType = "SystemAssigned"
+ // ResourceIdentityTypeSystemAssignedUserAssigned ...
+ ResourceIdentityTypeSystemAssignedUserAssigned ResourceIdentityType = "SystemAssigned, UserAssigned"
+ // ResourceIdentityTypeUserAssigned ...
+ ResourceIdentityTypeUserAssigned ResourceIdentityType = "UserAssigned"
+)
+
+// ResourceSkuCapacityScaleType enumerates the values for resource sku capacity scale type.
+type ResourceSkuCapacityScaleType string
+
+const (
+ // ResourceSkuCapacityScaleTypeAutomatic ...
+ ResourceSkuCapacityScaleTypeAutomatic ResourceSkuCapacityScaleType = "Automatic"
+ // ResourceSkuCapacityScaleTypeManual ...
+ ResourceSkuCapacityScaleTypeManual ResourceSkuCapacityScaleType = "Manual"
+ // ResourceSkuCapacityScaleTypeNone ...
+ ResourceSkuCapacityScaleTypeNone ResourceSkuCapacityScaleType = "None"
+)
+
+// ResourceSkuRestrictionsReasonCode enumerates the values for resource sku restrictions reason code.
+type ResourceSkuRestrictionsReasonCode string
+
+const (
+ // NotAvailableForSubscription ...
+ NotAvailableForSubscription ResourceSkuRestrictionsReasonCode = "NotAvailableForSubscription"
+ // QuotaID ...
+ QuotaID ResourceSkuRestrictionsReasonCode = "QuotaId"
+)
+
+// ResourceSkuRestrictionsType enumerates the values for resource sku restrictions type.
+type ResourceSkuRestrictionsType string
+
+const (
+ // Location ...
+ Location ResourceSkuRestrictionsType = "Location"
+ // Zone ...
+ Zone ResourceSkuRestrictionsType = "Zone"
+)
+
+// RollingUpgradeActionType enumerates the values for rolling upgrade action type.
+type RollingUpgradeActionType string
+
+const (
+ // Cancel ...
+ Cancel RollingUpgradeActionType = "Cancel"
+ // Start ...
+ Start RollingUpgradeActionType = "Start"
+)
+
+// RollingUpgradeStatusCode enumerates the values for rolling upgrade status code.
+type RollingUpgradeStatusCode string
+
+const (
+ // Cancelled ...
+ Cancelled RollingUpgradeStatusCode = "Cancelled"
+ // Completed ...
+ Completed RollingUpgradeStatusCode = "Completed"
+ // Faulted ...
+ Faulted RollingUpgradeStatusCode = "Faulted"
+ // RollingForward ...
+ RollingForward RollingUpgradeStatusCode = "RollingForward"
+)
+
+// SettingNames enumerates the values for setting names.
+type SettingNames string
+
+const (
+ // AutoLogon ...
+ AutoLogon SettingNames = "AutoLogon"
+ // FirstLogonCommands ...
+ FirstLogonCommands SettingNames = "FirstLogonCommands"
+)
+
+// StatusLevelTypes enumerates the values for status level types.
+type StatusLevelTypes string
+
+const (
+ // Error ...
+ Error StatusLevelTypes = "Error"
+ // Info ...
+ Info StatusLevelTypes = "Info"
+ // Warning ...
+ Warning StatusLevelTypes = "Warning"
+)
+
+// StorageAccountTypes enumerates the values for storage account types.
+type StorageAccountTypes string
+
+const (
+ // PremiumLRS ...
+ PremiumLRS StorageAccountTypes = "Premium_LRS"
+ // StandardLRS ...
+ StandardLRS StorageAccountTypes = "Standard_LRS"
+)
+
+// UpgradeMode enumerates the values for upgrade mode.
+type UpgradeMode string
+
+const (
+ // Automatic ...
+ Automatic UpgradeMode = "Automatic"
+ // Manual ...
+ Manual UpgradeMode = "Manual"
+ // Rolling ...
+ Rolling UpgradeMode = "Rolling"
+)
+
+// VirtualMachinePriorityTypes enumerates the values for virtual machine priority types.
+type VirtualMachinePriorityTypes string
+
+const (
+ // Low ...
+ Low VirtualMachinePriorityTypes = "Low"
+ // Regular ...
+ Regular VirtualMachinePriorityTypes = "Regular"
+)
+
+// VirtualMachineScaleSetSkuScaleType enumerates the values for virtual machine scale set sku scale type.
+type VirtualMachineScaleSetSkuScaleType string
+
+const (
+ // VirtualMachineScaleSetSkuScaleTypeAutomatic ...
+ VirtualMachineScaleSetSkuScaleTypeAutomatic VirtualMachineScaleSetSkuScaleType = "Automatic"
+ // VirtualMachineScaleSetSkuScaleTypeNone ...
+ VirtualMachineScaleSetSkuScaleTypeNone VirtualMachineScaleSetSkuScaleType = "None"
+)
+
+// VirtualMachineSizeTypes enumerates the values for virtual machine size types.
+type VirtualMachineSizeTypes string
+
+const (
+ // VirtualMachineSizeTypesBasicA0 ...
+ VirtualMachineSizeTypesBasicA0 VirtualMachineSizeTypes = "Basic_A0"
+ // VirtualMachineSizeTypesBasicA1 ...
+ VirtualMachineSizeTypesBasicA1 VirtualMachineSizeTypes = "Basic_A1"
+ // VirtualMachineSizeTypesBasicA2 ...
+ VirtualMachineSizeTypesBasicA2 VirtualMachineSizeTypes = "Basic_A2"
+ // VirtualMachineSizeTypesBasicA3 ...
+ VirtualMachineSizeTypesBasicA3 VirtualMachineSizeTypes = "Basic_A3"
+ // VirtualMachineSizeTypesBasicA4 ...
+ VirtualMachineSizeTypesBasicA4 VirtualMachineSizeTypes = "Basic_A4"
+ // VirtualMachineSizeTypesStandardA0 ...
+ VirtualMachineSizeTypesStandardA0 VirtualMachineSizeTypes = "Standard_A0"
+ // VirtualMachineSizeTypesStandardA1 ...
+ VirtualMachineSizeTypesStandardA1 VirtualMachineSizeTypes = "Standard_A1"
+ // VirtualMachineSizeTypesStandardA10 ...
+ VirtualMachineSizeTypesStandardA10 VirtualMachineSizeTypes = "Standard_A10"
+ // VirtualMachineSizeTypesStandardA11 ...
+ VirtualMachineSizeTypesStandardA11 VirtualMachineSizeTypes = "Standard_A11"
+ // VirtualMachineSizeTypesStandardA1V2 ...
+ VirtualMachineSizeTypesStandardA1V2 VirtualMachineSizeTypes = "Standard_A1_v2"
+ // VirtualMachineSizeTypesStandardA2 ...
+ VirtualMachineSizeTypesStandardA2 VirtualMachineSizeTypes = "Standard_A2"
+ // VirtualMachineSizeTypesStandardA2mV2 ...
+ VirtualMachineSizeTypesStandardA2mV2 VirtualMachineSizeTypes = "Standard_A2m_v2"
+ // VirtualMachineSizeTypesStandardA2V2 ...
+ VirtualMachineSizeTypesStandardA2V2 VirtualMachineSizeTypes = "Standard_A2_v2"
+ // VirtualMachineSizeTypesStandardA3 ...
+ VirtualMachineSizeTypesStandardA3 VirtualMachineSizeTypes = "Standard_A3"
+ // VirtualMachineSizeTypesStandardA4 ...
+ VirtualMachineSizeTypesStandardA4 VirtualMachineSizeTypes = "Standard_A4"
+ // VirtualMachineSizeTypesStandardA4mV2 ...
+ VirtualMachineSizeTypesStandardA4mV2 VirtualMachineSizeTypes = "Standard_A4m_v2"
+ // VirtualMachineSizeTypesStandardA4V2 ...
+ VirtualMachineSizeTypesStandardA4V2 VirtualMachineSizeTypes = "Standard_A4_v2"
+ // VirtualMachineSizeTypesStandardA5 ...
+ VirtualMachineSizeTypesStandardA5 VirtualMachineSizeTypes = "Standard_A5"
+ // VirtualMachineSizeTypesStandardA6 ...
+ VirtualMachineSizeTypesStandardA6 VirtualMachineSizeTypes = "Standard_A6"
+ // VirtualMachineSizeTypesStandardA7 ...
+ VirtualMachineSizeTypesStandardA7 VirtualMachineSizeTypes = "Standard_A7"
+ // VirtualMachineSizeTypesStandardA8 ...
+ VirtualMachineSizeTypesStandardA8 VirtualMachineSizeTypes = "Standard_A8"
+ // VirtualMachineSizeTypesStandardA8mV2 ...
+ VirtualMachineSizeTypesStandardA8mV2 VirtualMachineSizeTypes = "Standard_A8m_v2"
+ // VirtualMachineSizeTypesStandardA8V2 ...
+ VirtualMachineSizeTypesStandardA8V2 VirtualMachineSizeTypes = "Standard_A8_v2"
+ // VirtualMachineSizeTypesStandardA9 ...
+ VirtualMachineSizeTypesStandardA9 VirtualMachineSizeTypes = "Standard_A9"
+ // VirtualMachineSizeTypesStandardB1ms ...
+ VirtualMachineSizeTypesStandardB1ms VirtualMachineSizeTypes = "Standard_B1ms"
+ // VirtualMachineSizeTypesStandardB1s ...
+ VirtualMachineSizeTypesStandardB1s VirtualMachineSizeTypes = "Standard_B1s"
+ // VirtualMachineSizeTypesStandardB2ms ...
+ VirtualMachineSizeTypesStandardB2ms VirtualMachineSizeTypes = "Standard_B2ms"
+ // VirtualMachineSizeTypesStandardB2s ...
+ VirtualMachineSizeTypesStandardB2s VirtualMachineSizeTypes = "Standard_B2s"
+ // VirtualMachineSizeTypesStandardB4ms ...
+ VirtualMachineSizeTypesStandardB4ms VirtualMachineSizeTypes = "Standard_B4ms"
+ // VirtualMachineSizeTypesStandardB8ms ...
+ VirtualMachineSizeTypesStandardB8ms VirtualMachineSizeTypes = "Standard_B8ms"
+ // VirtualMachineSizeTypesStandardD1 ...
+ VirtualMachineSizeTypesStandardD1 VirtualMachineSizeTypes = "Standard_D1"
+ // VirtualMachineSizeTypesStandardD11 ...
+ VirtualMachineSizeTypesStandardD11 VirtualMachineSizeTypes = "Standard_D11"
+ // VirtualMachineSizeTypesStandardD11V2 ...
+ VirtualMachineSizeTypesStandardD11V2 VirtualMachineSizeTypes = "Standard_D11_v2"
+ // VirtualMachineSizeTypesStandardD12 ...
+ VirtualMachineSizeTypesStandardD12 VirtualMachineSizeTypes = "Standard_D12"
+ // VirtualMachineSizeTypesStandardD12V2 ...
+ VirtualMachineSizeTypesStandardD12V2 VirtualMachineSizeTypes = "Standard_D12_v2"
+ // VirtualMachineSizeTypesStandardD13 ...
+ VirtualMachineSizeTypesStandardD13 VirtualMachineSizeTypes = "Standard_D13"
+ // VirtualMachineSizeTypesStandardD13V2 ...
+ VirtualMachineSizeTypesStandardD13V2 VirtualMachineSizeTypes = "Standard_D13_v2"
+ // VirtualMachineSizeTypesStandardD14 ...
+ VirtualMachineSizeTypesStandardD14 VirtualMachineSizeTypes = "Standard_D14"
+ // VirtualMachineSizeTypesStandardD14V2 ...
+ VirtualMachineSizeTypesStandardD14V2 VirtualMachineSizeTypes = "Standard_D14_v2"
+ // VirtualMachineSizeTypesStandardD15V2 ...
+ VirtualMachineSizeTypesStandardD15V2 VirtualMachineSizeTypes = "Standard_D15_v2"
+ // VirtualMachineSizeTypesStandardD16sV3 ...
+ VirtualMachineSizeTypesStandardD16sV3 VirtualMachineSizeTypes = "Standard_D16s_v3"
+ // VirtualMachineSizeTypesStandardD16V3 ...
+ VirtualMachineSizeTypesStandardD16V3 VirtualMachineSizeTypes = "Standard_D16_v3"
+ // VirtualMachineSizeTypesStandardD1V2 ...
+ VirtualMachineSizeTypesStandardD1V2 VirtualMachineSizeTypes = "Standard_D1_v2"
+ // VirtualMachineSizeTypesStandardD2 ...
+ VirtualMachineSizeTypesStandardD2 VirtualMachineSizeTypes = "Standard_D2"
+ // VirtualMachineSizeTypesStandardD2sV3 ...
+ VirtualMachineSizeTypesStandardD2sV3 VirtualMachineSizeTypes = "Standard_D2s_v3"
+ // VirtualMachineSizeTypesStandardD2V2 ...
+ VirtualMachineSizeTypesStandardD2V2 VirtualMachineSizeTypes = "Standard_D2_v2"
+ // VirtualMachineSizeTypesStandardD2V3 ...
+ VirtualMachineSizeTypesStandardD2V3 VirtualMachineSizeTypes = "Standard_D2_v3"
+ // VirtualMachineSizeTypesStandardD3 ...
+ VirtualMachineSizeTypesStandardD3 VirtualMachineSizeTypes = "Standard_D3"
+ // VirtualMachineSizeTypesStandardD32sV3 ...
+ VirtualMachineSizeTypesStandardD32sV3 VirtualMachineSizeTypes = "Standard_D32s_v3"
+ // VirtualMachineSizeTypesStandardD32V3 ...
+ VirtualMachineSizeTypesStandardD32V3 VirtualMachineSizeTypes = "Standard_D32_v3"
+ // VirtualMachineSizeTypesStandardD3V2 ...
+ VirtualMachineSizeTypesStandardD3V2 VirtualMachineSizeTypes = "Standard_D3_v2"
+ // VirtualMachineSizeTypesStandardD4 ...
+ VirtualMachineSizeTypesStandardD4 VirtualMachineSizeTypes = "Standard_D4"
+ // VirtualMachineSizeTypesStandardD4sV3 ...
+ VirtualMachineSizeTypesStandardD4sV3 VirtualMachineSizeTypes = "Standard_D4s_v3"
+ // VirtualMachineSizeTypesStandardD4V2 ...
+ VirtualMachineSizeTypesStandardD4V2 VirtualMachineSizeTypes = "Standard_D4_v2"
+ // VirtualMachineSizeTypesStandardD4V3 ...
+ VirtualMachineSizeTypesStandardD4V3 VirtualMachineSizeTypes = "Standard_D4_v3"
+ // VirtualMachineSizeTypesStandardD5V2 ...
+ VirtualMachineSizeTypesStandardD5V2 VirtualMachineSizeTypes = "Standard_D5_v2"
+ // VirtualMachineSizeTypesStandardD64sV3 ...
+ VirtualMachineSizeTypesStandardD64sV3 VirtualMachineSizeTypes = "Standard_D64s_v3"
+ // VirtualMachineSizeTypesStandardD64V3 ...
+ VirtualMachineSizeTypesStandardD64V3 VirtualMachineSizeTypes = "Standard_D64_v3"
+ // VirtualMachineSizeTypesStandardD8sV3 ...
+ VirtualMachineSizeTypesStandardD8sV3 VirtualMachineSizeTypes = "Standard_D8s_v3"
+ // VirtualMachineSizeTypesStandardD8V3 ...
+ VirtualMachineSizeTypesStandardD8V3 VirtualMachineSizeTypes = "Standard_D8_v3"
+ // VirtualMachineSizeTypesStandardDS1 ...
+ VirtualMachineSizeTypesStandardDS1 VirtualMachineSizeTypes = "Standard_DS1"
+ // VirtualMachineSizeTypesStandardDS11 ...
+ VirtualMachineSizeTypesStandardDS11 VirtualMachineSizeTypes = "Standard_DS11"
+ // VirtualMachineSizeTypesStandardDS11V2 ...
+ VirtualMachineSizeTypesStandardDS11V2 VirtualMachineSizeTypes = "Standard_DS11_v2"
+ // VirtualMachineSizeTypesStandardDS12 ...
+ VirtualMachineSizeTypesStandardDS12 VirtualMachineSizeTypes = "Standard_DS12"
+ // VirtualMachineSizeTypesStandardDS12V2 ...
+ VirtualMachineSizeTypesStandardDS12V2 VirtualMachineSizeTypes = "Standard_DS12_v2"
+ // VirtualMachineSizeTypesStandardDS13 ...
+ VirtualMachineSizeTypesStandardDS13 VirtualMachineSizeTypes = "Standard_DS13"
+ // VirtualMachineSizeTypesStandardDS132V2 ...
+ VirtualMachineSizeTypesStandardDS132V2 VirtualMachineSizeTypes = "Standard_DS13-2_v2"
+ // VirtualMachineSizeTypesStandardDS134V2 ...
+ VirtualMachineSizeTypesStandardDS134V2 VirtualMachineSizeTypes = "Standard_DS13-4_v2"
+ // VirtualMachineSizeTypesStandardDS13V2 ...
+ VirtualMachineSizeTypesStandardDS13V2 VirtualMachineSizeTypes = "Standard_DS13_v2"
+ // VirtualMachineSizeTypesStandardDS14 ...
+ VirtualMachineSizeTypesStandardDS14 VirtualMachineSizeTypes = "Standard_DS14"
+ // VirtualMachineSizeTypesStandardDS144V2 ...
+ VirtualMachineSizeTypesStandardDS144V2 VirtualMachineSizeTypes = "Standard_DS14-4_v2"
+ // VirtualMachineSizeTypesStandardDS148V2 ...
+ VirtualMachineSizeTypesStandardDS148V2 VirtualMachineSizeTypes = "Standard_DS14-8_v2"
+ // VirtualMachineSizeTypesStandardDS14V2 ...
+ VirtualMachineSizeTypesStandardDS14V2 VirtualMachineSizeTypes = "Standard_DS14_v2"
+ // VirtualMachineSizeTypesStandardDS15V2 ...
+ VirtualMachineSizeTypesStandardDS15V2 VirtualMachineSizeTypes = "Standard_DS15_v2"
+ // VirtualMachineSizeTypesStandardDS1V2 ...
+ VirtualMachineSizeTypesStandardDS1V2 VirtualMachineSizeTypes = "Standard_DS1_v2"
+ // VirtualMachineSizeTypesStandardDS2 ...
+ VirtualMachineSizeTypesStandardDS2 VirtualMachineSizeTypes = "Standard_DS2"
+ // VirtualMachineSizeTypesStandardDS2V2 ...
+ VirtualMachineSizeTypesStandardDS2V2 VirtualMachineSizeTypes = "Standard_DS2_v2"
+ // VirtualMachineSizeTypesStandardDS3 ...
+ VirtualMachineSizeTypesStandardDS3 VirtualMachineSizeTypes = "Standard_DS3"
+ // VirtualMachineSizeTypesStandardDS3V2 ...
+ VirtualMachineSizeTypesStandardDS3V2 VirtualMachineSizeTypes = "Standard_DS3_v2"
+ // VirtualMachineSizeTypesStandardDS4 ...
+ VirtualMachineSizeTypesStandardDS4 VirtualMachineSizeTypes = "Standard_DS4"
+ // VirtualMachineSizeTypesStandardDS4V2 ...
+ VirtualMachineSizeTypesStandardDS4V2 VirtualMachineSizeTypes = "Standard_DS4_v2"
+ // VirtualMachineSizeTypesStandardDS5V2 ...
+ VirtualMachineSizeTypesStandardDS5V2 VirtualMachineSizeTypes = "Standard_DS5_v2"
+ // VirtualMachineSizeTypesStandardE16sV3 ...
+ VirtualMachineSizeTypesStandardE16sV3 VirtualMachineSizeTypes = "Standard_E16s_v3"
+ // VirtualMachineSizeTypesStandardE16V3 ...
+ VirtualMachineSizeTypesStandardE16V3 VirtualMachineSizeTypes = "Standard_E16_v3"
+ // VirtualMachineSizeTypesStandardE2sV3 ...
+ VirtualMachineSizeTypesStandardE2sV3 VirtualMachineSizeTypes = "Standard_E2s_v3"
+ // VirtualMachineSizeTypesStandardE2V3 ...
+ VirtualMachineSizeTypesStandardE2V3 VirtualMachineSizeTypes = "Standard_E2_v3"
+ // VirtualMachineSizeTypesStandardE3216V3 ...
+ VirtualMachineSizeTypesStandardE3216V3 VirtualMachineSizeTypes = "Standard_E32-16_v3"
+ // VirtualMachineSizeTypesStandardE328sV3 ...
+ VirtualMachineSizeTypesStandardE328sV3 VirtualMachineSizeTypes = "Standard_E32-8s_v3"
+ // VirtualMachineSizeTypesStandardE32sV3 ...
+ VirtualMachineSizeTypesStandardE32sV3 VirtualMachineSizeTypes = "Standard_E32s_v3"
+ // VirtualMachineSizeTypesStandardE32V3 ...
+ VirtualMachineSizeTypesStandardE32V3 VirtualMachineSizeTypes = "Standard_E32_v3"
+ // VirtualMachineSizeTypesStandardE4sV3 ...
+ VirtualMachineSizeTypesStandardE4sV3 VirtualMachineSizeTypes = "Standard_E4s_v3"
+ // VirtualMachineSizeTypesStandardE4V3 ...
+ VirtualMachineSizeTypesStandardE4V3 VirtualMachineSizeTypes = "Standard_E4_v3"
+ // VirtualMachineSizeTypesStandardE6416sV3 ...
+ VirtualMachineSizeTypesStandardE6416sV3 VirtualMachineSizeTypes = "Standard_E64-16s_v3"
+ // VirtualMachineSizeTypesStandardE6432sV3 ...
+ VirtualMachineSizeTypesStandardE6432sV3 VirtualMachineSizeTypes = "Standard_E64-32s_v3"
+ // VirtualMachineSizeTypesStandardE64sV3 ...
+ VirtualMachineSizeTypesStandardE64sV3 VirtualMachineSizeTypes = "Standard_E64s_v3"
+ // VirtualMachineSizeTypesStandardE64V3 ...
+ VirtualMachineSizeTypesStandardE64V3 VirtualMachineSizeTypes = "Standard_E64_v3"
+ // VirtualMachineSizeTypesStandardE8sV3 ...
+ VirtualMachineSizeTypesStandardE8sV3 VirtualMachineSizeTypes = "Standard_E8s_v3"
+ // VirtualMachineSizeTypesStandardE8V3 ...
+ VirtualMachineSizeTypesStandardE8V3 VirtualMachineSizeTypes = "Standard_E8_v3"
+ // VirtualMachineSizeTypesStandardF1 ...
+ VirtualMachineSizeTypesStandardF1 VirtualMachineSizeTypes = "Standard_F1"
+ // VirtualMachineSizeTypesStandardF16 ...
+ VirtualMachineSizeTypesStandardF16 VirtualMachineSizeTypes = "Standard_F16"
+ // VirtualMachineSizeTypesStandardF16s ...
+ VirtualMachineSizeTypesStandardF16s VirtualMachineSizeTypes = "Standard_F16s"
+ // VirtualMachineSizeTypesStandardF16sV2 ...
+ VirtualMachineSizeTypesStandardF16sV2 VirtualMachineSizeTypes = "Standard_F16s_v2"
+ // VirtualMachineSizeTypesStandardF1s ...
+ VirtualMachineSizeTypesStandardF1s VirtualMachineSizeTypes = "Standard_F1s"
+ // VirtualMachineSizeTypesStandardF2 ...
+ VirtualMachineSizeTypesStandardF2 VirtualMachineSizeTypes = "Standard_F2"
+ // VirtualMachineSizeTypesStandardF2s ...
+ VirtualMachineSizeTypesStandardF2s VirtualMachineSizeTypes = "Standard_F2s"
+ // VirtualMachineSizeTypesStandardF2sV2 ...
+ VirtualMachineSizeTypesStandardF2sV2 VirtualMachineSizeTypes = "Standard_F2s_v2"
+ // VirtualMachineSizeTypesStandardF32sV2 ...
+ VirtualMachineSizeTypesStandardF32sV2 VirtualMachineSizeTypes = "Standard_F32s_v2"
+ // VirtualMachineSizeTypesStandardF4 ...
+ VirtualMachineSizeTypesStandardF4 VirtualMachineSizeTypes = "Standard_F4"
+ // VirtualMachineSizeTypesStandardF4s ...
+ VirtualMachineSizeTypesStandardF4s VirtualMachineSizeTypes = "Standard_F4s"
+ // VirtualMachineSizeTypesStandardF4sV2 ...
+ VirtualMachineSizeTypesStandardF4sV2 VirtualMachineSizeTypes = "Standard_F4s_v2"
+ // VirtualMachineSizeTypesStandardF64sV2 ...
+ VirtualMachineSizeTypesStandardF64sV2 VirtualMachineSizeTypes = "Standard_F64s_v2"
+ // VirtualMachineSizeTypesStandardF72sV2 ...
+ VirtualMachineSizeTypesStandardF72sV2 VirtualMachineSizeTypes = "Standard_F72s_v2"
+ // VirtualMachineSizeTypesStandardF8 ...
+ VirtualMachineSizeTypesStandardF8 VirtualMachineSizeTypes = "Standard_F8"
+ // VirtualMachineSizeTypesStandardF8s ...
+ VirtualMachineSizeTypesStandardF8s VirtualMachineSizeTypes = "Standard_F8s"
+ // VirtualMachineSizeTypesStandardF8sV2 ...
+ VirtualMachineSizeTypesStandardF8sV2 VirtualMachineSizeTypes = "Standard_F8s_v2"
+ // VirtualMachineSizeTypesStandardG1 ...
+ VirtualMachineSizeTypesStandardG1 VirtualMachineSizeTypes = "Standard_G1"
+ // VirtualMachineSizeTypesStandardG2 ...
+ VirtualMachineSizeTypesStandardG2 VirtualMachineSizeTypes = "Standard_G2"
+ // VirtualMachineSizeTypesStandardG3 ...
+ VirtualMachineSizeTypesStandardG3 VirtualMachineSizeTypes = "Standard_G3"
+ // VirtualMachineSizeTypesStandardG4 ...
+ VirtualMachineSizeTypesStandardG4 VirtualMachineSizeTypes = "Standard_G4"
+ // VirtualMachineSizeTypesStandardG5 ...
+ VirtualMachineSizeTypesStandardG5 VirtualMachineSizeTypes = "Standard_G5"
+ // VirtualMachineSizeTypesStandardGS1 ...
+ VirtualMachineSizeTypesStandardGS1 VirtualMachineSizeTypes = "Standard_GS1"
+ // VirtualMachineSizeTypesStandardGS2 ...
+ VirtualMachineSizeTypesStandardGS2 VirtualMachineSizeTypes = "Standard_GS2"
+ // VirtualMachineSizeTypesStandardGS3 ...
+ VirtualMachineSizeTypesStandardGS3 VirtualMachineSizeTypes = "Standard_GS3"
+ // VirtualMachineSizeTypesStandardGS4 ...
+ VirtualMachineSizeTypesStandardGS4 VirtualMachineSizeTypes = "Standard_GS4"
+ // VirtualMachineSizeTypesStandardGS44 ...
+ VirtualMachineSizeTypesStandardGS44 VirtualMachineSizeTypes = "Standard_GS4-4"
+ // VirtualMachineSizeTypesStandardGS48 ...
+ VirtualMachineSizeTypesStandardGS48 VirtualMachineSizeTypes = "Standard_GS4-8"
+ // VirtualMachineSizeTypesStandardGS5 ...
+ VirtualMachineSizeTypesStandardGS5 VirtualMachineSizeTypes = "Standard_GS5"
+ // VirtualMachineSizeTypesStandardGS516 ...
+ VirtualMachineSizeTypesStandardGS516 VirtualMachineSizeTypes = "Standard_GS5-16"
+ // VirtualMachineSizeTypesStandardGS58 ...
+ VirtualMachineSizeTypesStandardGS58 VirtualMachineSizeTypes = "Standard_GS5-8"
+ // VirtualMachineSizeTypesStandardH16 ...
+ VirtualMachineSizeTypesStandardH16 VirtualMachineSizeTypes = "Standard_H16"
+ // VirtualMachineSizeTypesStandardH16m ...
+ VirtualMachineSizeTypesStandardH16m VirtualMachineSizeTypes = "Standard_H16m"
+ // VirtualMachineSizeTypesStandardH16mr ...
+ VirtualMachineSizeTypesStandardH16mr VirtualMachineSizeTypes = "Standard_H16mr"
+ // VirtualMachineSizeTypesStandardH16r ...
+ VirtualMachineSizeTypesStandardH16r VirtualMachineSizeTypes = "Standard_H16r"
+ // VirtualMachineSizeTypesStandardH8 ...
+ VirtualMachineSizeTypesStandardH8 VirtualMachineSizeTypes = "Standard_H8"
+ // VirtualMachineSizeTypesStandardH8m ...
+ VirtualMachineSizeTypesStandardH8m VirtualMachineSizeTypes = "Standard_H8m"
+ // VirtualMachineSizeTypesStandardL16s ...
+ VirtualMachineSizeTypesStandardL16s VirtualMachineSizeTypes = "Standard_L16s"
+ // VirtualMachineSizeTypesStandardL32s ...
+ VirtualMachineSizeTypesStandardL32s VirtualMachineSizeTypes = "Standard_L32s"
+ // VirtualMachineSizeTypesStandardL4s ...
+ VirtualMachineSizeTypesStandardL4s VirtualMachineSizeTypes = "Standard_L4s"
+ // VirtualMachineSizeTypesStandardL8s ...
+ VirtualMachineSizeTypesStandardL8s VirtualMachineSizeTypes = "Standard_L8s"
+ // VirtualMachineSizeTypesStandardM12832ms ...
+ VirtualMachineSizeTypesStandardM12832ms VirtualMachineSizeTypes = "Standard_M128-32ms"
+ // VirtualMachineSizeTypesStandardM12864ms ...
+ VirtualMachineSizeTypesStandardM12864ms VirtualMachineSizeTypes = "Standard_M128-64ms"
+ // VirtualMachineSizeTypesStandardM128ms ...
+ VirtualMachineSizeTypesStandardM128ms VirtualMachineSizeTypes = "Standard_M128ms"
+ // VirtualMachineSizeTypesStandardM128s ...
+ VirtualMachineSizeTypesStandardM128s VirtualMachineSizeTypes = "Standard_M128s"
+ // VirtualMachineSizeTypesStandardM6416ms ...
+ VirtualMachineSizeTypesStandardM6416ms VirtualMachineSizeTypes = "Standard_M64-16ms"
+ // VirtualMachineSizeTypesStandardM6432ms ...
+ VirtualMachineSizeTypesStandardM6432ms VirtualMachineSizeTypes = "Standard_M64-32ms"
+ // VirtualMachineSizeTypesStandardM64ms ...
+ VirtualMachineSizeTypesStandardM64ms VirtualMachineSizeTypes = "Standard_M64ms"
+ // VirtualMachineSizeTypesStandardM64s ...
+ VirtualMachineSizeTypesStandardM64s VirtualMachineSizeTypes = "Standard_M64s"
+ // VirtualMachineSizeTypesStandardNC12 ...
+ VirtualMachineSizeTypesStandardNC12 VirtualMachineSizeTypes = "Standard_NC12"
+ // VirtualMachineSizeTypesStandardNC12sV2 ...
+ VirtualMachineSizeTypesStandardNC12sV2 VirtualMachineSizeTypes = "Standard_NC12s_v2"
+ // VirtualMachineSizeTypesStandardNC12sV3 ...
+ VirtualMachineSizeTypesStandardNC12sV3 VirtualMachineSizeTypes = "Standard_NC12s_v3"
+ // VirtualMachineSizeTypesStandardNC24 ...
+ VirtualMachineSizeTypesStandardNC24 VirtualMachineSizeTypes = "Standard_NC24"
+ // VirtualMachineSizeTypesStandardNC24r ...
+ VirtualMachineSizeTypesStandardNC24r VirtualMachineSizeTypes = "Standard_NC24r"
+ // VirtualMachineSizeTypesStandardNC24rsV2 ...
+ VirtualMachineSizeTypesStandardNC24rsV2 VirtualMachineSizeTypes = "Standard_NC24rs_v2"
+ // VirtualMachineSizeTypesStandardNC24rsV3 ...
+ VirtualMachineSizeTypesStandardNC24rsV3 VirtualMachineSizeTypes = "Standard_NC24rs_v3"
+ // VirtualMachineSizeTypesStandardNC24sV2 ...
+ VirtualMachineSizeTypesStandardNC24sV2 VirtualMachineSizeTypes = "Standard_NC24s_v2"
+ // VirtualMachineSizeTypesStandardNC24sV3 ...
+ VirtualMachineSizeTypesStandardNC24sV3 VirtualMachineSizeTypes = "Standard_NC24s_v3"
+ // VirtualMachineSizeTypesStandardNC6 ...
+ VirtualMachineSizeTypesStandardNC6 VirtualMachineSizeTypes = "Standard_NC6"
+ // VirtualMachineSizeTypesStandardNC6sV2 ...
+ VirtualMachineSizeTypesStandardNC6sV2 VirtualMachineSizeTypes = "Standard_NC6s_v2"
+ // VirtualMachineSizeTypesStandardNC6sV3 ...
+ VirtualMachineSizeTypesStandardNC6sV3 VirtualMachineSizeTypes = "Standard_NC6s_v3"
+ // VirtualMachineSizeTypesStandardND12s ...
+ VirtualMachineSizeTypesStandardND12s VirtualMachineSizeTypes = "Standard_ND12s"
+ // VirtualMachineSizeTypesStandardND24rs ...
+ VirtualMachineSizeTypesStandardND24rs VirtualMachineSizeTypes = "Standard_ND24rs"
+ // VirtualMachineSizeTypesStandardND24s ...
+ VirtualMachineSizeTypesStandardND24s VirtualMachineSizeTypes = "Standard_ND24s"
+ // VirtualMachineSizeTypesStandardND6s ...
+ VirtualMachineSizeTypesStandardND6s VirtualMachineSizeTypes = "Standard_ND6s"
+ // VirtualMachineSizeTypesStandardNV12 ...
+ VirtualMachineSizeTypesStandardNV12 VirtualMachineSizeTypes = "Standard_NV12"
+ // VirtualMachineSizeTypesStandardNV24 ...
+ VirtualMachineSizeTypesStandardNV24 VirtualMachineSizeTypes = "Standard_NV24"
+ // VirtualMachineSizeTypesStandardNV6 ...
+ VirtualMachineSizeTypesStandardNV6 VirtualMachineSizeTypes = "Standard_NV6"
+)
+
+// AccessURI a disk access SAS uri.
+type AccessURI struct {
+ autorest.Response `json:"-"`
+ // AccessURIOutput - Operation output data (raw JSON)
+ *AccessURIOutput `json:"properties,omitempty"`
+}
+
+// AccessURIOutput azure properties, including output.
+type AccessURIOutput struct {
+ // AccessURIRaw - Operation output data (raw JSON)
+ *AccessURIRaw `json:"output,omitempty"`
+}
+
+// AccessURIRaw this object gets 'bubbled up' through flattening.
+type AccessURIRaw struct {
+ // AccessSAS - A SAS uri for accessing a disk.
+ AccessSAS *string `json:"accessSAS,omitempty"`
+}
+
+// AdditionalUnattendContent specifies additional XML formatted information that can be included in the Unattend.xml
+// file, which is used by Windows Setup. Contents are defined by setting name, component name, and the pass in which
+// the content is applied.
+type AdditionalUnattendContent struct {
+ // PassName - The pass name. Currently, the only allowable value is OobeSystem. Possible values include: 'OobeSystem'
+ PassName PassNames `json:"passName,omitempty"`
+ // ComponentName - The component name. Currently, the only allowable value is Microsoft-Windows-Shell-Setup. Possible values include: 'MicrosoftWindowsShellSetup'
+ ComponentName ComponentNames `json:"componentName,omitempty"`
+ // SettingName - Specifies the name of the setting to which the content applies. Possible values are: FirstLogonCommands and AutoLogon. Possible values include: 'AutoLogon', 'FirstLogonCommands'
+ SettingName SettingNames `json:"settingName,omitempty"`
+ // Content - Specifies the XML formatted content that is added to the unattend.xml file for the specified path and component. The XML must be less than 4KB and must include the root element for the setting or feature that is being inserted.
+ Content *string `json:"content,omitempty"`
+}
+
+// APIEntityReference the API entity reference.
+type APIEntityReference struct {
+ // ID - The ARM resource id in the form of /subscriptions/{SubcriptionId}/resourceGroups/{ResourceGroupName}/...
+ ID *string `json:"id,omitempty"`
+}
+
+// APIError api error.
+type APIError struct {
+ // Details - The Api error details
+ Details *[]APIErrorBase `json:"details,omitempty"`
+ // Innererror - The Api inner error
+ Innererror *InnerError `json:"innererror,omitempty"`
+ // Code - The error code.
+ Code *string `json:"code,omitempty"`
+ // Target - The target of the particular error.
+ Target *string `json:"target,omitempty"`
+ // Message - The error message.
+ Message *string `json:"message,omitempty"`
+}
+
+// APIErrorBase api error base.
+type APIErrorBase struct {
+ // Code - The error code.
+ Code *string `json:"code,omitempty"`
+ // Target - The target of the particular error.
+ Target *string `json:"target,omitempty"`
+ // Message - The error message.
+ Message *string `json:"message,omitempty"`
+}
+
+// AvailabilitySet specifies information about the availability set that the virtual machine should be assigned to.
+// Virtual machines specified in the same availability set are allocated to different nodes to maximize availability.
+// For more information about availability sets, see [Manage the availability of virtual
+// machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+// For more information on Azure planned maintainance, see [Planned maintenance for virtual machines in
+// Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json)
+// Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to
+// an availability set.
+type AvailabilitySet struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ *AvailabilitySetProperties `json:"properties,omitempty"`
+ // Sku - Sku of the availability set
+ Sku *Sku `json:"sku,omitempty"`
+}
+
+// AvailabilitySetListResult the List Availability Set operation response.
+type AvailabilitySetListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of availability sets
+ Value *[]AvailabilitySet `json:"value,omitempty"`
+}
+
+// AvailabilitySetProperties the instance view of a resource.
+type AvailabilitySetProperties struct {
+ // PlatformUpdateDomainCount - Update Domain count.
+ PlatformUpdateDomainCount *int32 `json:"platformUpdateDomainCount,omitempty"`
+ // PlatformFaultDomainCount - Fault Domain count.
+ PlatformFaultDomainCount *int32 `json:"platformFaultDomainCount,omitempty"`
+ // VirtualMachines - A list of references to all virtual machines in the availability set.
+ VirtualMachines *[]SubResource `json:"virtualMachines,omitempty"`
+ // Statuses - The resource status information.
+ Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
+}
+
+// BootDiagnostics boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to
+// diagnose VM status. For Linux Virtual Machines, you can easily view the output of your console log.
+// For both Windows and Linux virtual machines, Azure also enables you to see a screenshot of the VM from the
+// hypervisor.
+type BootDiagnostics struct {
+ // Enabled - Whether boot diagnostics should be enabled on the Virtual Machine.
+ Enabled *bool `json:"enabled,omitempty"`
+ // StorageURI - Uri of the storage account to use for placing the console output and screenshot.
+ StorageURI *string `json:"storageUri,omitempty"`
+}
+
+// BootDiagnosticsInstanceView the instance view of a virtual machine boot diagnostics.
+type BootDiagnosticsInstanceView struct {
+ // ConsoleScreenshotBlobURI - The console screenshot blob URI.
+ ConsoleScreenshotBlobURI *string `json:"consoleScreenshotBlobUri,omitempty"`
+ // SerialConsoleLogBlobURI - The Linux serial console log blob Uri.
+ SerialConsoleLogBlobURI *string `json:"serialConsoleLogBlobUri,omitempty"`
+}
+
+// ContainerService container service.
+type ContainerService struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ *ContainerServiceProperties `json:"properties,omitempty"`
+}
+
+// ContainerServiceAgentPoolProfile profile for the container service agent pool.
+type ContainerServiceAgentPoolProfile struct {
+ // Name - Unique name of the agent pool profile in the context of the subscription and resource group.
+ Name *string `json:"name,omitempty"`
+ // Count - Number of agents (VMs) to host docker containers. Allowed values must be in the range of 1 to 100 (inclusive). The default value is 1.
+ Count *int32 `json:"count,omitempty"`
+ // VMSize - Size of agent VMs. Possible values include: 'StandardA0', 'StandardA1', 'StandardA2', 'StandardA3', 'StandardA4', 'StandardA5', 'StandardA6', 'StandardA7', 'StandardA8', 'StandardA9', 'StandardA10', 'StandardA11', 'StandardD1', 'StandardD2', 'StandardD3', 'StandardD4', 'StandardD11', 'StandardD12', 'StandardD13', 'StandardD14', 'StandardD1V2', 'StandardD2V2', 'StandardD3V2', 'StandardD4V2', 'StandardD5V2', 'StandardD11V2', 'StandardD12V2', 'StandardD13V2', 'StandardD14V2', 'StandardG1', 'StandardG2', 'StandardG3', 'StandardG4', 'StandardG5', 'StandardDS1', 'StandardDS2', 'StandardDS3', 'StandardDS4', 'StandardDS11', 'StandardDS12', 'StandardDS13', 'StandardDS14', 'StandardGS1', 'StandardGS2', 'StandardGS3', 'StandardGS4', 'StandardGS5'
+ VMSize ContainerServiceVMSizeTypes `json:"vmSize,omitempty"`
+ // DNSPrefix - DNS prefix to be used to create the FQDN for the agent pool.
+ DNSPrefix *string `json:"dnsPrefix,omitempty"`
+ // Fqdn - FDQN for the agent pool.
+ Fqdn *string `json:"fqdn,omitempty"`
+}
+
+// ContainerServiceCustomProfile properties to configure a custom container service cluster.
+type ContainerServiceCustomProfile struct {
+ // Orchestrator - The name of the custom orchestrator to use.
+ Orchestrator *string `json:"orchestrator,omitempty"`
+}
+
+// ContainerServiceDiagnosticsProfile ...
+type ContainerServiceDiagnosticsProfile struct {
+ // VMDiagnostics - Profile for the container service VM diagnostic agent.
+ VMDiagnostics *ContainerServiceVMDiagnostics `json:"vmDiagnostics,omitempty"`
+}
+
+// ContainerServiceLinuxProfile profile for Linux VMs in the container service cluster.
+type ContainerServiceLinuxProfile struct {
+ // AdminUsername - The administrator username to use for Linux VMs.
+ AdminUsername *string `json:"adminUsername,omitempty"`
+ // SSH - The ssh key configuration for Linux VMs.
+ SSH *ContainerServiceSSHConfiguration `json:"ssh,omitempty"`
+}
+
+// ContainerServiceListResult the response from the List Container Services operation.
+type ContainerServiceListResult struct {
+ autorest.Response `json:"-"`
+ // Value - the list of container services.
+ Value *[]ContainerService `json:"value,omitempty"`
+ // NextLink - The URL to get the next set of container service results.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// ContainerServiceListResultIterator provides access to a complete listing of ContainerService values.
+type ContainerServiceListResultIterator struct {
+ i int
+ page ContainerServiceListResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *ContainerServiceListResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter ContainerServiceListResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter ContainerServiceListResultIterator) Response() ContainerServiceListResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter ContainerServiceListResultIterator) Value() ContainerService {
+ if !iter.page.NotDone() {
+ return ContainerService{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (cslr ContainerServiceListResult) IsEmpty() bool {
+ return cslr.Value == nil || len(*cslr.Value) == 0
+}
+
+// containerServiceListResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (cslr ContainerServiceListResult) containerServiceListResultPreparer() (*http.Request, error) {
+ if cslr.NextLink == nil || len(to.String(cslr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(cslr.NextLink)))
+}
+
+// ContainerServiceListResultPage contains a page of ContainerService values.
+type ContainerServiceListResultPage struct {
+ fn func(ContainerServiceListResult) (ContainerServiceListResult, error)
+ cslr ContainerServiceListResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *ContainerServiceListResultPage) Next() error {
+ next, err := page.fn(page.cslr)
+ if err != nil {
+ return err
+ }
+ page.cslr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page ContainerServiceListResultPage) NotDone() bool {
+ return !page.cslr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page ContainerServiceListResultPage) Response() ContainerServiceListResult {
+ return page.cslr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page ContainerServiceListResultPage) Values() []ContainerService {
+ if page.cslr.IsEmpty() {
+ return nil
+ }
+ return *page.cslr.Value
+}
+
+// ContainerServiceMasterProfile profile for the container service master.
+type ContainerServiceMasterProfile struct {
+ // Count - Number of masters (VMs) in the container service cluster. Allowed values are 1, 3, and 5. The default value is 1.
+ Count *int32 `json:"count,omitempty"`
+ // DNSPrefix - DNS prefix to be used to create the FQDN for master.
+ DNSPrefix *string `json:"dnsPrefix,omitempty"`
+ // Fqdn - FDQN for the master.
+ Fqdn *string `json:"fqdn,omitempty"`
+}
+
+// ContainerServiceOrchestratorProfile profile for the container service orchestrator.
+type ContainerServiceOrchestratorProfile struct {
+ // OrchestratorType - The orchestrator to use to manage container service cluster resources. Valid values are Swarm, DCOS, and Custom. Possible values include: 'Swarm', 'DCOS', 'Custom', 'Kubernetes'
+ OrchestratorType ContainerServiceOrchestratorTypes `json:"orchestratorType,omitempty"`
+}
+
+// ContainerServiceProperties properties of the container service.
+type ContainerServiceProperties struct {
+ // ProvisioningState - the current deployment or provisioning state, which only appears in the response.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+ // OrchestratorProfile - Properties of the orchestrator.
+ OrchestratorProfile *ContainerServiceOrchestratorProfile `json:"orchestratorProfile,omitempty"`
+ // CustomProfile - Properties for custom clusters.
+ CustomProfile *ContainerServiceCustomProfile `json:"customProfile,omitempty"`
+ // ServicePrincipalProfile - Properties for cluster service principals.
+ ServicePrincipalProfile *ContainerServiceServicePrincipalProfile `json:"servicePrincipalProfile,omitempty"`
+ // MasterProfile - Properties of master agents.
+ MasterProfile *ContainerServiceMasterProfile `json:"masterProfile,omitempty"`
+ // AgentPoolProfiles - Properties of the agent pool.
+ AgentPoolProfiles *[]ContainerServiceAgentPoolProfile `json:"agentPoolProfiles,omitempty"`
+ // WindowsProfile - Properties of Windows VMs.
+ WindowsProfile *ContainerServiceWindowsProfile `json:"windowsProfile,omitempty"`
+ // LinuxProfile - Properties of Linux VMs.
+ LinuxProfile *ContainerServiceLinuxProfile `json:"linuxProfile,omitempty"`
+ // DiagnosticsProfile - Properties of the diagnostic agent.
+ DiagnosticsProfile *ContainerServiceDiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
+}
+
+// ContainerServicesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type ContainerServicesCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future ContainerServicesCreateOrUpdateFuture) Result(client ContainerServicesClient) (cs ContainerService, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return cs, autorest.NewError("compute.ContainerServicesCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ cs, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ cs, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// ContainerServicesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type ContainerServicesDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future ContainerServicesDeleteFuture) Result(client ContainerServicesClient) (ar autorest.Response, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return ar, autorest.NewError("compute.ContainerServicesDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ ar, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ ar, err = client.DeleteResponder(resp)
+ return
+}
+
+// ContainerServiceServicePrincipalProfile information about a service principal identity for the cluster to use for
+// manipulating Azure APIs.
+type ContainerServiceServicePrincipalProfile struct {
+ // ClientID - The ID for the service principal.
+ ClientID *string `json:"clientId,omitempty"`
+ // Secret - The secret password associated with the service principal.
+ Secret *string `json:"secret,omitempty"`
+}
+
+// ContainerServiceSSHConfiguration SSH configuration for Linux-based VMs running on Azure.
+type ContainerServiceSSHConfiguration struct {
+ // PublicKeys - the list of SSH public keys used to authenticate with Linux-based VMs.
+ PublicKeys *[]ContainerServiceSSHPublicKey `json:"publicKeys,omitempty"`
+}
+
+// ContainerServiceSSHPublicKey contains information about SSH certificate public key data.
+type ContainerServiceSSHPublicKey struct {
+ // KeyData - Certificate public key used to authenticate with VMs through SSH. The certificate must be in PEM format with or without headers.
+ KeyData *string `json:"keyData,omitempty"`
+}
+
+// ContainerServiceVMDiagnostics profile for diagnostics on the container service VMs.
+type ContainerServiceVMDiagnostics struct {
+ // Enabled - Whether the VM diagnostic agent is provisioned on the VM.
+ Enabled *bool `json:"enabled,omitempty"`
+ // StorageURI - The URI of the storage account where diagnostics are stored.
+ StorageURI *string `json:"storageUri,omitempty"`
+}
+
+// ContainerServiceWindowsProfile profile for Windows VMs in the container service cluster.
+type ContainerServiceWindowsProfile struct {
+ // AdminUsername - The administrator username to use for Windows VMs.
+ AdminUsername *string `json:"adminUsername,omitempty"`
+ // AdminPassword - The administrator password to use for Windows VMs.
+ AdminPassword *string `json:"adminPassword,omitempty"`
+}
+
+// CreationData data used when creating a disk.
+type CreationData struct {
+ // CreateOption - This enumerates the possible sources of a disk's creation. Possible values include: 'Empty', 'Attach', 'FromImage', 'Import', 'Copy'
+ CreateOption DiskCreateOption `json:"createOption,omitempty"`
+ // StorageAccountID - If createOption is Import, the Azure Resource Manager identifier of the storage account containing the blob to import as a disk. Required only if the blob is in a different subscription
+ StorageAccountID *string `json:"storageAccountId,omitempty"`
+ // ImageReference - Disk source information.
+ ImageReference *ImageDiskReference `json:"imageReference,omitempty"`
+ // SourceURI - If createOption is Import, this is the URI of a blob to be imported into a managed disk.
+ SourceURI *string `json:"sourceUri,omitempty"`
+ // SourceResourceID - If createOption is Copy, this is the ARM id of the source snapshot or disk.
+ SourceResourceID *string `json:"sourceResourceId,omitempty"`
+}
+
+// DataDisk describes a data disk.
+type DataDisk struct {
+ // Lun - Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.
+ Lun *int32 `json:"lun,omitempty"`
+ // Name - The disk name.
+ Name *string `json:"name,omitempty"`
+ // Vhd - The virtual hard disk.
+ Vhd *VirtualHardDisk `json:"vhd,omitempty"`
+ // Image - The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist.
+ Image *VirtualHardDisk `json:"image,omitempty"`
+ // Caching - Specifies the caching requirements. Possible values are: **None** **ReadOnly** **ReadWrite** Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'CachingTypesNone', 'CachingTypesReadOnly', 'CachingTypesReadWrite'
+ Caching CachingTypes `json:"caching,omitempty"`
+ // WriteAcceleratorEnabled - Specifies whether writeAccelerator should be enabled or disabled on the disk.
+ WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
+ // CreateOption - Specifies how the virtual machine should be created. Possible values are: **Attach** \u2013 This value is used when you are using a specialized disk to create the virtual machine. **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'DiskCreateOptionTypesFromImage', 'DiskCreateOptionTypesEmpty', 'DiskCreateOptionTypesAttach'
+ CreateOption DiskCreateOptionTypes `json:"createOption,omitempty"`
+ // DiskSizeGB - Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. This value cannot be larger than 1023 GB
+ DiskSizeGB *int32 `json:"diskSizeGB,omitempty"`
+ // ManagedDisk - The managed disk parameters.
+ ManagedDisk *ManagedDiskParameters `json:"managedDisk,omitempty"`
+}
+
+// DataDiskImage contains the data disk images information.
+type DataDiskImage struct {
+ // Lun - Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.
+ Lun *int32 `json:"lun,omitempty"`
+}
+
+// DiagnosticsProfile specifies the boot diagnostic settings state. Minimum api-version: 2015-06-15.
+type DiagnosticsProfile struct {
+ // BootDiagnostics - Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. For Linux Virtual Machines, you can easily view the output of your console log. For both Windows and Linux virtual machines, Azure also enables you to see a screenshot of the VM from the hypervisor.
+ BootDiagnostics *BootDiagnostics `json:"bootDiagnostics,omitempty"`
+}
+
+// Disk disk resource.
+type Disk struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ // ManagedBy - A relative URI containing the ID of the VM that has the disk attached.
+ ManagedBy *string `json:"managedBy,omitempty"`
+ Sku *DiskSku `json:"sku,omitempty"`
+ // Zones - The Logical zone list for Disk.
+ Zones *[]string `json:"zones,omitempty"`
+ *DiskProperties `json:"properties,omitempty"`
+}
+
+// DiskEncryptionSettings describes a Encryption Settings for a Disk
+type DiskEncryptionSettings struct {
+ // DiskEncryptionKey - Specifies the location of the disk encryption key, which is a Key Vault Secret.
+ DiskEncryptionKey *KeyVaultSecretReference `json:"diskEncryptionKey,omitempty"`
+ // KeyEncryptionKey - Specifies the location of the key encryption key in Key Vault.
+ KeyEncryptionKey *KeyVaultKeyReference `json:"keyEncryptionKey,omitempty"`
+ // Enabled - Specifies whether disk encryption should be enabled on the virtual machine.
+ Enabled *bool `json:"enabled,omitempty"`
+}
+
+// DiskInstanceView the instance view of the disk.
+type DiskInstanceView struct {
+ // Name - The disk name.
+ Name *string `json:"name,omitempty"`
+ // EncryptionSettings - Specifies the encryption settings for the OS Disk. Minimum api-version: 2015-06-15
+ EncryptionSettings *[]DiskEncryptionSettings `json:"encryptionSettings,omitempty"`
+ // Statuses - The resource status information.
+ Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
+}
+
+// DiskList the List Disks operation response.
+type DiskList struct {
+ autorest.Response `json:"-"`
+ // Value - A list of disks.
+ Value *[]Disk `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of disks. Call ListNext() with this to fetch the next page of disks.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// DiskListIterator provides access to a complete listing of Disk values.
+type DiskListIterator struct {
+ i int
+ page DiskListPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *DiskListIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter DiskListIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter DiskListIterator) Response() DiskList {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter DiskListIterator) Value() Disk {
+ if !iter.page.NotDone() {
+ return Disk{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (dl DiskList) IsEmpty() bool {
+ return dl.Value == nil || len(*dl.Value) == 0
+}
+
+// diskListPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (dl DiskList) diskListPreparer() (*http.Request, error) {
+ if dl.NextLink == nil || len(to.String(dl.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(dl.NextLink)))
+}
+
+// DiskListPage contains a page of Disk values.
+type DiskListPage struct {
+ fn func(DiskList) (DiskList, error)
+ dl DiskList
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *DiskListPage) Next() error {
+ next, err := page.fn(page.dl)
+ if err != nil {
+ return err
+ }
+ page.dl = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page DiskListPage) NotDone() bool {
+ return !page.dl.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page DiskListPage) Response() DiskList {
+ return page.dl
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page DiskListPage) Values() []Disk {
+ if page.dl.IsEmpty() {
+ return nil
+ }
+ return *page.dl.Value
+}
+
+// DiskProperties disk resource properties.
+type DiskProperties struct {
+ // TimeCreated - The time when the disk was created.
+ TimeCreated *date.Time `json:"timeCreated,omitempty"`
+ // OsType - The Operating System type. Possible values include: 'Windows', 'Linux'
+ OsType OperatingSystemTypes `json:"osType,omitempty"`
+ // CreationData - Disk source information. CreationData information cannot be changed after the disk has been created.
+ CreationData *CreationData `json:"creationData,omitempty"`
+ // DiskSizeGB - If creationData.createOption is Empty, this field is mandatory and it indicates the size of the VHD to create. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
+ DiskSizeGB *int32 `json:"diskSizeGB,omitempty"`
+ // EncryptionSettings - Encryption settings for disk or snapshot
+ EncryptionSettings *EncryptionSettings `json:"encryptionSettings,omitempty"`
+ // ProvisioningState - The disk provisioning state.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+}
+
+// DisksCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type DisksCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future DisksCreateOrUpdateFuture) Result(client DisksClient) (d Disk, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return d, autorest.NewError("compute.DisksCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ d, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ d, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// DisksDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type DisksDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future DisksDeleteFuture) Result(client DisksClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.DisksDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// DisksGrantAccessFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type DisksGrantAccessFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future DisksGrantAccessFuture) Result(client DisksClient) (au AccessURI, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return au, autorest.NewError("compute.DisksGrantAccessFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ au, err = client.GrantAccessResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ au, err = client.GrantAccessResponder(resp)
+ return
+}
+
+// DiskSku the disks and snapshots sku name. Can be Standard_LRS or Premium_LRS.
+type DiskSku struct {
+ // Name - The sku name. Possible values include: 'StandardLRS', 'PremiumLRS'
+ Name StorageAccountTypes `json:"name,omitempty"`
+ // Tier - The sku tier.
+ Tier *string `json:"tier,omitempty"`
+}
+
+// DisksRevokeAccessFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type DisksRevokeAccessFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future DisksRevokeAccessFuture) Result(client DisksClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.DisksRevokeAccessFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.RevokeAccessResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.RevokeAccessResponder(resp)
+ return
+}
+
+// DisksUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type DisksUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future DisksUpdateFuture) Result(client DisksClient) (d Disk, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return d, autorest.NewError("compute.DisksUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ d, err = client.UpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ d, err = client.UpdateResponder(resp)
+ return
+}
+
+// DiskUpdate disk update resource.
+type DiskUpdate struct {
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ Sku *DiskSku `json:"sku,omitempty"`
+ *DiskUpdateProperties `json:"properties,omitempty"`
+}
+
+// DiskUpdateProperties disk resource update properties.
+type DiskUpdateProperties struct {
+ // OsType - the Operating System type. Possible values include: 'Windows', 'Linux'
+ OsType OperatingSystemTypes `json:"osType,omitempty"`
+ // DiskSizeGB - If creationData.createOption is Empty, this field is mandatory and it indicates the size of the VHD to create. If this field is present for updates or creation with other options, it indicates a resize. Resizes are only allowed if the disk is not attached to a running VM, and can only increase the disk's size.
+ DiskSizeGB *int32 `json:"diskSizeGB,omitempty"`
+ // EncryptionSettings - Encryption settings for disk or snapshot
+ EncryptionSettings *EncryptionSettings `json:"encryptionSettings,omitempty"`
+}
+
+// EncryptionSettings encryption settings for disk or snapshot
+type EncryptionSettings struct {
+ // Enabled - Set this flag to true and provide DiskEncryptionKey and optional KeyEncryptionKey to enable encryption. Set this flag to false and remove DiskEncryptionKey and KeyEncryptionKey to disable encryption. If EncryptionSettings is null in the request object, the existing settings remain unchanged.
+ Enabled *bool `json:"enabled,omitempty"`
+ // DiskEncryptionKey - Key Vault Secret Url and vault id of the disk encryption key
+ DiskEncryptionKey *KeyVaultAndSecretReference `json:"diskEncryptionKey,omitempty"`
+ // KeyEncryptionKey - Key Vault Key Url and vault id of the key encryption key
+ KeyEncryptionKey *KeyVaultAndKeyReference `json:"keyEncryptionKey,omitempty"`
+}
+
+// GrantAccessData data used for requesting a SAS.
+type GrantAccessData struct {
+ // Access - Possible values include: 'None', 'Read'
+ Access AccessLevel `json:"access,omitempty"`
+ // DurationInSeconds - Time duration in seconds until the SAS access expires.
+ DurationInSeconds *int32 `json:"durationInSeconds,omitempty"`
+}
+
+// HardwareProfile specifies the hardware settings for the virtual machine.
+type HardwareProfile struct {
+ // VMSize - Specifies the size of the virtual machine. For more information about virtual machine sizes, see [Sizes for virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-sizes?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). The available VM sizes depend on region and availability set. For a list of available sizes use these APIs: [List all available virtual machine sizes in an availability set](virtualmachines-list-sizes-availability-set.md) [List all available virtual machine sizes in a region](virtualmachines-list-sizes-region.md) [List all available virtual machine sizes for resizing](virtualmachines-list-sizes-for-resizing.md). Possible values include: 'VirtualMachineSizeTypesBasicA0', 'VirtualMachineSizeTypesBasicA1', 'VirtualMachineSizeTypesBasicA2', 'VirtualMachineSizeTypesBasicA3', 'VirtualMachineSizeTypesBasicA4', 'VirtualMachineSizeTypesStandardA0', 'VirtualMachineSizeTypesStandardA1', 'VirtualMachineSizeTypesStandardA2', 'VirtualMachineSizeTypesStandardA3', 'VirtualMachineSizeTypesStandardA4', 'VirtualMachineSizeTypesStandardA5', 'VirtualMachineSizeTypesStandardA6', 'VirtualMachineSizeTypesStandardA7', 'VirtualMachineSizeTypesStandardA8', 'VirtualMachineSizeTypesStandardA9', 'VirtualMachineSizeTypesStandardA10', 'VirtualMachineSizeTypesStandardA11', 'VirtualMachineSizeTypesStandardA1V2', 'VirtualMachineSizeTypesStandardA2V2', 'VirtualMachineSizeTypesStandardA4V2', 'VirtualMachineSizeTypesStandardA8V2', 'VirtualMachineSizeTypesStandardA2mV2', 'VirtualMachineSizeTypesStandardA4mV2', 'VirtualMachineSizeTypesStandardA8mV2', 'VirtualMachineSizeTypesStandardB1s', 'VirtualMachineSizeTypesStandardB1ms', 'VirtualMachineSizeTypesStandardB2s', 'VirtualMachineSizeTypesStandardB2ms', 'VirtualMachineSizeTypesStandardB4ms', 'VirtualMachineSizeTypesStandardB8ms', 'VirtualMachineSizeTypesStandardD1', 'VirtualMachineSizeTypesStandardD2', 'VirtualMachineSizeTypesStandardD3', 'VirtualMachineSizeTypesStandardD4', 'VirtualMachineSizeTypesStandardD11', 'VirtualMachineSizeTypesStandardD12', 'VirtualMachineSizeTypesStandardD13', 'VirtualMachineSizeTypesStandardD14', 'VirtualMachineSizeTypesStandardD1V2', 'VirtualMachineSizeTypesStandardD2V2', 'VirtualMachineSizeTypesStandardD3V2', 'VirtualMachineSizeTypesStandardD4V2', 'VirtualMachineSizeTypesStandardD5V2', 'VirtualMachineSizeTypesStandardD2V3', 'VirtualMachineSizeTypesStandardD4V3', 'VirtualMachineSizeTypesStandardD8V3', 'VirtualMachineSizeTypesStandardD16V3', 'VirtualMachineSizeTypesStandardD32V3', 'VirtualMachineSizeTypesStandardD64V3', 'VirtualMachineSizeTypesStandardD2sV3', 'VirtualMachineSizeTypesStandardD4sV3', 'VirtualMachineSizeTypesStandardD8sV3', 'VirtualMachineSizeTypesStandardD16sV3', 'VirtualMachineSizeTypesStandardD32sV3', 'VirtualMachineSizeTypesStandardD64sV3', 'VirtualMachineSizeTypesStandardD11V2', 'VirtualMachineSizeTypesStandardD12V2', 'VirtualMachineSizeTypesStandardD13V2', 'VirtualMachineSizeTypesStandardD14V2', 'VirtualMachineSizeTypesStandardD15V2', 'VirtualMachineSizeTypesStandardDS1', 'VirtualMachineSizeTypesStandardDS2', 'VirtualMachineSizeTypesStandardDS3', 'VirtualMachineSizeTypesStandardDS4', 'VirtualMachineSizeTypesStandardDS11', 'VirtualMachineSizeTypesStandardDS12', 'VirtualMachineSizeTypesStandardDS13', 'VirtualMachineSizeTypesStandardDS14', 'VirtualMachineSizeTypesStandardDS1V2', 'VirtualMachineSizeTypesStandardDS2V2', 'VirtualMachineSizeTypesStandardDS3V2', 'VirtualMachineSizeTypesStandardDS4V2', 'VirtualMachineSizeTypesStandardDS5V2', 'VirtualMachineSizeTypesStandardDS11V2', 'VirtualMachineSizeTypesStandardDS12V2', 'VirtualMachineSizeTypesStandardDS13V2', 'VirtualMachineSizeTypesStandardDS14V2', 'VirtualMachineSizeTypesStandardDS15V2', 'VirtualMachineSizeTypesStandardDS134V2', 'VirtualMachineSizeTypesStandardDS132V2', 'VirtualMachineSizeTypesStandardDS148V2', 'VirtualMachineSizeTypesStandardDS144V2', 'VirtualMachineSizeTypesStandardE2V3', 'VirtualMachineSizeTypesStandardE4V3', 'VirtualMachineSizeTypesStandardE8V3', 'VirtualMachineSizeTypesStandardE16V3', 'VirtualMachineSizeTypesStandardE32V3', 'VirtualMachineSizeTypesStandardE64V3', 'VirtualMachineSizeTypesStandardE2sV3', 'VirtualMachineSizeTypesStandardE4sV3', 'VirtualMachineSizeTypesStandardE8sV3', 'VirtualMachineSizeTypesStandardE16sV3', 'VirtualMachineSizeTypesStandardE32sV3', 'VirtualMachineSizeTypesStandardE64sV3', 'VirtualMachineSizeTypesStandardE3216V3', 'VirtualMachineSizeTypesStandardE328sV3', 'VirtualMachineSizeTypesStandardE6432sV3', 'VirtualMachineSizeTypesStandardE6416sV3', 'VirtualMachineSizeTypesStandardF1', 'VirtualMachineSizeTypesStandardF2', 'VirtualMachineSizeTypesStandardF4', 'VirtualMachineSizeTypesStandardF8', 'VirtualMachineSizeTypesStandardF16', 'VirtualMachineSizeTypesStandardF1s', 'VirtualMachineSizeTypesStandardF2s', 'VirtualMachineSizeTypesStandardF4s', 'VirtualMachineSizeTypesStandardF8s', 'VirtualMachineSizeTypesStandardF16s', 'VirtualMachineSizeTypesStandardF2sV2', 'VirtualMachineSizeTypesStandardF4sV2', 'VirtualMachineSizeTypesStandardF8sV2', 'VirtualMachineSizeTypesStandardF16sV2', 'VirtualMachineSizeTypesStandardF32sV2', 'VirtualMachineSizeTypesStandardF64sV2', 'VirtualMachineSizeTypesStandardF72sV2', 'VirtualMachineSizeTypesStandardG1', 'VirtualMachineSizeTypesStandardG2', 'VirtualMachineSizeTypesStandardG3', 'VirtualMachineSizeTypesStandardG4', 'VirtualMachineSizeTypesStandardG5', 'VirtualMachineSizeTypesStandardGS1', 'VirtualMachineSizeTypesStandardGS2', 'VirtualMachineSizeTypesStandardGS3', 'VirtualMachineSizeTypesStandardGS4', 'VirtualMachineSizeTypesStandardGS5', 'VirtualMachineSizeTypesStandardGS48', 'VirtualMachineSizeTypesStandardGS44', 'VirtualMachineSizeTypesStandardGS516', 'VirtualMachineSizeTypesStandardGS58', 'VirtualMachineSizeTypesStandardH8', 'VirtualMachineSizeTypesStandardH16', 'VirtualMachineSizeTypesStandardH8m', 'VirtualMachineSizeTypesStandardH16m', 'VirtualMachineSizeTypesStandardH16r', 'VirtualMachineSizeTypesStandardH16mr', 'VirtualMachineSizeTypesStandardL4s', 'VirtualMachineSizeTypesStandardL8s', 'VirtualMachineSizeTypesStandardL16s', 'VirtualMachineSizeTypesStandardL32s', 'VirtualMachineSizeTypesStandardM64s', 'VirtualMachineSizeTypesStandardM64ms', 'VirtualMachineSizeTypesStandardM128s', 'VirtualMachineSizeTypesStandardM128ms', 'VirtualMachineSizeTypesStandardM6432ms', 'VirtualMachineSizeTypesStandardM6416ms', 'VirtualMachineSizeTypesStandardM12864ms', 'VirtualMachineSizeTypesStandardM12832ms', 'VirtualMachineSizeTypesStandardNC6', 'VirtualMachineSizeTypesStandardNC12', 'VirtualMachineSizeTypesStandardNC24', 'VirtualMachineSizeTypesStandardNC24r', 'VirtualMachineSizeTypesStandardNC6sV2', 'VirtualMachineSizeTypesStandardNC12sV2', 'VirtualMachineSizeTypesStandardNC24sV2', 'VirtualMachineSizeTypesStandardNC24rsV2', 'VirtualMachineSizeTypesStandardNC6sV3', 'VirtualMachineSizeTypesStandardNC12sV3', 'VirtualMachineSizeTypesStandardNC24sV3', 'VirtualMachineSizeTypesStandardNC24rsV3', 'VirtualMachineSizeTypesStandardND6s', 'VirtualMachineSizeTypesStandardND12s', 'VirtualMachineSizeTypesStandardND24s', 'VirtualMachineSizeTypesStandardND24rs', 'VirtualMachineSizeTypesStandardNV6', 'VirtualMachineSizeTypesStandardNV12', 'VirtualMachineSizeTypesStandardNV24'
+ VMSize VirtualMachineSizeTypes `json:"vmSize,omitempty"`
+}
+
+// Image the source user image virtual hard disk. The virtual hard disk will be copied before being attached to the
+// virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist.
+type Image struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ *ImageProperties `json:"properties,omitempty"`
+}
+
+// ImageDataDisk describes a data disk.
+type ImageDataDisk struct {
+ // Lun - Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.
+ Lun *int32 `json:"lun,omitempty"`
+ // Snapshot - The snapshot.
+ Snapshot *SubResource `json:"snapshot,omitempty"`
+ // ManagedDisk - The managedDisk.
+ ManagedDisk *SubResource `json:"managedDisk,omitempty"`
+ // BlobURI - The Virtual Hard Disk.
+ BlobURI *string `json:"blobUri,omitempty"`
+ // Caching - Specifies the caching requirements. Possible values are: **None** **ReadOnly** **ReadWrite** Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'CachingTypesNone', 'CachingTypesReadOnly', 'CachingTypesReadWrite'
+ Caching CachingTypes `json:"caching,omitempty"`
+ // DiskSizeGB - Specifies the size of empty data disks in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. This value cannot be larger than 1023 GB
+ DiskSizeGB *int32 `json:"diskSizeGB,omitempty"`
+ // StorageAccountType - Specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'StandardLRS', 'PremiumLRS'
+ StorageAccountType StorageAccountTypes `json:"storageAccountType,omitempty"`
+}
+
+// ImageDiskReference the source image used for creating the disk.
+type ImageDiskReference struct {
+ // ID - A relative uri containing either a Platform Imgage Repository or user image reference.
+ ID *string `json:"id,omitempty"`
+ // Lun - If the disk is created from an image's data disk, this is an index that indicates which of the data disks in the image to use. For OS disks, this field is null.
+ Lun *int32 `json:"lun,omitempty"`
+}
+
+// ImageListResult the List Image operation response.
+type ImageListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of Images.
+ Value *[]Image `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of Images. Call ListNext() with this to fetch the next page of Images.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// ImageListResultIterator provides access to a complete listing of Image values.
+type ImageListResultIterator struct {
+ i int
+ page ImageListResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *ImageListResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter ImageListResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter ImageListResultIterator) Response() ImageListResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter ImageListResultIterator) Value() Image {
+ if !iter.page.NotDone() {
+ return Image{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (ilr ImageListResult) IsEmpty() bool {
+ return ilr.Value == nil || len(*ilr.Value) == 0
+}
+
+// imageListResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (ilr ImageListResult) imageListResultPreparer() (*http.Request, error) {
+ if ilr.NextLink == nil || len(to.String(ilr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(ilr.NextLink)))
+}
+
+// ImageListResultPage contains a page of Image values.
+type ImageListResultPage struct {
+ fn func(ImageListResult) (ImageListResult, error)
+ ilr ImageListResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *ImageListResultPage) Next() error {
+ next, err := page.fn(page.ilr)
+ if err != nil {
+ return err
+ }
+ page.ilr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page ImageListResultPage) NotDone() bool {
+ return !page.ilr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page ImageListResultPage) Response() ImageListResult {
+ return page.ilr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page ImageListResultPage) Values() []Image {
+ if page.ilr.IsEmpty() {
+ return nil
+ }
+ return *page.ilr.Value
+}
+
+// ImageOSDisk describes an Operating System disk.
+type ImageOSDisk struct {
+ // OsType - This property allows you to specify the type of the OS that is included in the disk if creating a VM from a custom image. Possible values are: **Windows** **Linux**. Possible values include: 'Windows', 'Linux'
+ OsType OperatingSystemTypes `json:"osType,omitempty"`
+ // OsState - The OS State. Possible values include: 'Generalized', 'Specialized'
+ OsState OperatingSystemStateTypes `json:"osState,omitempty"`
+ // Snapshot - The snapshot.
+ Snapshot *SubResource `json:"snapshot,omitempty"`
+ // ManagedDisk - The managedDisk.
+ ManagedDisk *SubResource `json:"managedDisk,omitempty"`
+ // BlobURI - The Virtual Hard Disk.
+ BlobURI *string `json:"blobUri,omitempty"`
+ // Caching - Specifies the caching requirements. Possible values are: **None** **ReadOnly** **ReadWrite** Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'CachingTypesNone', 'CachingTypesReadOnly', 'CachingTypesReadWrite'
+ Caching CachingTypes `json:"caching,omitempty"`
+ // DiskSizeGB - Specifies the size of empty data disks in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. This value cannot be larger than 1023 GB
+ DiskSizeGB *int32 `json:"diskSizeGB,omitempty"`
+ // StorageAccountType - Specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'StandardLRS', 'PremiumLRS'
+ StorageAccountType StorageAccountTypes `json:"storageAccountType,omitempty"`
+}
+
+// ImageProperties describes the properties of an Image.
+type ImageProperties struct {
+ // SourceVirtualMachine - The source virtual machine from which Image is created.
+ SourceVirtualMachine *SubResource `json:"sourceVirtualMachine,omitempty"`
+ // StorageProfile - Specifies the storage settings for the virtual machine disks.
+ StorageProfile *ImageStorageProfile `json:"storageProfile,omitempty"`
+ // ProvisioningState - The provisioning state.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+}
+
+// ImageReference specifies information about the image to use. You can specify information about platform images,
+// marketplace images, or virtual machine images. This element is required when you want to use a platform image,
+// marketplace image, or virtual machine image, but is not used in other creation operations.
+type ImageReference struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Publisher - The image publisher.
+ Publisher *string `json:"publisher,omitempty"`
+ // Offer - Specifies the offer of the platform image or marketplace image used to create the virtual machine.
+ Offer *string `json:"offer,omitempty"`
+ // Sku - The image SKU.
+ Sku *string `json:"sku,omitempty"`
+ // Version - Specifies the version of the platform image or marketplace image used to create the virtual machine. The allowed formats are Major.Minor.Build or 'latest'. Major, Minor, and Build are decimal numbers. Specify 'latest' to use the latest version of an image available at deploy time. Even if you use 'latest', the VM image will not automatically update after deploy time even if a new version becomes available.
+ Version *string `json:"version,omitempty"`
+}
+
+// ImagesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type ImagesCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future ImagesCreateOrUpdateFuture) Result(client ImagesClient) (i Image, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return i, autorest.NewError("compute.ImagesCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ i, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ i, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// ImagesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type ImagesDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future ImagesDeleteFuture) Result(client ImagesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.ImagesDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// ImageStorageProfile describes a storage profile.
+type ImageStorageProfile struct {
+ // OsDisk - Specifies information about the operating system disk used by the virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+ OsDisk *ImageOSDisk `json:"osDisk,omitempty"`
+ // DataDisks - Specifies the parameters that are used to add a data disk to a virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+ DataDisks *[]ImageDataDisk `json:"dataDisks,omitempty"`
+}
+
+// InnerError inner error details.
+type InnerError struct {
+ // Exceptiontype - The exception type.
+ Exceptiontype *string `json:"exceptiontype,omitempty"`
+ // Errordetail - The internal error message or exception dump.
+ Errordetail *string `json:"errordetail,omitempty"`
+}
+
+// InstanceViewStatus instance view status.
+type InstanceViewStatus struct {
+ // Code - The status code.
+ Code *string `json:"code,omitempty"`
+ // Level - The level code. Possible values include: 'Info', 'Warning', 'Error'
+ Level StatusLevelTypes `json:"level,omitempty"`
+ // DisplayStatus - The short localizable label for the status.
+ DisplayStatus *string `json:"displayStatus,omitempty"`
+ // Message - The detailed status message, including for alerts and error messages.
+ Message *string `json:"message,omitempty"`
+ // Time - The time of the status.
+ Time *date.Time `json:"time,omitempty"`
+}
+
+// KeyVaultAndKeyReference key Vault Key Url and vault id of KeK, KeK is optional and when provided is used to unwrap
+// the encryptionKey
+type KeyVaultAndKeyReference struct {
+ // SourceVault - Resource id of the KeyVault containing the key or secret
+ SourceVault *SourceVault `json:"sourceVault,omitempty"`
+ // KeyURL - Url pointing to a key or secret in KeyVault
+ KeyURL *string `json:"keyUrl,omitempty"`
+}
+
+// KeyVaultAndSecretReference key Vault Secret Url and vault id of the encryption key
+type KeyVaultAndSecretReference struct {
+ // SourceVault - Resource id of the KeyVault containing the key or secret
+ SourceVault *SourceVault `json:"sourceVault,omitempty"`
+ // SecretURL - Url pointing to a key or secret in KeyVault
+ SecretURL *string `json:"secretUrl,omitempty"`
+}
+
+// KeyVaultKeyReference describes a reference to Key Vault Key
+type KeyVaultKeyReference struct {
+ // KeyURL - The URL referencing a key encryption key in Key Vault.
+ KeyURL *string `json:"keyUrl,omitempty"`
+ // SourceVault - The relative URL of the Key Vault containing the key.
+ SourceVault *SubResource `json:"sourceVault,omitempty"`
+}
+
+// KeyVaultSecretReference describes a reference to Key Vault Secret
+type KeyVaultSecretReference struct {
+ // SecretURL - The URL referencing a secret in a Key Vault.
+ SecretURL *string `json:"secretUrl,omitempty"`
+ // SourceVault - The relative URL of the Key Vault containing the secret.
+ SourceVault *SubResource `json:"sourceVault,omitempty"`
+}
+
+// LinuxConfiguration specifies the Linux operating system settings on the virtual machine. For a list of
+// supported Linux distributions, see [Linux on Azure-Endorsed
+// Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)
+// For running non-endorsed distributions, see [Information for Non-Endorsed
+// Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).
+type LinuxConfiguration struct {
+ // DisablePasswordAuthentication - Specifies whether password authentication should be disabled.
+ DisablePasswordAuthentication *bool `json:"disablePasswordAuthentication,omitempty"`
+ // SSH - Specifies the ssh key configuration for a Linux OS.
+ SSH *SSHConfiguration `json:"ssh,omitempty"`
+}
+
+// ListUsagesResult the List Usages operation response.
+type ListUsagesResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of compute resource usages.
+ Value *[]Usage `json:"value,omitempty"`
+ // NextLink - The URI to fetch the next page of compute resource usage information. Call ListNext() with this to fetch the next page of compute resource usage information.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// ListUsagesResultIterator provides access to a complete listing of Usage values.
+type ListUsagesResultIterator struct {
+ i int
+ page ListUsagesResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *ListUsagesResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter ListUsagesResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter ListUsagesResultIterator) Response() ListUsagesResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter ListUsagesResultIterator) Value() Usage {
+ if !iter.page.NotDone() {
+ return Usage{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (lur ListUsagesResult) IsEmpty() bool {
+ return lur.Value == nil || len(*lur.Value) == 0
+}
+
+// listUsagesResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (lur ListUsagesResult) listUsagesResultPreparer() (*http.Request, error) {
+ if lur.NextLink == nil || len(to.String(lur.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(lur.NextLink)))
+}
+
+// ListUsagesResultPage contains a page of Usage values.
+type ListUsagesResultPage struct {
+ fn func(ListUsagesResult) (ListUsagesResult, error)
+ lur ListUsagesResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *ListUsagesResultPage) Next() error {
+ next, err := page.fn(page.lur)
+ if err != nil {
+ return err
+ }
+ page.lur = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page ListUsagesResultPage) NotDone() bool {
+ return !page.lur.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page ListUsagesResultPage) Response() ListUsagesResult {
+ return page.lur
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page ListUsagesResultPage) Values() []Usage {
+ if page.lur.IsEmpty() {
+ return nil
+ }
+ return *page.lur.Value
+}
+
+// ListVirtualMachineExtensionImage ...
+type ListVirtualMachineExtensionImage struct {
+ autorest.Response `json:"-"`
+ Value *[]VirtualMachineExtensionImage `json:"value,omitempty"`
+}
+
+// ListVirtualMachineImageResource ...
+type ListVirtualMachineImageResource struct {
+ autorest.Response `json:"-"`
+ Value *[]VirtualMachineImageResource `json:"value,omitempty"`
+}
+
+// LogAnalyticsExportRequestRateByIntervalFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type LogAnalyticsExportRequestRateByIntervalFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future LogAnalyticsExportRequestRateByIntervalFuture) Result(client LogAnalyticsClient) (laor LogAnalyticsOperationResult, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return laor, autorest.NewError("compute.LogAnalyticsExportRequestRateByIntervalFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ laor, err = client.ExportRequestRateByIntervalResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ laor, err = client.ExportRequestRateByIntervalResponder(resp)
+ return
+}
+
+// LogAnalyticsExportThrottledRequestsFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type LogAnalyticsExportThrottledRequestsFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future LogAnalyticsExportThrottledRequestsFuture) Result(client LogAnalyticsClient) (laor LogAnalyticsOperationResult, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return laor, autorest.NewError("compute.LogAnalyticsExportThrottledRequestsFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ laor, err = client.ExportThrottledRequestsResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ laor, err = client.ExportThrottledRequestsResponder(resp)
+ return
+}
+
+// LogAnalyticsInputBase api input base class for LogAnalytics Api.
+type LogAnalyticsInputBase struct {
+ // BlobContainerSasURI - SAS Uri of the logging blob container to which LogAnalytics Api writes output logs to.
+ BlobContainerSasURI *string `json:"blobContainerSasUri,omitempty"`
+ // FromTime - From time of the query
+ FromTime *date.Time `json:"fromTime,omitempty"`
+ // ToTime - To time of the query
+ ToTime *date.Time `json:"toTime,omitempty"`
+ // GroupByThrottlePolicy - Group query result by Throttle Policy applied.
+ GroupByThrottlePolicy *bool `json:"groupByThrottlePolicy,omitempty"`
+ // GroupByOperationName - Group query result by by Operation Name.
+ GroupByOperationName *bool `json:"groupByOperationName,omitempty"`
+ // GroupByResourceName - Group query result by Resource Name.
+ GroupByResourceName *bool `json:"groupByResourceName,omitempty"`
+}
+
+// LogAnalyticsOperationResult logAnalytics operation status response
+type LogAnalyticsOperationResult struct {
+ autorest.Response `json:"-"`
+ // Name - Operation ID
+ Name *string `json:"name,omitempty"`
+ // Status - Operation status
+ Status *string `json:"status,omitempty"`
+ // StartTime - Start time of the operation
+ StartTime *date.Time `json:"startTime,omitempty"`
+ // EndTime - End time of the operation
+ EndTime *date.Time `json:"endTime,omitempty"`
+ // Error - Api error
+ Error *APIError `json:"error,omitempty"`
+ // Properties - LogAnalyticsOutput
+ Properties *LogAnalyticsOutput `json:"properties,omitempty"`
+}
+
+// LogAnalyticsOutput logAnalytics output properties
+type LogAnalyticsOutput struct {
+ // Output - Output file Uri path to blob container.
+ Output *string `json:"output,omitempty"`
+}
+
+// LongRunningOperationProperties compute-specific operation properties, including output
+type LongRunningOperationProperties struct {
+ // Output - Operation output data (raw JSON)
+ Output *map[string]interface{} `json:"output,omitempty"`
+}
+
+// MaintenanceRedeployStatus maintenance Operation Status.
+type MaintenanceRedeployStatus struct {
+ // IsCustomerInitiatedMaintenanceAllowed - True, if customer is allowed to perform Maintenance.
+ IsCustomerInitiatedMaintenanceAllowed *bool `json:"isCustomerInitiatedMaintenanceAllowed,omitempty"`
+ // PreMaintenanceWindowStartTime - Start Time for the Pre Maintenance Window.
+ PreMaintenanceWindowStartTime *date.Time `json:"preMaintenanceWindowStartTime,omitempty"`
+ // PreMaintenanceWindowEndTime - End Time for the Pre Maintenance Window.
+ PreMaintenanceWindowEndTime *date.Time `json:"preMaintenanceWindowEndTime,omitempty"`
+ // MaintenanceWindowStartTime - Start Time for the Maintenance Window.
+ MaintenanceWindowStartTime *date.Time `json:"maintenanceWindowStartTime,omitempty"`
+ // MaintenanceWindowEndTime - End Time for the Maintenance Window.
+ MaintenanceWindowEndTime *date.Time `json:"maintenanceWindowEndTime,omitempty"`
+ // LastOperationResultCode - The Last Maintenance Operation Result Code. Possible values include: 'MaintenanceOperationResultCodeTypesNone', 'MaintenanceOperationResultCodeTypesRetryLater', 'MaintenanceOperationResultCodeTypesMaintenanceAborted', 'MaintenanceOperationResultCodeTypesMaintenanceCompleted'
+ LastOperationResultCode MaintenanceOperationResultCodeTypes `json:"lastOperationResultCode,omitempty"`
+ // LastOperationMessage - Message returned for the last Maintenance Operation.
+ LastOperationMessage *string `json:"lastOperationMessage,omitempty"`
+}
+
+// ManagedDiskParameters the parameters of a managed disk.
+type ManagedDiskParameters struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // StorageAccountType - Specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'StandardLRS', 'PremiumLRS'
+ StorageAccountType StorageAccountTypes `json:"storageAccountType,omitempty"`
+}
+
+// NetworkInterfaceReference describes a network interface reference.
+type NetworkInterfaceReference struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ *NetworkInterfaceReferenceProperties `json:"properties,omitempty"`
+}
+
+// NetworkInterfaceReferenceProperties describes a network interface reference properties.
+type NetworkInterfaceReferenceProperties struct {
+ // Primary - Specifies the primary network interface in case the virtual machine has more than 1 network interface.
+ Primary *bool `json:"primary,omitempty"`
+}
+
+// NetworkProfile specifies the network interfaces of the virtual machine.
+type NetworkProfile struct {
+ // NetworkInterfaces - Specifies the list of resource Ids for the network interfaces associated with the virtual machine.
+ NetworkInterfaces *[]NetworkInterfaceReference `json:"networkInterfaces,omitempty"`
+}
+
+// OperationStatusResponse operation status response
+type OperationStatusResponse struct {
+ autorest.Response `json:"-"`
+ // Name - Operation ID
+ Name *string `json:"name,omitempty"`
+ // Status - Operation status
+ Status *string `json:"status,omitempty"`
+ // StartTime - Start time of the operation
+ StartTime *date.Time `json:"startTime,omitempty"`
+ // EndTime - End time of the operation
+ EndTime *date.Time `json:"endTime,omitempty"`
+ // Error - Api error
+ Error *APIError `json:"error,omitempty"`
+}
+
+// OSDisk specifies information about the operating system disk used by the virtual machine. For more
+// information about disks, see [About disks and VHDs for Azure virtual
+// machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+type OSDisk struct {
+ // OsType - This property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. Possible values are: **Windows** **Linux**. Possible values include: 'Windows', 'Linux'
+ OsType OperatingSystemTypes `json:"osType,omitempty"`
+ // EncryptionSettings - Specifies the encryption settings for the OS Disk. Minimum api-version: 2015-06-15
+ EncryptionSettings *DiskEncryptionSettings `json:"encryptionSettings,omitempty"`
+ // Name - The disk name.
+ Name *string `json:"name,omitempty"`
+ // Vhd - The virtual hard disk.
+ Vhd *VirtualHardDisk `json:"vhd,omitempty"`
+ // Image - The source user image virtual hard disk. The virtual hard disk will be copied before being attached to the virtual machine. If SourceImage is provided, the destination virtual hard drive must not exist.
+ Image *VirtualHardDisk `json:"image,omitempty"`
+ // Caching - Specifies the caching requirements. Possible values are: **None** **ReadOnly** **ReadWrite** Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'CachingTypesNone', 'CachingTypesReadOnly', 'CachingTypesReadWrite'
+ Caching CachingTypes `json:"caching,omitempty"`
+ // WriteAcceleratorEnabled - Specifies whether writeAccelerator should be enabled or disabled on the disk.
+ WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
+ // CreateOption - Specifies how the virtual machine should be created. Possible values are: **Attach** \u2013 This value is used when you are using a specialized disk to create the virtual machine. **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'DiskCreateOptionTypesFromImage', 'DiskCreateOptionTypesEmpty', 'DiskCreateOptionTypesAttach'
+ CreateOption DiskCreateOptionTypes `json:"createOption,omitempty"`
+ // DiskSizeGB - Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. This value cannot be larger than 1023 GB
+ DiskSizeGB *int32 `json:"diskSizeGB,omitempty"`
+ // ManagedDisk - The managed disk parameters.
+ ManagedDisk *ManagedDiskParameters `json:"managedDisk,omitempty"`
+}
+
+// OSDiskImage contains the os disk image information.
+type OSDiskImage struct {
+ // OperatingSystem - The operating system of the osDiskImage. Possible values include: 'Windows', 'Linux'
+ OperatingSystem OperatingSystemTypes `json:"operatingSystem,omitempty"`
+}
+
+// OSProfile specifies the operating system settings for the virtual machine.
+type OSProfile struct {
+ // ComputerName - Specifies the host OS name of the virtual machine. **Max-length (Windows):** 15 characters **Max-length (Linux):** 64 characters. For naming conventions and restrictions see [Azure infrastructure services implementation guidelines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-infrastructure-subscription-accounts-guidelines?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#1-naming-conventions).
+ ComputerName *string `json:"computerName,omitempty"`
+ // AdminUsername - Specifies the name of the administrator account. **Windows-only restriction:** Cannot end in "." **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". **Minimum-length (Linux):** 1 character **Max-length (Linux):** 64 characters **Max-length (Windows):** 20 characters
For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)
+ AdminUsername *string `json:"adminUsername,omitempty"`
+ // AdminPassword - Specifies the password of the administrator account. **Minimum-length (Windows):** 8 characters **Minimum-length (Linux):** 6 characters **Max-length (Windows):** 123 characters **Max-length (Linux):** 72 characters **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled Has lower characters Has upper characters Has a digit Has a special character (Regex match [\W_]) **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password)
+ AdminPassword *string `json:"adminPassword,omitempty"`
+ // CustomData - Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. For using cloud-init for your VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)
+ CustomData *string `json:"customData,omitempty"`
+ // WindowsConfiguration - Specifies Windows operating system settings on the virtual machine.
+ WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"`
+ // LinuxConfiguration - Specifies the Linux operating system settings on the virtual machine. For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).
+ LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"`
+ // Secrets - Specifies set of certificates that should be installed onto the virtual machine.
+ Secrets *[]VaultSecretGroup `json:"secrets,omitempty"`
+}
+
+// Plan specifies information about the marketplace image used to create the virtual machine. This element is only used
+// for marketplace images. Before you can use a marketplace image from an API, you must enable the image for
+// programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to
+// deploy programmatically, Get Started ->**. Enter any required information and then click **Save**.
+type Plan struct {
+ // Name - The plan ID.
+ Name *string `json:"name,omitempty"`
+ // Publisher - The publisher ID.
+ Publisher *string `json:"publisher,omitempty"`
+ // Product - Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.
+ Product *string `json:"product,omitempty"`
+ // PromotionCode - The promotion code.
+ PromotionCode *string `json:"promotionCode,omitempty"`
+}
+
+// PurchasePlan used for establishing the purchase context of any 3rd Party artifact through MarketPlace.
+type PurchasePlan struct {
+ // Publisher - The publisher ID.
+ Publisher *string `json:"publisher,omitempty"`
+ // Name - The plan ID.
+ Name *string `json:"name,omitempty"`
+ // Product - Specifies the product of the image from the marketplace. This is the same value as Offer under the imageReference element.
+ Product *string `json:"product,omitempty"`
+}
+
+// RecoveryWalkResponse response after calling a manual recovery walk
+type RecoveryWalkResponse struct {
+ autorest.Response `json:"-"`
+ // WalkPerformed - Whether the recovery walk was performed
+ WalkPerformed *bool `json:"walkPerformed,omitempty"`
+ // NextPlatformUpdateDomain - The next update domain that needs to be walked. Null means walk spanning all update domains has been completed
+ NextPlatformUpdateDomain *int32 `json:"nextPlatformUpdateDomain,omitempty"`
+}
+
+// RequestRateByIntervalInput api request input for LogAnalytics getRequestRateByInterval Api.
+type RequestRateByIntervalInput struct {
+ // BlobContainerSasURI - SAS Uri of the logging blob container to which LogAnalytics Api writes output logs to.
+ BlobContainerSasURI *string `json:"blobContainerSasUri,omitempty"`
+ // FromTime - From time of the query
+ FromTime *date.Time `json:"fromTime,omitempty"`
+ // ToTime - To time of the query
+ ToTime *date.Time `json:"toTime,omitempty"`
+ // GroupByThrottlePolicy - Group query result by Throttle Policy applied.
+ GroupByThrottlePolicy *bool `json:"groupByThrottlePolicy,omitempty"`
+ // GroupByOperationName - Group query result by by Operation Name.
+ GroupByOperationName *bool `json:"groupByOperationName,omitempty"`
+ // GroupByResourceName - Group query result by Resource Name.
+ GroupByResourceName *bool `json:"groupByResourceName,omitempty"`
+ // IntervalLength - Interval value in minutes used to create LogAnalytics call rate logs. Possible values include: 'ThreeMins', 'FiveMins', 'ThirtyMins', 'SixtyMins'
+ IntervalLength IntervalInMins `json:"intervalLength,omitempty"`
+}
+
+// Resource the Resource model definition.
+type Resource struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+}
+
+// ResourceSku describes an available Compute SKU.
+type ResourceSku struct {
+ // ResourceType - The type of resource the SKU applies to.
+ ResourceType *string `json:"resourceType,omitempty"`
+ // Name - The name of SKU.
+ Name *string `json:"name,omitempty"`
+ // Tier - Specifies the tier of virtual machines in a scale set. Possible Values: **Standard** **Basic**
+ Tier *string `json:"tier,omitempty"`
+ // Size - The Size of the SKU.
+ Size *string `json:"size,omitempty"`
+ // Family - The Family of this particular SKU.
+ Family *string `json:"family,omitempty"`
+ // Kind - The Kind of resources that are supported in this SKU.
+ Kind *string `json:"kind,omitempty"`
+ // Capacity - Specifies the number of virtual machines in the scale set.
+ Capacity *ResourceSkuCapacity `json:"capacity,omitempty"`
+ // Locations - The set of locations that the SKU is available.
+ Locations *[]string `json:"locations,omitempty"`
+ // LocationInfo - A list of locations and availability zones in those locations where the SKU is available.
+ LocationInfo *[]ResourceSkuLocationInfo `json:"locationInfo,omitempty"`
+ // APIVersions - The api versions that support this SKU.
+ APIVersions *[]string `json:"apiVersions,omitempty"`
+ // Costs - Metadata for retrieving price info.
+ Costs *[]ResourceSkuCosts `json:"costs,omitempty"`
+ // Capabilities - A name value pair to describe the capability.
+ Capabilities *[]ResourceSkuCapabilities `json:"capabilities,omitempty"`
+ // Restrictions - The restrictions because of which SKU cannot be used. This is empty if there are no restrictions.
+ Restrictions *[]ResourceSkuRestrictions `json:"restrictions,omitempty"`
+}
+
+// ResourceSkuCapabilities describes The SKU capabilites object.
+type ResourceSkuCapabilities struct {
+ // Name - An invariant to describe the feature.
+ Name *string `json:"name,omitempty"`
+ // Value - An invariant if the feature is measured by quantity.
+ Value *string `json:"value,omitempty"`
+}
+
+// ResourceSkuCapacity describes scaling information of a SKU.
+type ResourceSkuCapacity struct {
+ // Minimum - The minimum capacity.
+ Minimum *int64 `json:"minimum,omitempty"`
+ // Maximum - The maximum capacity that can be set.
+ Maximum *int64 `json:"maximum,omitempty"`
+ // Default - The default capacity.
+ Default *int64 `json:"default,omitempty"`
+ // ScaleType - The scale type applicable to the sku. Possible values include: 'ResourceSkuCapacityScaleTypeAutomatic', 'ResourceSkuCapacityScaleTypeManual', 'ResourceSkuCapacityScaleTypeNone'
+ ScaleType ResourceSkuCapacityScaleType `json:"scaleType,omitempty"`
+}
+
+// ResourceSkuCosts describes metadata for retrieving price info.
+type ResourceSkuCosts struct {
+ // MeterID - Used for querying price from commerce.
+ MeterID *string `json:"meterID,omitempty"`
+ // Quantity - The multiplier is needed to extend the base metered cost.
+ Quantity *int64 `json:"quantity,omitempty"`
+ // ExtendedUnit - An invariant to show the extended unit.
+ ExtendedUnit *string `json:"extendedUnit,omitempty"`
+}
+
+// ResourceSkuLocationInfo ...
+type ResourceSkuLocationInfo struct {
+ // Location - Location of the SKU
+ Location *string `json:"location,omitempty"`
+ // Zones - List of availability zones where the SKU is supported.
+ Zones *[]string `json:"zones,omitempty"`
+}
+
+// ResourceSkuRestrictionInfo ...
+type ResourceSkuRestrictionInfo struct {
+ // Locations - Locations where the SKU is restricted
+ Locations *[]string `json:"locations,omitempty"`
+ // Zones - List of availability zones where the SKU is restricted.
+ Zones *[]string `json:"zones,omitempty"`
+}
+
+// ResourceSkuRestrictions describes scaling information of a SKU.
+type ResourceSkuRestrictions struct {
+ // Type - The type of restrictions. Possible values include: 'Location', 'Zone'
+ Type ResourceSkuRestrictionsType `json:"type,omitempty"`
+ // Values - The value of restrictions. If the restriction type is set to location. This would be different locations where the SKU is restricted.
+ Values *[]string `json:"values,omitempty"`
+ // RestrictionInfo - The information about the restriction where the SKU cannot be used.
+ RestrictionInfo *ResourceSkuRestrictionInfo `json:"restrictionInfo,omitempty"`
+ // ReasonCode - The reason for restriction. Possible values include: 'QuotaID', 'NotAvailableForSubscription'
+ ReasonCode ResourceSkuRestrictionsReasonCode `json:"reasonCode,omitempty"`
+}
+
+// ResourceSkusResult the Compute List Skus operation response.
+type ResourceSkusResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of skus available for the subscription.
+ Value *[]ResourceSku `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of Compute Skus. Call ListNext() with this to fetch the next page of VMSS Skus.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// ResourceSkusResultIterator provides access to a complete listing of ResourceSku values.
+type ResourceSkusResultIterator struct {
+ i int
+ page ResourceSkusResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *ResourceSkusResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter ResourceSkusResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter ResourceSkusResultIterator) Response() ResourceSkusResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter ResourceSkusResultIterator) Value() ResourceSku {
+ if !iter.page.NotDone() {
+ return ResourceSku{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (rsr ResourceSkusResult) IsEmpty() bool {
+ return rsr.Value == nil || len(*rsr.Value) == 0
+}
+
+// resourceSkusResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (rsr ResourceSkusResult) resourceSkusResultPreparer() (*http.Request, error) {
+ if rsr.NextLink == nil || len(to.String(rsr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(rsr.NextLink)))
+}
+
+// ResourceSkusResultPage contains a page of ResourceSku values.
+type ResourceSkusResultPage struct {
+ fn func(ResourceSkusResult) (ResourceSkusResult, error)
+ rsr ResourceSkusResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *ResourceSkusResultPage) Next() error {
+ next, err := page.fn(page.rsr)
+ if err != nil {
+ return err
+ }
+ page.rsr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page ResourceSkusResultPage) NotDone() bool {
+ return !page.rsr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page ResourceSkusResultPage) Response() ResourceSkusResult {
+ return page.rsr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page ResourceSkusResultPage) Values() []ResourceSku {
+ if page.rsr.IsEmpty() {
+ return nil
+ }
+ return *page.rsr.Value
+}
+
+// ResourceUpdate the Resource model definition.
+type ResourceUpdate struct {
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ Sku *DiskSku `json:"sku,omitempty"`
+}
+
+// RollingUpgradePolicy the configuration parameters used while performing a rolling upgrade.
+type RollingUpgradePolicy struct {
+ // MaxBatchInstancePercent - The maximum percent of total virtual machine instances that will be upgraded simultaneously by the rolling upgrade in one batch. As this is a maximum, unhealthy instances in previous or future batches can cause the percentage of instances in a batch to decrease to ensure higher reliability. The default value for this parameter is 20%.
+ MaxBatchInstancePercent *int32 `json:"maxBatchInstancePercent,omitempty"`
+ // MaxUnhealthyInstancePercent - The maximum percentage of the total virtual machine instances in the scale set that can be simultaneously unhealthy, either as a result of being upgraded, or by being found in an unhealthy state by the virtual machine health checks before the rolling upgrade aborts. This constraint will be checked prior to starting any batch. The default value for this parameter is 20%.
+ MaxUnhealthyInstancePercent *int32 `json:"maxUnhealthyInstancePercent,omitempty"`
+ // MaxUnhealthyUpgradedInstancePercent - The maximum percentage of upgraded virtual machine instances that can be found to be in an unhealthy state. This check will happen after each batch is upgraded. If this percentage is ever exceeded, the rolling update aborts. The default value for this parameter is 20%.
+ MaxUnhealthyUpgradedInstancePercent *int32 `json:"maxUnhealthyUpgradedInstancePercent,omitempty"`
+ // PauseTimeBetweenBatches - The wait time between completing the update for all virtual machines in one batch and starting the next batch. The time duration should be specified in ISO 8601 format. The default value is 0 seconds (PT0S).
+ PauseTimeBetweenBatches *string `json:"pauseTimeBetweenBatches,omitempty"`
+}
+
+// RollingUpgradeProgressInfo information about the number of virtual machine instances in each upgrade state.
+type RollingUpgradeProgressInfo struct {
+ // SuccessfulInstanceCount - The number of instances that have been successfully upgraded.
+ SuccessfulInstanceCount *int32 `json:"successfulInstanceCount,omitempty"`
+ // FailedInstanceCount - The number of instances that have failed to be upgraded successfully.
+ FailedInstanceCount *int32 `json:"failedInstanceCount,omitempty"`
+ // InProgressInstanceCount - The number of instances that are currently being upgraded.
+ InProgressInstanceCount *int32 `json:"inProgressInstanceCount,omitempty"`
+ // PendingInstanceCount - The number of instances that have not yet begun to be upgraded.
+ PendingInstanceCount *int32 `json:"pendingInstanceCount,omitempty"`
+}
+
+// RollingUpgradeRunningStatus information about the current running state of the overall upgrade.
+type RollingUpgradeRunningStatus struct {
+ // Code - Code indicating the current status of the upgrade. Possible values include: 'RollingForward', 'Cancelled', 'Completed', 'Faulted'
+ Code RollingUpgradeStatusCode `json:"code,omitempty"`
+ // StartTime - Start time of the upgrade.
+ StartTime *date.Time `json:"startTime,omitempty"`
+ // LastAction - The last action performed on the rolling upgrade. Possible values include: 'Start', 'Cancel'
+ LastAction RollingUpgradeActionType `json:"lastAction,omitempty"`
+ // LastActionTime - Last action time of the upgrade.
+ LastActionTime *date.Time `json:"lastActionTime,omitempty"`
+}
+
+// RollingUpgradeStatusInfo the status of the latest virtual machine scale set rolling upgrade.
+type RollingUpgradeStatusInfo struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ *RollingUpgradeStatusInfoProperties `json:"properties,omitempty"`
+}
+
+// RollingUpgradeStatusInfoProperties the status of the latest virtual machine scale set rolling upgrade.
+type RollingUpgradeStatusInfoProperties struct {
+ // Policy - The rolling upgrade policies applied for this upgrade.
+ Policy *RollingUpgradePolicy `json:"policy,omitempty"`
+ // RunningStatus - Information about the current running state of the overall upgrade.
+ RunningStatus *RollingUpgradeRunningStatus `json:"runningStatus,omitempty"`
+ // Progress - Information about the number of virtual machine instances in each upgrade state.
+ Progress *RollingUpgradeProgressInfo `json:"progress,omitempty"`
+ // Error - Error details for this upgrade, if there are any.
+ Error *APIError `json:"error,omitempty"`
+}
+
+// RunCommandDocument describes the properties of a Run Command.
+type RunCommandDocument struct {
+ autorest.Response `json:"-"`
+ // Schema - The VM run command schema.
+ Schema *string `json:"$schema,omitempty"`
+ // ID - The VM run command id.
+ ID *string `json:"id,omitempty"`
+ // OsType - The Operating System type. Possible values include: 'Windows', 'Linux'
+ OsType OperatingSystemTypes `json:"osType,omitempty"`
+ // Label - The VM run command label.
+ Label *string `json:"label,omitempty"`
+ // Description - The VM run command description.
+ Description *string `json:"description,omitempty"`
+ // Script - The script to be executed.
+ Script *[]string `json:"script,omitempty"`
+ // Parameters - The parameters used by the script.
+ Parameters *[]RunCommandParameterDefinition `json:"parameters,omitempty"`
+}
+
+// RunCommandDocumentBase describes the properties of a Run Command metadata.
+type RunCommandDocumentBase struct {
+ // Schema - The VM run command schema.
+ Schema *string `json:"$schema,omitempty"`
+ // ID - The VM run command id.
+ ID *string `json:"id,omitempty"`
+ // OsType - The Operating System type. Possible values include: 'Windows', 'Linux'
+ OsType OperatingSystemTypes `json:"osType,omitempty"`
+ // Label - The VM run command label.
+ Label *string `json:"label,omitempty"`
+ // Description - The VM run command description.
+ Description *string `json:"description,omitempty"`
+}
+
+// RunCommandInput capture Virtual Machine parameters.
+type RunCommandInput struct {
+ // CommandID - The run command id.
+ CommandID *string `json:"commandId,omitempty"`
+ // Script - Optional. The script to be executed. When this value is given, the given script will override the default script of the command.
+ Script *[]string `json:"script,omitempty"`
+ // Parameters - The run command parameters.
+ Parameters *[]RunCommandInputParameter `json:"parameters,omitempty"`
+}
+
+// RunCommandInputParameter describes the properties of a run command parameter.
+type RunCommandInputParameter struct {
+ // Name - The run command parameter name.
+ Name *string `json:"name,omitempty"`
+ // Value - The run command parameter value.
+ Value *string `json:"value,omitempty"`
+}
+
+// RunCommandListResult the List Virtual Machine operation response.
+type RunCommandListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of virtual machine run commands.
+ Value *[]RunCommandDocumentBase `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of run commands. Call ListNext() with this to fetch the next page of run commands.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// RunCommandListResultIterator provides access to a complete listing of RunCommandDocumentBase values.
+type RunCommandListResultIterator struct {
+ i int
+ page RunCommandListResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *RunCommandListResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter RunCommandListResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter RunCommandListResultIterator) Response() RunCommandListResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter RunCommandListResultIterator) Value() RunCommandDocumentBase {
+ if !iter.page.NotDone() {
+ return RunCommandDocumentBase{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (rclr RunCommandListResult) IsEmpty() bool {
+ return rclr.Value == nil || len(*rclr.Value) == 0
+}
+
+// runCommandListResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (rclr RunCommandListResult) runCommandListResultPreparer() (*http.Request, error) {
+ if rclr.NextLink == nil || len(to.String(rclr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(rclr.NextLink)))
+}
+
+// RunCommandListResultPage contains a page of RunCommandDocumentBase values.
+type RunCommandListResultPage struct {
+ fn func(RunCommandListResult) (RunCommandListResult, error)
+ rclr RunCommandListResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *RunCommandListResultPage) Next() error {
+ next, err := page.fn(page.rclr)
+ if err != nil {
+ return err
+ }
+ page.rclr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page RunCommandListResultPage) NotDone() bool {
+ return !page.rclr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page RunCommandListResultPage) Response() RunCommandListResult {
+ return page.rclr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page RunCommandListResultPage) Values() []RunCommandDocumentBase {
+ if page.rclr.IsEmpty() {
+ return nil
+ }
+ return *page.rclr.Value
+}
+
+// RunCommandParameterDefinition describes the properties of a run command parameter.
+type RunCommandParameterDefinition struct {
+ // Name - The run command parameter name.
+ Name *string `json:"name,omitempty"`
+ // Type - The run command parameter type.
+ Type *string `json:"type,omitempty"`
+ // DefaultValue - The run command parameter default value.
+ DefaultValue *string `json:"defaultValue,omitempty"`
+ // Required - The run command parameter required.
+ Required *bool `json:"required,omitempty"`
+}
+
+// RunCommandResult run command operation response.
+type RunCommandResult struct {
+ autorest.Response `json:"-"`
+ // Name - Operation ID
+ Name *string `json:"name,omitempty"`
+ // Status - Operation status
+ Status *string `json:"status,omitempty"`
+ // StartTime - Start time of the operation
+ StartTime *date.Time `json:"startTime,omitempty"`
+ // EndTime - End time of the operation
+ EndTime *date.Time `json:"endTime,omitempty"`
+ // Error - Api error
+ Error *APIError `json:"error,omitempty"`
+ *RunCommandResultProperties `json:"properties,omitempty"`
+}
+
+// RunCommandResultProperties compute-specific operation properties, including output
+type RunCommandResultProperties struct {
+ // Output - Operation output data (raw JSON)
+ Output *map[string]interface{} `json:"output,omitempty"`
+}
+
+// Sku describes a virtual machine scale set sku.
+type Sku struct {
+ // Name - The sku name.
+ Name *string `json:"name,omitempty"`
+ // Tier - Specifies the tier of virtual machines in a scale set. Possible Values: **Standard** **Basic**
+ Tier *string `json:"tier,omitempty"`
+ // Capacity - Specifies the number of virtual machines in the scale set.
+ Capacity *int64 `json:"capacity,omitempty"`
+}
+
+// Snapshot snapshot resource.
+type Snapshot struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ // ManagedBy - Unused. Always Null.
+ ManagedBy *string `json:"managedBy,omitempty"`
+ Sku *DiskSku `json:"sku,omitempty"`
+ *DiskProperties `json:"properties,omitempty"`
+}
+
+// SnapshotList the List Snapshots operation response.
+type SnapshotList struct {
+ autorest.Response `json:"-"`
+ // Value - A list of snapshots.
+ Value *[]Snapshot `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of snapshots. Call ListNext() with this to fetch the next page of snapshots.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// SnapshotListIterator provides access to a complete listing of Snapshot values.
+type SnapshotListIterator struct {
+ i int
+ page SnapshotListPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *SnapshotListIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter SnapshotListIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter SnapshotListIterator) Response() SnapshotList {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter SnapshotListIterator) Value() Snapshot {
+ if !iter.page.NotDone() {
+ return Snapshot{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (sl SnapshotList) IsEmpty() bool {
+ return sl.Value == nil || len(*sl.Value) == 0
+}
+
+// snapshotListPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (sl SnapshotList) snapshotListPreparer() (*http.Request, error) {
+ if sl.NextLink == nil || len(to.String(sl.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(sl.NextLink)))
+}
+
+// SnapshotListPage contains a page of Snapshot values.
+type SnapshotListPage struct {
+ fn func(SnapshotList) (SnapshotList, error)
+ sl SnapshotList
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *SnapshotListPage) Next() error {
+ next, err := page.fn(page.sl)
+ if err != nil {
+ return err
+ }
+ page.sl = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page SnapshotListPage) NotDone() bool {
+ return !page.sl.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page SnapshotListPage) Response() SnapshotList {
+ return page.sl
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page SnapshotListPage) Values() []Snapshot {
+ if page.sl.IsEmpty() {
+ return nil
+ }
+ return *page.sl.Value
+}
+
+// SnapshotsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type SnapshotsCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future SnapshotsCreateOrUpdateFuture) Result(client SnapshotsClient) (s Snapshot, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return s, autorest.NewError("compute.SnapshotsCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ s, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ s, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// SnapshotsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type SnapshotsDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future SnapshotsDeleteFuture) Result(client SnapshotsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.SnapshotsDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// SnapshotsGrantAccessFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type SnapshotsGrantAccessFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future SnapshotsGrantAccessFuture) Result(client SnapshotsClient) (au AccessURI, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return au, autorest.NewError("compute.SnapshotsGrantAccessFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ au, err = client.GrantAccessResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ au, err = client.GrantAccessResponder(resp)
+ return
+}
+
+// SnapshotsRevokeAccessFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type SnapshotsRevokeAccessFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future SnapshotsRevokeAccessFuture) Result(client SnapshotsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.SnapshotsRevokeAccessFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.RevokeAccessResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.RevokeAccessResponder(resp)
+ return
+}
+
+// SnapshotsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type SnapshotsUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future SnapshotsUpdateFuture) Result(client SnapshotsClient) (s Snapshot, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return s, autorest.NewError("compute.SnapshotsUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ s, err = client.UpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ s, err = client.UpdateResponder(resp)
+ return
+}
+
+// SnapshotUpdate snapshot update resource.
+type SnapshotUpdate struct {
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ Sku *DiskSku `json:"sku,omitempty"`
+ *DiskUpdateProperties `json:"properties,omitempty"`
+}
+
+// SourceVault the vault id is an Azure Resource Manager Resoure id in the form
+// /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.KeyVault/vaults/{vaultName}
+type SourceVault struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+}
+
+// SSHConfiguration SSH configuration for Linux based VMs running on Azure
+type SSHConfiguration struct {
+ // PublicKeys - The list of SSH public keys used to authenticate with linux based VMs.
+ PublicKeys *[]SSHPublicKey `json:"publicKeys,omitempty"`
+}
+
+// SSHPublicKey contains information about SSH certificate public key and the path on the Linux VM where the public key
+// is placed.
+type SSHPublicKey struct {
+ // Path - Specifies the full path on the created VM where ssh public key is stored. If the file already exists, the specified key is appended to the file. Example: /home/user/.ssh/authorized_keys
+ Path *string `json:"path,omitempty"`
+ // KeyData - SSH public key certificate used to authenticate with the VM through ssh. The key needs to be at least 2048-bit and in ssh-rsa format. For creating ssh keys, see [Create SSH keys on Linux and Mac for Linux VMs in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-mac-create-ssh-keys?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).
+ KeyData *string `json:"keyData,omitempty"`
+}
+
+// StorageProfile specifies the storage settings for the virtual machine disks.
+type StorageProfile struct {
+ // ImageReference - Specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations.
+ ImageReference *ImageReference `json:"imageReference,omitempty"`
+ // OsDisk - Specifies information about the operating system disk used by the virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+ OsDisk *OSDisk `json:"osDisk,omitempty"`
+ // DataDisks - Specifies the parameters that are used to add a data disk to a virtual machine. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+ DataDisks *[]DataDisk `json:"dataDisks,omitempty"`
+}
+
+// SubResource ...
+type SubResource struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+}
+
+// SubResourceReadOnly ...
+type SubResourceReadOnly struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+}
+
+// ThrottledRequestsInput api request input for LogAnalytics getThrottledRequests Api.
+type ThrottledRequestsInput struct {
+ // BlobContainerSasURI - SAS Uri of the logging blob container to which LogAnalytics Api writes output logs to.
+ BlobContainerSasURI *string `json:"blobContainerSasUri,omitempty"`
+ // FromTime - From time of the query
+ FromTime *date.Time `json:"fromTime,omitempty"`
+ // ToTime - To time of the query
+ ToTime *date.Time `json:"toTime,omitempty"`
+ // GroupByThrottlePolicy - Group query result by Throttle Policy applied.
+ GroupByThrottlePolicy *bool `json:"groupByThrottlePolicy,omitempty"`
+ // GroupByOperationName - Group query result by by Operation Name.
+ GroupByOperationName *bool `json:"groupByOperationName,omitempty"`
+ // GroupByResourceName - Group query result by Resource Name.
+ GroupByResourceName *bool `json:"groupByResourceName,omitempty"`
+}
+
+// UpdateResource the Update Resource model definition.
+type UpdateResource struct {
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+}
+
+// UpgradePolicy describes an upgrade policy - automatic, manual, or rolling.
+type UpgradePolicy struct {
+ // Mode - Specifies the mode of an upgrade to virtual machines in the scale set. Possible values are: **Manual** - You control the application of updates to virtual machines in the scale set. You do this by using the manualUpgrade action. **Automatic** - All virtual machines in the scale set are automatically updated at the same time. Possible values include: 'Automatic', 'Manual', 'Rolling'
+ Mode UpgradeMode `json:"mode,omitempty"`
+ // RollingUpgradePolicy - The configuration parameters used while performing a rolling upgrade.
+ RollingUpgradePolicy *RollingUpgradePolicy `json:"rollingUpgradePolicy,omitempty"`
+ // AutomaticOSUpgrade - Whether OS upgrades should automatically be applied to scale set instances in a rolling fashion when a newer version of the image becomes available.
+ AutomaticOSUpgrade *bool `json:"automaticOSUpgrade,omitempty"`
+}
+
+// Usage describes Compute Resource Usage.
+type Usage struct {
+ // Unit - An enum describing the unit of usage measurement.
+ Unit *string `json:"unit,omitempty"`
+ // CurrentValue - The current usage of the resource.
+ CurrentValue *int32 `json:"currentValue,omitempty"`
+ // Limit - The maximum permitted usage of the resource.
+ Limit *int64 `json:"limit,omitempty"`
+ // Name - The name of the type of usage.
+ Name *UsageName `json:"name,omitempty"`
+}
+
+// UsageName the Usage Names.
+type UsageName struct {
+ // Value - The name of the resource.
+ Value *string `json:"value,omitempty"`
+ // LocalizedValue - The localized name of the resource.
+ LocalizedValue *string `json:"localizedValue,omitempty"`
+}
+
+// VaultCertificate describes a single certificate reference in a Key Vault, and where the certificate should reside on
+// the VM.
+type VaultCertificate struct {
+ // CertificateURL - This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: { "data":"", "dataType":"pfx", "password":"" }
+ CertificateURL *string `json:"certificateUrl,omitempty"`
+ // CertificateStore - For Windows VMs, specifies the certificate store on the Virtual Machine to which the certificate should be added. The specified certificate store is implicitly in the LocalMachine account. For Linux VMs, the certificate file is placed under the /var/lib/waagent directory, with the file name .crt for the X509 certificate file and .prv for private key. Both of these files are .pem formatted.
+ CertificateStore *string `json:"certificateStore,omitempty"`
+}
+
+// VaultSecretGroup describes a set of certificates which are all in the same Key Vault.
+type VaultSecretGroup struct {
+ // SourceVault - The relative URL of the Key Vault containing all of the certificates in VaultCertificates.
+ SourceVault *SubResource `json:"sourceVault,omitempty"`
+ // VaultCertificates - The list of key vault references in SourceVault which contain certificates.
+ VaultCertificates *[]VaultCertificate `json:"vaultCertificates,omitempty"`
+}
+
+// VirtualHardDisk describes the uri of a disk.
+type VirtualHardDisk struct {
+ // URI - Specifies the virtual hard disk's uri.
+ URI *string `json:"uri,omitempty"`
+}
+
+// VirtualMachine describes a Virtual Machine.
+type VirtualMachine struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ // Plan - Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**.
+ Plan *Plan `json:"plan,omitempty"`
+ *VirtualMachineProperties `json:"properties,omitempty"`
+ // Resources - The virtual machine child extension resources.
+ Resources *[]VirtualMachineExtension `json:"resources,omitempty"`
+ // Identity - The identity of the virtual machine, if configured.
+ Identity *VirtualMachineIdentity `json:"identity,omitempty"`
+ // Zones - The virtual machine zones.
+ Zones *[]string `json:"zones,omitempty"`
+}
+
+// VirtualMachineAgentInstanceView the instance view of the VM Agent running on the virtual machine.
+type VirtualMachineAgentInstanceView struct {
+ // VMAgentVersion - The VM Agent full version.
+ VMAgentVersion *string `json:"vmAgentVersion,omitempty"`
+ // ExtensionHandlers - The virtual machine extension handler instance view.
+ ExtensionHandlers *[]VirtualMachineExtensionHandlerInstanceView `json:"extensionHandlers,omitempty"`
+ // Statuses - The resource status information.
+ Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
+}
+
+// VirtualMachineCaptureParameters capture Virtual Machine parameters.
+type VirtualMachineCaptureParameters struct {
+ // VhdPrefix - The captured virtual hard disk's name prefix.
+ VhdPrefix *string `json:"vhdPrefix,omitempty"`
+ // DestinationContainerName - The destination container name.
+ DestinationContainerName *string `json:"destinationContainerName,omitempty"`
+ // OverwriteVhds - Specifies whether to overwrite the destination virtual hard disk, in case of conflict.
+ OverwriteVhds *bool `json:"overwriteVhds,omitempty"`
+}
+
+// VirtualMachineCaptureResult resource Id.
+type VirtualMachineCaptureResult struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ *VirtualMachineCaptureResultProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineCaptureResultProperties compute-specific operation properties, including output
+type VirtualMachineCaptureResultProperties struct {
+ // Output - Operation output data (raw JSON)
+ Output *map[string]interface{} `json:"output,omitempty"`
+}
+
+// VirtualMachineExtension describes a Virtual Machine Extension.
+type VirtualMachineExtension struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ *VirtualMachineExtensionProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineExtensionHandlerInstanceView the instance view of a virtual machine extension handler.
+type VirtualMachineExtensionHandlerInstanceView struct {
+ // Type - Specifies the type of the extension; an example is "CustomScriptExtension".
+ Type *string `json:"type,omitempty"`
+ // TypeHandlerVersion - Specifies the version of the script handler.
+ TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
+ // Status - The extension handler status.
+ Status *InstanceViewStatus `json:"status,omitempty"`
+}
+
+// VirtualMachineExtensionImage describes a Virtual Machine Extension Image.
+type VirtualMachineExtensionImage struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ *VirtualMachineExtensionImageProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineExtensionImageProperties describes the properties of a Virtual Machine Extension Image.
+type VirtualMachineExtensionImageProperties struct {
+ // OperatingSystem - The operating system this extension supports.
+ OperatingSystem *string `json:"operatingSystem,omitempty"`
+ // ComputeRole - The type of role (IaaS or PaaS) this extension supports.
+ ComputeRole *string `json:"computeRole,omitempty"`
+ // HandlerSchema - The schema defined by publisher, where extension consumers should provide settings in a matching schema.
+ HandlerSchema *string `json:"handlerSchema,omitempty"`
+ // VMScaleSetEnabled - Whether the extension can be used on xRP VMScaleSets. By default existing extensions are usable on scalesets, but there might be cases where a publisher wants to explicitly indicate the extension is only enabled for CRP VMs but not VMSS.
+ VMScaleSetEnabled *bool `json:"vmScaleSetEnabled,omitempty"`
+ // SupportsMultipleExtensions - Whether the handler can support multiple extensions.
+ SupportsMultipleExtensions *bool `json:"supportsMultipleExtensions,omitempty"`
+}
+
+// VirtualMachineExtensionInstanceView the instance view of a virtual machine extension.
+type VirtualMachineExtensionInstanceView struct {
+ // Name - The virtual machine extension name.
+ Name *string `json:"name,omitempty"`
+ // Type - Specifies the type of the extension; an example is "CustomScriptExtension".
+ Type *string `json:"type,omitempty"`
+ // TypeHandlerVersion - Specifies the version of the script handler.
+ TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
+ // Substatuses - The resource status information.
+ Substatuses *[]InstanceViewStatus `json:"substatuses,omitempty"`
+ // Statuses - The resource status information.
+ Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
+}
+
+// VirtualMachineExtensionProperties describes the properties of a Virtual Machine Extension.
+type VirtualMachineExtensionProperties struct {
+ // ForceUpdateTag - How the extension handler should be forced to update even if the extension configuration has not changed.
+ ForceUpdateTag *string `json:"forceUpdateTag,omitempty"`
+ // Publisher - The name of the extension handler publisher.
+ Publisher *string `json:"publisher,omitempty"`
+ // Type - Specifies the type of the extension; an example is "CustomScriptExtension".
+ Type *string `json:"type,omitempty"`
+ // TypeHandlerVersion - Specifies the version of the script handler.
+ TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
+ // AutoUpgradeMinorVersion - Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true.
+ AutoUpgradeMinorVersion *bool `json:"autoUpgradeMinorVersion,omitempty"`
+ // Settings - Json formatted public settings for the extension.
+ Settings *map[string]interface{} `json:"settings,omitempty"`
+ // ProtectedSettings - The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
+ ProtectedSettings *map[string]interface{} `json:"protectedSettings,omitempty"`
+ // ProvisioningState - The provisioning state, which only appears in the response.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+ // InstanceView - The virtual machine extension instance view.
+ InstanceView *VirtualMachineExtensionInstanceView `json:"instanceView,omitempty"`
+}
+
+// VirtualMachineExtensionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachineExtensionsCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineExtensionsCreateOrUpdateFuture) Result(client VirtualMachineExtensionsClient) (vme VirtualMachineExtension, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return vme, autorest.NewError("compute.VirtualMachineExtensionsCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ vme, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ vme, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// VirtualMachineExtensionsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineExtensionsDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineExtensionsDeleteFuture) Result(client VirtualMachineExtensionsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineExtensionsDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// VirtualMachineHealthStatus the health status of the VM.
+type VirtualMachineHealthStatus struct {
+ // Status - The health status information for the VM.
+ Status *InstanceViewStatus `json:"status,omitempty"`
+}
+
+// VirtualMachineIdentity identity for the virtual machine.
+type VirtualMachineIdentity struct {
+ // PrincipalID - The principal id of virtual machine identity. This property will only be provided for a system assigned identity.
+ PrincipalID *string `json:"principalId,omitempty"`
+ // TenantID - The tenant id associated with the virtual machine. This property will only be provided for a system assigned identity.
+ TenantID *string `json:"tenantId,omitempty"`
+ // Type - The type of identity used for the virtual machine. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine. Possible values include: 'ResourceIdentityTypeSystemAssigned', 'ResourceIdentityTypeUserAssigned', 'ResourceIdentityTypeSystemAssignedUserAssigned', 'ResourceIdentityTypeNone'
+ Type ResourceIdentityType `json:"type,omitempty"`
+ // IdentityIds - The list of user identities associated with the Virtual Machine. The user identity references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'.
+ IdentityIds *[]string `json:"identityIds,omitempty"`
+}
+
+// VirtualMachineImage describes a Virtual Machine Image.
+type VirtualMachineImage struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - The name of the resource.
+ Name *string `json:"name,omitempty"`
+ // Location - The supported Azure location of the resource.
+ Location *string `json:"location,omitempty"`
+ // Tags - Specifies the tags that are assigned to the virtual machine. For more information about using tags, see [Using tags to organize your Azure resources](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags.md).
+ Tags *map[string]*string `json:"tags,omitempty"`
+ *VirtualMachineImageProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineImageProperties describes the properties of a Virtual Machine Image.
+type VirtualMachineImageProperties struct {
+ Plan *PurchasePlan `json:"plan,omitempty"`
+ OsDiskImage *OSDiskImage `json:"osDiskImage,omitempty"`
+ DataDiskImages *[]DataDiskImage `json:"dataDiskImages,omitempty"`
+}
+
+// VirtualMachineImageResource virtual machine image resource information.
+type VirtualMachineImageResource struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - The name of the resource.
+ Name *string `json:"name,omitempty"`
+ // Location - The supported Azure location of the resource.
+ Location *string `json:"location,omitempty"`
+ // Tags - Specifies the tags that are assigned to the virtual machine. For more information about using tags, see [Using tags to organize your Azure resources](https://docs.microsoft.com/azure/azure-resource-manager/resource-group-using-tags.md).
+ Tags *map[string]*string `json:"tags,omitempty"`
+}
+
+// VirtualMachineInstanceView the instance view of a virtual machine.
+type VirtualMachineInstanceView struct {
+ autorest.Response `json:"-"`
+ // PlatformUpdateDomain - Specifies the update domain of the virtual machine.
+ PlatformUpdateDomain *int32 `json:"platformUpdateDomain,omitempty"`
+ // PlatformFaultDomain - Specifies the fault domain of the virtual machine.
+ PlatformFaultDomain *int32 `json:"platformFaultDomain,omitempty"`
+ // ComputerName - The computer name assigned to the virtual machine.
+ ComputerName *string `json:"computerName,omitempty"`
+ // OsName - The Operating System running on the virtual machine.
+ OsName *string `json:"osName,omitempty"`
+ // OsVersion - The version of Operating System running on the virtual machine.
+ OsVersion *string `json:"osVersion,omitempty"`
+ // RdpThumbPrint - The Remote desktop certificate thumbprint.
+ RdpThumbPrint *string `json:"rdpThumbPrint,omitempty"`
+ // VMAgent - The VM Agent running on the virtual machine.
+ VMAgent *VirtualMachineAgentInstanceView `json:"vmAgent,omitempty"`
+ // MaintenanceRedeployStatus - The Maintenance Operation status on the virtual machine.
+ MaintenanceRedeployStatus *MaintenanceRedeployStatus `json:"maintenanceRedeployStatus,omitempty"`
+ // Disks - The virtual machine disk information.
+ Disks *[]DiskInstanceView `json:"disks,omitempty"`
+ // Extensions - The extensions information.
+ Extensions *[]VirtualMachineExtensionInstanceView `json:"extensions,omitempty"`
+ // BootDiagnostics - Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. For Linux Virtual Machines, you can easily view the output of your console log. For both Windows and Linux virtual machines, Azure also enables you to see a screenshot of the VM from the hypervisor.
+ BootDiagnostics *BootDiagnosticsInstanceView `json:"bootDiagnostics,omitempty"`
+ // Statuses - The resource status information.
+ Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
+}
+
+// VirtualMachineListResult the List Virtual Machine operation response.
+type VirtualMachineListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of virtual machines.
+ Value *[]VirtualMachine `json:"value,omitempty"`
+ // NextLink - The URI to fetch the next page of VMs. Call ListNext() with this URI to fetch the next page of Virtual Machines.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// VirtualMachineListResultIterator provides access to a complete listing of VirtualMachine values.
+type VirtualMachineListResultIterator struct {
+ i int
+ page VirtualMachineListResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *VirtualMachineListResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter VirtualMachineListResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter VirtualMachineListResultIterator) Response() VirtualMachineListResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter VirtualMachineListResultIterator) Value() VirtualMachine {
+ if !iter.page.NotDone() {
+ return VirtualMachine{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (vmlr VirtualMachineListResult) IsEmpty() bool {
+ return vmlr.Value == nil || len(*vmlr.Value) == 0
+}
+
+// virtualMachineListResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (vmlr VirtualMachineListResult) virtualMachineListResultPreparer() (*http.Request, error) {
+ if vmlr.NextLink == nil || len(to.String(vmlr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(vmlr.NextLink)))
+}
+
+// VirtualMachineListResultPage contains a page of VirtualMachine values.
+type VirtualMachineListResultPage struct {
+ fn func(VirtualMachineListResult) (VirtualMachineListResult, error)
+ vmlr VirtualMachineListResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *VirtualMachineListResultPage) Next() error {
+ next, err := page.fn(page.vmlr)
+ if err != nil {
+ return err
+ }
+ page.vmlr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page VirtualMachineListResultPage) NotDone() bool {
+ return !page.vmlr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page VirtualMachineListResultPage) Response() VirtualMachineListResult {
+ return page.vmlr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page VirtualMachineListResultPage) Values() []VirtualMachine {
+ if page.vmlr.IsEmpty() {
+ return nil
+ }
+ return *page.vmlr.Value
+}
+
+// VirtualMachineProperties describes the properties of a Virtual Machine.
+type VirtualMachineProperties struct {
+ // HardwareProfile - Specifies the hardware settings for the virtual machine.
+ HardwareProfile *HardwareProfile `json:"hardwareProfile,omitempty"`
+ // StorageProfile - Specifies the storage settings for the virtual machine disks.
+ StorageProfile *StorageProfile `json:"storageProfile,omitempty"`
+ // OsProfile - Specifies the operating system settings for the virtual machine.
+ OsProfile *OSProfile `json:"osProfile,omitempty"`
+ // NetworkProfile - Specifies the network interfaces of the virtual machine.
+ NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"`
+ // DiagnosticsProfile - Specifies the boot diagnostic settings state. Minimum api-version: 2015-06-15.
+ DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
+ // AvailabilitySet - Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). For more information on Azure planned maintainance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set.
+ AvailabilitySet *SubResource `json:"availabilitySet,omitempty"`
+ // ProvisioningState - The provisioning state, which only appears in the response.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+ // InstanceView - The virtual machine instance view.
+ InstanceView *VirtualMachineInstanceView `json:"instanceView,omitempty"`
+ // LicenseType - Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. Possible values are: Windows_Client Windows_Server If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) Minimum api-version: 2015-06-15
+ LicenseType *string `json:"licenseType,omitempty"`
+ // VMID - Specifies the VM unique ID which is a 128-bits identifier that is encoded and stored in all Azure IaaS VMs SMBIOS and can be read using platform BIOS commands.
+ VMID *string `json:"vmId,omitempty"`
+}
+
+// VirtualMachineScaleSet describes a Virtual Machine Scale Set.
+type VirtualMachineScaleSet struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ // Sku - The virtual machine scale set sku.
+ Sku *Sku `json:"sku,omitempty"`
+ // Plan - Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**.
+ Plan *Plan `json:"plan,omitempty"`
+ *VirtualMachineScaleSetProperties `json:"properties,omitempty"`
+ // Identity - The identity of the virtual machine scale set, if configured.
+ Identity *VirtualMachineScaleSetIdentity `json:"identity,omitempty"`
+ // Zones - The virtual machine scale set zones.
+ Zones *[]string `json:"zones,omitempty"`
+}
+
+// VirtualMachineScaleSetDataDisk describes a virtual machine scale set data disk.
+type VirtualMachineScaleSetDataDisk struct {
+ // Name - The disk name.
+ Name *string `json:"name,omitempty"`
+ // Lun - Specifies the logical unit number of the data disk. This value is used to identify data disks within the VM and therefore must be unique for each data disk attached to a VM.
+ Lun *int32 `json:"lun,omitempty"`
+ // Caching - Specifies the caching requirements. Possible values are: **None** **ReadOnly** **ReadWrite** Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'CachingTypesNone', 'CachingTypesReadOnly', 'CachingTypesReadWrite'
+ Caching CachingTypes `json:"caching,omitempty"`
+ // WriteAcceleratorEnabled - Specifies whether writeAccelerator should be enabled or disabled on the disk.
+ WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
+ // CreateOption - The create option. Possible values include: 'DiskCreateOptionTypesFromImage', 'DiskCreateOptionTypesEmpty', 'DiskCreateOptionTypesAttach'
+ CreateOption DiskCreateOptionTypes `json:"createOption,omitempty"`
+ // DiskSizeGB - Specifies the size of an empty data disk in gigabytes. This element can be used to overwrite the name of the disk in a virtual machine image. This value cannot be larger than 1023 GB
+ DiskSizeGB *int32 `json:"diskSizeGB,omitempty"`
+ // ManagedDisk - The managed disk parameters.
+ ManagedDisk *VirtualMachineScaleSetManagedDiskParameters `json:"managedDisk,omitempty"`
+}
+
+// VirtualMachineScaleSetExtension describes a Virtual Machine Scale Set Extension.
+type VirtualMachineScaleSetExtension struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - The name of the extension.
+ Name *string `json:"name,omitempty"`
+ *VirtualMachineScaleSetExtensionProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineScaleSetExtensionListResult the List VM scale set extension operation response.
+type VirtualMachineScaleSetExtensionListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of VM scale set extensions.
+ Value *[]VirtualMachineScaleSetExtension `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of VM scale set extensions. Call ListNext() with this to fetch the next page of VM scale set extensions.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// VirtualMachineScaleSetExtensionListResultIterator provides access to a complete listing of
+// VirtualMachineScaleSetExtension values.
+type VirtualMachineScaleSetExtensionListResultIterator struct {
+ i int
+ page VirtualMachineScaleSetExtensionListResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *VirtualMachineScaleSetExtensionListResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter VirtualMachineScaleSetExtensionListResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter VirtualMachineScaleSetExtensionListResultIterator) Response() VirtualMachineScaleSetExtensionListResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter VirtualMachineScaleSetExtensionListResultIterator) Value() VirtualMachineScaleSetExtension {
+ if !iter.page.NotDone() {
+ return VirtualMachineScaleSetExtension{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (vmsselr VirtualMachineScaleSetExtensionListResult) IsEmpty() bool {
+ return vmsselr.Value == nil || len(*vmsselr.Value) == 0
+}
+
+// virtualMachineScaleSetExtensionListResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (vmsselr VirtualMachineScaleSetExtensionListResult) virtualMachineScaleSetExtensionListResultPreparer() (*http.Request, error) {
+ if vmsselr.NextLink == nil || len(to.String(vmsselr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(vmsselr.NextLink)))
+}
+
+// VirtualMachineScaleSetExtensionListResultPage contains a page of VirtualMachineScaleSetExtension values.
+type VirtualMachineScaleSetExtensionListResultPage struct {
+ fn func(VirtualMachineScaleSetExtensionListResult) (VirtualMachineScaleSetExtensionListResult, error)
+ vmsselr VirtualMachineScaleSetExtensionListResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *VirtualMachineScaleSetExtensionListResultPage) Next() error {
+ next, err := page.fn(page.vmsselr)
+ if err != nil {
+ return err
+ }
+ page.vmsselr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page VirtualMachineScaleSetExtensionListResultPage) NotDone() bool {
+ return !page.vmsselr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page VirtualMachineScaleSetExtensionListResultPage) Response() VirtualMachineScaleSetExtensionListResult {
+ return page.vmsselr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page VirtualMachineScaleSetExtensionListResultPage) Values() []VirtualMachineScaleSetExtension {
+ if page.vmsselr.IsEmpty() {
+ return nil
+ }
+ return *page.vmsselr.Value
+}
+
+// VirtualMachineScaleSetExtensionProfile describes a virtual machine scale set extension profile.
+type VirtualMachineScaleSetExtensionProfile struct {
+ // Extensions - The virtual machine scale set child extension resources.
+ Extensions *[]VirtualMachineScaleSetExtension `json:"extensions,omitempty"`
+}
+
+// VirtualMachineScaleSetExtensionProperties describes the properties of a Virtual Machine Scale Set Extension.
+type VirtualMachineScaleSetExtensionProperties struct {
+ // ForceUpdateTag - If a value is provided and is different from the previous value, the extension handler will be forced to update even if the extension configuration has not changed.
+ ForceUpdateTag *string `json:"forceUpdateTag,omitempty"`
+ // Publisher - The name of the extension handler publisher.
+ Publisher *string `json:"publisher,omitempty"`
+ // Type - Specifies the type of the extension; an example is "CustomScriptExtension".
+ Type *string `json:"type,omitempty"`
+ // TypeHandlerVersion - Specifies the version of the script handler.
+ TypeHandlerVersion *string `json:"typeHandlerVersion,omitempty"`
+ // AutoUpgradeMinorVersion - Indicates whether the extension should use a newer minor version if one is available at deployment time. Once deployed, however, the extension will not upgrade minor versions unless redeployed, even with this property set to true.
+ AutoUpgradeMinorVersion *bool `json:"autoUpgradeMinorVersion,omitempty"`
+ // Settings - Json formatted public settings for the extension.
+ Settings *map[string]interface{} `json:"settings,omitempty"`
+ // ProtectedSettings - The extension can contain either protectedSettings or protectedSettingsFromKeyVault or no protected settings at all.
+ ProtectedSettings *map[string]interface{} `json:"protectedSettings,omitempty"`
+ // ProvisioningState - The provisioning state, which only appears in the response.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+}
+
+// VirtualMachineScaleSetExtensionsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachineScaleSetExtensionsCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetExtensionsCreateOrUpdateFuture) Result(client VirtualMachineScaleSetExtensionsClient) (vmsse VirtualMachineScaleSetExtension, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return vmsse, autorest.NewError("compute.VirtualMachineScaleSetExtensionsCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ vmsse, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ vmsse, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetExtensionsDeleteFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachineScaleSetExtensionsDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetExtensionsDeleteFuture) Result(client VirtualMachineScaleSetExtensionsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetExtensionsDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetIdentity identity for the virtual machine scale set.
+type VirtualMachineScaleSetIdentity struct {
+ // PrincipalID - The principal id of virtual machine scale set identity. This property will only be provided for a system assigned identity.
+ PrincipalID *string `json:"principalId,omitempty"`
+ // TenantID - The tenant id associated with the virtual machine scale set. This property will only be provided for a system assigned identity.
+ TenantID *string `json:"tenantId,omitempty"`
+ // Type - The type of identity used for the virtual machine scale set. The type 'SystemAssigned, UserAssigned' includes both an implicitly created identity and a set of user assigned identities. The type 'None' will remove any identities from the virtual machine scale set. Possible values include: 'ResourceIdentityTypeSystemAssigned', 'ResourceIdentityTypeUserAssigned', 'ResourceIdentityTypeSystemAssignedUserAssigned', 'ResourceIdentityTypeNone'
+ Type ResourceIdentityType `json:"type,omitempty"`
+ // IdentityIds - The list of user identities associated with the virtual machine scale set. The user identity references will be ARM resource ids in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/identities/{identityName}'.
+ IdentityIds *[]string `json:"identityIds,omitempty"`
+}
+
+// VirtualMachineScaleSetInstanceView the instance view of a virtual machine scale set.
+type VirtualMachineScaleSetInstanceView struct {
+ autorest.Response `json:"-"`
+ // VirtualMachine - The instance view status summary for the virtual machine scale set.
+ VirtualMachine *VirtualMachineScaleSetInstanceViewStatusesSummary `json:"virtualMachine,omitempty"`
+ // Extensions - The extensions information.
+ Extensions *[]VirtualMachineScaleSetVMExtensionsSummary `json:"extensions,omitempty"`
+ // Statuses - The resource status information.
+ Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
+}
+
+// VirtualMachineScaleSetInstanceViewStatusesSummary instance view statuses summary for virtual machines of a virtual
+// machine scale set.
+type VirtualMachineScaleSetInstanceViewStatusesSummary struct {
+ // StatusesSummary - The extensions information.
+ StatusesSummary *[]VirtualMachineStatusCodeCount `json:"statusesSummary,omitempty"`
+}
+
+// VirtualMachineScaleSetIPConfiguration describes a virtual machine scale set network profile's IP configuration.
+type VirtualMachineScaleSetIPConfiguration struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - The IP configuration name.
+ Name *string `json:"name,omitempty"`
+ *VirtualMachineScaleSetIPConfigurationProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineScaleSetIPConfigurationProperties describes a virtual machine scale set network profile's IP
+// configuration properties.
+type VirtualMachineScaleSetIPConfigurationProperties struct {
+ // Subnet - Specifies the identifier of the subnet.
+ Subnet *APIEntityReference `json:"subnet,omitempty"`
+ // Primary - Specifies the primary network interface in case the virtual machine has more than 1 network interface.
+ Primary *bool `json:"primary,omitempty"`
+ // PublicIPAddressConfiguration - The publicIPAddressConfiguration.
+ PublicIPAddressConfiguration *VirtualMachineScaleSetPublicIPAddressConfiguration `json:"publicIPAddressConfiguration,omitempty"`
+ // PrivateIPAddressVersion - Available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values are: 'IPv4' and 'IPv6'. Possible values include: 'IPv4', 'IPv6'
+ PrivateIPAddressVersion IPVersion `json:"privateIPAddressVersion,omitempty"`
+ // ApplicationGatewayBackendAddressPools - Specifies an array of references to backend address pools of application gateways. A scale set can reference backend address pools of multiple application gateways. Multiple scale sets cannot use the same application gateway.
+ ApplicationGatewayBackendAddressPools *[]SubResource `json:"applicationGatewayBackendAddressPools,omitempty"`
+ // LoadBalancerBackendAddressPools - Specifies an array of references to backend address pools of load balancers. A scale set can reference backend address pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer.
+ LoadBalancerBackendAddressPools *[]SubResource `json:"loadBalancerBackendAddressPools,omitempty"`
+ // LoadBalancerInboundNatPools - Specifies an array of references to inbound Nat pools of the load balancers. A scale set can reference inbound nat pools of one public and one internal load balancer. Multiple scale sets cannot use the same load balancer
+ LoadBalancerInboundNatPools *[]SubResource `json:"loadBalancerInboundNatPools,omitempty"`
+}
+
+// VirtualMachineScaleSetListResult the List Virtual Machine operation response.
+type VirtualMachineScaleSetListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of virtual machine scale sets.
+ Value *[]VirtualMachineScaleSet `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of Virtual Machine Scale Sets. Call ListNext() with this to fetch the next page of VMSS.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// VirtualMachineScaleSetListResultIterator provides access to a complete listing of VirtualMachineScaleSet values.
+type VirtualMachineScaleSetListResultIterator struct {
+ i int
+ page VirtualMachineScaleSetListResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *VirtualMachineScaleSetListResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter VirtualMachineScaleSetListResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter VirtualMachineScaleSetListResultIterator) Response() VirtualMachineScaleSetListResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter VirtualMachineScaleSetListResultIterator) Value() VirtualMachineScaleSet {
+ if !iter.page.NotDone() {
+ return VirtualMachineScaleSet{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (vmsslr VirtualMachineScaleSetListResult) IsEmpty() bool {
+ return vmsslr.Value == nil || len(*vmsslr.Value) == 0
+}
+
+// virtualMachineScaleSetListResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (vmsslr VirtualMachineScaleSetListResult) virtualMachineScaleSetListResultPreparer() (*http.Request, error) {
+ if vmsslr.NextLink == nil || len(to.String(vmsslr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(vmsslr.NextLink)))
+}
+
+// VirtualMachineScaleSetListResultPage contains a page of VirtualMachineScaleSet values.
+type VirtualMachineScaleSetListResultPage struct {
+ fn func(VirtualMachineScaleSetListResult) (VirtualMachineScaleSetListResult, error)
+ vmsslr VirtualMachineScaleSetListResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *VirtualMachineScaleSetListResultPage) Next() error {
+ next, err := page.fn(page.vmsslr)
+ if err != nil {
+ return err
+ }
+ page.vmsslr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page VirtualMachineScaleSetListResultPage) NotDone() bool {
+ return !page.vmsslr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page VirtualMachineScaleSetListResultPage) Response() VirtualMachineScaleSetListResult {
+ return page.vmsslr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page VirtualMachineScaleSetListResultPage) Values() []VirtualMachineScaleSet {
+ if page.vmsslr.IsEmpty() {
+ return nil
+ }
+ return *page.vmsslr.Value
+}
+
+// VirtualMachineScaleSetListSkusResult the Virtual Machine Scale Set List Skus operation response.
+type VirtualMachineScaleSetListSkusResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of skus available for the virtual machine scale set.
+ Value *[]VirtualMachineScaleSetSku `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of Virtual Machine Scale Set Skus. Call ListNext() with this to fetch the next page of VMSS Skus.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// VirtualMachineScaleSetListSkusResultIterator provides access to a complete listing of VirtualMachineScaleSetSku
+// values.
+type VirtualMachineScaleSetListSkusResultIterator struct {
+ i int
+ page VirtualMachineScaleSetListSkusResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *VirtualMachineScaleSetListSkusResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter VirtualMachineScaleSetListSkusResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter VirtualMachineScaleSetListSkusResultIterator) Response() VirtualMachineScaleSetListSkusResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter VirtualMachineScaleSetListSkusResultIterator) Value() VirtualMachineScaleSetSku {
+ if !iter.page.NotDone() {
+ return VirtualMachineScaleSetSku{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (vmsslsr VirtualMachineScaleSetListSkusResult) IsEmpty() bool {
+ return vmsslsr.Value == nil || len(*vmsslsr.Value) == 0
+}
+
+// virtualMachineScaleSetListSkusResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (vmsslsr VirtualMachineScaleSetListSkusResult) virtualMachineScaleSetListSkusResultPreparer() (*http.Request, error) {
+ if vmsslsr.NextLink == nil || len(to.String(vmsslsr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(vmsslsr.NextLink)))
+}
+
+// VirtualMachineScaleSetListSkusResultPage contains a page of VirtualMachineScaleSetSku values.
+type VirtualMachineScaleSetListSkusResultPage struct {
+ fn func(VirtualMachineScaleSetListSkusResult) (VirtualMachineScaleSetListSkusResult, error)
+ vmsslsr VirtualMachineScaleSetListSkusResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *VirtualMachineScaleSetListSkusResultPage) Next() error {
+ next, err := page.fn(page.vmsslsr)
+ if err != nil {
+ return err
+ }
+ page.vmsslsr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page VirtualMachineScaleSetListSkusResultPage) NotDone() bool {
+ return !page.vmsslsr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page VirtualMachineScaleSetListSkusResultPage) Response() VirtualMachineScaleSetListSkusResult {
+ return page.vmsslsr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page VirtualMachineScaleSetListSkusResultPage) Values() []VirtualMachineScaleSetSku {
+ if page.vmsslsr.IsEmpty() {
+ return nil
+ }
+ return *page.vmsslsr.Value
+}
+
+// VirtualMachineScaleSetListWithLinkResult the List Virtual Machine operation response.
+type VirtualMachineScaleSetListWithLinkResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of virtual machine scale sets.
+ Value *[]VirtualMachineScaleSet `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of Virtual Machine Scale Sets. Call ListNext() with this to fetch the next page of Virtual Machine Scale Sets.
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// VirtualMachineScaleSetListWithLinkResultIterator provides access to a complete listing of VirtualMachineScaleSet
+// values.
+type VirtualMachineScaleSetListWithLinkResultIterator struct {
+ i int
+ page VirtualMachineScaleSetListWithLinkResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *VirtualMachineScaleSetListWithLinkResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter VirtualMachineScaleSetListWithLinkResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter VirtualMachineScaleSetListWithLinkResultIterator) Response() VirtualMachineScaleSetListWithLinkResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter VirtualMachineScaleSetListWithLinkResultIterator) Value() VirtualMachineScaleSet {
+ if !iter.page.NotDone() {
+ return VirtualMachineScaleSet{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (vmsslwlr VirtualMachineScaleSetListWithLinkResult) IsEmpty() bool {
+ return vmsslwlr.Value == nil || len(*vmsslwlr.Value) == 0
+}
+
+// virtualMachineScaleSetListWithLinkResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (vmsslwlr VirtualMachineScaleSetListWithLinkResult) virtualMachineScaleSetListWithLinkResultPreparer() (*http.Request, error) {
+ if vmsslwlr.NextLink == nil || len(to.String(vmsslwlr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(vmsslwlr.NextLink)))
+}
+
+// VirtualMachineScaleSetListWithLinkResultPage contains a page of VirtualMachineScaleSet values.
+type VirtualMachineScaleSetListWithLinkResultPage struct {
+ fn func(VirtualMachineScaleSetListWithLinkResult) (VirtualMachineScaleSetListWithLinkResult, error)
+ vmsslwlr VirtualMachineScaleSetListWithLinkResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *VirtualMachineScaleSetListWithLinkResultPage) Next() error {
+ next, err := page.fn(page.vmsslwlr)
+ if err != nil {
+ return err
+ }
+ page.vmsslwlr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page VirtualMachineScaleSetListWithLinkResultPage) NotDone() bool {
+ return !page.vmsslwlr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page VirtualMachineScaleSetListWithLinkResultPage) Response() VirtualMachineScaleSetListWithLinkResult {
+ return page.vmsslwlr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page VirtualMachineScaleSetListWithLinkResultPage) Values() []VirtualMachineScaleSet {
+ if page.vmsslwlr.IsEmpty() {
+ return nil
+ }
+ return *page.vmsslwlr.Value
+}
+
+// VirtualMachineScaleSetManagedDiskParameters describes the parameters of a ScaleSet managed disk.
+type VirtualMachineScaleSetManagedDiskParameters struct {
+ // StorageAccountType - Specifies the storage account type for the managed disk. Possible values are: Standard_LRS or Premium_LRS. Possible values include: 'StandardLRS', 'PremiumLRS'
+ StorageAccountType StorageAccountTypes `json:"storageAccountType,omitempty"`
+}
+
+// VirtualMachineScaleSetNetworkConfiguration describes a virtual machine scale set network profile's network
+// configurations.
+type VirtualMachineScaleSetNetworkConfiguration struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - The network configuration name.
+ Name *string `json:"name,omitempty"`
+ *VirtualMachineScaleSetNetworkConfigurationProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineScaleSetNetworkConfigurationDNSSettings describes a virtual machines scale sets network
+// configuration's DNS settings.
+type VirtualMachineScaleSetNetworkConfigurationDNSSettings struct {
+ // DNSServers - List of DNS servers IP addresses
+ DNSServers *[]string `json:"dnsServers,omitempty"`
+}
+
+// VirtualMachineScaleSetNetworkConfigurationProperties describes a virtual machine scale set network profile's IP
+// configuration.
+type VirtualMachineScaleSetNetworkConfigurationProperties struct {
+ // Primary - Specifies the primary network interface in case the virtual machine has more than 1 network interface.
+ Primary *bool `json:"primary,omitempty"`
+ // EnableAcceleratedNetworking - Specifies whether the network interface is accelerated networking-enabled.
+ EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`
+ // NetworkSecurityGroup - The network security group.
+ NetworkSecurityGroup *SubResource `json:"networkSecurityGroup,omitempty"`
+ // DNSSettings - The dns settings to be applied on the network interfaces.
+ DNSSettings *VirtualMachineScaleSetNetworkConfigurationDNSSettings `json:"dnsSettings,omitempty"`
+ // IPConfigurations - Specifies the IP configurations of the network interface.
+ IPConfigurations *[]VirtualMachineScaleSetIPConfiguration `json:"ipConfigurations,omitempty"`
+ // EnableIPForwarding - Whether IP forwarding enabled on this NIC.
+ EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"`
+}
+
+// VirtualMachineScaleSetNetworkProfile describes a virtual machine scale set network profile.
+type VirtualMachineScaleSetNetworkProfile struct {
+ // HealthProbe - A reference to a load balancer probe used to determine the health of an instance in the virtual machine scale set. The reference will be in the form: '/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Network/loadBalancers/{loadBalancerName}/probes/{probeName}'.
+ HealthProbe *APIEntityReference `json:"healthProbe,omitempty"`
+ // NetworkInterfaceConfigurations - The list of network configurations.
+ NetworkInterfaceConfigurations *[]VirtualMachineScaleSetNetworkConfiguration `json:"networkInterfaceConfigurations,omitempty"`
+}
+
+// VirtualMachineScaleSetOSDisk describes a virtual machine scale set operating system disk.
+type VirtualMachineScaleSetOSDisk struct {
+ // Name - The disk name.
+ Name *string `json:"name,omitempty"`
+ // Caching - Specifies the caching requirements. Possible values are: **None** **ReadOnly** **ReadWrite** Default: **None for Standard storage. ReadOnly for Premium storage**. Possible values include: 'CachingTypesNone', 'CachingTypesReadOnly', 'CachingTypesReadWrite'
+ Caching CachingTypes `json:"caching,omitempty"`
+ // WriteAcceleratorEnabled - Specifies whether writeAccelerator should be enabled or disabled on the disk.
+ WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
+ // CreateOption - Specifies how the virtual machines in the scale set should be created. The only allowed value is: **FromImage** \u2013 This value is used when you are using an image to create the virtual machine. If you are using a platform image, you also use the imageReference element described above. If you are using a marketplace image, you also use the plan element previously described. Possible values include: 'DiskCreateOptionTypesFromImage', 'DiskCreateOptionTypesEmpty', 'DiskCreateOptionTypesAttach'
+ CreateOption DiskCreateOptionTypes `json:"createOption,omitempty"`
+ // OsType - This property allows you to specify the type of the OS that is included in the disk if creating a VM from user-image or a specialized VHD. Possible values are: **Windows** **Linux**. Possible values include: 'Windows', 'Linux'
+ OsType OperatingSystemTypes `json:"osType,omitempty"`
+ // Image - Specifies information about the unmanaged user image to base the scale set on.
+ Image *VirtualHardDisk `json:"image,omitempty"`
+ // VhdContainers - Specifies the container urls that are used to store operating system disks for the scale set.
+ VhdContainers *[]string `json:"vhdContainers,omitempty"`
+ // ManagedDisk - The managed disk parameters.
+ ManagedDisk *VirtualMachineScaleSetManagedDiskParameters `json:"managedDisk,omitempty"`
+}
+
+// VirtualMachineScaleSetOSProfile describes a virtual machine scale set OS profile.
+type VirtualMachineScaleSetOSProfile struct {
+ // ComputerNamePrefix - Specifies the computer name prefix for all of the virtual machines in the scale set. Computer name prefixes must be 1 to 15 characters long.
+ ComputerNamePrefix *string `json:"computerNamePrefix,omitempty"`
+ // AdminUsername - Specifies the name of the administrator account. **Windows-only restriction:** Cannot end in "." **Disallowed values:** "administrator", "admin", "user", "user1", "test", "user2", "test1", "user3", "admin1", "1", "123", "a", "actuser", "adm", "admin2", "aspnet", "backup", "console", "david", "guest", "john", "owner", "root", "server", "sql", "support", "support_388945a0", "sys", "test2", "test3", "user4", "user5". **Minimum-length (Linux):** 1 character **Max-length (Linux):** 64 characters **Max-length (Windows):** 20 characters For root access to the Linux VM, see [Using root privileges on Linux virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-use-root-privileges?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) For a list of built-in system users on Linux that should not be used in this field, see [Selecting User Names for Linux on Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-usernames?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)
+ AdminUsername *string `json:"adminUsername,omitempty"`
+ // AdminPassword - Specifies the password of the administrator account. **Minimum-length (Windows):** 8 characters **Minimum-length (Linux):** 6 characters **Max-length (Windows):** 123 characters **Max-length (Linux):** 72 characters **Complexity requirements:** 3 out of 4 conditions below need to be fulfilled Has lower characters Has upper characters Has a digit Has a special character (Regex match [\W_]) **Disallowed values:** "abc@123", "P@$$w0rd", "P@ssw0rd", "P@ssword123", "Pa$$word", "pass@word1", "Password!", "Password1", "Password22", "iloveyou!" For resetting the password, see [How to reset the Remote Desktop service or its login password in a Windows VM](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-reset-rdp?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) For resetting root password, see [Manage users, SSH, and check or repair disks on Azure Linux VMs using the VMAccess Extension](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-vmaccess-extension?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json#reset-root-password)
+ AdminPassword *string `json:"adminPassword,omitempty"`
+ // CustomData - Specifies a base-64 encoded string of custom data. The base-64 encoded string is decoded to a binary array that is saved as a file on the Virtual Machine. The maximum length of the binary array is 65535 bytes. For using cloud-init for your VM, see [Using cloud-init to customize a Linux VM during creation](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-using-cloud-init?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json)
+ CustomData *string `json:"customData,omitempty"`
+ // WindowsConfiguration - Specifies Windows operating system settings on the virtual machine.
+ WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"`
+ // LinuxConfiguration - Specifies the Linux operating system settings on the virtual machine. For a list of supported Linux distributions, see [Linux on Azure-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-endorsed-distros?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json) For running non-endorsed distributions, see [Information for Non-Endorsed Distributions](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-linux-create-upload-generic?toc=%2fazure%2fvirtual-machines%2flinux%2ftoc.json).
+ LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"`
+ // Secrets - Specifies set of certificates that should be installed onto the virtual machines in the scale set.
+ Secrets *[]VaultSecretGroup `json:"secrets,omitempty"`
+}
+
+// VirtualMachineScaleSetProperties describes the properties of a Virtual Machine Scale Set.
+type VirtualMachineScaleSetProperties struct {
+ // UpgradePolicy - The upgrade policy.
+ UpgradePolicy *UpgradePolicy `json:"upgradePolicy,omitempty"`
+ // VirtualMachineProfile - The virtual machine profile.
+ VirtualMachineProfile *VirtualMachineScaleSetVMProfile `json:"virtualMachineProfile,omitempty"`
+ // ProvisioningState - The provisioning state, which only appears in the response.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+ // Overprovision - Specifies whether the Virtual Machine Scale Set should be overprovisioned.
+ Overprovision *bool `json:"overprovision,omitempty"`
+ // UniqueID - Specifies the ID which uniquely identifies a Virtual Machine Scale Set.
+ UniqueID *string `json:"uniqueId,omitempty"`
+ // SinglePlacementGroup - When true this limits the scale set to a single placement group, of max size 100 virtual machines.
+ SinglePlacementGroup *bool `json:"singlePlacementGroup,omitempty"`
+}
+
+// VirtualMachineScaleSetPublicIPAddressConfiguration describes a virtual machines scale set IP Configuration's
+// PublicIPAddress configuration
+type VirtualMachineScaleSetPublicIPAddressConfiguration struct {
+ // Name - The publicIP address configuration name.
+ Name *string `json:"name,omitempty"`
+ *VirtualMachineScaleSetPublicIPAddressConfigurationProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineScaleSetPublicIPAddressConfigurationDNSSettings describes a virtual machines scale sets network
+// configuration's DNS settings.
+type VirtualMachineScaleSetPublicIPAddressConfigurationDNSSettings struct {
+ // DomainNameLabel - The Domain name label.The concatenation of the domain name label and vm index will be the domain name labels of the PublicIPAddress resources that will be created
+ DomainNameLabel *string `json:"domainNameLabel,omitempty"`
+}
+
+// VirtualMachineScaleSetPublicIPAddressConfigurationProperties describes a virtual machines scale set IP
+// Configuration's PublicIPAddress configuration
+type VirtualMachineScaleSetPublicIPAddressConfigurationProperties struct {
+ // IdleTimeoutInMinutes - The idle timeout of the public IP address.
+ IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
+ // DNSSettings - The dns settings to be applied on the publicIP addresses .
+ DNSSettings *VirtualMachineScaleSetPublicIPAddressConfigurationDNSSettings `json:"dnsSettings,omitempty"`
+}
+
+// VirtualMachineScaleSetRollingUpgradesCancelFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachineScaleSetRollingUpgradesCancelFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetRollingUpgradesCancelFuture) Result(client VirtualMachineScaleSetRollingUpgradesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetRollingUpgradesCancelFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.CancelResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.CancelResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetRollingUpgradesStartOSUpgradeFuture an abstraction for monitoring and retrieving the results
+// of a long-running operation.
+type VirtualMachineScaleSetRollingUpgradesStartOSUpgradeFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetRollingUpgradesStartOSUpgradeFuture) Result(client VirtualMachineScaleSetRollingUpgradesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetRollingUpgradesStartOSUpgradeFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.StartOSUpgradeResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.StartOSUpgradeResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachineScaleSetsCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsCreateOrUpdateFuture) Result(client VirtualMachineScaleSetsClient) (vmss VirtualMachineScaleSet, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return vmss, autorest.NewError("compute.VirtualMachineScaleSetsCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ vmss, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ vmss, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsDeallocateFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsDeallocateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsDeallocateFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsDeallocateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeallocateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeallocateResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsDeleteFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsDeleteInstancesFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachineScaleSetsDeleteInstancesFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsDeleteInstancesFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsDeleteInstancesFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteInstancesResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteInstancesResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetSku describes an available virtual machine scale set sku.
+type VirtualMachineScaleSetSku struct {
+ // ResourceType - The type of resource the sku applies to.
+ ResourceType *string `json:"resourceType,omitempty"`
+ // Sku - The Sku.
+ Sku *Sku `json:"sku,omitempty"`
+ // Capacity - Specifies the number of virtual machines in the scale set.
+ Capacity *VirtualMachineScaleSetSkuCapacity `json:"capacity,omitempty"`
+}
+
+// VirtualMachineScaleSetSkuCapacity describes scaling information of a sku.
+type VirtualMachineScaleSetSkuCapacity struct {
+ // Minimum - The minimum capacity.
+ Minimum *int64 `json:"minimum,omitempty"`
+ // Maximum - The maximum capacity that can be set.
+ Maximum *int64 `json:"maximum,omitempty"`
+ // DefaultCapacity - The default capacity.
+ DefaultCapacity *int64 `json:"defaultCapacity,omitempty"`
+ // ScaleType - The scale type applicable to the sku. Possible values include: 'VirtualMachineScaleSetSkuScaleTypeAutomatic', 'VirtualMachineScaleSetSkuScaleTypeNone'
+ ScaleType VirtualMachineScaleSetSkuScaleType `json:"scaleType,omitempty"`
+}
+
+// VirtualMachineScaleSetsPowerOffFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsPowerOffFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsPowerOffFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsPowerOffFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.PowerOffResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.PowerOffResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsReimageAllFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsReimageAllFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsReimageAllFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsReimageAllFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.ReimageAllResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.ReimageAllResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsReimageFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsReimageFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsReimageFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsReimageFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.ReimageResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.ReimageResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsRestartFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsRestartFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsRestartFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsRestartFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.RestartResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.RestartResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsStartFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsStartFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsStartFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsStartFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.StartResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.StartResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetStorageProfile describes a virtual machine scale set storage profile.
+type VirtualMachineScaleSetStorageProfile struct {
+ // ImageReference - Specifies information about the image to use. You can specify information about platform images, marketplace images, or virtual machine images. This element is required when you want to use a platform image, marketplace image, or virtual machine image, but is not used in other creation operations.
+ ImageReference *ImageReference `json:"imageReference,omitempty"`
+ // OsDisk - Specifies information about the operating system disk used by the virtual machines in the scale set. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+ OsDisk *VirtualMachineScaleSetOSDisk `json:"osDisk,omitempty"`
+ // DataDisks - Specifies the parameters that are used to add data disks to the virtual machines in the scale set. For more information about disks, see [About disks and VHDs for Azure virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-about-disks-vhds?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json).
+ DataDisks *[]VirtualMachineScaleSetDataDisk `json:"dataDisks,omitempty"`
+}
+
+// VirtualMachineScaleSetsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetsUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsUpdateFuture) Result(client VirtualMachineScaleSetsClient) (vmss VirtualMachineScaleSet, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return vmss, autorest.NewError("compute.VirtualMachineScaleSetsUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ vmss, err = client.UpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ vmss, err = client.UpdateResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetsUpdateInstancesFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachineScaleSetsUpdateInstancesFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetsUpdateInstancesFuture) Result(client VirtualMachineScaleSetsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetsUpdateInstancesFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.UpdateInstancesResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.UpdateInstancesResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetUpdate describes a Virtual Machine Scale Set.
+type VirtualMachineScaleSetUpdate struct {
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ // Sku - The virtual machine scale set sku.
+ Sku *Sku `json:"sku,omitempty"`
+ // Plan - The purchase plan when deploying a virtual machine scale set from VM Marketplace images.
+ Plan *Plan `json:"plan,omitempty"`
+ *VirtualMachineScaleSetUpdateProperties `json:"properties,omitempty"`
+ // Identity - The identity of the virtual machine scale set, if configured.
+ Identity *VirtualMachineScaleSetIdentity `json:"identity,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateIPConfiguration describes a virtual machine scale set network profile's IP
+// configuration.
+type VirtualMachineScaleSetUpdateIPConfiguration struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - The IP configuration name.
+ Name *string `json:"name,omitempty"`
+ *VirtualMachineScaleSetUpdateIPConfigurationProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateIPConfigurationProperties describes a virtual machine scale set network profile's IP
+// configuration properties.
+type VirtualMachineScaleSetUpdateIPConfigurationProperties struct {
+ // Subnet - The subnet.
+ Subnet *APIEntityReference `json:"subnet,omitempty"`
+ // Primary - Specifies the primary IP Configuration in case the network interface has more than one IP Configuration.
+ Primary *bool `json:"primary,omitempty"`
+ // PublicIPAddressConfiguration - The publicIPAddressConfiguration.
+ PublicIPAddressConfiguration *VirtualMachineScaleSetUpdatePublicIPAddressConfiguration `json:"publicIPAddressConfiguration,omitempty"`
+ // PrivateIPAddressVersion - Available from Api-Version 2017-03-30 onwards, it represents whether the specific ipconfiguration is IPv4 or IPv6. Default is taken as IPv4. Possible values are: 'IPv4' and 'IPv6'. Possible values include: 'IPv4', 'IPv6'
+ PrivateIPAddressVersion IPVersion `json:"privateIPAddressVersion,omitempty"`
+ // ApplicationGatewayBackendAddressPools - The application gateway backend address pools.
+ ApplicationGatewayBackendAddressPools *[]SubResource `json:"applicationGatewayBackendAddressPools,omitempty"`
+ // LoadBalancerBackendAddressPools - The load balancer backend address pools.
+ LoadBalancerBackendAddressPools *[]SubResource `json:"loadBalancerBackendAddressPools,omitempty"`
+ // LoadBalancerInboundNatPools - The load balancer inbound nat pools.
+ LoadBalancerInboundNatPools *[]SubResource `json:"loadBalancerInboundNatPools,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateNetworkConfiguration describes a virtual machine scale set network profile's network
+// configurations.
+type VirtualMachineScaleSetUpdateNetworkConfiguration struct {
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - The network configuration name.
+ Name *string `json:"name,omitempty"`
+ *VirtualMachineScaleSetUpdateNetworkConfigurationProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateNetworkConfigurationProperties describes a virtual machine scale set updatable network
+// profile's IP configuration.Use this object for updating network profile's IP Configuration.
+type VirtualMachineScaleSetUpdateNetworkConfigurationProperties struct {
+ // Primary - Whether this is a primary NIC on a virtual machine.
+ Primary *bool `json:"primary,omitempty"`
+ // EnableAcceleratedNetworking - Specifies whether the network interface is accelerated networking-enabled.
+ EnableAcceleratedNetworking *bool `json:"enableAcceleratedNetworking,omitempty"`
+ // NetworkSecurityGroup - The network security group.
+ NetworkSecurityGroup *SubResource `json:"networkSecurityGroup,omitempty"`
+ // DNSSettings - The dns settings to be applied on the network interfaces.
+ DNSSettings *VirtualMachineScaleSetNetworkConfigurationDNSSettings `json:"dnsSettings,omitempty"`
+ // IPConfigurations - The virtual machine scale set IP Configuration.
+ IPConfigurations *[]VirtualMachineScaleSetUpdateIPConfiguration `json:"ipConfigurations,omitempty"`
+ // EnableIPForwarding - Whether IP forwarding enabled on this NIC.
+ EnableIPForwarding *bool `json:"enableIPForwarding,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateNetworkProfile describes a virtual machine scale set network profile.
+type VirtualMachineScaleSetUpdateNetworkProfile struct {
+ // NetworkInterfaceConfigurations - The list of network configurations.
+ NetworkInterfaceConfigurations *[]VirtualMachineScaleSetUpdateNetworkConfiguration `json:"networkInterfaceConfigurations,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateOSDisk describes virtual machine scale set operating system disk Update Object. This
+// should be used for Updating VMSS OS Disk.
+type VirtualMachineScaleSetUpdateOSDisk struct {
+ // Caching - The caching type. Possible values include: 'CachingTypesNone', 'CachingTypesReadOnly', 'CachingTypesReadWrite'
+ Caching CachingTypes `json:"caching,omitempty"`
+ // WriteAcceleratorEnabled - Specifies whether writeAccelerator should be enabled or disabled on the disk.
+ WriteAcceleratorEnabled *bool `json:"writeAcceleratorEnabled,omitempty"`
+ // Image - The Source User Image VirtualHardDisk. This VirtualHardDisk will be copied before using it to attach to the Virtual Machine. If SourceImage is provided, the destination VirtualHardDisk should not exist.
+ Image *VirtualHardDisk `json:"image,omitempty"`
+ // VhdContainers - The list of virtual hard disk container uris.
+ VhdContainers *[]string `json:"vhdContainers,omitempty"`
+ // ManagedDisk - The managed disk parameters.
+ ManagedDisk *VirtualMachineScaleSetManagedDiskParameters `json:"managedDisk,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateOSProfile describes a virtual machine scale set OS profile.
+type VirtualMachineScaleSetUpdateOSProfile struct {
+ // CustomData - A base-64 encoded string of custom data.
+ CustomData *string `json:"customData,omitempty"`
+ // WindowsConfiguration - The Windows Configuration of the OS profile.
+ WindowsConfiguration *WindowsConfiguration `json:"windowsConfiguration,omitempty"`
+ // LinuxConfiguration - The Linux Configuration of the OS profile.
+ LinuxConfiguration *LinuxConfiguration `json:"linuxConfiguration,omitempty"`
+ // Secrets - The List of certificates for addition to the VM.
+ Secrets *[]VaultSecretGroup `json:"secrets,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateProperties describes the properties of a Virtual Machine Scale Set.
+type VirtualMachineScaleSetUpdateProperties struct {
+ // UpgradePolicy - The upgrade policy.
+ UpgradePolicy *UpgradePolicy `json:"upgradePolicy,omitempty"`
+ // VirtualMachineProfile - The virtual machine profile.
+ VirtualMachineProfile *VirtualMachineScaleSetUpdateVMProfile `json:"virtualMachineProfile,omitempty"`
+ // Overprovision - Specifies whether the Virtual Machine Scale Set should be overprovisioned.
+ Overprovision *bool `json:"overprovision,omitempty"`
+ // SinglePlacementGroup - When true this limits the scale set to a single placement group, of max size 100 virtual machines.
+ SinglePlacementGroup *bool `json:"singlePlacementGroup,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdatePublicIPAddressConfiguration describes a virtual machines scale set IP Configuration's
+// PublicIPAddress configuration
+type VirtualMachineScaleSetUpdatePublicIPAddressConfiguration struct {
+ // Name - The publicIP address configuration name.
+ Name *string `json:"name,omitempty"`
+ *VirtualMachineScaleSetUpdatePublicIPAddressConfigurationProperties `json:"properties,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdatePublicIPAddressConfigurationProperties describes a virtual machines scale set IP
+// Configuration's PublicIPAddress configuration
+type VirtualMachineScaleSetUpdatePublicIPAddressConfigurationProperties struct {
+ // IdleTimeoutInMinutes - The idle timeout of the public IP address.
+ IdleTimeoutInMinutes *int32 `json:"idleTimeoutInMinutes,omitempty"`
+ // DNSSettings - The dns settings to be applied on the publicIP addresses .
+ DNSSettings *VirtualMachineScaleSetPublicIPAddressConfigurationDNSSettings `json:"dnsSettings,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateStorageProfile describes a virtual machine scale set storage profile.
+type VirtualMachineScaleSetUpdateStorageProfile struct {
+ // ImageReference - The image reference.
+ ImageReference *ImageReference `json:"imageReference,omitempty"`
+ // OsDisk - The OS disk.
+ OsDisk *VirtualMachineScaleSetUpdateOSDisk `json:"osDisk,omitempty"`
+ // DataDisks - The data disks.
+ DataDisks *[]VirtualMachineScaleSetDataDisk `json:"dataDisks,omitempty"`
+}
+
+// VirtualMachineScaleSetUpdateVMProfile describes a virtual machine scale set virtual machine profile.
+type VirtualMachineScaleSetUpdateVMProfile struct {
+ // OsProfile - The virtual machine scale set OS profile.
+ OsProfile *VirtualMachineScaleSetUpdateOSProfile `json:"osProfile,omitempty"`
+ // StorageProfile - The virtual machine scale set storage profile.
+ StorageProfile *VirtualMachineScaleSetUpdateStorageProfile `json:"storageProfile,omitempty"`
+ // NetworkProfile - The virtual machine scale set network profile.
+ NetworkProfile *VirtualMachineScaleSetUpdateNetworkProfile `json:"networkProfile,omitempty"`
+ // DiagnosticsProfile - The virtual machine scale set diagnostics profile.
+ DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
+ // ExtensionProfile - The virtual machine scale set extension profile.
+ ExtensionProfile *VirtualMachineScaleSetExtensionProfile `json:"extensionProfile,omitempty"`
+ // LicenseType - The license type, which is for bring your own license scenario.
+ LicenseType *string `json:"licenseType,omitempty"`
+}
+
+// VirtualMachineScaleSetVM describes a virtual machine scale set virtual machine.
+type VirtualMachineScaleSetVM struct {
+ autorest.Response `json:"-"`
+ // ID - Resource Id
+ ID *string `json:"id,omitempty"`
+ // Name - Resource name
+ Name *string `json:"name,omitempty"`
+ // Type - Resource type
+ Type *string `json:"type,omitempty"`
+ // Location - Resource location
+ Location *string `json:"location,omitempty"`
+ // Tags - Resource tags
+ Tags *map[string]*string `json:"tags,omitempty"`
+ // InstanceID - The virtual machine instance ID.
+ InstanceID *string `json:"instanceId,omitempty"`
+ // Sku - The virtual machine SKU.
+ Sku *Sku `json:"sku,omitempty"`
+ *VirtualMachineScaleSetVMProperties `json:"properties,omitempty"`
+ // Plan - Specifies information about the marketplace image used to create the virtual machine. This element is only used for marketplace images. Before you can use a marketplace image from an API, you must enable the image for programmatic use. In the Azure portal, find the marketplace image that you want to use and then click **Want to deploy programmatically, Get Started ->**. Enter any required information and then click **Save**.
+ Plan *Plan `json:"plan,omitempty"`
+ // Resources - The virtual machine child extension resources.
+ Resources *[]VirtualMachineExtension `json:"resources,omitempty"`
+}
+
+// VirtualMachineScaleSetVMExtensionsSummary extensions summary for virtual machines of a virtual machine scale set.
+type VirtualMachineScaleSetVMExtensionsSummary struct {
+ // Name - The extension name.
+ Name *string `json:"name,omitempty"`
+ // StatusesSummary - The extensions information.
+ StatusesSummary *[]VirtualMachineStatusCodeCount `json:"statusesSummary,omitempty"`
+}
+
+// VirtualMachineScaleSetVMInstanceIDs specifies a list of virtual machine instance IDs from the VM scale set.
+type VirtualMachineScaleSetVMInstanceIDs struct {
+ // InstanceIds - The virtual machine scale set instance ids. Omitting the virtual machine scale set instance ids will result in the operation being performed on all virtual machines in the virtual machine scale set.
+ InstanceIds *[]string `json:"instanceIds,omitempty"`
+}
+
+// VirtualMachineScaleSetVMInstanceRequiredIDs specifies a list of virtual machine instance IDs from the VM scale set.
+type VirtualMachineScaleSetVMInstanceRequiredIDs struct {
+ // InstanceIds - The virtual machine scale set instance ids.
+ InstanceIds *[]string `json:"instanceIds,omitempty"`
+}
+
+// VirtualMachineScaleSetVMInstanceView the instance view of a virtual machine scale set VM.
+type VirtualMachineScaleSetVMInstanceView struct {
+ autorest.Response `json:"-"`
+ // PlatformUpdateDomain - The Update Domain count.
+ PlatformUpdateDomain *int32 `json:"platformUpdateDomain,omitempty"`
+ // PlatformFaultDomain - The Fault Domain count.
+ PlatformFaultDomain *int32 `json:"platformFaultDomain,omitempty"`
+ // RdpThumbPrint - The Remote desktop certificate thumbprint.
+ RdpThumbPrint *string `json:"rdpThumbPrint,omitempty"`
+ // VMAgent - The VM Agent running on the virtual machine.
+ VMAgent *VirtualMachineAgentInstanceView `json:"vmAgent,omitempty"`
+ // Disks - The disks information.
+ Disks *[]DiskInstanceView `json:"disks,omitempty"`
+ // Extensions - The extensions information.
+ Extensions *[]VirtualMachineExtensionInstanceView `json:"extensions,omitempty"`
+ // VMHealth - The health status for the VM.
+ VMHealth *VirtualMachineHealthStatus `json:"vmHealth,omitempty"`
+ // BootDiagnostics - Boot Diagnostics is a debugging feature which allows you to view Console Output and Screenshot to diagnose VM status. For Linux Virtual Machines, you can easily view the output of your console log. For both Windows and Linux virtual machines, Azure also enables you to see a screenshot of the VM from the hypervisor.
+ BootDiagnostics *BootDiagnosticsInstanceView `json:"bootDiagnostics,omitempty"`
+ // Statuses - The resource status information.
+ Statuses *[]InstanceViewStatus `json:"statuses,omitempty"`
+ // PlacementGroupID - The placement group in which the VM is running. If the VM is deallocated it will not have a placementGroupId.
+ PlacementGroupID *string `json:"placementGroupId,omitempty"`
+}
+
+// VirtualMachineScaleSetVMListResult the List Virtual Machine Scale Set VMs operation response.
+type VirtualMachineScaleSetVMListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of virtual machine scale sets VMs.
+ Value *[]VirtualMachineScaleSetVM `json:"value,omitempty"`
+ // NextLink - The uri to fetch the next page of Virtual Machine Scale Set VMs. Call ListNext() with this to fetch the next page of VMSS VMs
+ NextLink *string `json:"nextLink,omitempty"`
+}
+
+// VirtualMachineScaleSetVMListResultIterator provides access to a complete listing of VirtualMachineScaleSetVM values.
+type VirtualMachineScaleSetVMListResultIterator struct {
+ i int
+ page VirtualMachineScaleSetVMListResultPage
+}
+
+// Next advances to the next value. If there was an error making
+// the request the iterator does not advance and the error is returned.
+func (iter *VirtualMachineScaleSetVMListResultIterator) Next() error {
+ iter.i++
+ if iter.i < len(iter.page.Values()) {
+ return nil
+ }
+ err := iter.page.Next()
+ if err != nil {
+ iter.i--
+ return err
+ }
+ iter.i = 0
+ return nil
+}
+
+// NotDone returns true if the enumeration should be started or is not yet complete.
+func (iter VirtualMachineScaleSetVMListResultIterator) NotDone() bool {
+ return iter.page.NotDone() && iter.i < len(iter.page.Values())
+}
+
+// Response returns the raw server response from the last page request.
+func (iter VirtualMachineScaleSetVMListResultIterator) Response() VirtualMachineScaleSetVMListResult {
+ return iter.page.Response()
+}
+
+// Value returns the current value or a zero-initialized value if the
+// iterator has advanced beyond the end of the collection.
+func (iter VirtualMachineScaleSetVMListResultIterator) Value() VirtualMachineScaleSetVM {
+ if !iter.page.NotDone() {
+ return VirtualMachineScaleSetVM{}
+ }
+ return iter.page.Values()[iter.i]
+}
+
+// IsEmpty returns true if the ListResult contains no values.
+func (vmssvlr VirtualMachineScaleSetVMListResult) IsEmpty() bool {
+ return vmssvlr.Value == nil || len(*vmssvlr.Value) == 0
+}
+
+// virtualMachineScaleSetVMListResultPreparer prepares a request to retrieve the next set of results.
+// It returns nil if no more results exist.
+func (vmssvlr VirtualMachineScaleSetVMListResult) virtualMachineScaleSetVMListResultPreparer() (*http.Request, error) {
+ if vmssvlr.NextLink == nil || len(to.String(vmssvlr.NextLink)) < 1 {
+ return nil, nil
+ }
+ return autorest.Prepare(&http.Request{},
+ autorest.AsJSON(),
+ autorest.AsGet(),
+ autorest.WithBaseURL(to.String(vmssvlr.NextLink)))
+}
+
+// VirtualMachineScaleSetVMListResultPage contains a page of VirtualMachineScaleSetVM values.
+type VirtualMachineScaleSetVMListResultPage struct {
+ fn func(VirtualMachineScaleSetVMListResult) (VirtualMachineScaleSetVMListResult, error)
+ vmssvlr VirtualMachineScaleSetVMListResult
+}
+
+// Next advances to the next page of values. If there was an error making
+// the request the page does not advance and the error is returned.
+func (page *VirtualMachineScaleSetVMListResultPage) Next() error {
+ next, err := page.fn(page.vmssvlr)
+ if err != nil {
+ return err
+ }
+ page.vmssvlr = next
+ return nil
+}
+
+// NotDone returns true if the page enumeration should be started or is not yet complete.
+func (page VirtualMachineScaleSetVMListResultPage) NotDone() bool {
+ return !page.vmssvlr.IsEmpty()
+}
+
+// Response returns the raw server response from the last page request.
+func (page VirtualMachineScaleSetVMListResultPage) Response() VirtualMachineScaleSetVMListResult {
+ return page.vmssvlr
+}
+
+// Values returns the slice of values for the current page or nil if there are no values.
+func (page VirtualMachineScaleSetVMListResultPage) Values() []VirtualMachineScaleSetVM {
+ if page.vmssvlr.IsEmpty() {
+ return nil
+ }
+ return *page.vmssvlr.Value
+}
+
+// VirtualMachineScaleSetVMProfile describes a virtual machine scale set virtual machine profile.
+type VirtualMachineScaleSetVMProfile struct {
+ // OsProfile - Specifies the operating system settings for the virtual machines in the scale set.
+ OsProfile *VirtualMachineScaleSetOSProfile `json:"osProfile,omitempty"`
+ // StorageProfile - Specifies the storage settings for the virtual machine disks.
+ StorageProfile *VirtualMachineScaleSetStorageProfile `json:"storageProfile,omitempty"`
+ // NetworkProfile - Specifies properties of the network interfaces of the virtual machines in the scale set.
+ NetworkProfile *VirtualMachineScaleSetNetworkProfile `json:"networkProfile,omitempty"`
+ // DiagnosticsProfile - Specifies the boot diagnostic settings state. Minimum api-version: 2015-06-15.
+ DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
+ // ExtensionProfile - Specifies a collection of settings for extensions installed on virtual machines in the scale set.
+ ExtensionProfile *VirtualMachineScaleSetExtensionProfile `json:"extensionProfile,omitempty"`
+ // LicenseType - Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. Possible values are: Windows_Client Windows_Server If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) Minimum api-version: 2015-06-15
+ LicenseType *string `json:"licenseType,omitempty"`
+ // Priority - Specifies the priority for the virtual machines in the scale set. Minimum api-version: 2017-10-30-preview. Possible values include: 'Regular', 'Low'
+ Priority VirtualMachinePriorityTypes `json:"priority,omitempty"`
+}
+
+// VirtualMachineScaleSetVMProperties describes the properties of a virtual machine scale set virtual machine.
+type VirtualMachineScaleSetVMProperties struct {
+ // LatestModelApplied - Specifies whether the latest model has been applied to the virtual machine.
+ LatestModelApplied *bool `json:"latestModelApplied,omitempty"`
+ // VMID - Azure VM unique ID.
+ VMID *string `json:"vmId,omitempty"`
+ // InstanceView - The virtual machine instance view.
+ InstanceView *VirtualMachineInstanceView `json:"instanceView,omitempty"`
+ // HardwareProfile - Specifies the hardware settings for the virtual machine.
+ HardwareProfile *HardwareProfile `json:"hardwareProfile,omitempty"`
+ // StorageProfile - Specifies the storage settings for the virtual machine disks.
+ StorageProfile *StorageProfile `json:"storageProfile,omitempty"`
+ // OsProfile - Specifies the operating system settings for the virtual machine.
+ OsProfile *OSProfile `json:"osProfile,omitempty"`
+ // NetworkProfile - Specifies the network interfaces of the virtual machine.
+ NetworkProfile *NetworkProfile `json:"networkProfile,omitempty"`
+ // DiagnosticsProfile - Specifies the boot diagnostic settings state. Minimum api-version: 2015-06-15.
+ DiagnosticsProfile *DiagnosticsProfile `json:"diagnosticsProfile,omitempty"`
+ // AvailabilitySet - Specifies information about the availability set that the virtual machine should be assigned to. Virtual machines specified in the same availability set are allocated to different nodes to maximize availability. For more information about availability sets, see [Manage the availability of virtual machines](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-manage-availability?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json). For more information on Azure planned maintainance, see [Planned maintenance for virtual machines in Azure](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-planned-maintenance?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) Currently, a VM can only be added to availability set at creation time. An existing VM cannot be added to an availability set.
+ AvailabilitySet *SubResource `json:"availabilitySet,omitempty"`
+ // ProvisioningState - The provisioning state, which only appears in the response.
+ ProvisioningState *string `json:"provisioningState,omitempty"`
+ // LicenseType - Specifies that the image or disk that is being used was licensed on-premises. This element is only used for images that contain the Windows Server operating system. Possible values are: Windows_Client Windows_Server If this element is included in a request for an update, the value must match the initial value. This value cannot be updated. For more information, see [Azure Hybrid Use Benefit for Windows Server](https://docs.microsoft.com/azure/virtual-machines/virtual-machines-windows-hybrid-use-benefit-licensing?toc=%2fazure%2fvirtual-machines%2fwindows%2ftoc.json) Minimum api-version: 2015-06-15
+ LicenseType *string `json:"licenseType,omitempty"`
+}
+
+// VirtualMachineScaleSetVMsDeallocateFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsDeallocateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsDeallocateFuture) Result(client VirtualMachineScaleSetVMsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetVMsDeallocateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeallocateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeallocateResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetVMsDeleteFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsDeleteFuture) Result(client VirtualMachineScaleSetVMsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetVMsDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetVMsPowerOffFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsPowerOffFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsPowerOffFuture) Result(client VirtualMachineScaleSetVMsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetVMsPowerOffFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.PowerOffResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.PowerOffResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetVMsReimageAllFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsReimageAllFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsReimageAllFuture) Result(client VirtualMachineScaleSetVMsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetVMsReimageAllFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.ReimageAllResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.ReimageAllResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetVMsReimageFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsReimageFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsReimageFuture) Result(client VirtualMachineScaleSetVMsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetVMsReimageFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.ReimageResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.ReimageResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetVMsRestartFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsRestartFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsRestartFuture) Result(client VirtualMachineScaleSetVMsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetVMsRestartFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.RestartResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.RestartResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetVMsStartFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsStartFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsStartFuture) Result(client VirtualMachineScaleSetVMsClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachineScaleSetVMsStartFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.StartResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.StartResponder(resp)
+ return
+}
+
+// VirtualMachineScaleSetVMsUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachineScaleSetVMsUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachineScaleSetVMsUpdateFuture) Result(client VirtualMachineScaleSetVMsClient) (vmssv VirtualMachineScaleSetVM, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return vmssv, autorest.NewError("compute.VirtualMachineScaleSetVMsUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ vmssv, err = client.UpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ vmssv, err = client.UpdateResponder(resp)
+ return
+}
+
+// VirtualMachinesCaptureFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type VirtualMachinesCaptureFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesCaptureFuture) Result(client VirtualMachinesClient) (vmcr VirtualMachineCaptureResult, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return vmcr, autorest.NewError("compute.VirtualMachinesCaptureFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ vmcr, err = client.CaptureResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ vmcr, err = client.CaptureResponder(resp)
+ return
+}
+
+// VirtualMachinesConvertToManagedDisksFuture an abstraction for monitoring and retrieving the results of a
+// long-running operation.
+type VirtualMachinesConvertToManagedDisksFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesConvertToManagedDisksFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesConvertToManagedDisksFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.ConvertToManagedDisksResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.ConvertToManagedDisksResponder(resp)
+ return
+}
+
+// VirtualMachinesCreateOrUpdateFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachinesCreateOrUpdateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesCreateOrUpdateFuture) Result(client VirtualMachinesClient) (VM VirtualMachine, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return VM, autorest.NewError("compute.VirtualMachinesCreateOrUpdateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ VM, err = client.CreateOrUpdateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ VM, err = client.CreateOrUpdateResponder(resp)
+ return
+}
+
+// VirtualMachinesDeallocateFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachinesDeallocateFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesDeallocateFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesDeallocateFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeallocateResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeallocateResponder(resp)
+ return
+}
+
+// VirtualMachinesDeleteFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type VirtualMachinesDeleteFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesDeleteFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesDeleteFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.DeleteResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.DeleteResponder(resp)
+ return
+}
+
+// VirtualMachineSize describes the properties of a VM size.
+type VirtualMachineSize struct {
+ // Name - The name of the virtual machine size.
+ Name *string `json:"name,omitempty"`
+ // NumberOfCores - The number of cores supported by the virtual machine size.
+ NumberOfCores *int32 `json:"numberOfCores,omitempty"`
+ // OsDiskSizeInMB - The OS disk size, in MB, allowed by the virtual machine size.
+ OsDiskSizeInMB *int32 `json:"osDiskSizeInMB,omitempty"`
+ // ResourceDiskSizeInMB - The resource disk size, in MB, allowed by the virtual machine size.
+ ResourceDiskSizeInMB *int32 `json:"resourceDiskSizeInMB,omitempty"`
+ // MemoryInMB - The amount of memory, in MB, supported by the virtual machine size.
+ MemoryInMB *int32 `json:"memoryInMB,omitempty"`
+ // MaxDataDiskCount - The maximum number of data disks that can be attached to the virtual machine size.
+ MaxDataDiskCount *int32 `json:"maxDataDiskCount,omitempty"`
+}
+
+// VirtualMachineSizeListResult the List Virtual Machine operation response.
+type VirtualMachineSizeListResult struct {
+ autorest.Response `json:"-"`
+ // Value - The list of virtual machine sizes.
+ Value *[]VirtualMachineSize `json:"value,omitempty"`
+}
+
+// VirtualMachinesPerformMaintenanceFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachinesPerformMaintenanceFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesPerformMaintenanceFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesPerformMaintenanceFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.PerformMaintenanceResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.PerformMaintenanceResponder(resp)
+ return
+}
+
+// VirtualMachinesPowerOffFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type VirtualMachinesPowerOffFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesPowerOffFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesPowerOffFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.PowerOffResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.PowerOffResponder(resp)
+ return
+}
+
+// VirtualMachinesRedeployFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type VirtualMachinesRedeployFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesRedeployFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesRedeployFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.RedeployResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.RedeployResponder(resp)
+ return
+}
+
+// VirtualMachinesRestartFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type VirtualMachinesRestartFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesRestartFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesRestartFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.RestartResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.RestartResponder(resp)
+ return
+}
+
+// VirtualMachinesRunCommandFuture an abstraction for monitoring and retrieving the results of a long-running
+// operation.
+type VirtualMachinesRunCommandFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesRunCommandFuture) Result(client VirtualMachinesClient) (rcr RunCommandResult, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return rcr, autorest.NewError("compute.VirtualMachinesRunCommandFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ rcr, err = client.RunCommandResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ rcr, err = client.RunCommandResponder(resp)
+ return
+}
+
+// VirtualMachinesStartFuture an abstraction for monitoring and retrieving the results of a long-running operation.
+type VirtualMachinesStartFuture struct {
+ azure.Future
+ req *http.Request
+}
+
+// Result returns the result of the asynchronous operation.
+// If the operation has not completed it will return an error.
+func (future VirtualMachinesStartFuture) Result(client VirtualMachinesClient) (osr OperationStatusResponse, err error) {
+ var done bool
+ done, err = future.Done(client)
+ if err != nil {
+ return
+ }
+ if !done {
+ return osr, autorest.NewError("compute.VirtualMachinesStartFuture", "Result", "asynchronous operation has not completed")
+ }
+ if future.PollingMethod() == azure.PollingLocation {
+ osr, err = client.StartResponder(future.Response())
+ return
+ }
+ var resp *http.Response
+ resp, err = autorest.SendWithSender(client, autorest.ChangeToGet(future.req),
+ autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...))
+ if err != nil {
+ return
+ }
+ osr, err = client.StartResponder(resp)
+ return
+}
+
+// VirtualMachineStatusCodeCount the status code and count of the virtual machine scale set instance view status
+// summary.
+type VirtualMachineStatusCodeCount struct {
+ // Code - The instance view status code.
+ Code *string `json:"code,omitempty"`
+ // Count - The number of instances having a particular status code.
+ Count *int32 `json:"count,omitempty"`
+}
+
+// WindowsConfiguration specifies Windows operating system settings on the virtual machine.
+type WindowsConfiguration struct {
+ // ProvisionVMAgent - Indicates whether virtual machine agent should be provisioned on the virtual machine. When this property is not specified in the request body, default behavior is to set it to true. This will ensure that VM Agent is installed on the VM so that extensions can be added to the VM later.
+ ProvisionVMAgent *bool `json:"provisionVMAgent,omitempty"`
+ // EnableAutomaticUpdates - Indicates whether virtual machine is enabled for automatic updates.
+ EnableAutomaticUpdates *bool `json:"enableAutomaticUpdates,omitempty"`
+ // TimeZone - Specifies the time zone of the virtual machine. e.g. "Pacific Standard Time"
+ TimeZone *string `json:"timeZone,omitempty"`
+ // AdditionalUnattendContent - Specifies additional base-64 encoded XML formatted information that can be included in the Unattend.xml file, which is used by Windows Setup.
+ AdditionalUnattendContent *[]AdditionalUnattendContent `json:"additionalUnattendContent,omitempty"`
+ // WinRM - Specifies the Windows Remote Management listeners. This enables remote Windows PowerShell.
+ WinRM *WinRMConfiguration `json:"winRM,omitempty"`
+}
+
+// WinRMConfiguration describes Windows Remote Management configuration of the VM
+type WinRMConfiguration struct {
+ // Listeners - The list of Windows Remote Management listeners
+ Listeners *[]WinRMListener `json:"listeners,omitempty"`
+}
+
+// WinRMListener describes Protocol and thumbprint of Windows Remote Management listener
+type WinRMListener struct {
+ // Protocol - Specifies the protocol of listener. Possible values are: **http** **https**. Possible values include: 'HTTP', 'HTTPS'
+ Protocol ProtocolTypes `json:"protocol,omitempty"`
+ // CertificateURL - This is the URL of a certificate that has been uploaded to Key Vault as a secret. For adding a secret to the Key Vault, see [Add a key or secret to the key vault](https://docs.microsoft.com/azure/key-vault/key-vault-get-started/#add). In this case, your certificate needs to be It is the Base64 encoding of the following JSON Object which is encoded in UTF-8: { "data":"", "dataType":"pfx", "password":"" }
+ CertificateURL *string `json:"certificateUrl,omitempty"`
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/resourceskus.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/resourceskus.go
new file mode 100644
index 000000000000..de32a3df699d
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/resourceskus.go
@@ -0,0 +1,130 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "net/http"
+)
+
+// ResourceSkusClient is the compute Client
+type ResourceSkusClient struct {
+ BaseClient
+}
+
+// NewResourceSkusClient creates an instance of the ResourceSkusClient client.
+func NewResourceSkusClient(subscriptionID string) ResourceSkusClient {
+ return NewResourceSkusClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewResourceSkusClientWithBaseURI creates an instance of the ResourceSkusClient client.
+func NewResourceSkusClientWithBaseURI(baseURI string, subscriptionID string) ResourceSkusClient {
+ return ResourceSkusClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// List gets the list of Microsoft.Compute SKUs available for your Subscription.
+func (client ResourceSkusClient) List(ctx context.Context) (result ResourceSkusResultPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.rsr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.rsr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client ResourceSkusClient) ListPreparer(ctx context.Context) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-09-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/skus", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client ResourceSkusClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client ResourceSkusClient) ListResponder(resp *http.Response) (result ResourceSkusResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client ResourceSkusClient) listNextResults(lastResults ResourceSkusResult) (result ResourceSkusResult, err error) {
+ req, err := lastResults.resourceSkusResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.ResourceSkusClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client ResourceSkusClient) ListComplete(ctx context.Context) (result ResourceSkusResultIterator, err error) {
+ result.page, err = client.List(ctx)
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/snapshots.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/snapshots.go
new file mode 100644
index 000000000000..e5e1a9dd85a4
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/snapshots.go
@@ -0,0 +1,677 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// SnapshotsClient is the compute Client
+type SnapshotsClient struct {
+ BaseClient
+}
+
+// NewSnapshotsClient creates an instance of the SnapshotsClient client.
+func NewSnapshotsClient(subscriptionID string) SnapshotsClient {
+ return NewSnapshotsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewSnapshotsClientWithBaseURI creates an instance of the SnapshotsClient client.
+func NewSnapshotsClientWithBaseURI(baseURI string, subscriptionID string) SnapshotsClient {
+ return SnapshotsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate creates or updates a snapshot.
+//
+// resourceGroupName is the name of the resource group. snapshotName is the name of the snapshot that is being created.
+// The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9 and _.
+// The max name length is 80 characters. snapshot is snapshot object supplied in the body of the Put disk operation.
+func (client SnapshotsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, snapshotName string, snapshot Snapshot) (result SnapshotsCreateOrUpdateFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: snapshot,
+ Constraints: []validation.Constraint{{Target: "snapshot.DiskProperties", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "snapshot.DiskProperties.CreationData", Name: validation.Null, Rule: true,
+ Chain: []validation.Constraint{{Target: "snapshot.DiskProperties.CreationData.ImageReference", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "snapshot.DiskProperties.CreationData.ImageReference.ID", Name: validation.Null, Rule: true, Chain: nil}}},
+ }},
+ {Target: "snapshot.DiskProperties.EncryptionSettings", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "snapshot.DiskProperties.EncryptionSettings.DiskEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "snapshot.DiskProperties.EncryptionSettings.DiskEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "snapshot.DiskProperties.EncryptionSettings.DiskEncryptionKey.SecretURL", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ {Target: "snapshot.DiskProperties.EncryptionSettings.KeyEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "snapshot.DiskProperties.EncryptionSettings.KeyEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "snapshot.DiskProperties.EncryptionSettings.KeyEncryptionKey.KeyURL", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ }},
+ }}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.SnapshotsClient", "CreateOrUpdate")
+ }
+
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, snapshotName, snapshot)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client SnapshotsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, snapshotName string, snapshot Snapshot) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "snapshotName": autorest.Encode("path", snapshotName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", pathParameters),
+ autorest.WithJSON(snapshot),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) CreateOrUpdateSender(req *http.Request) (future SnapshotsCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) CreateOrUpdateResponder(resp *http.Response) (result Snapshot, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete deletes a snapshot.
+//
+// resourceGroupName is the name of the resource group. snapshotName is the name of the snapshot that is being created.
+// The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9 and _.
+// The max name length is 80 characters.
+func (client SnapshotsClient) Delete(ctx context.Context, resourceGroupName string, snapshotName string) (result SnapshotsDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, snapshotName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client SnapshotsClient) DeletePreparer(ctx context.Context, resourceGroupName string, snapshotName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "snapshotName": autorest.Encode("path", snapshotName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) DeleteSender(req *http.Request) (future SnapshotsDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get gets information about a snapshot.
+//
+// resourceGroupName is the name of the resource group. snapshotName is the name of the snapshot that is being created.
+// The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9 and _.
+// The max name length is 80 characters.
+func (client SnapshotsClient) Get(ctx context.Context, resourceGroupName string, snapshotName string) (result Snapshot, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, snapshotName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client SnapshotsClient) GetPreparer(ctx context.Context, resourceGroupName string, snapshotName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "snapshotName": autorest.Encode("path", snapshotName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) GetResponder(resp *http.Response) (result Snapshot, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// GrantAccess grants access to a snapshot.
+//
+// resourceGroupName is the name of the resource group. snapshotName is the name of the snapshot that is being created.
+// The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9 and _.
+// The max name length is 80 characters. grantAccessData is access data object supplied in the body of the get snapshot
+// access operation.
+func (client SnapshotsClient) GrantAccess(ctx context.Context, resourceGroupName string, snapshotName string, grantAccessData GrantAccessData) (result SnapshotsGrantAccessFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: grantAccessData,
+ Constraints: []validation.Constraint{{Target: "grantAccessData.DurationInSeconds", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.SnapshotsClient", "GrantAccess")
+ }
+
+ req, err := client.GrantAccessPreparer(ctx, resourceGroupName, snapshotName, grantAccessData)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "GrantAccess", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.GrantAccessSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "GrantAccess", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// GrantAccessPreparer prepares the GrantAccess request.
+func (client SnapshotsClient) GrantAccessPreparer(ctx context.Context, resourceGroupName string, snapshotName string, grantAccessData GrantAccessData) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "snapshotName": autorest.Encode("path", snapshotName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}/beginGetAccess", pathParameters),
+ autorest.WithJSON(grantAccessData),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GrantAccessSender sends the GrantAccess request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) GrantAccessSender(req *http.Request) (future SnapshotsGrantAccessFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// GrantAccessResponder handles the response to the GrantAccess request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) GrantAccessResponder(resp *http.Response) (result AccessURI, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List lists snapshots under a subscription.
+func (client SnapshotsClient) List(ctx context.Context) (result SnapshotListPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.sl.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.sl, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client SnapshotsClient) ListPreparer(ctx context.Context) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/snapshots", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) ListResponder(resp *http.Response) (result SnapshotList, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client SnapshotsClient) listNextResults(lastResults SnapshotList) (result SnapshotList, err error) {
+ req, err := lastResults.snapshotListPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.SnapshotsClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.SnapshotsClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client SnapshotsClient) ListComplete(ctx context.Context) (result SnapshotListIterator, err error) {
+ result.page, err = client.List(ctx)
+ return
+}
+
+// ListByResourceGroup lists snapshots under a resource group.
+//
+// resourceGroupName is the name of the resource group.
+func (client SnapshotsClient) ListByResourceGroup(ctx context.Context, resourceGroupName string) (result SnapshotListPage, err error) {
+ result.fn = client.listByResourceGroupNextResults
+ req, err := client.ListByResourceGroupPreparer(ctx, resourceGroupName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "ListByResourceGroup", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.sl.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "ListByResourceGroup", resp, "Failure sending request")
+ return
+ }
+
+ result.sl, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "ListByResourceGroup", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListByResourceGroupPreparer prepares the ListByResourceGroup request.
+func (client SnapshotsClient) ListByResourceGroupPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListByResourceGroupSender sends the ListByResourceGroup request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) ListByResourceGroupSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListByResourceGroupResponder handles the response to the ListByResourceGroup request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) ListByResourceGroupResponder(resp *http.Response) (result SnapshotList, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listByResourceGroupNextResults retrieves the next set of results, if any.
+func (client SnapshotsClient) listByResourceGroupNextResults(lastResults SnapshotList) (result SnapshotList, err error) {
+ req, err := lastResults.snapshotListPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.SnapshotsClient", "listByResourceGroupNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListByResourceGroupSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.SnapshotsClient", "listByResourceGroupNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListByResourceGroupResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "listByResourceGroupNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListByResourceGroupComplete enumerates all values, automatically crossing page boundaries as required.
+func (client SnapshotsClient) ListByResourceGroupComplete(ctx context.Context, resourceGroupName string) (result SnapshotListIterator, err error) {
+ result.page, err = client.ListByResourceGroup(ctx, resourceGroupName)
+ return
+}
+
+// RevokeAccess revokes access to a snapshot.
+//
+// resourceGroupName is the name of the resource group. snapshotName is the name of the snapshot that is being created.
+// The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9 and _.
+// The max name length is 80 characters.
+func (client SnapshotsClient) RevokeAccess(ctx context.Context, resourceGroupName string, snapshotName string) (result SnapshotsRevokeAccessFuture, err error) {
+ req, err := client.RevokeAccessPreparer(ctx, resourceGroupName, snapshotName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "RevokeAccess", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.RevokeAccessSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "RevokeAccess", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// RevokeAccessPreparer prepares the RevokeAccess request.
+func (client SnapshotsClient) RevokeAccessPreparer(ctx context.Context, resourceGroupName string, snapshotName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "snapshotName": autorest.Encode("path", snapshotName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}/endGetAccess", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// RevokeAccessSender sends the RevokeAccess request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) RevokeAccessSender(req *http.Request) (future SnapshotsRevokeAccessFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// RevokeAccessResponder handles the response to the RevokeAccess request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) RevokeAccessResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Update updates (patches) a snapshot.
+//
+// resourceGroupName is the name of the resource group. snapshotName is the name of the snapshot that is being created.
+// The name can't be changed after the snapshot is created. Supported characters for the name are a-z, A-Z, 0-9 and _.
+// The max name length is 80 characters. snapshot is snapshot object supplied in the body of the Patch snapshot
+// operation.
+func (client SnapshotsClient) Update(ctx context.Context, resourceGroupName string, snapshotName string, snapshot SnapshotUpdate) (result SnapshotsUpdateFuture, err error) {
+ req, err := client.UpdatePreparer(ctx, resourceGroupName, snapshotName, snapshot)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "Update", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.UpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.SnapshotsClient", "Update", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// UpdatePreparer prepares the Update request.
+func (client SnapshotsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, snapshotName string, snapshot SnapshotUpdate) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "snapshotName": autorest.Encode("path", snapshotName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-03-30"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPatch(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/snapshots/{snapshotName}", pathParameters),
+ autorest.WithJSON(snapshot),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// UpdateSender sends the Update request. The method will close the
+// http.Response Body if it receives an error.
+func (client SnapshotsClient) UpdateSender(req *http.Request) (future SnapshotsUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// UpdateResponder handles the response to the Update request. The method always
+// closes the http.Response Body.
+func (client SnapshotsClient) UpdateResponder(resp *http.Response) (result Snapshot, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/usage.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/usage.go
new file mode 100644
index 000000000000..3a316670fda0
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/usage.go
@@ -0,0 +1,141 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// UsageClient is the compute Client
+type UsageClient struct {
+ BaseClient
+}
+
+// NewUsageClient creates an instance of the UsageClient client.
+func NewUsageClient(subscriptionID string) UsageClient {
+ return NewUsageClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewUsageClientWithBaseURI creates an instance of the UsageClient client.
+func NewUsageClientWithBaseURI(baseURI string, subscriptionID string) UsageClient {
+ return UsageClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// List gets, for the specified location, the current compute resource usage information as well as the limits for
+// compute resources under the subscription.
+//
+// location is the location for which resource usage is queried.
+func (client UsageClient) List(ctx context.Context, location string) (result ListUsagesResultPage, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: location,
+ Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._]+$`, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.UsageClient", "List")
+ }
+
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx, location)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.UsageClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.lur.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.UsageClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.lur, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.UsageClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client UsageClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/usages", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client UsageClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client UsageClient) ListResponder(resp *http.Response) (result ListUsagesResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client UsageClient) listNextResults(lastResults ListUsagesResult) (result ListUsagesResult, err error) {
+ req, err := lastResults.listUsagesResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.UsageClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.UsageClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.UsageClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client UsageClient) ListComplete(ctx context.Context, location string) (result ListUsagesResultIterator, err error) {
+ result.page, err = client.List(ctx, location)
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/version.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/version.go
new file mode 100644
index 000000000000..00a3106b8812
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/version.go
@@ -0,0 +1,28 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+// UserAgent returns the UserAgent string to use when sending http.Requests.
+func UserAgent() string {
+ return "Azure-SDK-For-Go/v12.4.0-beta arm-compute/"
+}
+
+// Version returns the semantic version (see http://semver.org) of the client.
+func Version() string {
+ return "v12.4.0-beta"
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineextensionimages.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineextensionimages.go
new file mode 100644
index 000000000000..1573aa734dd8
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineextensionimages.go
@@ -0,0 +1,251 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "net/http"
+)
+
+// VirtualMachineExtensionImagesClient is the compute Client
+type VirtualMachineExtensionImagesClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineExtensionImagesClient creates an instance of the VirtualMachineExtensionImagesClient client.
+func NewVirtualMachineExtensionImagesClient(subscriptionID string) VirtualMachineExtensionImagesClient {
+ return NewVirtualMachineExtensionImagesClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineExtensionImagesClientWithBaseURI creates an instance of the VirtualMachineExtensionImagesClient
+// client.
+func NewVirtualMachineExtensionImagesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineExtensionImagesClient {
+ return VirtualMachineExtensionImagesClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// Get gets a virtual machine extension image.
+//
+// location is the name of a supported Azure region.
+func (client VirtualMachineExtensionImagesClient) Get(ctx context.Context, location string, publisherName string, typeParameter string, version string) (result VirtualMachineExtensionImage, err error) {
+ req, err := client.GetPreparer(ctx, location, publisherName, typeParameter, version)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachineExtensionImagesClient) GetPreparer(ctx context.Context, location string, publisherName string, typeParameter string, version string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "publisherName": autorest.Encode("path", publisherName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "type": autorest.Encode("path", typeParameter),
+ "version": autorest.Encode("path", version),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions/{version}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineExtensionImagesClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineExtensionImagesClient) GetResponder(resp *http.Response) (result VirtualMachineExtensionImage, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ListTypes gets a list of virtual machine extension image types.
+//
+// location is the name of a supported Azure region.
+func (client VirtualMachineExtensionImagesClient) ListTypes(ctx context.Context, location string, publisherName string) (result ListVirtualMachineExtensionImage, err error) {
+ req, err := client.ListTypesPreparer(ctx, location, publisherName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListTypesSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListTypesResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListTypes", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListTypesPreparer prepares the ListTypes request.
+func (client VirtualMachineExtensionImagesClient) ListTypesPreparer(ctx context.Context, location string, publisherName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "publisherName": autorest.Encode("path", publisherName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListTypesSender sends the ListTypes request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineExtensionImagesClient) ListTypesSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListTypesResponder handles the response to the ListTypes request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineExtensionImagesClient) ListTypesResponder(resp *http.Response) (result ListVirtualMachineExtensionImage, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result.Value),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ListVersions gets a list of virtual machine extension image versions.
+//
+// location is the name of a supported Azure region. filter is the filter to apply on the operation.
+func (client VirtualMachineExtensionImagesClient) ListVersions(ctx context.Context, location string, publisherName string, typeParameter string, filter string, top *int32, orderby string) (result ListVirtualMachineExtensionImage, err error) {
+ req, err := client.ListVersionsPreparer(ctx, location, publisherName, typeParameter, filter, top, orderby)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListVersionsSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListVersionsResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionImagesClient", "ListVersions", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListVersionsPreparer prepares the ListVersions request.
+func (client VirtualMachineExtensionImagesClient) ListVersionsPreparer(ctx context.Context, location string, publisherName string, typeParameter string, filter string, top *int32, orderby string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "publisherName": autorest.Encode("path", publisherName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "type": autorest.Encode("path", typeParameter),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+ if len(filter) > 0 {
+ queryParameters["$filter"] = autorest.Encode("query", filter)
+ }
+ if top != nil {
+ queryParameters["$top"] = autorest.Encode("query", *top)
+ }
+ if len(orderby) > 0 {
+ queryParameters["$orderby"] = autorest.Encode("query", orderby)
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmextension/types/{type}/versions", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListVersionsSender sends the ListVersions request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineExtensionImagesClient) ListVersionsSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListVersionsResponder handles the response to the ListVersions request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineExtensionImagesClient) ListVersionsResponder(resp *http.Response) (result ListVirtualMachineExtensionImage, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result.Value),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineextensions.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineextensions.go
new file mode 100644
index 000000000000..d6d9066ccfa4
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineextensions.go
@@ -0,0 +1,255 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "net/http"
+)
+
+// VirtualMachineExtensionsClient is the compute Client
+type VirtualMachineExtensionsClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineExtensionsClient creates an instance of the VirtualMachineExtensionsClient client.
+func NewVirtualMachineExtensionsClient(subscriptionID string) VirtualMachineExtensionsClient {
+ return NewVirtualMachineExtensionsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineExtensionsClientWithBaseURI creates an instance of the VirtualMachineExtensionsClient client.
+func NewVirtualMachineExtensionsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineExtensionsClient {
+ return VirtualMachineExtensionsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate the operation to create or update the extension.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine where the extension
+// should be create or updated. VMExtensionName is the name of the virtual machine extension. extensionParameters is
+// parameters supplied to the Create Virtual Machine Extension operation.
+func (client VirtualMachineExtensionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, VMExtensionName string, extensionParameters VirtualMachineExtension) (result VirtualMachineExtensionsCreateOrUpdateFuture, err error) {
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, VMName, VMExtensionName, extensionParameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client VirtualMachineExtensionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, VMName string, VMExtensionName string, extensionParameters VirtualMachineExtension) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmExtensionName": autorest.Encode("path", VMExtensionName),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}", pathParameters),
+ autorest.WithJSON(extensionParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineExtensionsClient) CreateOrUpdateSender(req *http.Request) (future VirtualMachineExtensionsCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineExtensionsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualMachineExtension, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete the operation to delete the extension.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine where the extension
+// should be deleted. VMExtensionName is the name of the virtual machine extension.
+func (client VirtualMachineExtensionsClient) Delete(ctx context.Context, resourceGroupName string, VMName string, VMExtensionName string) (result VirtualMachineExtensionsDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, VMName, VMExtensionName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client VirtualMachineExtensionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, VMName string, VMExtensionName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmExtensionName": autorest.Encode("path", VMExtensionName),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineExtensionsClient) DeleteSender(req *http.Request) (future VirtualMachineExtensionsDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineExtensionsClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get the operation to get the extension.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine containing the
+// extension. VMExtensionName is the name of the virtual machine extension. expand is the expand expression to apply on
+// the operation.
+func (client VirtualMachineExtensionsClient) Get(ctx context.Context, resourceGroupName string, VMName string, VMExtensionName string, expand string) (result VirtualMachineExtension, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, VMName, VMExtensionName, expand)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineExtensionsClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachineExtensionsClient) GetPreparer(ctx context.Context, resourceGroupName string, VMName string, VMExtensionName string, expand string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmExtensionName": autorest.Encode("path", VMExtensionName),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+ if len(expand) > 0 {
+ queryParameters["$expand"] = autorest.Encode("query", expand)
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/extensions/{vmExtensionName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineExtensionsClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineExtensionsClient) GetResponder(resp *http.Response) (result VirtualMachineExtension, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineimages.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineimages.go
new file mode 100644
index 000000000000..e3aa2bc8224e
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineimages.go
@@ -0,0 +1,387 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "net/http"
+)
+
+// VirtualMachineImagesClient is the compute Client
+type VirtualMachineImagesClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineImagesClient creates an instance of the VirtualMachineImagesClient client.
+func NewVirtualMachineImagesClient(subscriptionID string) VirtualMachineImagesClient {
+ return NewVirtualMachineImagesClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineImagesClientWithBaseURI creates an instance of the VirtualMachineImagesClient client.
+func NewVirtualMachineImagesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineImagesClient {
+ return VirtualMachineImagesClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// Get gets a virtual machine image.
+//
+// location is the name of a supported Azure region. publisherName is a valid image publisher. offer is a valid image
+// publisher offer. skus is a valid image SKU. version is a valid image SKU version.
+func (client VirtualMachineImagesClient) Get(ctx context.Context, location string, publisherName string, offer string, skus string, version string) (result VirtualMachineImage, err error) {
+ req, err := client.GetPreparer(ctx, location, publisherName, offer, skus, version)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachineImagesClient) GetPreparer(ctx context.Context, location string, publisherName string, offer string, skus string, version string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "offer": autorest.Encode("path", offer),
+ "publisherName": autorest.Encode("path", publisherName),
+ "skus": autorest.Encode("path", skus),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "version": autorest.Encode("path", version),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions/{version}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineImagesClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineImagesClient) GetResponder(resp *http.Response) (result VirtualMachineImage, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List gets a list of all virtual machine image versions for the specified location, publisher, offer, and SKU.
+//
+// location is the name of a supported Azure region. publisherName is a valid image publisher. offer is a valid image
+// publisher offer. skus is a valid image SKU. filter is the filter to apply on the operation.
+func (client VirtualMachineImagesClient) List(ctx context.Context, location string, publisherName string, offer string, skus string, filter string, top *int32, orderby string) (result ListVirtualMachineImageResource, err error) {
+ req, err := client.ListPreparer(ctx, location, publisherName, offer, skus, filter, top, orderby)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client VirtualMachineImagesClient) ListPreparer(ctx context.Context, location string, publisherName string, offer string, skus string, filter string, top *int32, orderby string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "offer": autorest.Encode("path", offer),
+ "publisherName": autorest.Encode("path", publisherName),
+ "skus": autorest.Encode("path", skus),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+ if len(filter) > 0 {
+ queryParameters["$filter"] = autorest.Encode("query", filter)
+ }
+ if top != nil {
+ queryParameters["$top"] = autorest.Encode("query", *top)
+ }
+ if len(orderby) > 0 {
+ queryParameters["$orderby"] = autorest.Encode("query", orderby)
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus/{skus}/versions", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineImagesClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineImagesClient) ListResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result.Value),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ListOffers gets a list of virtual machine image offers for the specified location and publisher.
+//
+// location is the name of a supported Azure region. publisherName is a valid image publisher.
+func (client VirtualMachineImagesClient) ListOffers(ctx context.Context, location string, publisherName string) (result ListVirtualMachineImageResource, err error) {
+ req, err := client.ListOffersPreparer(ctx, location, publisherName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListOffers", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListOffersSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListOffers", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListOffersResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListOffers", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListOffersPreparer prepares the ListOffers request.
+func (client VirtualMachineImagesClient) ListOffersPreparer(ctx context.Context, location string, publisherName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "publisherName": autorest.Encode("path", publisherName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListOffersSender sends the ListOffers request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineImagesClient) ListOffersSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListOffersResponder handles the response to the ListOffers request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineImagesClient) ListOffersResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result.Value),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ListPublishers gets a list of virtual machine image publishers for the specified Azure location.
+//
+// location is the name of a supported Azure region.
+func (client VirtualMachineImagesClient) ListPublishers(ctx context.Context, location string) (result ListVirtualMachineImageResource, err error) {
+ req, err := client.ListPublishersPreparer(ctx, location)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListPublishers", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListPublishersSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListPublishers", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListPublishersResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListPublishers", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPublishersPreparer prepares the ListPublishers request.
+func (client VirtualMachineImagesClient) ListPublishersPreparer(ctx context.Context, location string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListPublishersSender sends the ListPublishers request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineImagesClient) ListPublishersSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListPublishersResponder handles the response to the ListPublishers request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineImagesClient) ListPublishersResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result.Value),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ListSkus gets a list of virtual machine image SKUs for the specified location, publisher, and offer.
+//
+// location is the name of a supported Azure region. publisherName is a valid image publisher. offer is a valid image
+// publisher offer.
+func (client VirtualMachineImagesClient) ListSkus(ctx context.Context, location string, publisherName string, offer string) (result ListVirtualMachineImageResource, err error) {
+ req, err := client.ListSkusPreparer(ctx, location, publisherName, offer)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListSkus", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSkusSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListSkus", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListSkusResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineImagesClient", "ListSkus", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListSkusPreparer prepares the ListSkus request.
+func (client VirtualMachineImagesClient) ListSkusPreparer(ctx context.Context, location string, publisherName string, offer string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "offer": autorest.Encode("path", offer),
+ "publisherName": autorest.Encode("path", publisherName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/publishers/{publisherName}/artifacttypes/vmimage/offers/{offer}/skus", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSkusSender sends the ListSkus request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineImagesClient) ListSkusSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListSkusResponder handles the response to the ListSkus request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineImagesClient) ListSkusResponder(resp *http.Response) (result ListVirtualMachineImageResource, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result.Value),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineruncommands.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineruncommands.go
new file mode 100644
index 000000000000..79674138d2cb
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachineruncommands.go
@@ -0,0 +1,212 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// VirtualMachineRunCommandsClient is the compute Client
+type VirtualMachineRunCommandsClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineRunCommandsClient creates an instance of the VirtualMachineRunCommandsClient client.
+func NewVirtualMachineRunCommandsClient(subscriptionID string) VirtualMachineRunCommandsClient {
+ return NewVirtualMachineRunCommandsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineRunCommandsClientWithBaseURI creates an instance of the VirtualMachineRunCommandsClient client.
+func NewVirtualMachineRunCommandsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineRunCommandsClient {
+ return VirtualMachineRunCommandsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// Get gets specific run command for a subscription in a location.
+//
+// location is the location upon which run commands is queried. commandID is the command id.
+func (client VirtualMachineRunCommandsClient) Get(ctx context.Context, location string, commandID string) (result RunCommandDocument, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: location,
+ Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._]+$`, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachineRunCommandsClient", "Get")
+ }
+
+ req, err := client.GetPreparer(ctx, location, commandID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachineRunCommandsClient) GetPreparer(ctx context.Context, location string, commandID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "commandId": autorest.Encode("path", commandID),
+ "location": autorest.Encode("path", location),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/runCommands/{commandId}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineRunCommandsClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineRunCommandsClient) GetResponder(resp *http.Response) (result RunCommandDocument, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List lists all available run commands for a subscription in a location.
+//
+// location is the location upon which run commands is queried.
+func (client VirtualMachineRunCommandsClient) List(ctx context.Context, location string) (result RunCommandListResultPage, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: location,
+ Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._]+$`, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachineRunCommandsClient", "List")
+ }
+
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx, location)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.rclr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.rclr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client VirtualMachineRunCommandsClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/runCommands", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineRunCommandsClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineRunCommandsClient) ListResponder(resp *http.Response) (result RunCommandListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client VirtualMachineRunCommandsClient) listNextResults(lastResults RunCommandListResult) (result RunCommandListResult, err error) {
+ req, err := lastResults.runCommandListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineRunCommandsClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachineRunCommandsClient) ListComplete(ctx context.Context, location string) (result RunCommandListResultIterator, err error) {
+ result.page, err = client.List(ctx, location)
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachines.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachines.go
new file mode 100644
index 000000000000..8e61949a5240
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachines.go
@@ -0,0 +1,1290 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// VirtualMachinesClient is the compute Client
+type VirtualMachinesClient struct {
+ BaseClient
+}
+
+// NewVirtualMachinesClient creates an instance of the VirtualMachinesClient client.
+func NewVirtualMachinesClient(subscriptionID string) VirtualMachinesClient {
+ return NewVirtualMachinesClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachinesClientWithBaseURI creates an instance of the VirtualMachinesClient client.
+func NewVirtualMachinesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachinesClient {
+ return VirtualMachinesClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// Capture captures the VM by copying virtual hard disks of the VM and outputs a template that can be used to create
+// similar VMs.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine. parameters is
+// parameters supplied to the Capture Virtual Machine operation.
+func (client VirtualMachinesClient) Capture(ctx context.Context, resourceGroupName string, VMName string, parameters VirtualMachineCaptureParameters) (result VirtualMachinesCaptureFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: parameters,
+ Constraints: []validation.Constraint{{Target: "parameters.VhdPrefix", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.DestinationContainerName", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.OverwriteVhds", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachinesClient", "Capture")
+ }
+
+ req, err := client.CapturePreparer(ctx, resourceGroupName, VMName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Capture", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CaptureSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Capture", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CapturePreparer prepares the Capture request.
+func (client VirtualMachinesClient) CapturePreparer(ctx context.Context, resourceGroupName string, VMName string, parameters VirtualMachineCaptureParameters) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/capture", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CaptureSender sends the Capture request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) CaptureSender(req *http.Request) (future VirtualMachinesCaptureFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// CaptureResponder handles the response to the Capture request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) CaptureResponder(resp *http.Response) (result VirtualMachineCaptureResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ConvertToManagedDisks converts virtual machine disks from blob-based to managed disks. Virtual machine must be
+// stop-deallocated before invoking this operation.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) ConvertToManagedDisks(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesConvertToManagedDisksFuture, err error) {
+ req, err := client.ConvertToManagedDisksPreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ConvertToManagedDisks", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.ConvertToManagedDisksSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ConvertToManagedDisks", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// ConvertToManagedDisksPreparer prepares the ConvertToManagedDisks request.
+func (client VirtualMachinesClient) ConvertToManagedDisksPreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/convertToManagedDisks", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ConvertToManagedDisksSender sends the ConvertToManagedDisks request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) ConvertToManagedDisksSender(req *http.Request) (future VirtualMachinesConvertToManagedDisksFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// ConvertToManagedDisksResponder handles the response to the ConvertToManagedDisks request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) ConvertToManagedDisksResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// CreateOrUpdate the operation to create or update a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine. parameters is
+// parameters supplied to the Create Virtual Machine operation.
+func (client VirtualMachinesClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMName string, parameters VirtualMachine) (result VirtualMachinesCreateOrUpdateFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: parameters,
+ Constraints: []validation.Constraint{{Target: "parameters.VirtualMachineProperties", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineProperties.StorageProfile", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk.EncryptionSettings", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk.EncryptionSettings.DiskEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk.EncryptionSettings.DiskEncryptionKey.SecretURL", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk.EncryptionSettings.DiskEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ {Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk.EncryptionSettings.KeyEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk.EncryptionSettings.KeyEncryptionKey.KeyURL", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.VirtualMachineProperties.StorageProfile.OsDisk.EncryptionSettings.KeyEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ }},
+ }},
+ }},
+ }}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachinesClient", "CreateOrUpdate")
+ }
+
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, VMName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client VirtualMachinesClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, VMName string, parameters VirtualMachine) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) CreateOrUpdateSender(req *http.Request) (future VirtualMachinesCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualMachine, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Deallocate shuts down the virtual machine and releases the compute resources. You are not billed for the compute
+// resources that this virtual machine uses.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) Deallocate(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesDeallocateFuture, err error) {
+ req, err := client.DeallocatePreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Deallocate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeallocateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Deallocate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeallocatePreparer prepares the Deallocate request.
+func (client VirtualMachinesClient) DeallocatePreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/deallocate", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeallocateSender sends the Deallocate request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) DeallocateSender(req *http.Request) (future VirtualMachinesDeallocateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// DeallocateResponder handles the response to the Deallocate request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) DeallocateResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete the operation to delete a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) Delete(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client VirtualMachinesClient) DeletePreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) DeleteSender(req *http.Request) (future VirtualMachinesDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Generalize sets the state of the virtual machine to generalized.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) Generalize(ctx context.Context, resourceGroupName string, VMName string) (result OperationStatusResponse, err error) {
+ req, err := client.GeneralizePreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Generalize", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GeneralizeSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Generalize", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GeneralizeResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Generalize", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GeneralizePreparer prepares the Generalize request.
+func (client VirtualMachinesClient) GeneralizePreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/generalize", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GeneralizeSender sends the Generalize request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) GeneralizeSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GeneralizeResponder handles the response to the Generalize request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) GeneralizeResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get retrieves information about the model view or the instance view of a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine. expand is the expand
+// expression to apply on the operation.
+func (client VirtualMachinesClient) Get(ctx context.Context, resourceGroupName string, VMName string, expand InstanceViewTypes) (result VirtualMachine, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, VMName, expand)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachinesClient) GetPreparer(ctx context.Context, resourceGroupName string, VMName string, expand InstanceViewTypes) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+ if len(string(expand)) > 0 {
+ queryParameters["$expand"] = autorest.Encode("query", expand)
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) GetResponder(resp *http.Response) (result VirtualMachine, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// InstanceView retrieves information about the run-time state of a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) InstanceView(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachineInstanceView, err error) {
+ req, err := client.InstanceViewPreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "InstanceView", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.InstanceViewSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "InstanceView", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.InstanceViewResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "InstanceView", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// InstanceViewPreparer prepares the InstanceView request.
+func (client VirtualMachinesClient) InstanceViewPreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/instanceView", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// InstanceViewSender sends the InstanceView request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) InstanceViewSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// InstanceViewResponder handles the response to the InstanceView request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) InstanceViewResponder(resp *http.Response) (result VirtualMachineInstanceView, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List lists all of the virtual machines in the specified resource group. Use the nextLink property in the response to
+// get the next page of virtual machines.
+//
+// resourceGroupName is the name of the resource group.
+func (client VirtualMachinesClient) List(ctx context.Context, resourceGroupName string) (result VirtualMachineListResultPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx, resourceGroupName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.vmlr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.vmlr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client VirtualMachinesClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) ListResponder(resp *http.Response) (result VirtualMachineListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client VirtualMachinesClient) listNextResults(lastResults VirtualMachineListResult) (result VirtualMachineListResult, err error) {
+ req, err := lastResults.virtualMachineListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachinesClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualMachineListResultIterator, err error) {
+ result.page, err = client.List(ctx, resourceGroupName)
+ return
+}
+
+// ListAll lists all of the virtual machines in the specified subscription. Use the nextLink property in the response
+// to get the next page of virtual machines.
+func (client VirtualMachinesClient) ListAll(ctx context.Context) (result VirtualMachineListResultPage, err error) {
+ result.fn = client.listAllNextResults
+ req, err := client.ListAllPreparer(ctx)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListAllSender(req)
+ if err != nil {
+ result.vmlr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", resp, "Failure sending request")
+ return
+ }
+
+ result.vmlr, err = client.ListAllResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAll", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListAllPreparer prepares the ListAll request.
+func (client VirtualMachinesClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachines", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListAllSender sends the ListAll request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) ListAllSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListAllResponder handles the response to the ListAll request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) ListAllResponder(resp *http.Response) (result VirtualMachineListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listAllNextResults retrieves the next set of results, if any.
+func (client VirtualMachinesClient) listAllNextResults(lastResults VirtualMachineListResult) (result VirtualMachineListResult, err error) {
+ req, err := lastResults.virtualMachineListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "listAllNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListAllSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "listAllNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListAllResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "listAllNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachinesClient) ListAllComplete(ctx context.Context) (result VirtualMachineListResultIterator, err error) {
+ result.page, err = client.ListAll(ctx)
+ return
+}
+
+// ListAvailableSizes lists all available virtual machine sizes to which the specified virtual machine can be resized.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) ListAvailableSizes(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachineSizeListResult, err error) {
+ req, err := client.ListAvailableSizesPreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListAvailableSizesSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListAvailableSizesResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "ListAvailableSizes", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListAvailableSizesPreparer prepares the ListAvailableSizes request.
+func (client VirtualMachinesClient) ListAvailableSizesPreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/vmSizes", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListAvailableSizesSender sends the ListAvailableSizes request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) ListAvailableSizesSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListAvailableSizesResponder handles the response to the ListAvailableSizes request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) ListAvailableSizesResponder(resp *http.Response) (result VirtualMachineSizeListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// PerformMaintenance the operation to perform maintenance on a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) PerformMaintenance(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesPerformMaintenanceFuture, err error) {
+ req, err := client.PerformMaintenancePreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "PerformMaintenance", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.PerformMaintenanceSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "PerformMaintenance", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// PerformMaintenancePreparer prepares the PerformMaintenance request.
+func (client VirtualMachinesClient) PerformMaintenancePreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/performMaintenance", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// PerformMaintenanceSender sends the PerformMaintenance request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) PerformMaintenanceSender(req *http.Request) (future VirtualMachinesPerformMaintenanceFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// PerformMaintenanceResponder handles the response to the PerformMaintenance request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) PerformMaintenanceResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// PowerOff the operation to power off (stop) a virtual machine. The virtual machine can be restarted with the same
+// provisioned resources. You are still charged for this virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) PowerOff(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesPowerOffFuture, err error) {
+ req, err := client.PowerOffPreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "PowerOff", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.PowerOffSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "PowerOff", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// PowerOffPreparer prepares the PowerOff request.
+func (client VirtualMachinesClient) PowerOffPreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/powerOff", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// PowerOffSender sends the PowerOff request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) PowerOffSender(req *http.Request) (future VirtualMachinesPowerOffFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// PowerOffResponder handles the response to the PowerOff request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) PowerOffResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Redeploy the operation to redeploy a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) Redeploy(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesRedeployFuture, err error) {
+ req, err := client.RedeployPreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Redeploy", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.RedeploySender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Redeploy", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// RedeployPreparer prepares the Redeploy request.
+func (client VirtualMachinesClient) RedeployPreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/redeploy", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// RedeploySender sends the Redeploy request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) RedeploySender(req *http.Request) (future VirtualMachinesRedeployFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// RedeployResponder handles the response to the Redeploy request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) RedeployResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Restart the operation to restart a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) Restart(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesRestartFuture, err error) {
+ req, err := client.RestartPreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Restart", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.RestartSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Restart", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// RestartPreparer prepares the Restart request.
+func (client VirtualMachinesClient) RestartPreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/restart", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// RestartSender sends the Restart request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) RestartSender(req *http.Request) (future VirtualMachinesRestartFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// RestartResponder handles the response to the Restart request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) RestartResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// RunCommand run command on the VM.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine. parameters is
+// parameters supplied to the Run command operation.
+func (client VirtualMachinesClient) RunCommand(ctx context.Context, resourceGroupName string, VMName string, parameters RunCommandInput) (result VirtualMachinesRunCommandFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: parameters,
+ Constraints: []validation.Constraint{{Target: "parameters.CommandID", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachinesClient", "RunCommand")
+ }
+
+ req, err := client.RunCommandPreparer(ctx, resourceGroupName, VMName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "RunCommand", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.RunCommandSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "RunCommand", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// RunCommandPreparer prepares the RunCommand request.
+func (client VirtualMachinesClient) RunCommandPreparer(ctx context.Context, resourceGroupName string, VMName string, parameters RunCommandInput) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/runCommand", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// RunCommandSender sends the RunCommand request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) RunCommandSender(req *http.Request) (future VirtualMachinesRunCommandFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// RunCommandResponder handles the response to the RunCommand request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) RunCommandResponder(resp *http.Response) (result RunCommandResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Start the operation to start a virtual machine.
+//
+// resourceGroupName is the name of the resource group. VMName is the name of the virtual machine.
+func (client VirtualMachinesClient) Start(ctx context.Context, resourceGroupName string, VMName string) (result VirtualMachinesStartFuture, err error) {
+ req, err := client.StartPreparer(ctx, resourceGroupName, VMName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Start", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.StartSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachinesClient", "Start", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// StartPreparer prepares the Start request.
+func (client VirtualMachinesClient) StartPreparer(ctx context.Context, resourceGroupName string, VMName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmName": autorest.Encode("path", VMName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachines/{vmName}/start", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// StartSender sends the Start request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachinesClient) StartSender(req *http.Request) (future VirtualMachinesStartFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// StartResponder handles the response to the Start request. The method always
+// closes the http.Response Body.
+func (client VirtualMachinesClient) StartResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetextensions.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetextensions.go
new file mode 100644
index 000000000000..d27a62b7954f
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetextensions.go
@@ -0,0 +1,351 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "net/http"
+)
+
+// VirtualMachineScaleSetExtensionsClient is the compute Client
+type VirtualMachineScaleSetExtensionsClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineScaleSetExtensionsClient creates an instance of the VirtualMachineScaleSetExtensionsClient client.
+func NewVirtualMachineScaleSetExtensionsClient(subscriptionID string) VirtualMachineScaleSetExtensionsClient {
+ return NewVirtualMachineScaleSetExtensionsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineScaleSetExtensionsClientWithBaseURI creates an instance of the
+// VirtualMachineScaleSetExtensionsClient client.
+func NewVirtualMachineScaleSetExtensionsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineScaleSetExtensionsClient {
+ return VirtualMachineScaleSetExtensionsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate the operation to create or update an extension.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set where the
+// extension should be create or updated. vmssExtensionName is the name of the VM scale set extension.
+// extensionParameters is parameters supplied to the Create VM scale set Extension operation.
+func (client VirtualMachineScaleSetExtensionsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtension) (result VirtualMachineScaleSetExtensionsCreateOrUpdateFuture, err error) {
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, VMScaleSetName, vmssExtensionName, extensionParameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client VirtualMachineScaleSetExtensionsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, vmssExtensionName string, extensionParameters VirtualMachineScaleSetExtension) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ "vmssExtensionName": autorest.Encode("path", vmssExtensionName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}", pathParameters),
+ autorest.WithJSON(extensionParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetExtensionsClient) CreateOrUpdateSender(req *http.Request) (future VirtualMachineScaleSetExtensionsCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetExtensionsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualMachineScaleSetExtension, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete the operation to delete the extension.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set where the
+// extension should be deleted. vmssExtensionName is the name of the VM scale set extension.
+func (client VirtualMachineScaleSetExtensionsClient) Delete(ctx context.Context, resourceGroupName string, VMScaleSetName string, vmssExtensionName string) (result VirtualMachineScaleSetExtensionsDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, VMScaleSetName, vmssExtensionName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client VirtualMachineScaleSetExtensionsClient) DeletePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, vmssExtensionName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ "vmssExtensionName": autorest.Encode("path", vmssExtensionName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetExtensionsClient) DeleteSender(req *http.Request) (future VirtualMachineScaleSetExtensionsDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetExtensionsClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get the operation to get the extension.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set containing the
+// extension. vmssExtensionName is the name of the VM scale set extension. expand is the expand expression to apply on
+// the operation.
+func (client VirtualMachineScaleSetExtensionsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string, vmssExtensionName string, expand string) (result VirtualMachineScaleSetExtension, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, VMScaleSetName, vmssExtensionName, expand)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachineScaleSetExtensionsClient) GetPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, vmssExtensionName string, expand string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ "vmssExtensionName": autorest.Encode("path", vmssExtensionName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+ if len(expand) > 0 {
+ queryParameters["$expand"] = autorest.Encode("query", expand)
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions/{vmssExtensionName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetExtensionsClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetExtensionsClient) GetResponder(resp *http.Response) (result VirtualMachineScaleSetExtension, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List gets a list of all extensions in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set containing the
+// extension.
+func (client VirtualMachineScaleSetExtensionsClient) List(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetExtensionListResultPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.vmsselr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.vmsselr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client VirtualMachineScaleSetExtensionsClient) ListPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/extensions", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetExtensionsClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetExtensionsClient) ListResponder(resp *http.Response) (result VirtualMachineScaleSetExtensionListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client VirtualMachineScaleSetExtensionsClient) listNextResults(lastResults VirtualMachineScaleSetExtensionListResult) (result VirtualMachineScaleSetExtensionListResult, err error) {
+ req, err := lastResults.virtualMachineScaleSetExtensionListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetExtensionsClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachineScaleSetExtensionsClient) ListComplete(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetExtensionListResultIterator, err error) {
+ result.page, err = client.List(ctx, resourceGroupName, VMScaleSetName)
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetrollingupgrades.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetrollingupgrades.go
new file mode 100644
index 000000000000..6e7b66cb06e9
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetrollingupgrades.go
@@ -0,0 +1,245 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "net/http"
+)
+
+// VirtualMachineScaleSetRollingUpgradesClient is the compute Client
+type VirtualMachineScaleSetRollingUpgradesClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineScaleSetRollingUpgradesClient creates an instance of the
+// VirtualMachineScaleSetRollingUpgradesClient client.
+func NewVirtualMachineScaleSetRollingUpgradesClient(subscriptionID string) VirtualMachineScaleSetRollingUpgradesClient {
+ return NewVirtualMachineScaleSetRollingUpgradesClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineScaleSetRollingUpgradesClientWithBaseURI creates an instance of the
+// VirtualMachineScaleSetRollingUpgradesClient client.
+func NewVirtualMachineScaleSetRollingUpgradesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineScaleSetRollingUpgradesClient {
+ return VirtualMachineScaleSetRollingUpgradesClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// Cancel cancels the current virtual machine scale set rolling upgrade.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+func (client VirtualMachineScaleSetRollingUpgradesClient) Cancel(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetRollingUpgradesCancelFuture, err error) {
+ req, err := client.CancelPreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetRollingUpgradesClient", "Cancel", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CancelSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetRollingUpgradesClient", "Cancel", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CancelPreparer prepares the Cancel request.
+func (client VirtualMachineScaleSetRollingUpgradesClient) CancelPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/rollingUpgrades/cancel", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CancelSender sends the Cancel request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetRollingUpgradesClient) CancelSender(req *http.Request) (future VirtualMachineScaleSetRollingUpgradesCancelFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// CancelResponder handles the response to the Cancel request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetRollingUpgradesClient) CancelResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// GetLatest gets the status of the latest virtual machine scale set rolling upgrade.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+func (client VirtualMachineScaleSetRollingUpgradesClient) GetLatest(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result RollingUpgradeStatusInfo, err error) {
+ req, err := client.GetLatestPreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetRollingUpgradesClient", "GetLatest", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetLatestSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetRollingUpgradesClient", "GetLatest", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetLatestResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetRollingUpgradesClient", "GetLatest", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetLatestPreparer prepares the GetLatest request.
+func (client VirtualMachineScaleSetRollingUpgradesClient) GetLatestPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/rollingUpgrades/latest", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetLatestSender sends the GetLatest request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetRollingUpgradesClient) GetLatestSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetLatestResponder handles the response to the GetLatest request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetRollingUpgradesClient) GetLatestResponder(resp *http.Response) (result RollingUpgradeStatusInfo, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// StartOSUpgrade starts a rolling upgrade to move all virtual machine scale set instances to the latest available
+// Platform Image OS version. Instances which are already running the latest available OS version are not affected.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+func (client VirtualMachineScaleSetRollingUpgradesClient) StartOSUpgrade(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetRollingUpgradesStartOSUpgradeFuture, err error) {
+ req, err := client.StartOSUpgradePreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetRollingUpgradesClient", "StartOSUpgrade", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.StartOSUpgradeSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetRollingUpgradesClient", "StartOSUpgrade", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// StartOSUpgradePreparer prepares the StartOSUpgrade request.
+func (client VirtualMachineScaleSetRollingUpgradesClient) StartOSUpgradePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/osRollingUpgrade", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// StartOSUpgradeSender sends the StartOSUpgrade request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetRollingUpgradesClient) StartOSUpgradeSender(req *http.Request) (future VirtualMachineScaleSetRollingUpgradesStartOSUpgradeFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// StartOSUpgradeResponder handles the response to the StartOSUpgrade request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetRollingUpgradesClient) StartOSUpgradeResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesets.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesets.go
new file mode 100644
index 000000000000..9045380d1d1f
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesets.go
@@ -0,0 +1,1356 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// VirtualMachineScaleSetsClient is the compute Client
+type VirtualMachineScaleSetsClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineScaleSetsClient creates an instance of the VirtualMachineScaleSetsClient client.
+func NewVirtualMachineScaleSetsClient(subscriptionID string) VirtualMachineScaleSetsClient {
+ return NewVirtualMachineScaleSetsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineScaleSetsClientWithBaseURI creates an instance of the VirtualMachineScaleSetsClient client.
+func NewVirtualMachineScaleSetsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineScaleSetsClient {
+ return VirtualMachineScaleSetsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// CreateOrUpdate create or update a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set to create or
+// update. parameters is the scale set object.
+func (client VirtualMachineScaleSetsClient) CreateOrUpdate(ctx context.Context, resourceGroupName string, VMScaleSetName string, parameters VirtualMachineScaleSet) (result VirtualMachineScaleSetsCreateOrUpdateFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: parameters,
+ Constraints: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetProperties", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxBatchInstancePercent", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxBatchInstancePercent", Name: validation.InclusiveMaximum, Rule: 100, Chain: nil},
+ {Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxBatchInstancePercent", Name: validation.InclusiveMinimum, Rule: 5, Chain: nil},
+ }},
+ {Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxUnhealthyInstancePercent", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxUnhealthyInstancePercent", Name: validation.InclusiveMaximum, Rule: 100, Chain: nil},
+ {Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxUnhealthyInstancePercent", Name: validation.InclusiveMinimum, Rule: 5, Chain: nil},
+ }},
+ {Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxUnhealthyUpgradedInstancePercent", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxUnhealthyUpgradedInstancePercent", Name: validation.InclusiveMaximum, Rule: 100, Chain: nil},
+ {Target: "parameters.VirtualMachineScaleSetProperties.UpgradePolicy.RollingUpgradePolicy.MaxUnhealthyUpgradedInstancePercent", Name: validation.InclusiveMinimum, Rule: 0, Chain: nil},
+ }},
+ }},
+ }},
+ }}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachineScaleSetsClient", "CreateOrUpdate")
+ }
+
+ req, err := client.CreateOrUpdatePreparer(ctx, resourceGroupName, VMScaleSetName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "CreateOrUpdate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.CreateOrUpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "CreateOrUpdate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// CreateOrUpdatePreparer prepares the CreateOrUpdate request.
+func (client VirtualMachineScaleSetsClient) CreateOrUpdatePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, parameters VirtualMachineScaleSet) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// CreateOrUpdateSender sends the CreateOrUpdate request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) CreateOrUpdateSender(req *http.Request) (future VirtualMachineScaleSetsCreateOrUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated))
+ return
+}
+
+// CreateOrUpdateResponder handles the response to the CreateOrUpdate request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) CreateOrUpdateResponder(resp *http.Response) (result VirtualMachineScaleSet, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusCreated),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Deallocate deallocates specific virtual machines in a VM scale set. Shuts down the virtual machines and releases the
+// compute resources. You are not billed for the compute resources that this virtual machine scale set deallocates.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) Deallocate(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (result VirtualMachineScaleSetsDeallocateFuture, err error) {
+ req, err := client.DeallocatePreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Deallocate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeallocateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Deallocate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeallocatePreparer prepares the Deallocate request.
+func (client VirtualMachineScaleSetsClient) DeallocatePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/deallocate", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ if VMInstanceIDs != nil {
+ preparer = autorest.DecoratePreparer(preparer,
+ autorest.WithJSON(VMInstanceIDs))
+ }
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeallocateSender sends the Deallocate request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) DeallocateSender(req *http.Request) (future VirtualMachineScaleSetsDeallocateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// DeallocateResponder handles the response to the Deallocate request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) DeallocateResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete deletes a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+func (client VirtualMachineScaleSetsClient) Delete(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetsDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client VirtualMachineScaleSetsClient) DeletePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) DeleteSender(req *http.Request) (future VirtualMachineScaleSetsDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// DeleteInstances deletes virtual machines in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) DeleteInstances(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs) (result VirtualMachineScaleSetsDeleteInstancesFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: VMInstanceIDs,
+ Constraints: []validation.Constraint{{Target: "VMInstanceIDs.InstanceIds", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachineScaleSetsClient", "DeleteInstances")
+ }
+
+ req, err := client.DeleteInstancesPreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "DeleteInstances", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteInstancesSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "DeleteInstances", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeleteInstancesPreparer prepares the DeleteInstances request.
+func (client VirtualMachineScaleSetsClient) DeleteInstancesPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/delete", pathParameters),
+ autorest.WithJSON(VMInstanceIDs),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteInstancesSender sends the DeleteInstances request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) DeleteInstancesSender(req *http.Request) (future VirtualMachineScaleSetsDeleteInstancesFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// DeleteInstancesResponder handles the response to the DeleteInstances request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) DeleteInstancesResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ForceRecoveryServiceFabricPlatformUpdateDomainWalk manual platform update domain walk to update virtual machines in
+// a service fabric virtual machine scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+// platformUpdateDomain is the platform update domain for which a manual recovery walk is requested
+func (client VirtualMachineScaleSetsClient) ForceRecoveryServiceFabricPlatformUpdateDomainWalk(ctx context.Context, resourceGroupName string, VMScaleSetName string, platformUpdateDomain int32) (result RecoveryWalkResponse, err error) {
+ req, err := client.ForceRecoveryServiceFabricPlatformUpdateDomainWalkPreparer(ctx, resourceGroupName, VMScaleSetName, platformUpdateDomain)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ForceRecoveryServiceFabricPlatformUpdateDomainWalk", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ForceRecoveryServiceFabricPlatformUpdateDomainWalkSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ForceRecoveryServiceFabricPlatformUpdateDomainWalk", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ForceRecoveryServiceFabricPlatformUpdateDomainWalkResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ForceRecoveryServiceFabricPlatformUpdateDomainWalk", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ForceRecoveryServiceFabricPlatformUpdateDomainWalkPreparer prepares the ForceRecoveryServiceFabricPlatformUpdateDomainWalk request.
+func (client VirtualMachineScaleSetsClient) ForceRecoveryServiceFabricPlatformUpdateDomainWalkPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, platformUpdateDomain int32) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ "platformUpdateDomain": autorest.Encode("query", platformUpdateDomain),
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/forceRecoveryServiceFabricPlatformUpdateDomainWalk", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ForceRecoveryServiceFabricPlatformUpdateDomainWalkSender sends the ForceRecoveryServiceFabricPlatformUpdateDomainWalk request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) ForceRecoveryServiceFabricPlatformUpdateDomainWalkSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ForceRecoveryServiceFabricPlatformUpdateDomainWalkResponder handles the response to the ForceRecoveryServiceFabricPlatformUpdateDomainWalk request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) ForceRecoveryServiceFabricPlatformUpdateDomainWalkResponder(resp *http.Response) (result RecoveryWalkResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get display information about a virtual machine scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+func (client VirtualMachineScaleSetsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSet, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachineScaleSetsClient) GetPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) GetResponder(resp *http.Response) (result VirtualMachineScaleSet, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// GetInstanceView gets the status of a VM scale set instance.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+func (client VirtualMachineScaleSetsClient) GetInstanceView(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetInstanceView, err error) {
+ req, err := client.GetInstanceViewPreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "GetInstanceView", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetInstanceViewSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "GetInstanceView", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetInstanceViewResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "GetInstanceView", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetInstanceViewPreparer prepares the GetInstanceView request.
+func (client VirtualMachineScaleSetsClient) GetInstanceViewPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/instanceView", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetInstanceViewSender sends the GetInstanceView request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) GetInstanceViewSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetInstanceViewResponder handles the response to the GetInstanceView request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) GetInstanceViewResponder(resp *http.Response) (result VirtualMachineScaleSetInstanceView, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List gets a list of all VM scale sets under a resource group.
+//
+// resourceGroupName is the name of the resource group.
+func (client VirtualMachineScaleSetsClient) List(ctx context.Context, resourceGroupName string) (result VirtualMachineScaleSetListResultPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx, resourceGroupName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.vmsslr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.vmsslr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client VirtualMachineScaleSetsClient) ListPreparer(ctx context.Context, resourceGroupName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) ListResponder(resp *http.Response) (result VirtualMachineScaleSetListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client VirtualMachineScaleSetsClient) listNextResults(lastResults VirtualMachineScaleSetListResult) (result VirtualMachineScaleSetListResult, err error) {
+ req, err := lastResults.virtualMachineScaleSetListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachineScaleSetsClient) ListComplete(ctx context.Context, resourceGroupName string) (result VirtualMachineScaleSetListResultIterator, err error) {
+ result.page, err = client.List(ctx, resourceGroupName)
+ return
+}
+
+// ListAll gets a list of all VM Scale Sets in the subscription, regardless of the associated resource group. Use
+// nextLink property in the response to get the next page of VM Scale Sets. Do this till nextLink is null to fetch all
+// the VM Scale Sets.
+func (client VirtualMachineScaleSetsClient) ListAll(ctx context.Context) (result VirtualMachineScaleSetListWithLinkResultPage, err error) {
+ result.fn = client.listAllNextResults
+ req, err := client.ListAllPreparer(ctx)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListAllSender(req)
+ if err != nil {
+ result.vmsslwlr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", resp, "Failure sending request")
+ return
+ }
+
+ result.vmsslwlr, err = client.ListAllResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListAll", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListAllPreparer prepares the ListAll request.
+func (client VirtualMachineScaleSetsClient) ListAllPreparer(ctx context.Context) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/virtualMachineScaleSets", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListAllSender sends the ListAll request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) ListAllSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListAllResponder handles the response to the ListAll request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) ListAllResponder(resp *http.Response) (result VirtualMachineScaleSetListWithLinkResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listAllNextResults retrieves the next set of results, if any.
+func (client VirtualMachineScaleSetsClient) listAllNextResults(lastResults VirtualMachineScaleSetListWithLinkResult) (result VirtualMachineScaleSetListWithLinkResult, err error) {
+ req, err := lastResults.virtualMachineScaleSetListWithLinkResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listAllNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListAllSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listAllNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListAllResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listAllNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListAllComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachineScaleSetsClient) ListAllComplete(ctx context.Context) (result VirtualMachineScaleSetListWithLinkResultIterator, err error) {
+ result.page, err = client.ListAll(ctx)
+ return
+}
+
+// ListSkus gets a list of SKUs available for your VM scale set, including the minimum and maximum VM instances allowed
+// for each SKU.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set.
+func (client VirtualMachineScaleSetsClient) ListSkus(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetListSkusResultPage, err error) {
+ result.fn = client.listSkusNextResults
+ req, err := client.ListSkusPreparer(ctx, resourceGroupName, VMScaleSetName)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSkusSender(req)
+ if err != nil {
+ result.vmsslsr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", resp, "Failure sending request")
+ return
+ }
+
+ result.vmsslsr, err = client.ListSkusResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ListSkus", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListSkusPreparer prepares the ListSkus request.
+func (client VirtualMachineScaleSetsClient) ListSkusPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/skus", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSkusSender sends the ListSkus request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) ListSkusSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListSkusResponder handles the response to the ListSkus request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) ListSkusResponder(resp *http.Response) (result VirtualMachineScaleSetListSkusResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listSkusNextResults retrieves the next set of results, if any.
+func (client VirtualMachineScaleSetsClient) listSkusNextResults(lastResults VirtualMachineScaleSetListSkusResult) (result VirtualMachineScaleSetListSkusResult, err error) {
+ req, err := lastResults.virtualMachineScaleSetListSkusResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listSkusNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSkusSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listSkusNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListSkusResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "listSkusNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListSkusComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachineScaleSetsClient) ListSkusComplete(ctx context.Context, resourceGroupName string, VMScaleSetName string) (result VirtualMachineScaleSetListSkusResultIterator, err error) {
+ result.page, err = client.ListSkus(ctx, resourceGroupName, VMScaleSetName)
+ return
+}
+
+// PowerOff power off (stop) one or more virtual machines in a VM scale set. Note that resources are still attached and
+// you are getting charged for the resources. Instead, use deallocate to release resources and avoid charges.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) PowerOff(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (result VirtualMachineScaleSetsPowerOffFuture, err error) {
+ req, err := client.PowerOffPreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "PowerOff", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.PowerOffSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "PowerOff", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// PowerOffPreparer prepares the PowerOff request.
+func (client VirtualMachineScaleSetsClient) PowerOffPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/poweroff", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ if VMInstanceIDs != nil {
+ preparer = autorest.DecoratePreparer(preparer,
+ autorest.WithJSON(VMInstanceIDs))
+ }
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// PowerOffSender sends the PowerOff request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) PowerOffSender(req *http.Request) (future VirtualMachineScaleSetsPowerOffFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// PowerOffResponder handles the response to the PowerOff request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) PowerOffResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Reimage reimages (upgrade the operating system) one or more virtual machines in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) Reimage(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (result VirtualMachineScaleSetsReimageFuture, err error) {
+ req, err := client.ReimagePreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Reimage", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.ReimageSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Reimage", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// ReimagePreparer prepares the Reimage request.
+func (client VirtualMachineScaleSetsClient) ReimagePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/reimage", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ if VMInstanceIDs != nil {
+ preparer = autorest.DecoratePreparer(preparer,
+ autorest.WithJSON(VMInstanceIDs))
+ }
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ReimageSender sends the Reimage request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) ReimageSender(req *http.Request) (future VirtualMachineScaleSetsReimageFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// ReimageResponder handles the response to the Reimage request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) ReimageResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ReimageAll reimages all the disks ( including data disks ) in the virtual machines in a VM scale set. This operation
+// is only supported for managed disks.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) ReimageAll(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (result VirtualMachineScaleSetsReimageAllFuture, err error) {
+ req, err := client.ReimageAllPreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ReimageAll", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.ReimageAllSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "ReimageAll", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// ReimageAllPreparer prepares the ReimageAll request.
+func (client VirtualMachineScaleSetsClient) ReimageAllPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/reimageall", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ if VMInstanceIDs != nil {
+ preparer = autorest.DecoratePreparer(preparer,
+ autorest.WithJSON(VMInstanceIDs))
+ }
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ReimageAllSender sends the ReimageAll request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) ReimageAllSender(req *http.Request) (future VirtualMachineScaleSetsReimageAllFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// ReimageAllResponder handles the response to the ReimageAll request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) ReimageAllResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Restart restarts one or more virtual machines in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) Restart(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (result VirtualMachineScaleSetsRestartFuture, err error) {
+ req, err := client.RestartPreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Restart", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.RestartSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Restart", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// RestartPreparer prepares the Restart request.
+func (client VirtualMachineScaleSetsClient) RestartPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/restart", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ if VMInstanceIDs != nil {
+ preparer = autorest.DecoratePreparer(preparer,
+ autorest.WithJSON(VMInstanceIDs))
+ }
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// RestartSender sends the Restart request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) RestartSender(req *http.Request) (future VirtualMachineScaleSetsRestartFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// RestartResponder handles the response to the Restart request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) RestartResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Start starts one or more virtual machines in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) Start(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (result VirtualMachineScaleSetsStartFuture, err error) {
+ req, err := client.StartPreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Start", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.StartSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Start", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// StartPreparer prepares the Start request.
+func (client VirtualMachineScaleSetsClient) StartPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs *VirtualMachineScaleSetVMInstanceIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/start", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ if VMInstanceIDs != nil {
+ preparer = autorest.DecoratePreparer(preparer,
+ autorest.WithJSON(VMInstanceIDs))
+ }
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// StartSender sends the Start request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) StartSender(req *http.Request) (future VirtualMachineScaleSetsStartFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// StartResponder handles the response to the Start request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) StartResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Update update a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set to create or
+// update. parameters is the scale set object.
+func (client VirtualMachineScaleSetsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, parameters VirtualMachineScaleSetUpdate) (result VirtualMachineScaleSetsUpdateFuture, err error) {
+ req, err := client.UpdatePreparer(ctx, resourceGroupName, VMScaleSetName, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Update", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.UpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "Update", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// UpdatePreparer prepares the Update request.
+func (client VirtualMachineScaleSetsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, parameters VirtualMachineScaleSetUpdate) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPatch(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// UpdateSender sends the Update request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) UpdateSender(req *http.Request) (future VirtualMachineScaleSetsUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK))
+ return
+}
+
+// UpdateResponder handles the response to the Update request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) UpdateResponder(resp *http.Response) (result VirtualMachineScaleSet, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// UpdateInstances upgrades one or more virtual machines to the latest SKU set in the VM scale set model.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. VMInstanceIDs
+// is a list of virtual machine instance IDs from the VM scale set.
+func (client VirtualMachineScaleSetsClient) UpdateInstances(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs) (result VirtualMachineScaleSetsUpdateInstancesFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: VMInstanceIDs,
+ Constraints: []validation.Constraint{{Target: "VMInstanceIDs.InstanceIds", Name: validation.Null, Rule: true, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachineScaleSetsClient", "UpdateInstances")
+ }
+
+ req, err := client.UpdateInstancesPreparer(ctx, resourceGroupName, VMScaleSetName, VMInstanceIDs)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "UpdateInstances", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.UpdateInstancesSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetsClient", "UpdateInstances", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// UpdateInstancesPreparer prepares the UpdateInstances request.
+func (client VirtualMachineScaleSetsClient) UpdateInstancesPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, VMInstanceIDs VirtualMachineScaleSetVMInstanceRequiredIDs) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/manualupgrade", pathParameters),
+ autorest.WithJSON(VMInstanceIDs),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// UpdateInstancesSender sends the UpdateInstances request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetsClient) UpdateInstancesSender(req *http.Request) (future VirtualMachineScaleSetsUpdateInstancesFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// UpdateInstancesResponder handles the response to the UpdateInstances request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetsClient) UpdateInstancesResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetvms.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetvms.go
new file mode 100644
index 000000000000..9a55b534b5a8
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinescalesetvms.go
@@ -0,0 +1,870 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// VirtualMachineScaleSetVMsClient is the compute Client
+type VirtualMachineScaleSetVMsClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineScaleSetVMsClient creates an instance of the VirtualMachineScaleSetVMsClient client.
+func NewVirtualMachineScaleSetVMsClient(subscriptionID string) VirtualMachineScaleSetVMsClient {
+ return NewVirtualMachineScaleSetVMsClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineScaleSetVMsClientWithBaseURI creates an instance of the VirtualMachineScaleSetVMsClient client.
+func NewVirtualMachineScaleSetVMsClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineScaleSetVMsClient {
+ return VirtualMachineScaleSetVMsClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// Deallocate deallocates a specific virtual machine in a VM scale set. Shuts down the virtual machine and releases the
+// compute resources it uses. You are not billed for the compute resources of this virtual machine once it is
+// deallocated.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) Deallocate(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMsDeallocateFuture, err error) {
+ req, err := client.DeallocatePreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Deallocate", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeallocateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Deallocate", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeallocatePreparer prepares the Deallocate request.
+func (client VirtualMachineScaleSetVMsClient) DeallocatePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/deallocate", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeallocateSender sends the Deallocate request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) DeallocateSender(req *http.Request) (future VirtualMachineScaleSetVMsDeallocateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// DeallocateResponder handles the response to the Deallocate request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) DeallocateResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Delete deletes a virtual machine from a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) Delete(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMsDeleteFuture, err error) {
+ req, err := client.DeletePreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Delete", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.DeleteSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Delete", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// DeletePreparer prepares the Delete request.
+func (client VirtualMachineScaleSetVMsClient) DeletePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsDelete(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// DeleteSender sends the Delete request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) DeleteSender(req *http.Request) (future VirtualMachineScaleSetVMsDeleteFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent))
+ return
+}
+
+// DeleteResponder handles the response to the Delete request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) DeleteResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted, http.StatusNoContent),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Get gets a virtual machine from a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) Get(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVM, err error) {
+ req, err := client.GetPreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Get", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Get", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Get", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetPreparer prepares the Get request.
+func (client VirtualMachineScaleSetVMsClient) GetPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetSender sends the Get request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) GetSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetResponder handles the response to the Get request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) GetResponder(resp *http.Response) (result VirtualMachineScaleSetVM, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// GetInstanceView gets the status of a virtual machine from a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) GetInstanceView(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMInstanceView, err error) {
+ req, err := client.GetInstanceViewPreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "GetInstanceView", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.GetInstanceViewSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "GetInstanceView", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.GetInstanceViewResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "GetInstanceView", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// GetInstanceViewPreparer prepares the GetInstanceView request.
+func (client VirtualMachineScaleSetVMsClient) GetInstanceViewPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/instanceView", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// GetInstanceViewSender sends the GetInstanceView request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) GetInstanceViewSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// GetInstanceViewResponder handles the response to the GetInstanceView request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) GetInstanceViewResponder(resp *http.Response) (result VirtualMachineScaleSetVMInstanceView, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// List gets a list of all virtual machines in a VM scale sets.
+//
+// resourceGroupName is the name of the resource group. virtualMachineScaleSetName is the name of the VM scale set.
+// filter is the filter to apply to the operation. selectParameter is the list parameters. expand is the expand
+// expression to apply to the operation.
+func (client VirtualMachineScaleSetVMsClient) List(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (result VirtualMachineScaleSetVMListResultPage, err error) {
+ result.fn = client.listNextResults
+ req, err := client.ListPreparer(ctx, resourceGroupName, virtualMachineScaleSetName, filter, selectParameter, expand)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.vmssvlr.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result.vmssvlr, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client VirtualMachineScaleSetVMsClient) ListPreparer(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "virtualMachineScaleSetName": autorest.Encode("path", virtualMachineScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+ if len(filter) > 0 {
+ queryParameters["$filter"] = autorest.Encode("query", filter)
+ }
+ if len(selectParameter) > 0 {
+ queryParameters["$select"] = autorest.Encode("query", selectParameter)
+ }
+ if len(expand) > 0 {
+ queryParameters["$expand"] = autorest.Encode("query", expand)
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{virtualMachineScaleSetName}/virtualMachines", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) ListResponder(resp *http.Response) (result VirtualMachineScaleSetVMListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// listNextResults retrieves the next set of results, if any.
+func (client VirtualMachineScaleSetVMsClient) listNextResults(lastResults VirtualMachineScaleSetVMListResult) (result VirtualMachineScaleSetVMListResult, err error) {
+ req, err := lastResults.virtualMachineScaleSetVMListResultPreparer()
+ if err != nil {
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "listNextResults", nil, "Failure preparing next results request")
+ }
+ if req == nil {
+ return
+ }
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ return result, autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "listNextResults", resp, "Failure sending next results request")
+ }
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "listNextResults", resp, "Failure responding to next results request")
+ }
+ return
+}
+
+// ListComplete enumerates all values, automatically crossing page boundaries as required.
+func (client VirtualMachineScaleSetVMsClient) ListComplete(ctx context.Context, resourceGroupName string, virtualMachineScaleSetName string, filter string, selectParameter string, expand string) (result VirtualMachineScaleSetVMListResultIterator, err error) {
+ result.page, err = client.List(ctx, resourceGroupName, virtualMachineScaleSetName, filter, selectParameter, expand)
+ return
+}
+
+// PowerOff power off (stop) a virtual machine in a VM scale set. Note that resources are still attached and you are
+// getting charged for the resources. Instead, use deallocate to release resources and avoid charges.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) PowerOff(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMsPowerOffFuture, err error) {
+ req, err := client.PowerOffPreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "PowerOff", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.PowerOffSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "PowerOff", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// PowerOffPreparer prepares the PowerOff request.
+func (client VirtualMachineScaleSetVMsClient) PowerOffPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/poweroff", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// PowerOffSender sends the PowerOff request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) PowerOffSender(req *http.Request) (future VirtualMachineScaleSetVMsPowerOffFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// PowerOffResponder handles the response to the PowerOff request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) PowerOffResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Reimage reimages (upgrade the operating system) a specific virtual machine in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) Reimage(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMsReimageFuture, err error) {
+ req, err := client.ReimagePreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Reimage", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.ReimageSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Reimage", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// ReimagePreparer prepares the Reimage request.
+func (client VirtualMachineScaleSetVMsClient) ReimagePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/reimage", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ReimageSender sends the Reimage request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) ReimageSender(req *http.Request) (future VirtualMachineScaleSetVMsReimageFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// ReimageResponder handles the response to the Reimage request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) ReimageResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// ReimageAll allows you to re-image all the disks ( including data disks ) in the a VM scale set instance. This
+// operation is only supported for managed disks.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) ReimageAll(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMsReimageAllFuture, err error) {
+ req, err := client.ReimageAllPreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "ReimageAll", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.ReimageAllSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "ReimageAll", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// ReimageAllPreparer prepares the ReimageAll request.
+func (client VirtualMachineScaleSetVMsClient) ReimageAllPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/reimageall", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ReimageAllSender sends the ReimageAll request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) ReimageAllSender(req *http.Request) (future VirtualMachineScaleSetVMsReimageAllFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// ReimageAllResponder handles the response to the ReimageAll request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) ReimageAllResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Restart restarts a virtual machine in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) Restart(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMsRestartFuture, err error) {
+ req, err := client.RestartPreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Restart", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.RestartSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Restart", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// RestartPreparer prepares the Restart request.
+func (client VirtualMachineScaleSetVMsClient) RestartPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/restart", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// RestartSender sends the Restart request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) RestartSender(req *http.Request) (future VirtualMachineScaleSetVMsRestartFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// RestartResponder handles the response to the Restart request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) RestartResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Start starts a virtual machine in a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set. instanceID is
+// the instance ID of the virtual machine.
+func (client VirtualMachineScaleSetVMsClient) Start(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (result VirtualMachineScaleSetVMsStartFuture, err error) {
+ req, err := client.StartPreparer(ctx, resourceGroupName, VMScaleSetName, instanceID)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Start", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.StartSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Start", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// StartPreparer prepares the Start request.
+func (client VirtualMachineScaleSetVMsClient) StartPreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsPost(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}/start", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// StartSender sends the Start request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) StartSender(req *http.Request) (future VirtualMachineScaleSetVMsStartFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// StartResponder handles the response to the Start request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) StartResponder(resp *http.Response) (result OperationStatusResponse, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
+
+// Update updates a virtual machine of a VM scale set.
+//
+// resourceGroupName is the name of the resource group. VMScaleSetName is the name of the VM scale set where the
+// extension should be create or updated. instanceID is the instance ID of the virtual machine. parameters is
+// parameters supplied to the Update Virtual Machine Scale Sets VM operation.
+func (client VirtualMachineScaleSetVMsClient) Update(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters VirtualMachineScaleSetVM) (result VirtualMachineScaleSetVMsUpdateFuture, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: parameters,
+ Constraints: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetVMProperties", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk.EncryptionSettings", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk.EncryptionSettings.DiskEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk.EncryptionSettings.DiskEncryptionKey.SecretURL", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk.EncryptionSettings.DiskEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ {Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk.EncryptionSettings.KeyEncryptionKey", Name: validation.Null, Rule: false,
+ Chain: []validation.Constraint{{Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk.EncryptionSettings.KeyEncryptionKey.KeyURL", Name: validation.Null, Rule: true, Chain: nil},
+ {Target: "parameters.VirtualMachineScaleSetVMProperties.StorageProfile.OsDisk.EncryptionSettings.KeyEncryptionKey.SourceVault", Name: validation.Null, Rule: true, Chain: nil},
+ }},
+ }},
+ }},
+ }},
+ }}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachineScaleSetVMsClient", "Update")
+ }
+
+ req, err := client.UpdatePreparer(ctx, resourceGroupName, VMScaleSetName, instanceID, parameters)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Update", nil, "Failure preparing request")
+ return
+ }
+
+ result, err = client.UpdateSender(req)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineScaleSetVMsClient", "Update", result.Response(), "Failure sending request")
+ return
+ }
+
+ return
+}
+
+// UpdatePreparer prepares the Update request.
+func (client VirtualMachineScaleSetVMsClient) UpdatePreparer(ctx context.Context, resourceGroupName string, VMScaleSetName string, instanceID string, parameters VirtualMachineScaleSetVM) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "instanceId": autorest.Encode("path", instanceID),
+ "resourceGroupName": autorest.Encode("path", resourceGroupName),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ "vmScaleSetName": autorest.Encode("path", VMScaleSetName),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsJSON(),
+ autorest.AsPut(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}/virtualmachines/{instanceId}", pathParameters),
+ autorest.WithJSON(parameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// UpdateSender sends the Update request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineScaleSetVMsClient) UpdateSender(req *http.Request) (future VirtualMachineScaleSetVMsUpdateFuture, err error) {
+ sender := autorest.DecorateSender(client, azure.DoRetryWithRegistration(client.Client))
+ future.Future = azure.NewFuture(req)
+ future.req = req
+ _, err = future.Done(sender)
+ if err != nil {
+ return
+ }
+ err = autorest.Respond(future.Response(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted))
+ return
+}
+
+// UpdateResponder handles the response to the Update request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineScaleSetVMsClient) UpdateResponder(resp *http.Response) (result VirtualMachineScaleSetVM, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK, http.StatusAccepted),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinesizes.go b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinesizes.go
new file mode 100644
index 000000000000..22b8756043be
--- /dev/null
+++ b/vendor/github.com/Azure/azure-sdk-for-go/services/compute/mgmt/2017-12-01/compute/virtualmachinesizes.go
@@ -0,0 +1,112 @@
+package compute
+
+// Copyright (c) Microsoft and contributors. All rights reserved.
+//
+// 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.
+//
+// Code generated by Microsoft (R) AutoRest Code Generator.
+// Changes may cause incorrect behavior and will be lost if the code is regenerated.
+
+import (
+ "context"
+ "github.com/Azure/go-autorest/autorest"
+ "github.com/Azure/go-autorest/autorest/azure"
+ "github.com/Azure/go-autorest/autorest/validation"
+ "net/http"
+)
+
+// VirtualMachineSizesClient is the compute Client
+type VirtualMachineSizesClient struct {
+ BaseClient
+}
+
+// NewVirtualMachineSizesClient creates an instance of the VirtualMachineSizesClient client.
+func NewVirtualMachineSizesClient(subscriptionID string) VirtualMachineSizesClient {
+ return NewVirtualMachineSizesClientWithBaseURI(DefaultBaseURI, subscriptionID)
+}
+
+// NewVirtualMachineSizesClientWithBaseURI creates an instance of the VirtualMachineSizesClient client.
+func NewVirtualMachineSizesClientWithBaseURI(baseURI string, subscriptionID string) VirtualMachineSizesClient {
+ return VirtualMachineSizesClient{NewWithBaseURI(baseURI, subscriptionID)}
+}
+
+// List lists all available virtual machine sizes for a subscription in a location.
+//
+// location is the location upon which virtual-machine-sizes is queried.
+func (client VirtualMachineSizesClient) List(ctx context.Context, location string) (result VirtualMachineSizeListResult, err error) {
+ if err := validation.Validate([]validation.Validation{
+ {TargetValue: location,
+ Constraints: []validation.Constraint{{Target: "location", Name: validation.Pattern, Rule: `^[-\w\._]+$`, Chain: nil}}}}); err != nil {
+ return result, validation.NewErrorWithValidationError(err, "compute.VirtualMachineSizesClient", "List")
+ }
+
+ req, err := client.ListPreparer(ctx, location)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", nil, "Failure preparing request")
+ return
+ }
+
+ resp, err := client.ListSender(req)
+ if err != nil {
+ result.Response = autorest.Response{Response: resp}
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", resp, "Failure sending request")
+ return
+ }
+
+ result, err = client.ListResponder(resp)
+ if err != nil {
+ err = autorest.NewErrorWithError(err, "compute.VirtualMachineSizesClient", "List", resp, "Failure responding to request")
+ }
+
+ return
+}
+
+// ListPreparer prepares the List request.
+func (client VirtualMachineSizesClient) ListPreparer(ctx context.Context, location string) (*http.Request, error) {
+ pathParameters := map[string]interface{}{
+ "location": autorest.Encode("path", location),
+ "subscriptionId": autorest.Encode("path", client.SubscriptionID),
+ }
+
+ const APIVersion = "2017-12-01"
+ queryParameters := map[string]interface{}{
+ "api-version": APIVersion,
+ }
+
+ preparer := autorest.CreatePreparer(
+ autorest.AsGet(),
+ autorest.WithBaseURL(client.BaseURI),
+ autorest.WithPathParameters("/subscriptions/{subscriptionId}/providers/Microsoft.Compute/locations/{location}/vmSizes", pathParameters),
+ autorest.WithQueryParameters(queryParameters))
+ return preparer.Prepare((&http.Request{}).WithContext(ctx))
+}
+
+// ListSender sends the List request. The method will close the
+// http.Response Body if it receives an error.
+func (client VirtualMachineSizesClient) ListSender(req *http.Request) (*http.Response, error) {
+ return autorest.SendWithSender(client, req,
+ azure.DoRetryWithRegistration(client.Client))
+}
+
+// ListResponder handles the response to the List request. The method always
+// closes the http.Response Body.
+func (client VirtualMachineSizesClient) ListResponder(resp *http.Response) (result VirtualMachineSizeListResult, err error) {
+ err = autorest.Respond(
+ resp,
+ client.ByInspecting(),
+ azure.WithErrorUnlessStatusCode(http.StatusOK),
+ autorest.ByUnmarshallingJSON(&result),
+ autorest.ByClosing())
+ result.Response = autorest.Response{Response: resp}
+ return
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/README.md b/vendor/github.com/Azure/azure-sdk-for-go/storage/README.md
index 6dc348e02af2..85a0482d6ec6 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/README.md
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/README.md
@@ -6,7 +6,7 @@ This package includes support for [Azure Storage Emulator](https://azure.microso
# Getting Started
- 1. Go get the SDK `go get -u github.com/Azure/azure-sdk-for=go/storage`
+ 1. Go get the SDK `go get -u github.com/Azure/azure-sdk-for-go/storage`
1. If you don't already have one, [create a Storage Account](https://docs.microsoft.com/en-us/azure/storage/storage-create-storage-account).
- Take note of your Azure Storage Account Name and Azure Storage Account Key. They'll both be necessary for using this library.
- This option is production ready, but can also be used for development.
@@ -70,4 +70,4 @@ ok, err = queue2.Exists()
c.Assert(err, chk.IsNil)
c.Assert(ok, chk.Equals, true)
}
-```
\ No newline at end of file
+```
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go
index a9d3cfccb685..5047bfbb24b8 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/blob.go
@@ -549,27 +549,7 @@ func (b *Blob) GetMetadata(options *GetBlobMetadataOptions) error {
}
func (b *Blob) writeMetadata(h http.Header) {
- metadata := make(map[string]string)
- for k, v := range h {
- // Can't trust CanonicalHeaderKey() to munge case
- // reliably. "_" is allowed in identifiers:
- // https://msdn.microsoft.com/en-us/library/azure/dd179414.aspx
- // https://msdn.microsoft.com/library/aa664670(VS.71).aspx
- // http://tools.ietf.org/html/rfc7230#section-3.2
- // ...but "_" is considered invalid by
- // CanonicalMIMEHeaderKey in
- // https://golang.org/src/net/textproto/reader.go?s=14615:14659#L542
- // so k can be "X-Ms-Meta-Lol" or "x-ms-meta-lol_rofl".
- k = strings.ToLower(k)
- if len(v) == 0 || !strings.HasPrefix(k, strings.ToLower(userDefinedMetadataHeaderPrefix)) {
- continue
- }
- // metadata["lol"] = content of the last X-Ms-Meta-Lol header
- k = k[len(userDefinedMetadataHeaderPrefix):]
- metadata[k] = v[len(v)-1]
- }
-
- b.Metadata = BlobMetadata(metadata)
+ b.Metadata = BlobMetadata(writeMetadata(h))
}
// DeleteBlobOptions includes the options for a delete blob operation
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/blobserviceclient.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/blobserviceclient.go
index 8fe21b0cfd98..e6b9704ee183 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/blobserviceclient.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/blobserviceclient.go
@@ -15,6 +15,7 @@ package storage
// limitations under the License.
import (
+ "encoding/xml"
"fmt"
"net/http"
"net/url"
@@ -85,21 +86,53 @@ func (b BlobStorageClient) ListContainers(params ListContainersParameters) (*Con
uri := b.client.getEndpoint(blobServiceName, "", q)
headers := b.client.getStandardHeaders()
- var out ContainerListResponse
+ type ContainerAlias struct {
+ bsc *BlobStorageClient
+ Name string `xml:"Name"`
+ Properties ContainerProperties `xml:"Properties"`
+ Metadata BlobMetadata
+ sasuri url.URL
+ }
+ type ContainerListResponseAlias struct {
+ XMLName xml.Name `xml:"EnumerationResults"`
+ Xmlns string `xml:"xmlns,attr"`
+ Prefix string `xml:"Prefix"`
+ Marker string `xml:"Marker"`
+ NextMarker string `xml:"NextMarker"`
+ MaxResults int64 `xml:"MaxResults"`
+ Containers []ContainerAlias `xml:"Containers>Container"`
+ }
+
+ var outAlias ContainerListResponseAlias
resp, err := b.client.exec(http.MethodGet, uri, headers, nil, b.auth)
if err != nil {
return nil, err
}
defer resp.body.Close()
- err = xmlUnmarshal(resp.body, &out)
+ err = xmlUnmarshal(resp.body, &outAlias)
if err != nil {
return nil, err
}
- // assign our client to the newly created Container objects
- for i := range out.Containers {
- out.Containers[i].bsc = &b
+ out := ContainerListResponse{
+ XMLName: outAlias.XMLName,
+ Xmlns: outAlias.Xmlns,
+ Prefix: outAlias.Prefix,
+ Marker: outAlias.Marker,
+ NextMarker: outAlias.NextMarker,
+ MaxResults: outAlias.MaxResults,
+ Containers: make([]Container, len(outAlias.Containers)),
+ }
+ for i, cnt := range outAlias.Containers {
+ out.Containers[i] = Container{
+ bsc: &b,
+ Name: cnt.Name,
+ Properties: cnt.Properties,
+ Metadata: map[string]string(cnt.Metadata),
+ sasuri: cnt.sasuri,
+ }
}
+
return &out, err
}
@@ -124,3 +157,26 @@ func (p ListContainersParameters) getParameters() url.Values {
return out
}
+
+func writeMetadata(h http.Header) map[string]string {
+ metadata := make(map[string]string)
+ for k, v := range h {
+ // Can't trust CanonicalHeaderKey() to munge case
+ // reliably. "_" is allowed in identifiers:
+ // https://msdn.microsoft.com/en-us/library/azure/dd179414.aspx
+ // https://msdn.microsoft.com/library/aa664670(VS.71).aspx
+ // http://tools.ietf.org/html/rfc7230#section-3.2
+ // ...but "_" is considered invalid by
+ // CanonicalMIMEHeaderKey in
+ // https://golang.org/src/net/textproto/reader.go?s=14615:14659#L542
+ // so k can be "X-Ms-Meta-Lol" or "x-ms-meta-lol_rofl".
+ k = strings.ToLower(k)
+ if len(v) == 0 || !strings.HasPrefix(k, strings.ToLower(userDefinedMetadataHeaderPrefix)) {
+ continue
+ }
+ // metadata["lol"] = content of the last X-Ms-Meta-Lol header
+ k = k[len(userDefinedMetadataHeaderPrefix):]
+ metadata[k] = v[len(v)-1]
+ }
+ return metadata
+}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go
index 8f6cd95da718..7d502306d81c 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/client.go
@@ -31,6 +31,7 @@ import (
"net/url"
"regexp"
"runtime"
+ "strconv"
"strings"
"time"
@@ -69,6 +70,17 @@ const (
userAgentHeader = "User-Agent"
userDefinedMetadataHeaderPrefix = "x-ms-meta-"
+
+ connectionStringAccountName = "accountname"
+ connectionStringAccountKey = "accountkey"
+ connectionStringEndpointSuffix = "endpointsuffix"
+ connectionStringEndpointProtocol = "defaultendpointsprotocol"
+
+ connectionStringBlobEndpoint = "blobendpoint"
+ connectionStringFileEndpoint = "fileendpoint"
+ connectionStringQueueEndpoint = "queueendpoint"
+ connectionStringTableEndpoint = "tableendpoint"
+ connectionStringSAS = "sharedaccesssignature"
)
var (
@@ -204,6 +216,55 @@ func (e UnexpectedStatusCodeError) Got() int {
return e.got
}
+// NewClientFromConnectionString creates a Client from the connection string.
+func NewClientFromConnectionString(input string) (Client, error) {
+ // build a map of connection string key/value pairs
+ parts := map[string]string{}
+ for _, pair := range strings.Split(input, ";") {
+ if pair == "" {
+ continue
+ }
+
+ equalDex := strings.IndexByte(pair, '=')
+ if equalDex <= 0 {
+ return Client{}, fmt.Errorf("Invalid connection segment %q", pair)
+ }
+
+ value := strings.TrimSpace(pair[equalDex+1:])
+ key := strings.TrimSpace(strings.ToLower(pair[:equalDex]))
+ parts[key] = value
+ }
+
+ // TODO: validate parameter sets?
+
+ if parts[connectionStringAccountName] == StorageEmulatorAccountName {
+ return NewEmulatorClient()
+ }
+
+ if parts[connectionStringSAS] != "" {
+ endpoint := ""
+ if parts[connectionStringBlobEndpoint] != "" {
+ endpoint = parts[connectionStringBlobEndpoint]
+ } else if parts[connectionStringFileEndpoint] != "" {
+ endpoint = parts[connectionStringFileEndpoint]
+ } else if parts[connectionStringQueueEndpoint] != "" {
+ endpoint = parts[connectionStringQueueEndpoint]
+ } else {
+ endpoint = parts[connectionStringTableEndpoint]
+ }
+
+ return NewAccountSASClientFromEndpointToken(endpoint, parts[connectionStringSAS])
+ }
+
+ useHTTPS := defaultUseHTTPS
+ if parts[connectionStringEndpointProtocol] != "" {
+ useHTTPS = parts[connectionStringEndpointProtocol] == "https"
+ }
+
+ return NewClient(parts[connectionStringAccountName], parts[connectionStringAccountKey],
+ parts[connectionStringEndpointSuffix], DefaultAPIVersion, useHTTPS)
+}
+
// NewBasicClient constructs a Client with given storage service name and
// key.
func NewBasicClient(accountName, accountKey string) (Client, error) {
@@ -285,6 +346,47 @@ func NewAccountSASClient(account string, token url.Values, env azure.Environment
return c
}
+// NewAccountSASClientFromEndpointToken constructs a client that uses accountSAS authorization
+// for its operations using the specified endpoint and SAS token.
+func NewAccountSASClientFromEndpointToken(endpoint string, sasToken string) (Client, error) {
+ u, err := url.Parse(endpoint)
+ if err != nil {
+ return Client{}, err
+ }
+
+ token, err := url.ParseQuery(sasToken)
+ if err != nil {
+ return Client{}, err
+ }
+
+ // the host name will look something like this
+ // - foo.blob.core.windows.net
+ // "foo" is the account name
+ // "core.windows.net" is the baseURL
+
+ // find the first dot to get account name
+ i1 := strings.IndexByte(u.Host, '.')
+ if i1 < 0 {
+ return Client{}, fmt.Errorf("failed to find '.' in %s", u.Host)
+ }
+
+ // now find the second dot to get the base URL
+ i2 := strings.IndexByte(u.Host[i1+1:], '.')
+ if i2 < 0 {
+ return Client{}, fmt.Errorf("failed to find '.' in %s", u.Host[i1+1:])
+ }
+
+ c := newSASClient()
+ c.accountSASToken = token
+ c.accountName = u.Host[:i1]
+ c.baseURL = u.Host[i1+i2+2:]
+
+ // Get API version and protocol from token
+ c.apiVersion = token.Get("sv")
+ c.useHTTPS = token.Get("spr") == "https"
+ return c, nil
+}
+
func newSASClient() Client {
c := Client{
HTTPClient: http.DefaultClient,
@@ -613,12 +715,13 @@ func (c Client) exec(verb, url string, headers map[string]string, body io.Reader
return nil, errors.New("azure/storage: error creating request: " + err.Error())
}
- // if a body was provided ensure that the content length was set.
- // http.NewRequest() will automatically do this for a handful of types
- // and for those that it doesn't we will handle here.
- if body != nil && req.ContentLength < 1 {
- if lr, ok := body.(*io.LimitedReader); ok {
- setContentLengthFromLimitedReader(req, lr)
+ // http.NewRequest() will automatically set req.ContentLength for a handful of types
+ // otherwise we will handle here.
+ if req.ContentLength < 1 {
+ if clstr, ok := headers["Content-Length"]; ok {
+ if cl, err := strconv.ParseInt(clstr, 10, 64); err == nil {
+ req.ContentLength = cl
+ }
}
}
@@ -626,6 +729,13 @@ func (c Client) exec(verb, url string, headers map[string]string, body io.Reader
req.Header[k] = append(req.Header[k], v) // Must bypass case munging present in `Add` by using map functions directly. See https://github.com/Azure/azure-sdk-for-go/issues/645
}
+ if c.isAccountSASClient() {
+ // append the SAS token to the query params
+ v := req.URL.Query()
+ v = mergeParams(v, c.accountSASToken)
+ req.URL.RawQuery = v.Encode()
+ }
+
resp, err := c.Sender.Send(&c, req)
if err != nil {
return nil, err
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/container.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/container.go
index 8963c7a89b37..38463bb67f0d 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/container.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/container.go
@@ -301,9 +301,6 @@ func (c *Container) Exists() (bool, error) {
uri = newURI.String()
} else {
- if c.bsc.client.isAccountSASClient() {
- q = mergeParams(q, c.bsc.client.accountSASToken)
- }
uri = c.bsc.client.getEndpoint(blobServiceName, c.buildPath(), q)
}
headers := c.bsc.client.getStandardHeaders()
@@ -489,9 +486,6 @@ func (c *Container) ListBlobs(params ListBlobsParameters) (BlobListResponse, err
newURI.RawQuery = q.Encode()
uri = newURI.String()
} else {
- if c.bsc.client.isAccountSASClient() {
- q = mergeParams(q, c.bsc.client.accountSASToken)
- }
uri = c.bsc.client.getEndpoint(blobServiceName, c.buildPath(), q)
}
@@ -512,6 +506,81 @@ func (c *Container) ListBlobs(params ListBlobsParameters) (BlobListResponse, err
return out, err
}
+// ContainerMetadataOptions includes options for container metadata operations
+type ContainerMetadataOptions struct {
+ Timeout uint
+ LeaseID string `header:"x-ms-lease-id"`
+ RequestID string `header:"x-ms-client-request-id"`
+}
+
+// SetMetadata replaces the metadata for the specified container.
+//
+// Some keys may be converted to Camel-Case before sending. All keys
+// are returned in lower case by GetBlobMetadata. HTTP header names
+// are case-insensitive so case munging should not matter to other
+// applications either.
+//
+// See https://docs.microsoft.com/en-us/rest/api/storageservices/set-container-metadata
+func (c *Container) SetMetadata(options *ContainerMetadataOptions) error {
+ params := url.Values{
+ "comp": {"metadata"},
+ "restype": {"container"},
+ }
+ headers := c.bsc.client.getStandardHeaders()
+ headers = c.bsc.client.addMetadataToHeaders(headers, c.Metadata)
+
+ if options != nil {
+ params = addTimeout(params, options.Timeout)
+ headers = mergeHeaders(headers, headersFromStruct(*options))
+ }
+
+ uri := c.bsc.client.getEndpoint(blobServiceName, c.buildPath(), params)
+
+ resp, err := c.bsc.client.exec(http.MethodPut, uri, headers, nil, c.bsc.auth)
+ if err != nil {
+ return err
+ }
+ readAndCloseBody(resp.body)
+ return checkRespCode(resp.statusCode, []int{http.StatusOK})
+}
+
+// GetMetadata returns all user-defined metadata for the specified container.
+//
+// All metadata keys will be returned in lower case. (HTTP header
+// names are case-insensitive.)
+//
+// See https://docs.microsoft.com/en-us/rest/api/storageservices/get-container-metadata
+func (c *Container) GetMetadata(options *ContainerMetadataOptions) error {
+ params := url.Values{
+ "comp": {"metadata"},
+ "restype": {"container"},
+ }
+ headers := c.bsc.client.getStandardHeaders()
+
+ if options != nil {
+ params = addTimeout(params, options.Timeout)
+ headers = mergeHeaders(headers, headersFromStruct(*options))
+ }
+
+ uri := c.bsc.client.getEndpoint(blobServiceName, c.buildPath(), params)
+
+ resp, err := c.bsc.client.exec(http.MethodGet, uri, headers, nil, c.bsc.auth)
+ if err != nil {
+ return err
+ }
+ readAndCloseBody(resp.body)
+ if err := checkRespCode(resp.statusCode, []int{http.StatusOK}); err != nil {
+ return err
+ }
+
+ c.writeMetadata(resp.headers)
+ return nil
+}
+
+func (c *Container) writeMetadata(h http.Header) {
+ c.Metadata = writeMetadata(h)
+}
+
func generateContainerACLpayload(policies []ContainerAccessPolicy) (io.Reader, int, error) {
sil := SignedIdentifiers{
SignedIdentifiers: []SignedIdentifier{},
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/entity.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/entity.go
index 9668ea669494..4533d7d5edfc 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/entity.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/entity.go
@@ -26,7 +26,7 @@ import (
"strings"
"time"
- "github.com/satori/uuid"
+ "github.com/satori/go.uuid"
)
// Annotating as secure for gas scanning
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/pageblob.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/pageblob.go
index c59fd4b50b9d..f07166521696 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/pageblob.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/pageblob.go
@@ -87,10 +87,10 @@ func (b *Blob) modifyRange(blobRange BlobRange, bytes io.Reader, options *PutPag
return errors.New("the value for rangeEnd must be greater than or equal to rangeStart")
}
if blobRange.Start%512 != 0 {
- return errors.New("the value for rangeStart must be a modulus of 512")
+ return errors.New("the value for rangeStart must be a multiple of 512")
}
if blobRange.End%512 != 511 {
- return errors.New("the value for rangeEnd must be a modulus of 511")
+ return errors.New("the value for rangeEnd must be a multiple of 512 - 1")
}
params := url.Values{"comp": {"page"}}
@@ -147,7 +147,7 @@ func (b *Blob) GetPageRanges(options *GetPageRangesOptions) (GetPageRangesRespon
params = addTimeout(params, options.Timeout)
params = addSnapshot(params, options.Snapshot)
if options.PreviousSnapshot != nil {
- params.Add("prevsnapshot", timeRfc1123Formatted(*options.PreviousSnapshot))
+ params.Add("prevsnapshot", timeRFC3339Formatted(*options.PreviousSnapshot))
}
if options.Range != nil {
headers["Range"] = options.Range.String()
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/table_batch.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/table_batch.go
index 3f882417c65a..d1d75a2eb1a5 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/table_batch.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/table_batch.go
@@ -26,7 +26,7 @@ import (
"sort"
"strings"
- "github.com/satori/uuid"
+ "github.com/marstr/guid"
)
// Operation type. Insert, Delete, Replace etc.
@@ -131,14 +131,26 @@ func (t *TableBatch) MergeEntity(entity *Entity) {
// the changesets.
// As per document https://docs.microsoft.com/en-us/rest/api/storageservices/fileservices/performing-entity-group-transactions
func (t *TableBatch) ExecuteBatch() error {
- changesetBoundary := fmt.Sprintf("changeset_%s", uuid.NewV1())
+
+ // Using `github.com/marstr/guid` is in response to issue #947 (https://github.com/Azure/azure-sdk-for-go/issues/947).
+ id, err := guid.NewGUIDs(guid.CreationStrategyVersion1)
+ if err != nil {
+ return err
+ }
+
+ changesetBoundary := fmt.Sprintf("changeset_%s", id.String())
uri := t.Table.tsc.client.getEndpoint(tableServiceName, "$batch", nil)
changesetBody, err := t.generateChangesetBody(changesetBoundary)
if err != nil {
return err
}
- boundary := fmt.Sprintf("batch_%s", uuid.NewV1())
+ id, err = guid.NewGUIDs(guid.CreationStrategyVersion1)
+ if err != nil {
+ return err
+ }
+
+ boundary := fmt.Sprintf("batch_%s", id.String())
body, err := generateBody(changesetBody, changesetBoundary, boundary)
if err != nil {
return err
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go
index 7734b8f886f7..089a74a8cc67 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/util.go
@@ -71,6 +71,10 @@ func timeRfc1123Formatted(t time.Time) string {
return t.Format(http.TimeFormat)
}
+func timeRFC3339Formatted(t time.Time) string {
+ return t.Format("2006-01-02T15:04:05.0000000Z")
+}
+
func mergeParams(v1, v2 url.Values) url.Values {
out := url.Values{}
for k, v := range v1 {
@@ -172,7 +176,7 @@ func addTimeout(params url.Values, timeout uint) url.Values {
func addSnapshot(params url.Values, snapshot *time.Time) url.Values {
if snapshot != nil {
- params.Add("snapshot", snapshot.Format("2006-01-02T15:04:05.0000000Z"))
+ params.Add("snapshot", timeRFC3339Formatted(*snapshot))
}
return params
}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/util_1.7.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/util_1.7.go
deleted file mode 100644
index 67ff6ca03fe3..000000000000
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/util_1.7.go
+++ /dev/null
@@ -1,26 +0,0 @@
-// +build !go1.8
-
-// Copyright 2017 Microsoft Corporation
-//
-// 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 (
- "io"
- "net/http"
-)
-
-func setContentLengthFromLimitedReader(req *http.Request, lr *io.LimitedReader) {
- req.ContentLength = lr.N
-}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/util_1.8.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/util_1.8.go
deleted file mode 100644
index eada102c0cff..000000000000
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/util_1.8.go
+++ /dev/null
@@ -1,32 +0,0 @@
-// +build go1.8
-
-// Copyright 2017 Microsoft Corporation
-//
-// 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 (
- "io"
- "io/ioutil"
- "net/http"
-)
-
-func setContentLengthFromLimitedReader(req *http.Request, lr *io.LimitedReader) {
- req.ContentLength = lr.N
- snapshot := *lr
- req.GetBody = func() (io.ReadCloser, error) {
- r := snapshot
- return ioutil.NopCloser(&r), nil
- }
-}
diff --git a/vendor/github.com/Azure/azure-sdk-for-go/storage/version.go b/vendor/github.com/Azure/azure-sdk-for-go/storage/version.go
index 1cd3e03d12a8..74eda60808c1 100644
--- a/vendor/github.com/Azure/azure-sdk-for-go/storage/version.go
+++ b/vendor/github.com/Azure/azure-sdk-for-go/storage/version.go
@@ -15,5 +15,5 @@ package storage
// limitations under the License.
var (
- sdkVersion = "10.0.2"
+ sdkVersion = "v12.4.0-beta"
)
diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/README.md b/vendor/github.com/Azure/go-autorest/autorest/adal/README.md
index a17cf98c6215..08966c9cf892 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/adal/README.md
+++ b/vendor/github.com/Azure/go-autorest/autorest/adal/README.md
@@ -218,6 +218,40 @@ if (err == nil) {
}
```
+#### Username password authenticate
+
+```Go
+spt, err := adal.NewServicePrincipalTokenFromUsernamePassword(
+ oauthConfig,
+ applicationID,
+ username,
+ password,
+ resource,
+ callbacks...)
+
+if (err == nil) {
+ token := spt.Token
+}
+```
+
+#### Authorization code authenticate
+
+``` Go
+spt, err := adal.NewServicePrincipalTokenFromAuthorizationCode(
+ oauthConfig,
+ applicationID,
+ clientSecret,
+ authorizationCode,
+ redirectURI,
+ resource,
+ callbacks...)
+
+err = spt.Refresh()
+if (err == nil) {
+ token := spt.Token
+}
+```
+
### Command Line Tool
A command line tool is available in `cmd/adal.go` that can acquire a token for a given resource. It supports all flows mentioned above.
diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/config.go b/vendor/github.com/Azure/go-autorest/autorest/adal/config.go
index 49e9214d598a..f570d540a623 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/adal/config.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/adal/config.go
@@ -32,8 +32,24 @@ type OAuthConfig struct {
DeviceCodeEndpoint url.URL
}
+// IsZero returns true if the OAuthConfig object is zero-initialized.
+func (oac OAuthConfig) IsZero() bool {
+ return oac == OAuthConfig{}
+}
+
+func validateStringParam(param, name string) error {
+ if len(param) == 0 {
+ return fmt.Errorf("parameter '" + name + "' cannot be empty")
+ }
+ return nil
+}
+
// NewOAuthConfig returns an OAuthConfig with tenant specific urls
func NewOAuthConfig(activeDirectoryEndpoint, tenantID string) (*OAuthConfig, error) {
+ if err := validateStringParam(activeDirectoryEndpoint, "activeDirectoryEndpoint"); err != nil {
+ return nil, err
+ }
+ // it's legal for tenantID to be empty so don't validate it
const activeDirectoryEndpointTemplate = "%s/oauth2/%s?api-version=%s"
u, err := url.Parse(activeDirectoryEndpoint)
if err != nil {
diff --git a/vendor/github.com/Azure/go-autorest/autorest/adal/token.go b/vendor/github.com/Azure/go-autorest/autorest/adal/token.go
index 67dd97a18c18..941af281b568 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/adal/token.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/adal/token.go
@@ -27,6 +27,7 @@ import (
"net/url"
"strconv"
"strings"
+ "sync"
"time"
"github.com/Azure/go-autorest/autorest/date"
@@ -42,9 +43,15 @@ const (
// OAuthGrantTypeClientCredentials is the "grant_type" identifier used in credential flows
OAuthGrantTypeClientCredentials = "client_credentials"
+ // OAuthGrantTypeUserPass is the "grant_type" identifier used in username and password auth flows
+ OAuthGrantTypeUserPass = "password"
+
// OAuthGrantTypeRefreshToken is the "grant_type" identifier used in refresh token flows
OAuthGrantTypeRefreshToken = "refresh_token"
+ // OAuthGrantTypeAuthorizationCode is the "grant_type" identifier used in authorization code flows
+ OAuthGrantTypeAuthorizationCode = "authorization_code"
+
// metadataHeader is the header required by MSI extension
metadataHeader = "Metadata"
)
@@ -54,6 +61,12 @@ type OAuthTokenProvider interface {
OAuthToken() string
}
+// TokenRefreshError is an interface used by errors returned during token refresh.
+type TokenRefreshError interface {
+ error
+ Response() *http.Response
+}
+
// Refresher is an interface for token refresh functionality
type Refresher interface {
Refresh() error
@@ -78,6 +91,11 @@ type Token struct {
Type string `json:"token_type"`
}
+// IsZero returns true if the token object is zero-initialized.
+func (t Token) IsZero() bool {
+ return t == Token{}
+}
+
// Expires returns the time.Time when the Token expires.
func (t Token) Expires() time.Time {
s, err := strconv.Atoi(t.ExpiresOn)
@@ -145,6 +163,34 @@ type ServicePrincipalCertificateSecret struct {
type ServicePrincipalMSISecret struct {
}
+// ServicePrincipalUsernamePasswordSecret implements ServicePrincipalSecret for username and password auth.
+type ServicePrincipalUsernamePasswordSecret struct {
+ Username string
+ Password string
+}
+
+// ServicePrincipalAuthorizationCodeSecret implements ServicePrincipalSecret for authorization code auth.
+type ServicePrincipalAuthorizationCodeSecret struct {
+ ClientSecret string
+ AuthorizationCode string
+ RedirectURI string
+}
+
+// SetAuthenticationValues is a method of the interface ServicePrincipalSecret.
+func (secret *ServicePrincipalAuthorizationCodeSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error {
+ v.Set("code", secret.AuthorizationCode)
+ v.Set("client_secret", secret.ClientSecret)
+ v.Set("redirect_uri", secret.RedirectURI)
+ return nil
+}
+
+// SetAuthenticationValues is a method of the interface ServicePrincipalSecret.
+func (secret *ServicePrincipalUsernamePasswordSecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error {
+ v.Set("username", secret.Username)
+ v.Set("password", secret.Password)
+ return nil
+}
+
// SetAuthenticationValues is a method of the interface ServicePrincipalSecret.
func (msiSecret *ServicePrincipalMSISecret) SetAuthenticationValues(spt *ServicePrincipalToken, v *url.Values) error {
return nil
@@ -199,25 +245,46 @@ func (secret *ServicePrincipalCertificateSecret) SetAuthenticationValues(spt *Se
type ServicePrincipalToken struct {
Token
- secret ServicePrincipalSecret
- oauthConfig OAuthConfig
- clientID string
- resource string
- autoRefresh bool
- refreshWithin time.Duration
- sender Sender
+ secret ServicePrincipalSecret
+ oauthConfig OAuthConfig
+ clientID string
+ resource string
+ autoRefresh bool
+ autoRefreshLock *sync.Mutex
+ refreshWithin time.Duration
+ sender Sender
refreshCallbacks []TokenRefreshCallback
}
+func validateOAuthConfig(oac OAuthConfig) error {
+ if oac.IsZero() {
+ return fmt.Errorf("parameter 'oauthConfig' cannot be zero-initialized")
+ }
+ return nil
+}
+
// NewServicePrincipalTokenWithSecret create a ServicePrincipalToken using the supplied ServicePrincipalSecret implementation.
func NewServicePrincipalTokenWithSecret(oauthConfig OAuthConfig, id string, resource string, secret ServicePrincipalSecret, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ if err := validateOAuthConfig(oauthConfig); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(id, "id"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(resource, "resource"); err != nil {
+ return nil, err
+ }
+ if secret == nil {
+ return nil, fmt.Errorf("parameter 'secret' cannot be nil")
+ }
spt := &ServicePrincipalToken{
oauthConfig: oauthConfig,
secret: secret,
clientID: id,
resource: resource,
autoRefresh: true,
+ autoRefreshLock: &sync.Mutex{},
refreshWithin: defaultRefresh,
sender: &http.Client{},
refreshCallbacks: callbacks,
@@ -227,6 +294,18 @@ func NewServicePrincipalTokenWithSecret(oauthConfig OAuthConfig, id string, reso
// NewServicePrincipalTokenFromManualToken creates a ServicePrincipalToken using the supplied token
func NewServicePrincipalTokenFromManualToken(oauthConfig OAuthConfig, clientID string, resource string, token Token, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ if err := validateOAuthConfig(oauthConfig); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(clientID, "clientID"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(resource, "resource"); err != nil {
+ return nil, err
+ }
+ if token.IsZero() {
+ return nil, fmt.Errorf("parameter 'token' cannot be zero-initialized")
+ }
spt, err := NewServicePrincipalTokenWithSecret(
oauthConfig,
clientID,
@@ -245,6 +324,18 @@ func NewServicePrincipalTokenFromManualToken(oauthConfig OAuthConfig, clientID s
// NewServicePrincipalToken creates a ServicePrincipalToken from the supplied Service Principal
// credentials scoped to the named resource.
func NewServicePrincipalToken(oauthConfig OAuthConfig, clientID string, secret string, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ if err := validateOAuthConfig(oauthConfig); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(clientID, "clientID"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(secret, "secret"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(resource, "resource"); err != nil {
+ return nil, err
+ }
return NewServicePrincipalTokenWithSecret(
oauthConfig,
clientID,
@@ -256,8 +347,23 @@ func NewServicePrincipalToken(oauthConfig OAuthConfig, clientID string, secret s
)
}
-// NewServicePrincipalTokenFromCertificate create a ServicePrincipalToken from the supplied pkcs12 bytes.
+// NewServicePrincipalTokenFromCertificate creates a ServicePrincipalToken from the supplied pkcs12 bytes.
func NewServicePrincipalTokenFromCertificate(oauthConfig OAuthConfig, clientID string, certificate *x509.Certificate, privateKey *rsa.PrivateKey, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ if err := validateOAuthConfig(oauthConfig); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(clientID, "clientID"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(resource, "resource"); err != nil {
+ return nil, err
+ }
+ if certificate == nil {
+ return nil, fmt.Errorf("parameter 'certificate' cannot be nil")
+ }
+ if privateKey == nil {
+ return nil, fmt.Errorf("parameter 'privateKey' cannot be nil")
+ }
return NewServicePrincipalTokenWithSecret(
oauthConfig,
clientID,
@@ -270,6 +376,70 @@ func NewServicePrincipalTokenFromCertificate(oauthConfig OAuthConfig, clientID s
)
}
+// NewServicePrincipalTokenFromUsernamePassword creates a ServicePrincipalToken from the username and password.
+func NewServicePrincipalTokenFromUsernamePassword(oauthConfig OAuthConfig, clientID string, username string, password string, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ if err := validateOAuthConfig(oauthConfig); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(clientID, "clientID"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(username, "username"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(password, "password"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(resource, "resource"); err != nil {
+ return nil, err
+ }
+ return NewServicePrincipalTokenWithSecret(
+ oauthConfig,
+ clientID,
+ resource,
+ &ServicePrincipalUsernamePasswordSecret{
+ Username: username,
+ Password: password,
+ },
+ callbacks...,
+ )
+}
+
+// NewServicePrincipalTokenFromAuthorizationCode creates a ServicePrincipalToken from the
+func NewServicePrincipalTokenFromAuthorizationCode(oauthConfig OAuthConfig, clientID string, clientSecret string, authorizationCode string, redirectURI string, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+
+ if err := validateOAuthConfig(oauthConfig); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(clientID, "clientID"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(clientSecret, "clientSecret"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(authorizationCode, "authorizationCode"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(redirectURI, "redirectURI"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(resource, "resource"); err != nil {
+ return nil, err
+ }
+
+ return NewServicePrincipalTokenWithSecret(
+ oauthConfig,
+ clientID,
+ resource,
+ &ServicePrincipalAuthorizationCodeSecret{
+ ClientSecret: clientSecret,
+ AuthorizationCode: authorizationCode,
+ RedirectURI: redirectURI,
+ },
+ callbacks...,
+ )
+}
+
// GetMSIVMEndpoint gets the MSI endpoint on Virtual Machines.
func GetMSIVMEndpoint() (string, error) {
return getMSIVMEndpoint(msiPath)
@@ -293,7 +463,29 @@ func getMSIVMEndpoint(path string) (string, error) {
}
// NewServicePrincipalTokenFromMSI creates a ServicePrincipalToken via the MSI VM Extension.
+// It will use the system assigned identity when creating the token.
func NewServicePrincipalTokenFromMSI(msiEndpoint, resource string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ return newServicePrincipalTokenFromMSI(msiEndpoint, resource, nil, callbacks...)
+}
+
+// NewServicePrincipalTokenFromMSIWithUserAssignedID creates a ServicePrincipalToken via the MSI VM Extension.
+// It will use the specified user assigned identity when creating the token.
+func NewServicePrincipalTokenFromMSIWithUserAssignedID(msiEndpoint, resource string, userAssignedID string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ return newServicePrincipalTokenFromMSI(msiEndpoint, resource, &userAssignedID, callbacks...)
+}
+
+func newServicePrincipalTokenFromMSI(msiEndpoint, resource string, userAssignedID *string, callbacks ...TokenRefreshCallback) (*ServicePrincipalToken, error) {
+ if err := validateStringParam(msiEndpoint, "msiEndpoint"); err != nil {
+ return nil, err
+ }
+ if err := validateStringParam(resource, "resource"); err != nil {
+ return nil, err
+ }
+ if userAssignedID != nil {
+ if err := validateStringParam(*userAssignedID, "userAssignedID"); err != nil {
+ return nil, err
+ }
+ }
// We set the oauth config token endpoint to be MSI's endpoint
msiEndpointURL, err := url.Parse(msiEndpoint)
if err != nil {
@@ -310,19 +502,49 @@ func NewServicePrincipalTokenFromMSI(msiEndpoint, resource string, callbacks ...
secret: &ServicePrincipalMSISecret{},
resource: resource,
autoRefresh: true,
+ autoRefreshLock: &sync.Mutex{},
refreshWithin: defaultRefresh,
sender: &http.Client{},
refreshCallbacks: callbacks,
}
+ if userAssignedID != nil {
+ spt.clientID = *userAssignedID
+ }
+
return spt, nil
}
+// internal type that implements TokenRefreshError
+type tokenRefreshError struct {
+ message string
+ resp *http.Response
+}
+
+// Error implements the error interface which is part of the TokenRefreshError interface.
+func (tre tokenRefreshError) Error() string {
+ return tre.message
+}
+
+// Response implements the TokenRefreshError interface, it returns the raw HTTP response from the refresh operation.
+func (tre tokenRefreshError) Response() *http.Response {
+ return tre.resp
+}
+
+func newTokenRefreshError(message string, resp *http.Response) TokenRefreshError {
+ return tokenRefreshError{message: message, resp: resp}
+}
+
// EnsureFresh will refresh the token if it will expire within the refresh window (as set by
-// RefreshWithin) and autoRefresh flag is on.
+// RefreshWithin) and autoRefresh flag is on. This method is safe for concurrent use.
func (spt *ServicePrincipalToken) EnsureFresh() error {
if spt.autoRefresh && spt.WillExpireIn(spt.refreshWithin) {
- return spt.Refresh()
+ // take the lock then check to see if the token was already refreshed
+ spt.autoRefreshLock.Lock()
+ defer spt.autoRefreshLock.Unlock()
+ if spt.WillExpireIn(spt.refreshWithin) {
+ return spt.Refresh()
+ }
}
return nil
}
@@ -341,15 +563,28 @@ func (spt *ServicePrincipalToken) InvokeRefreshCallbacks(token Token) error {
}
// Refresh obtains a fresh token for the Service Principal.
+// This method is not safe for concurrent use and should be syncrhonized.
func (spt *ServicePrincipalToken) Refresh() error {
return spt.refreshInternal(spt.resource)
}
// RefreshExchange refreshes the token, but for a different resource.
+// This method is not safe for concurrent use and should be syncrhonized.
func (spt *ServicePrincipalToken) RefreshExchange(resource string) error {
return spt.refreshInternal(resource)
}
+func (spt *ServicePrincipalToken) getGrantType() string {
+ switch spt.secret.(type) {
+ case *ServicePrincipalUsernamePasswordSecret:
+ return OAuthGrantTypeUserPass
+ case *ServicePrincipalAuthorizationCodeSecret:
+ return OAuthGrantTypeAuthorizationCode
+ default:
+ return OAuthGrantTypeClientCredentials
+ }
+}
+
func (spt *ServicePrincipalToken) refreshInternal(resource string) error {
v := url.Values{}
v.Set("client_id", spt.clientID)
@@ -359,7 +594,7 @@ func (spt *ServicePrincipalToken) refreshInternal(resource string) error {
v.Set("grant_type", OAuthGrantTypeRefreshToken)
v.Set("refresh_token", spt.RefreshToken)
} else {
- v.Set("grant_type", OAuthGrantTypeClientCredentials)
+ v.Set("grant_type", spt.getGrantType())
err := spt.secret.SetAuthenticationValues(spt, &v)
if err != nil {
return err
@@ -388,9 +623,9 @@ func (spt *ServicePrincipalToken) refreshInternal(resource string) error {
if resp.StatusCode != http.StatusOK {
if err != nil {
- return fmt.Errorf("adal: Refresh request failed. Status Code = '%d'. Failed reading response body", resp.StatusCode)
+ return newTokenRefreshError(fmt.Sprintf("adal: Refresh request failed. Status Code = '%d'. Failed reading response body", resp.StatusCode), resp)
}
- return fmt.Errorf("adal: Refresh request failed. Status Code = '%d'. Response body: %s", resp.StatusCode, string(rb))
+ return newTokenRefreshError(fmt.Sprintf("adal: Refresh request failed. Status Code = '%d'. Response body: %s", resp.StatusCode, string(rb)), resp)
}
if err != nil {
diff --git a/vendor/github.com/Azure/go-autorest/autorest/authorization.go b/vendor/github.com/Azure/go-autorest/autorest/authorization.go
index 71e3ced2d6a6..4a602f6760af 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/authorization.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/authorization.go
@@ -24,9 +24,12 @@ import (
)
const (
- bearerChallengeHeader = "Www-Authenticate"
- bearer = "Bearer"
- tenantID = "tenantID"
+ bearerChallengeHeader = "Www-Authenticate"
+ bearer = "Bearer"
+ tenantID = "tenantID"
+ apiKeyAuthorizerHeader = "Ocp-Apim-Subscription-Key"
+ bingAPISdkHeader = "X-BingApis-SDK-Client"
+ golangBingAPISdkHeaderValue = "Go-SDK"
)
// Authorizer is the interface that provides a PrepareDecorator used to supply request
@@ -44,6 +47,53 @@ func (na NullAuthorizer) WithAuthorization() PrepareDecorator {
return WithNothing()
}
+// APIKeyAuthorizer implements API Key authorization.
+type APIKeyAuthorizer struct {
+ headers map[string]interface{}
+ queryParameters map[string]interface{}
+}
+
+// NewAPIKeyAuthorizerWithHeaders creates an ApiKeyAuthorizer with headers.
+func NewAPIKeyAuthorizerWithHeaders(headers map[string]interface{}) *APIKeyAuthorizer {
+ return NewAPIKeyAuthorizer(headers, nil)
+}
+
+// NewAPIKeyAuthorizerWithQueryParameters creates an ApiKeyAuthorizer with query parameters.
+func NewAPIKeyAuthorizerWithQueryParameters(queryParameters map[string]interface{}) *APIKeyAuthorizer {
+ return NewAPIKeyAuthorizer(nil, queryParameters)
+}
+
+// NewAPIKeyAuthorizer creates an ApiKeyAuthorizer with headers.
+func NewAPIKeyAuthorizer(headers map[string]interface{}, queryParameters map[string]interface{}) *APIKeyAuthorizer {
+ return &APIKeyAuthorizer{headers: headers, queryParameters: queryParameters}
+}
+
+// WithAuthorization returns a PrepareDecorator that adds an HTTP headers and Query Paramaters
+func (aka *APIKeyAuthorizer) WithAuthorization() PrepareDecorator {
+ return func(p Preparer) Preparer {
+ return DecoratePreparer(p, WithHeaders(aka.headers), WithQueryParameters(aka.queryParameters))
+ }
+}
+
+// CognitiveServicesAuthorizer implements authorization for Cognitive Services.
+type CognitiveServicesAuthorizer struct {
+ subscriptionKey string
+}
+
+// NewCognitiveServicesAuthorizer is
+func NewCognitiveServicesAuthorizer(subscriptionKey string) *CognitiveServicesAuthorizer {
+ return &CognitiveServicesAuthorizer{subscriptionKey: subscriptionKey}
+}
+
+// WithAuthorization is
+func (csa *CognitiveServicesAuthorizer) WithAuthorization() PrepareDecorator {
+ headers := make(map[string]interface{})
+ headers[apiKeyAuthorizerHeader] = csa.subscriptionKey
+ headers[bingAPISdkHeader] = golangBingAPISdkHeaderValue
+
+ return NewAPIKeyAuthorizerWithHeaders(headers).WithAuthorization()
+}
+
// BearerAuthorizer implements the bearer authorization
type BearerAuthorizer struct {
tokenProvider adal.OAuthTokenProvider
@@ -69,7 +119,11 @@ func (ba *BearerAuthorizer) WithAuthorization() PrepareDecorator {
if ok {
err := refresher.EnsureFresh()
if err != nil {
- return r, NewErrorWithError(err, "azure.BearerAuthorizer", "WithAuthorization", nil,
+ var resp *http.Response
+ if tokError, ok := err.(adal.TokenRefreshError); ok {
+ resp = tokError.Response()
+ }
+ return r, NewErrorWithError(err, "azure.BearerAuthorizer", "WithAuthorization", resp,
"Failed to refresh the Token for request to %s", r.URL)
}
}
@@ -179,3 +233,22 @@ func newBearerChallenge(resp *http.Response) (bc bearerChallenge, err error) {
return bc, err
}
+
+// EventGridKeyAuthorizer implements authorization for event grid using key authentication.
+type EventGridKeyAuthorizer struct {
+ topicKey string
+}
+
+// NewEventGridKeyAuthorizer creates a new EventGridKeyAuthorizer
+// with the specified topic key.
+func NewEventGridKeyAuthorizer(topicKey string) EventGridKeyAuthorizer {
+ return EventGridKeyAuthorizer{topicKey: topicKey}
+}
+
+// WithAuthorization returns a PrepareDecorator that adds the aeg-sas-key authentication header.
+func (egta EventGridKeyAuthorizer) WithAuthorization() PrepareDecorator {
+ headers := map[string]interface{}{
+ "aeg-sas-key": egta.topicKey,
+ }
+ return NewAPIKeyAuthorizerWithHeaders(headers).WithAuthorization()
+}
diff --git a/vendor/github.com/Azure/go-autorest/autorest/autorest.go b/vendor/github.com/Azure/go-autorest/autorest/autorest.go
index 37b907c77f51..f86b66a410b1 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/autorest.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/autorest.go
@@ -87,6 +87,9 @@ const (
// ResponseHasStatusCode returns true if the status code in the HTTP Response is in the passed set
// and false otherwise.
func ResponseHasStatusCode(resp *http.Response, codes ...int) bool {
+ if resp == nil {
+ return false
+ }
return containsInt(codes, resp.StatusCode)
}
diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/async.go b/vendor/github.com/Azure/go-autorest/autorest/azure/async.go
index ffbc8da28e52..366fc5379391 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/azure/async.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/azure/async.go
@@ -16,6 +16,8 @@ package azure
import (
"bytes"
+ "context"
+ "encoding/json"
"fmt"
"io/ioutil"
"net/http"
@@ -37,6 +39,152 @@ const (
operationSucceeded string = "Succeeded"
)
+var pollingCodes = [...]int{http.StatusNoContent, http.StatusAccepted, http.StatusCreated, http.StatusOK}
+
+// Future provides a mechanism to access the status and results of an asynchronous request.
+// Since futures are stateful they should be passed by value to avoid race conditions.
+type Future struct {
+ req *http.Request
+ resp *http.Response
+ ps pollingState
+}
+
+// NewFuture returns a new Future object initialized with the specified request.
+func NewFuture(req *http.Request) Future {
+ return Future{req: req}
+}
+
+// Response returns the last HTTP response or nil if there isn't one.
+func (f Future) Response() *http.Response {
+ return f.resp
+}
+
+// Status returns the last status message of the operation.
+func (f Future) Status() string {
+ if f.ps.State == "" {
+ return "Unknown"
+ }
+ return f.ps.State
+}
+
+// PollingMethod returns the method used to monitor the status of the asynchronous operation.
+func (f Future) PollingMethod() PollingMethodType {
+ return f.ps.PollingMethod
+}
+
+// Done queries the service to see if the operation has completed.
+func (f *Future) Done(sender autorest.Sender) (bool, error) {
+ // exit early if this future has terminated
+ if f.ps.hasTerminated() {
+ return true, f.errorInfo()
+ }
+
+ resp, err := sender.Do(f.req)
+ f.resp = resp
+ if err != nil || !autorest.ResponseHasStatusCode(resp, pollingCodes[:]...) {
+ return false, err
+ }
+
+ err = updatePollingState(resp, &f.ps)
+ if err != nil {
+ return false, err
+ }
+
+ if f.ps.hasTerminated() {
+ return true, f.errorInfo()
+ }
+
+ f.req, err = newPollingRequest(f.ps)
+ return false, err
+}
+
+// GetPollingDelay returns a duration the application should wait before checking
+// the status of the asynchronous request and true; this value is returned from
+// the service via the Retry-After response header. If the header wasn't returned
+// then the function returns the zero-value time.Duration and false.
+func (f Future) GetPollingDelay() (time.Duration, bool) {
+ if f.resp == nil {
+ return 0, false
+ }
+
+ retry := f.resp.Header.Get(autorest.HeaderRetryAfter)
+ if retry == "" {
+ return 0, false
+ }
+
+ d, err := time.ParseDuration(retry + "s")
+ if err != nil {
+ panic(err)
+ }
+
+ return d, true
+}
+
+// WaitForCompletion will return when one of the following conditions is met: the long
+// running operation has completed, the provided context is cancelled, or the client's
+// polling duration has been exceeded. It will retry failed polling attempts based on
+// the retry value defined in the client up to the maximum retry attempts.
+func (f Future) WaitForCompletion(ctx context.Context, client autorest.Client) error {
+ ctx, cancel := context.WithTimeout(ctx, client.PollingDuration)
+ defer cancel()
+
+ done, err := f.Done(client)
+ for attempts := 0; !done; done, err = f.Done(client) {
+ if attempts >= client.RetryAttempts {
+ return autorest.NewErrorWithError(err, "azure", "WaitForCompletion", f.resp, "the number of retries has been exceeded")
+ }
+ // we want delayAttempt to be zero in the non-error case so
+ // that DelayForBackoff doesn't perform exponential back-off
+ var delayAttempt int
+ var delay time.Duration
+ if err == nil {
+ // check for Retry-After delay, if not present use the client's polling delay
+ var ok bool
+ delay, ok = f.GetPollingDelay()
+ if !ok {
+ delay = client.PollingDelay
+ }
+ } else {
+ // there was an error polling for status so perform exponential
+ // back-off based on the number of attempts using the client's retry
+ // duration. update attempts after delayAttempt to avoid off-by-one.
+ delayAttempt = attempts
+ delay = client.RetryDuration
+ attempts++
+ }
+ // wait until the delay elapses or the context is cancelled
+ delayElapsed := autorest.DelayForBackoff(delay, delayAttempt, ctx.Done())
+ if !delayElapsed {
+ return autorest.NewErrorWithError(ctx.Err(), "azure", "WaitForCompletion", f.resp, "context has been cancelled")
+ }
+ }
+ return err
+}
+
+// if the operation failed the polling state will contain
+// error information and implements the error interface
+func (f *Future) errorInfo() error {
+ if !f.ps.hasSucceeded() {
+ return f.ps
+ }
+ return nil
+}
+
+// MarshalJSON implements the json.Marshaler interface.
+func (f Future) MarshalJSON() ([]byte, error) {
+ return json.Marshal(&f.ps)
+}
+
+// UnmarshalJSON implements the json.Unmarshaler interface.
+func (f *Future) UnmarshalJSON(data []byte) error {
+ err := json.Unmarshal(data, &f.ps)
+ if err != nil {
+ return err
+ }
+ f.req, err = newPollingRequest(f.ps)
+ return err
+}
+
// DoPollForAsynchronous returns a SendDecorator that polls if the http.Response is for an Azure
// long-running operation. It will delay between requests for the duration specified in the
// RetryAfter header or, if the header is absent, the passed delay. Polling may be canceled by
@@ -48,8 +196,7 @@ func DoPollForAsynchronous(delay time.Duration) autorest.SendDecorator {
if err != nil {
return resp, err
}
- pollingCodes := []int{http.StatusAccepted, http.StatusCreated, http.StatusOK}
- if !autorest.ResponseHasStatusCode(resp, pollingCodes...) {
+ if !autorest.ResponseHasStatusCode(resp, pollingCodes[:]...) {
return resp, nil
}
@@ -66,10 +213,11 @@ func DoPollForAsynchronous(delay time.Duration) autorest.SendDecorator {
break
}
- r, err = newPollingRequest(resp, ps)
+ r, err = newPollingRequest(ps)
if err != nil {
return resp, err
}
+ r.Cancel = resp.Request.Cancel
delay = autorest.GetRetryAfter(resp, delay)
resp, err = autorest.SendWithSender(s, r,
@@ -86,20 +234,15 @@ func getAsyncOperation(resp *http.Response) string {
}
func hasSucceeded(state string) bool {
- return state == operationSucceeded
+ return strings.EqualFold(state, operationSucceeded)
}
func hasTerminated(state string) bool {
- switch state {
- case operationCanceled, operationFailed, operationSucceeded:
- return true
- default:
- return false
- }
+ return strings.EqualFold(state, operationCanceled) || strings.EqualFold(state, operationFailed) || strings.EqualFold(state, operationSucceeded)
}
func hasFailed(state string) bool {
- return state == operationFailed
+ return strings.EqualFold(state, operationFailed)
}
type provisioningTracker interface {
@@ -160,36 +303,42 @@ func (ps provisioningStatus) hasProvisioningError() bool {
return ps.ProvisioningError != ServiceError{}
}
-type pollingResponseFormat string
+// PollingMethodType defines a type used for enumerating polling mechanisms.
+type PollingMethodType string
const (
- usesOperationResponse pollingResponseFormat = "OperationResponse"
- usesProvisioningStatus pollingResponseFormat = "ProvisioningStatus"
- formatIsUnknown pollingResponseFormat = ""
+ // PollingAsyncOperation indicates the polling method uses the Azure-AsyncOperation header.
+ PollingAsyncOperation PollingMethodType = "AsyncOperation"
+
+ // PollingLocation indicates the polling method uses the Location header.
+ PollingLocation PollingMethodType = "Location"
+
+ // PollingUnknown indicates an unknown polling method and is the default value.
+ PollingUnknown PollingMethodType = ""
)
type pollingState struct {
- responseFormat pollingResponseFormat
- uri string
- state string
- code string
- message string
+ PollingMethod PollingMethodType `json:"pollingMethod"`
+ URI string `json:"uri"`
+ State string `json:"state"`
+ Code string `json:"code"`
+ Message string `json:"message"`
}
func (ps pollingState) hasSucceeded() bool {
- return hasSucceeded(ps.state)
+ return hasSucceeded(ps.State)
}
func (ps pollingState) hasTerminated() bool {
- return hasTerminated(ps.state)
+ return hasTerminated(ps.State)
}
func (ps pollingState) hasFailed() bool {
- return hasFailed(ps.state)
+ return hasFailed(ps.State)
}
func (ps pollingState) Error() string {
- return fmt.Sprintf("Long running operation terminated with status '%s': Code=%q Message=%q", ps.state, ps.code, ps.message)
+ return fmt.Sprintf("Long running operation terminated with status '%s': Code=%q Message=%q", ps.State, ps.Code, ps.Message)
}
// updatePollingState maps the operation status -- retrieved from either a provisioningState
@@ -204,7 +353,7 @@ func updatePollingState(resp *http.Response, ps *pollingState) error {
// -- The first response will always be a provisioningStatus response; only the polling requests,
// depending on the header returned, may be something otherwise.
var pt provisioningTracker
- if ps.responseFormat == usesOperationResponse {
+ if ps.PollingMethod == PollingAsyncOperation {
pt = &operationResource{}
} else {
pt = &provisioningStatus{}
@@ -212,30 +361,30 @@ func updatePollingState(resp *http.Response, ps *pollingState) error {
// If this is the first request (that is, the polling response shape is unknown), determine how
// to poll and what to expect
- if ps.responseFormat == formatIsUnknown {
+ if ps.PollingMethod == PollingUnknown {
req := resp.Request
if req == nil {
return autorest.NewError("azure", "updatePollingState", "Azure Polling Error - Original HTTP request is missing")
}
// Prefer the Azure-AsyncOperation header
- ps.uri = getAsyncOperation(resp)
- if ps.uri != "" {
- ps.responseFormat = usesOperationResponse
+ ps.URI = getAsyncOperation(resp)
+ if ps.URI != "" {
+ ps.PollingMethod = PollingAsyncOperation
} else {
- ps.responseFormat = usesProvisioningStatus
+ ps.PollingMethod = PollingLocation
}
// Else, use the Location header
- if ps.uri == "" {
- ps.uri = autorest.GetLocation(resp)
+ if ps.URI == "" {
+ ps.URI = autorest.GetLocation(resp)
}
// Lastly, requests against an existing resource, use the last request URI
- if ps.uri == "" {
+ if ps.URI == "" {
m := strings.ToUpper(req.Method)
if m == http.MethodPatch || m == http.MethodPut || m == http.MethodGet {
- ps.uri = req.URL.String()
+ ps.URI = req.URL.String()
}
}
}
@@ -256,23 +405,23 @@ func updatePollingState(resp *http.Response, ps *pollingState) error {
// -- Unknown states are per-service inprogress states
// -- Otherwise, infer state from HTTP status code
if pt.hasTerminated() {
- ps.state = pt.state()
+ ps.State = pt.state()
} else if pt.state() != "" {
- ps.state = operationInProgress
+ ps.State = operationInProgress
} else {
switch resp.StatusCode {
case http.StatusAccepted:
- ps.state = operationInProgress
+ ps.State = operationInProgress
case http.StatusNoContent, http.StatusCreated, http.StatusOK:
- ps.state = operationSucceeded
+ ps.State = operationSucceeded
default:
- ps.state = operationFailed
+ ps.State = operationFailed
}
}
- if ps.state == operationInProgress && ps.uri == "" {
+ if strings.EqualFold(ps.State, operationInProgress) && ps.URI == "" {
return autorest.NewError("azure", "updatePollingState", "Azure Polling Error - Unable to obtain polling URI for %s %s", resp.Request.Method, resp.Request.URL)
}
@@ -281,36 +430,49 @@ func updatePollingState(resp *http.Response, ps *pollingState) error {
// -- Response
// -- Otherwise, Unknown
if ps.hasFailed() {
- if ps.responseFormat == usesOperationResponse {
+ if ps.PollingMethod == PollingAsyncOperation {
or := pt.(*operationResource)
- ps.code = or.OperationError.Code
- ps.message = or.OperationError.Message
+ ps.Code = or.OperationError.Code
+ ps.Message = or.OperationError.Message
} else {
p := pt.(*provisioningStatus)
if p.hasProvisioningError() {
- ps.code = p.ProvisioningError.Code
- ps.message = p.ProvisioningError.Message
+ ps.Code = p.ProvisioningError.Code
+ ps.Message = p.ProvisioningError.Message
} else {
- ps.code = "Unknown"
- ps.message = "None"
+ ps.Code = "Unknown"
+ ps.Message = "None"
}
}
}
return nil
}
-func newPollingRequest(resp *http.Response, ps pollingState) (*http.Request, error) {
- req := resp.Request
- if req == nil {
- return nil, autorest.NewError("azure", "newPollingRequest", "Azure Polling Error - Original HTTP request is missing")
- }
-
- reqPoll, err := autorest.Prepare(&http.Request{Cancel: req.Cancel},
+func newPollingRequest(ps pollingState) (*http.Request, error) {
+ reqPoll, err := autorest.Prepare(&http.Request{},
autorest.AsGet(),
- autorest.WithBaseURL(ps.uri))
+ autorest.WithBaseURL(ps.URI))
if err != nil {
- return nil, autorest.NewErrorWithError(err, "azure", "newPollingRequest", nil, "Failure creating poll request to %s", ps.uri)
+ return nil, autorest.NewErrorWithError(err, "azure", "newPollingRequest", nil, "Failure creating poll request to %s", ps.URI)
}
return reqPoll, nil
}
+
+// AsyncOpIncompleteError is the type that's returned from a future that has not completed.
+type AsyncOpIncompleteError struct {
+ // FutureType is the name of the type composed of a azure.Future.
+ FutureType string
+}
+
+// Error returns an error message including the originating type name of the error.
+func (e AsyncOpIncompleteError) Error() string {
+ return fmt.Sprintf("%s: asynchronous operation has not completed", e.FutureType)
+}
+
+// NewAsyncOpIncompleteError creates a new AsyncOpIncompleteError with the specified parameters.
+func NewAsyncOpIncompleteError(futureType string) AsyncOpIncompleteError {
+ return AsyncOpIncompleteError{
+ FutureType: futureType,
+ }
+}
diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go b/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go
index 30c4351a576a..936836493ba1 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/azure/environments.go
@@ -15,10 +15,17 @@ package azure
// limitations under the License.
import (
+ "encoding/json"
"fmt"
+ "io/ioutil"
+ "os"
"strings"
)
+// EnvironmentFilepathName captures the name of the environment variable containing the path to the file
+// to be used while populating the Azure Environment.
+const EnvironmentFilepathName = "AZURE_ENVIRONMENT_FILEPATH"
+
var environments = map[string]Environment{
"AZURECHINACLOUD": ChinaCloud,
"AZUREGERMANCLOUD": GermanCloud,
@@ -76,10 +83,10 @@ var (
PublishSettingsURL: "https://manage.windowsazure.us/publishsettings/index",
ServiceManagementEndpoint: "https://management.core.usgovcloudapi.net/",
ResourceManagerEndpoint: "https://management.usgovcloudapi.net/",
- ActiveDirectoryEndpoint: "https://login.microsoftonline.com/",
+ ActiveDirectoryEndpoint: "https://login.microsoftonline.us/",
GalleryEndpoint: "https://gallery.usgovcloudapi.net/",
KeyVaultEndpoint: "https://vault.usgovcloudapi.net/",
- GraphEndpoint: "https://graph.usgovcloudapi.net/",
+ GraphEndpoint: "https://graph.windows.net/",
StorageEndpointSuffix: "core.usgovcloudapi.net",
SQLDatabaseDNSSuffix: "database.usgovcloudapi.net",
TrafficManagerDNSSuffix: "usgovtrafficmanager.net",
@@ -133,12 +140,37 @@ var (
}
)
-// EnvironmentFromName returns an Environment based on the common name specified
+// EnvironmentFromName returns an Environment based on the common name specified.
func EnvironmentFromName(name string) (Environment, error) {
+ // IMPORTANT
+ // As per @radhikagupta5:
+ // This is technical debt, fundamentally here because Kubernetes is not currently accepting
+ // contributions to the providers. Once that is an option, the provider should be updated to
+ // directly call `EnvironmentFromFile`. Until then, we rely on dispatching Azure Stack environment creation
+ // from this method based on the name that is provided to us.
+ if strings.EqualFold(name, "AZURESTACKCLOUD") {
+ return EnvironmentFromFile(os.Getenv(EnvironmentFilepathName))
+ }
+
name = strings.ToUpper(name)
env, ok := environments[name]
if !ok {
return env, fmt.Errorf("autorest/azure: There is no cloud environment matching the name %q", name)
}
+
return env, nil
}
+
+// EnvironmentFromFile loads an Environment from a configuration file available on disk.
+// This function is particularly useful in the Hybrid Cloud model, where one must define their own
+// endpoints.
+func EnvironmentFromFile(location string) (unmarshaled Environment, err error) {
+ fileContents, err := ioutil.ReadFile(location)
+ if err != nil {
+ return
+ }
+
+ err = json.Unmarshal(fileContents, &unmarshaled)
+
+ return
+}
diff --git a/vendor/github.com/Azure/go-autorest/autorest/azure/rp.go b/vendor/github.com/Azure/go-autorest/autorest/azure/rp.go
index 40d5f5ba002f..b6b95d6fdbcb 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/azure/rp.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/azure/rp.go
@@ -1,3 +1,17 @@
+// Copyright 2017 Microsoft Corporation
+//
+// 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 azure
import (
@@ -30,7 +44,7 @@ func DoRetryWithRegistration(client autorest.Client) autorest.SendDecorator {
return resp, err
}
- if resp.StatusCode != http.StatusConflict {
+ if resp.StatusCode != http.StatusConflict || client.SkipResourceProviderRegistration {
return resp, err
}
var re RequestError
@@ -41,15 +55,16 @@ func DoRetryWithRegistration(client autorest.Client) autorest.SendDecorator {
if err != nil {
return resp, err
}
+ err = re
if re.ServiceError != nil && re.ServiceError.Code == "MissingSubscriptionRegistration" {
- err = register(client, r, re)
- if err != nil {
- return resp, fmt.Errorf("failed auto registering Resource Provider: %s", err)
+ regErr := register(client, r, re)
+ if regErr != nil {
+ return resp, fmt.Errorf("failed auto registering Resource Provider: %s. Original error: %s", regErr, err)
}
}
}
- return resp, errors.New("failed request and resource provider registration")
+ return resp, fmt.Errorf("failed request: %s", err)
})
}
}
@@ -144,7 +159,7 @@ func register(client autorest.Client, originalReq *http.Request, re RequestError
}
req.Cancel = originalReq.Cancel
- resp, err := autorest.SendWithSender(client.Sender, req,
+ resp, err := autorest.SendWithSender(client, req,
autorest.DoRetryForStatusCodes(client.RetryAttempts, client.RetryDuration, autorest.StatusCodesForRetry...),
)
if err != nil {
diff --git a/vendor/github.com/Azure/go-autorest/autorest/client.go b/vendor/github.com/Azure/go-autorest/autorest/client.go
index c857e761168b..d329cb737799 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/client.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/client.go
@@ -35,6 +35,9 @@ const (
// DefaultRetryAttempts is number of attempts for retry status codes (5xx).
DefaultRetryAttempts = 3
+
+ // DefaultRetryDuration is the duration to wait between retries.
+ DefaultRetryDuration = 30 * time.Second
)
var (
@@ -163,6 +166,9 @@ type Client struct {
UserAgent string
Jar http.CookieJar
+
+ // Set to true to skip attempted registration of resource providers (false by default).
+ SkipResourceProviderRegistration bool
}
// NewClientWithUserAgent returns an instance of a Client with the UserAgent set to the passed
@@ -172,9 +178,10 @@ func NewClientWithUserAgent(ua string) Client {
PollingDelay: DefaultPollingDelay,
PollingDuration: DefaultPollingDuration,
RetryAttempts: DefaultRetryAttempts,
- RetryDuration: 30 * time.Second,
+ RetryDuration: DefaultRetryDuration,
UserAgent: defaultUserAgent,
}
+ c.Sender = c.sender()
c.AddToUserAgent(ua)
return c
}
@@ -200,11 +207,17 @@ func (c Client) Do(r *http.Request) (*http.Response, error) {
c.WithInspection(),
c.WithAuthorization())
if err != nil {
- return nil, NewErrorWithError(err, "autorest/Client", "Do", nil, "Preparing request failed")
+ var resp *http.Response
+ if detErr, ok := err.(DetailedError); ok {
+ // if the authorization failed (e.g. invalid credentials) there will
+ // be a response associated with the error, be sure to return it.
+ resp = detErr.Response
+ }
+ return resp, NewErrorWithError(err, "autorest/Client", "Do", nil, "Preparing request failed")
}
+
resp, err := SendWithSender(c.sender(), r)
- Respond(resp,
- c.ByInspecting())
+ Respond(resp, c.ByInspecting())
return resp, err
}
diff --git a/vendor/github.com/Azure/go-autorest/autorest/preparer.go b/vendor/github.com/Azure/go-autorest/autorest/preparer.go
index 2290c4010032..6d67bd7337b7 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/preparer.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/preparer.go
@@ -27,8 +27,9 @@ import (
)
const (
- mimeTypeJSON = "application/json"
- mimeTypeFormPost = "application/x-www-form-urlencoded"
+ mimeTypeJSON = "application/json"
+ mimeTypeOctetStream = "application/octet-stream"
+ mimeTypeFormPost = "application/x-www-form-urlencoded"
headerAuthorization = "Authorization"
headerContentType = "Content-Type"
@@ -112,6 +113,28 @@ func WithHeader(header string, value string) PrepareDecorator {
}
}
+// WithHeaders returns a PrepareDecorator that sets the specified HTTP headers of the http.Request to
+// the passed value. It canonicalizes the passed headers name (via http.CanonicalHeaderKey) before
+// adding them.
+func WithHeaders(headers map[string]interface{}) PrepareDecorator {
+ h := ensureValueStrings(headers)
+ return func(p Preparer) Preparer {
+ return PreparerFunc(func(r *http.Request) (*http.Request, error) {
+ r, err := p.Prepare(r)
+ if err == nil {
+ if r.Header == nil {
+ r.Header = make(http.Header)
+ }
+
+ for name, value := range h {
+ r.Header.Set(http.CanonicalHeaderKey(name), value)
+ }
+ }
+ return r, err
+ })
+ }
+}
+
// WithBearerAuthorization returns a PrepareDecorator that adds an HTTP Authorization header whose
// value is "Bearer " followed by the supplied token.
func WithBearerAuthorization(token string) PrepareDecorator {
@@ -142,6 +165,11 @@ func AsJSON() PrepareDecorator {
return AsContentType(mimeTypeJSON)
}
+// AsOctetStream returns a PrepareDecorator that adds the "application/octet-stream" Content-Type header.
+func AsOctetStream() PrepareDecorator {
+ return AsContentType(mimeTypeOctetStream)
+}
+
// WithMethod returns a PrepareDecorator that sets the HTTP method of the passed request. The
// decorator does not validate that the passed method string is a known HTTP method.
func WithMethod(method string) PrepareDecorator {
@@ -215,6 +243,11 @@ func WithFormData(v url.Values) PrepareDecorator {
r, err := p.Prepare(r)
if err == nil {
s := v.Encode()
+
+ if r.Header == nil {
+ r.Header = make(http.Header)
+ }
+ r.Header.Set(http.CanonicalHeaderKey(headerContentType), mimeTypeFormPost)
r.ContentLength = int64(len(s))
r.Body = ioutil.NopCloser(strings.NewReader(s))
}
@@ -430,11 +463,16 @@ func WithQueryParameters(queryParameters map[string]interface{}) PrepareDecorato
if r.URL == nil {
return r, NewError("autorest", "WithQueryParameters", "Invoked with a nil URL")
}
+
v := r.URL.Query()
for key, value := range parameters {
- v.Add(key, value)
+ d, err := url.QueryUnescape(value)
+ if err != nil {
+ return r, err
+ }
+ v.Add(key, d)
}
- r.URL.RawQuery = createQuery(v)
+ r.URL.RawQuery = v.Encode()
}
return r, err
})
diff --git a/vendor/github.com/Azure/go-autorest/autorest/sender.go b/vendor/github.com/Azure/go-autorest/autorest/sender.go
index 7264c32f27db..c5efd59a219f 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/sender.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/sender.go
@@ -215,19 +215,26 @@ func DoRetryForStatusCodes(attempts int, backoff time.Duration, codes ...int) Se
rr := NewRetriableRequest(r)
// Increment to add the first call (attempts denotes number of retries)
attempts++
- for attempt := 0; attempt < attempts; attempt++ {
+ for attempt := 0; attempt < attempts; {
err = rr.Prepare()
if err != nil {
return resp, err
}
resp, err = s.Do(rr.Request())
- if err != nil || !ResponseHasStatusCode(resp, codes...) {
+ // we want to retry if err is not nil (e.g. transient network failure). note that for failed authentication
+ // resp and err will both have a value, so in this case we don't want to retry as it will never succeed.
+ if err == nil && !ResponseHasStatusCode(resp, codes...) || IsTokenRefreshError(err) {
return resp, err
}
delayed := DelayWithRetryAfter(resp, r.Cancel)
if !delayed {
DelayForBackoff(backoff, attempt, r.Cancel)
}
+ // don't count a 429 against the number of attempts
+ // so that we continue to retry until it succeeds
+ if resp == nil || resp.StatusCode != http.StatusTooManyRequests {
+ attempt++
+ }
}
return resp, err
})
@@ -237,6 +244,9 @@ func DoRetryForStatusCodes(attempts int, backoff time.Duration, codes ...int) Se
// DelayWithRetryAfter invokes time.After for the duration specified in the "Retry-After" header in
// responses with status code 429
func DelayWithRetryAfter(resp *http.Response, cancel <-chan struct{}) bool {
+ if resp == nil {
+ return false
+ }
retryAfter, _ := strconv.Atoi(resp.Header.Get("Retry-After"))
if resp.StatusCode == http.StatusTooManyRequests && retryAfter > 0 {
select {
diff --git a/vendor/github.com/Azure/go-autorest/autorest/utility.go b/vendor/github.com/Azure/go-autorest/autorest/utility.go
index dfdc6efdff06..afb3e4e161ba 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/utility.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/utility.go
@@ -20,10 +20,12 @@ import (
"encoding/xml"
"fmt"
"io"
+ "net/http"
"net/url"
"reflect"
- "sort"
"strings"
+
+ "github.com/Azure/go-autorest/autorest/adal"
)
// EncodedAs is a series of constants specifying various data encodings
@@ -137,13 +139,38 @@ func MapToValues(m map[string]interface{}) url.Values {
return v
}
+// AsStringSlice method converts interface{} to []string. This expects a
+//that the parameter passed to be a slice or array of a type that has the underlying
+//type a string.
+func AsStringSlice(s interface{}) ([]string, error) {
+ v := reflect.ValueOf(s)
+ if v.Kind() != reflect.Slice && v.Kind() != reflect.Array {
+ return nil, NewError("autorest", "AsStringSlice", "the value's type is not an array.")
+ }
+ stringSlice := make([]string, 0, v.Len())
+
+ for i := 0; i < v.Len(); i++ {
+ stringSlice = append(stringSlice, v.Index(i).String())
+ }
+ return stringSlice, nil
+}
+
// String method converts interface v to string. If interface is a list, it
-// joins list elements using separator.
+// joins list elements using the seperator. Note that only sep[0] will be used for
+// joining if any separator is specified.
func String(v interface{}, sep ...string) string {
- if len(sep) > 0 {
- return ensureValueString(strings.Join(v.([]string), sep[0]))
+ if len(sep) == 0 {
+ return ensureValueString(v)
}
- return ensureValueString(v)
+ stringSlice, ok := v.([]string)
+ if ok == false {
+ var err error
+ stringSlice, err = AsStringSlice(v)
+ if err != nil {
+ panic(fmt.Sprintf("autorest: Couldn't convert value to a string %s.", err))
+ }
+ }
+ return ensureValueString(strings.Join(stringSlice, sep[0]))
}
// Encode method encodes url path and query parameters.
@@ -167,26 +194,25 @@ func queryEscape(s string) string {
return url.QueryEscape(s)
}
-// This method is same as Encode() method of "net/url" go package,
-// except it does not encode the query parameters because they
-// already come encoded. It formats values map in query format (bar=foo&a=b).
-func createQuery(v url.Values) string {
- var buf bytes.Buffer
- keys := make([]string, 0, len(v))
- for k := range v {
- keys = append(keys, k)
+// ChangeToGet turns the specified http.Request into a GET (it assumes it wasn't).
+// This is mainly useful for long-running operations that use the Azure-AsyncOperation
+// header, so we change the initial PUT into a GET to retrieve the final result.
+func ChangeToGet(req *http.Request) *http.Request {
+ req.Method = "GET"
+ req.Body = nil
+ req.ContentLength = 0
+ req.Header.Del("Content-Length")
+ return req
+}
+
+// IsTokenRefreshError returns true if the specified error implements the TokenRefreshError
+// interface. If err is a DetailedError it will walk the chain of Original errors.
+func IsTokenRefreshError(err error) bool {
+ if _, ok := err.(adal.TokenRefreshError); ok {
+ return true
}
- sort.Strings(keys)
- for _, k := range keys {
- vs := v[k]
- prefix := url.QueryEscape(k) + "="
- for _, v := range vs {
- if buf.Len() > 0 {
- buf.WriteByte('&')
- }
- buf.WriteString(prefix)
- buf.WriteString(v)
- }
+ if de, ok := err.(DetailedError); ok {
+ return IsTokenRefreshError(de.Original)
}
- return buf.String()
+ return false
}
diff --git a/vendor/github.com/Azure/go-autorest/autorest/version.go b/vendor/github.com/Azure/go-autorest/autorest/version.go
index f588807dbb9c..a19c0d35a2d4 100644
--- a/vendor/github.com/Azure/go-autorest/autorest/version.go
+++ b/vendor/github.com/Azure/go-autorest/autorest/version.go
@@ -22,9 +22,9 @@ import (
)
const (
- major = 8
- minor = 0
- patch = 0
+ major = 9
+ minor = 8
+ patch = 1
tag = ""
)
diff --git a/vendor/github.com/cockroachdb/cmux/.travis.yml b/vendor/github.com/cockroachdb/cmux/.travis.yml
index 9343f8d2c9d7..e73780f2eb0b 100644
--- a/vendor/github.com/cockroachdb/cmux/.travis.yml
+++ b/vendor/github.com/cockroachdb/cmux/.travis.yml
@@ -1,29 +1,22 @@
language: go
go:
+ - 1.3
+ - 1.4
- 1.5
- 1.6
- - 1.7
- - tip
-
-matrix:
- allow_failures:
- - go: tip
gobuild_args: -race
before_install:
- - if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go get -u github.com/kisielk/errcheck; fi
- - if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go get -u github.com/golang/lint/golint; fi
+ - go get -u github.com/golang/lint/golint
+ - if [[ $TRAVIS_GO_VERSION == 1.5* ]]; then go get -u github.com/kisielk/errcheck; fi
+ - go get -u golang.org/x/tools/cmd/vet
before_script:
- '! gofmt -s -l . | read'
+ - golint ./...
- echo $TRAVIS_GO_VERSION
- - if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then golint ./...; fi
- - if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then errcheck ./...; fi
- - if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go tool vet .; fi
- - if [[ $TRAVIS_GO_VERSION == 1.7* ]]; then go tool vet --shadow .; fi
-
-script:
- - go test -bench . -v ./...
- - go test -race -bench . -v ./...
+ - if [[ $TRAVIS_GO_VERSION == 1.5* ]]; then errcheck ./...; fi
+ - go vet .
+ - go tool vet --shadow .
diff --git a/vendor/github.com/cockroachdb/cmux/CONTRIBUTORS b/vendor/github.com/cockroachdb/cmux/CONTRIBUTORS
deleted file mode 100644
index 1b73178547c1..000000000000
--- a/vendor/github.com/cockroachdb/cmux/CONTRIBUTORS
+++ /dev/null
@@ -1,11 +0,0 @@
-# The list of people who have contributed code to the cmux repository.
-#
-# Auto-generated with:
-# git log --oneline --pretty=format:'%an <%aE>' | sort -u
-#
-Dmitri Shuralyov
-Ethan Mosbaugh
-Soheil Hassas Yeganeh
-Soheil Hassas Yeganeh
-Tamir Duberstein
-Tamir Duberstein
diff --git a/vendor/github.com/cockroachdb/cmux/README.md b/vendor/github.com/cockroachdb/cmux/README.md
index 26e1737d731e..b3713da5876a 100644
--- a/vendor/github.com/cockroachdb/cmux/README.md
+++ b/vendor/github.com/cockroachdb/cmux/README.md
@@ -63,10 +63,3 @@ example of this approach.
when it's accepted. For example, one connection can be either gRPC or REST, but
not both. That is, we assume that a client connection is either used for gRPC
or REST.
-
-# Copyright and License
-Copyright 2016 The CMux Authors. All rights reserved.
-
-See [CONTRIBUTORS](https://github.com/cockroachdb/cmux/blob/master/CONTRIBUTORS)
-for the CMux Authors. Code is released under
-[the Apache 2 license](https://github.com/cockroachdb/cmux/blob/master/LICENSE).
diff --git a/vendor/github.com/cockroachdb/cmux/buffer.go b/vendor/github.com/cockroachdb/cmux/buffer.go
index dc4d9921f01d..5c1785853634 100644
--- a/vendor/github.com/cockroachdb/cmux/buffer.go
+++ b/vendor/github.com/cockroachdb/cmux/buffer.go
@@ -1,17 +1,3 @@
-// Copyright 2016 The CMux Authors. All rights reserved.
-//
-// 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 cmux
import (
diff --git a/vendor/github.com/cockroachdb/cmux/cmux.go b/vendor/github.com/cockroachdb/cmux/cmux.go
index f9787fdfdca7..89cc910b024e 100644
--- a/vendor/github.com/cockroachdb/cmux/cmux.go
+++ b/vendor/github.com/cockroachdb/cmux/cmux.go
@@ -1,17 +1,3 @@
-// Copyright 2016 The CMux Authors. All rights reserved.
-//
-// 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 cmux
import (
diff --git a/vendor/github.com/cockroachdb/cmux/matchers.go b/vendor/github.com/cockroachdb/cmux/matchers.go
index 939909818934..abc30f6e0ad0 100644
--- a/vendor/github.com/cockroachdb/cmux/matchers.go
+++ b/vendor/github.com/cockroachdb/cmux/matchers.go
@@ -1,17 +1,3 @@
-// Copyright 2016 The CMux Authors. All rights reserved.
-//
-// 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 cmux
import (
diff --git a/vendor/github.com/cockroachdb/cmux/patricia.go b/vendor/github.com/cockroachdb/cmux/patricia.go
index c3e3d85bdeaf..56ec4e7b287c 100644
--- a/vendor/github.com/cockroachdb/cmux/patricia.go
+++ b/vendor/github.com/cockroachdb/cmux/patricia.go
@@ -1,17 +1,3 @@
-// Copyright 2016 The CMux Authors. All rights reserved.
-//
-// 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 cmux
import (
@@ -22,20 +8,12 @@ import (
// patriciaTree is a simple patricia tree that handles []byte instead of string
// and cannot be changed after instantiation.
type patriciaTree struct {
- root *ptNode
- maxDepth int // max depth of the tree.
+ root *ptNode
}
-func newPatriciaTree(bs ...[]byte) *patriciaTree {
- max := 0
- for _, b := range bs {
- if max < len(b) {
- max = len(b)
- }
- }
+func newPatriciaTree(b ...[]byte) *patriciaTree {
return &patriciaTree{
- root: newNode(bs),
- maxDepth: max + 1,
+ root: newNode(b),
}
}
@@ -44,19 +22,17 @@ func newPatriciaTreeString(strs ...string) *patriciaTree {
for i, s := range strs {
b[i] = []byte(s)
}
- return newPatriciaTree(b...)
+ return &patriciaTree{
+ root: newNode(b),
+ }
}
func (t *patriciaTree) matchPrefix(r io.Reader) bool {
- buf := make([]byte, t.maxDepth)
- n, _ := io.ReadFull(r, buf)
- return t.root.match(buf[:n], true)
+ return t.root.match(r, true)
}
func (t *patriciaTree) match(r io.Reader) bool {
- buf := make([]byte, t.maxDepth)
- n, _ := io.ReadFull(r, buf)
- return t.root.match(buf[:n], false)
+ return t.root.match(r, false)
}
type ptNode struct {
@@ -146,34 +122,52 @@ func splitPrefix(bss [][]byte) (prefix []byte, rest [][]byte) {
return prefix, rest
}
-func (n *ptNode) match(b []byte, prefix bool) bool {
- l := len(n.prefix)
- if l > 0 {
- if l > len(b) {
- l = len(b)
+func readBytes(r io.Reader, n int) (b []byte, err error) {
+ b = make([]byte, n)
+ o := 0
+ for o < n {
+ nr, err := r.Read(b[o:])
+ if err != nil && err != io.EOF {
+ return b, err
}
- if !bytes.Equal(b[:l], n.prefix) {
+
+ o += nr
+
+ if err == io.EOF {
+ break
+ }
+ }
+ return b[:o], nil
+}
+
+func (n *ptNode) match(r io.Reader, prefix bool) bool {
+ if l := len(n.prefix); l > 0 {
+ b, err := readBytes(r, l)
+ if err != nil || len(b) != l || !bytes.Equal(b, n.prefix) {
return false
}
}
- if n.terminal && (prefix || len(n.prefix) == len(b)) {
+ if prefix && n.terminal {
return true
}
- if l >= len(b) {
- return false
- }
+ b := make([]byte, 1)
+ for {
+ nr, err := r.Read(b)
+ if nr != 0 {
+ break
+ }
- nextN, ok := n.next[b[l]]
- if !ok {
- return false
- }
+ if err == io.EOF {
+ return n.terminal
+ }
- if l == len(b) {
- b = b[l:l]
- } else {
- b = b[l+1:]
+ if err != nil {
+ return false
+ }
}
- return nextN.match(b, prefix)
+
+ nextN, ok := n.next[b[0]]
+ return ok && nextN.match(r, prefix)
}
diff --git a/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi.pb.go b/vendor/github.com/container-storage-interface/spec/lib/go/csi/v0/csi.pb.go
similarity index 57%
rename from vendor/github.com/container-storage-interface/spec/lib/go/csi/csi.pb.go
rename to vendor/github.com/container-storage-interface/spec/lib/go/csi/v0/csi.pb.go
index 6158a4870cc8..969362ff47d3 100644
--- a/vendor/github.com/container-storage-interface/spec/lib/go/csi/csi.pb.go
+++ b/vendor/github.com/container-storage-interface/spec/lib/go/csi/v0/csi.pb.go
@@ -8,16 +8,18 @@ It is generated from these files:
csi.proto
It has these top-level messages:
- GetSupportedVersionsRequest
- GetSupportedVersionsResponse
- Version
GetPluginInfoRequest
GetPluginInfoResponse
+ GetPluginCapabilitiesRequest
+ GetPluginCapabilitiesResponse
+ PluginCapability
+ ProbeRequest
+ ProbeResponse
CreateVolumeRequest
CreateVolumeResponse
VolumeCapability
CapacityRange
- VolumeInfo
+ Volume
DeleteVolumeRequest
DeleteVolumeResponse
ControllerPublishVolumeRequest
@@ -30,19 +32,19 @@ It has these top-level messages:
ListVolumesResponse
GetCapacityRequest
GetCapacityResponse
- ControllerProbeRequest
- ControllerProbeResponse
ControllerGetCapabilitiesRequest
ControllerGetCapabilitiesResponse
ControllerServiceCapability
+ NodeStageVolumeRequest
+ NodeStageVolumeResponse
+ NodeUnstageVolumeRequest
+ NodeUnstageVolumeResponse
NodePublishVolumeRequest
NodePublishVolumeResponse
NodeUnpublishVolumeRequest
NodeUnpublishVolumeResponse
- GetNodeIDRequest
- GetNodeIDResponse
- NodeProbeRequest
- NodeProbeResponse
+ NodeGetIdRequest
+ NodeGetIdResponse
NodeGetCapabilitiesRequest
NodeGetCapabilitiesResponse
NodeServiceCapability
@@ -69,13 +71,46 @@ var _ = math.Inf
// proto package needs to be updated.
const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+type PluginCapability_Service_Type int32
+
+const (
+ PluginCapability_Service_UNKNOWN PluginCapability_Service_Type = 0
+ // CONTROLLER_SERVICE indicates that the Plugin provides RPCs for
+ // the ControllerService. Plugins SHOULD provide this capability.
+ // In rare cases certain plugins may wish to omit the
+ // ControllerService entirely from their implementation, but such
+ // SHOULD NOT be the common case.
+ // The presence of this capability determines whether the CO will
+ // attempt to invoke the REQUIRED ControllerService RPCs, as well
+ // as specific RPCs as indicated by ControllerGetCapabilities.
+ PluginCapability_Service_CONTROLLER_SERVICE PluginCapability_Service_Type = 1
+)
+
+var PluginCapability_Service_Type_name = map[int32]string{
+ 0: "UNKNOWN",
+ 1: "CONTROLLER_SERVICE",
+}
+var PluginCapability_Service_Type_value = map[string]int32{
+ "UNKNOWN": 0,
+ "CONTROLLER_SERVICE": 1,
+}
+
+func (x PluginCapability_Service_Type) String() string {
+ return proto.EnumName(PluginCapability_Service_Type_name, int32(x))
+}
+func (PluginCapability_Service_Type) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{4, 0, 0}
+}
+
type VolumeCapability_AccessMode_Mode int32
const (
VolumeCapability_AccessMode_UNKNOWN VolumeCapability_AccessMode_Mode = 0
- // Can be published as read/write at one node at a time.
+ // Can only be published once as read/write on a single node, at
+ // any given time.
VolumeCapability_AccessMode_SINGLE_NODE_WRITER VolumeCapability_AccessMode_Mode = 1
- // Can be published as readonly at one node at a time.
+ // Can only be published once as readonly on a single node, at
+ // any given time.
VolumeCapability_AccessMode_SINGLE_NODE_READER_ONLY VolumeCapability_AccessMode_Mode = 2
// Can be published as readonly at multiple nodes simultaneously.
VolumeCapability_AccessMode_MULTI_NODE_READER_ONLY VolumeCapability_AccessMode_Mode = 3
@@ -108,7 +143,7 @@ func (x VolumeCapability_AccessMode_Mode) String() string {
return proto.EnumName(VolumeCapability_AccessMode_Mode_name, int32(x))
}
func (VolumeCapability_AccessMode_Mode) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{7, 2, 0}
+ return fileDescriptor0, []int{9, 2, 0}
}
type ControllerServiceCapability_RPC_Type int32
@@ -146,103 +181,33 @@ func (ControllerServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) {
type NodeServiceCapability_RPC_Type int32
const (
- NodeServiceCapability_RPC_UNKNOWN NodeServiceCapability_RPC_Type = 0
+ NodeServiceCapability_RPC_UNKNOWN NodeServiceCapability_RPC_Type = 0
+ NodeServiceCapability_RPC_STAGE_UNSTAGE_VOLUME NodeServiceCapability_RPC_Type = 1
)
var NodeServiceCapability_RPC_Type_name = map[int32]string{
0: "UNKNOWN",
+ 1: "STAGE_UNSTAGE_VOLUME",
}
var NodeServiceCapability_RPC_Type_value = map[string]int32{
- "UNKNOWN": 0,
+ "UNKNOWN": 0,
+ "STAGE_UNSTAGE_VOLUME": 1,
}
func (x NodeServiceCapability_RPC_Type) String() string {
return proto.EnumName(NodeServiceCapability_RPC_Type_name, int32(x))
}
func (NodeServiceCapability_RPC_Type) EnumDescriptor() ([]byte, []int) {
- return fileDescriptor0, []int{37, 0, 0}
+ return fileDescriptor0, []int{39, 0, 0}
}
-// //////
-// //////
-type GetSupportedVersionsRequest struct {
-}
-
-func (m *GetSupportedVersionsRequest) Reset() { *m = GetSupportedVersionsRequest{} }
-func (m *GetSupportedVersionsRequest) String() string { return proto.CompactTextString(m) }
-func (*GetSupportedVersionsRequest) ProtoMessage() {}
-func (*GetSupportedVersionsRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
-
-type GetSupportedVersionsResponse struct {
- // All the CSI versions that the Plugin supports. This field is
- // REQUIRED.
- SupportedVersions []*Version `protobuf:"bytes,1,rep,name=supported_versions,json=supportedVersions" json:"supported_versions,omitempty"`
-}
-
-func (m *GetSupportedVersionsResponse) Reset() { *m = GetSupportedVersionsResponse{} }
-func (m *GetSupportedVersionsResponse) String() string { return proto.CompactTextString(m) }
-func (*GetSupportedVersionsResponse) ProtoMessage() {}
-func (*GetSupportedVersionsResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
-
-func (m *GetSupportedVersionsResponse) GetSupportedVersions() []*Version {
- if m != nil {
- return m.SupportedVersions
- }
- return nil
-}
-
-// Specifies a version in Semantic Version 2.0 format.
-// (http://semver.org/spec/v2.0.0.html)
-type Version struct {
- Major uint32 `protobuf:"varint,1,opt,name=major" json:"major,omitempty"`
- Minor uint32 `protobuf:"varint,2,opt,name=minor" json:"minor,omitempty"`
- Patch uint32 `protobuf:"varint,3,opt,name=patch" json:"patch,omitempty"`
-}
-
-func (m *Version) Reset() { *m = Version{} }
-func (m *Version) String() string { return proto.CompactTextString(m) }
-func (*Version) ProtoMessage() {}
-func (*Version) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
-
-func (m *Version) GetMajor() uint32 {
- if m != nil {
- return m.Major
- }
- return 0
-}
-
-func (m *Version) GetMinor() uint32 {
- if m != nil {
- return m.Minor
- }
- return 0
-}
-
-func (m *Version) GetPatch() uint32 {
- if m != nil {
- return m.Patch
- }
- return 0
-}
-
-// //////
-// //////
type GetPluginInfoRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
}
func (m *GetPluginInfoRequest) Reset() { *m = GetPluginInfoRequest{} }
func (m *GetPluginInfoRequest) String() string { return proto.CompactTextString(m) }
func (*GetPluginInfoRequest) ProtoMessage() {}
-func (*GetPluginInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
-
-func (m *GetPluginInfoRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*GetPluginInfoRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
type GetPluginInfoResponse struct {
// The name MUST follow reverse domain name notation format
@@ -262,7 +227,7 @@ type GetPluginInfoResponse struct {
func (m *GetPluginInfoResponse) Reset() { *m = GetPluginInfoResponse{} }
func (m *GetPluginInfoResponse) String() string { return proto.CompactTextString(m) }
func (*GetPluginInfoResponse) ProtoMessage() {}
-func (*GetPluginInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+func (*GetPluginInfoResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
func (m *GetPluginInfoResponse) GetName() string {
if m != nil {
@@ -285,11 +250,156 @@ func (m *GetPluginInfoResponse) GetManifest() map[string]string {
return nil
}
-// //////
-// //////
+type GetPluginCapabilitiesRequest struct {
+}
+
+func (m *GetPluginCapabilitiesRequest) Reset() { *m = GetPluginCapabilitiesRequest{} }
+func (m *GetPluginCapabilitiesRequest) String() string { return proto.CompactTextString(m) }
+func (*GetPluginCapabilitiesRequest) ProtoMessage() {}
+func (*GetPluginCapabilitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+type GetPluginCapabilitiesResponse struct {
+ // All the capabilities that the controller service supports. This
+ // field is OPTIONAL.
+ Capabilities []*PluginCapability `protobuf:"bytes,2,rep,name=capabilities" json:"capabilities,omitempty"`
+}
+
+func (m *GetPluginCapabilitiesResponse) Reset() { *m = GetPluginCapabilitiesResponse{} }
+func (m *GetPluginCapabilitiesResponse) String() string { return proto.CompactTextString(m) }
+func (*GetPluginCapabilitiesResponse) ProtoMessage() {}
+func (*GetPluginCapabilitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+func (m *GetPluginCapabilitiesResponse) GetCapabilities() []*PluginCapability {
+ if m != nil {
+ return m.Capabilities
+ }
+ return nil
+}
+
+// Specifies a capability of the plugin.
+type PluginCapability struct {
+ // Types that are valid to be assigned to Type:
+ // *PluginCapability_Service_
+ Type isPluginCapability_Type `protobuf_oneof:"type"`
+}
+
+func (m *PluginCapability) Reset() { *m = PluginCapability{} }
+func (m *PluginCapability) String() string { return proto.CompactTextString(m) }
+func (*PluginCapability) ProtoMessage() {}
+func (*PluginCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+type isPluginCapability_Type interface {
+ isPluginCapability_Type()
+}
+
+type PluginCapability_Service_ struct {
+ Service *PluginCapability_Service `protobuf:"bytes,1,opt,name=service,oneof"`
+}
+
+func (*PluginCapability_Service_) isPluginCapability_Type() {}
+
+func (m *PluginCapability) GetType() isPluginCapability_Type {
+ if m != nil {
+ return m.Type
+ }
+ return nil
+}
+
+func (m *PluginCapability) GetService() *PluginCapability_Service {
+ if x, ok := m.GetType().(*PluginCapability_Service_); ok {
+ return x.Service
+ }
+ return nil
+}
+
+// XXX_OneofFuncs is for the internal use of the proto package.
+func (*PluginCapability) XXX_OneofFuncs() (func(msg proto.Message, b *proto.Buffer) error, func(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error), func(msg proto.Message) (n int), []interface{}) {
+ return _PluginCapability_OneofMarshaler, _PluginCapability_OneofUnmarshaler, _PluginCapability_OneofSizer, []interface{}{
+ (*PluginCapability_Service_)(nil),
+ }
+}
+
+func _PluginCapability_OneofMarshaler(msg proto.Message, b *proto.Buffer) error {
+ m := msg.(*PluginCapability)
+ // type
+ switch x := m.Type.(type) {
+ case *PluginCapability_Service_:
+ b.EncodeVarint(1<<3 | proto.WireBytes)
+ if err := b.EncodeMessage(x.Service); err != nil {
+ return err
+ }
+ case nil:
+ default:
+ return fmt.Errorf("PluginCapability.Type has unexpected type %T", x)
+ }
+ return nil
+}
+
+func _PluginCapability_OneofUnmarshaler(msg proto.Message, tag, wire int, b *proto.Buffer) (bool, error) {
+ m := msg.(*PluginCapability)
+ switch tag {
+ case 1: // type.service
+ if wire != proto.WireBytes {
+ return true, proto.ErrInternalBadWireType
+ }
+ msg := new(PluginCapability_Service)
+ err := b.DecodeMessage(msg)
+ m.Type = &PluginCapability_Service_{msg}
+ return true, err
+ default:
+ return false, nil
+ }
+}
+
+func _PluginCapability_OneofSizer(msg proto.Message) (n int) {
+ m := msg.(*PluginCapability)
+ // type
+ switch x := m.Type.(type) {
+ case *PluginCapability_Service_:
+ s := proto.Size(x.Service)
+ n += proto.SizeVarint(1<<3 | proto.WireBytes)
+ n += proto.SizeVarint(uint64(s))
+ n += s
+ case nil:
+ default:
+ panic(fmt.Sprintf("proto: unexpected type %T in oneof", x))
+ }
+ return n
+}
+
+type PluginCapability_Service struct {
+ Type PluginCapability_Service_Type `protobuf:"varint,1,opt,name=type,enum=csi.v0.PluginCapability_Service_Type" json:"type,omitempty"`
+}
+
+func (m *PluginCapability_Service) Reset() { *m = PluginCapability_Service{} }
+func (m *PluginCapability_Service) String() string { return proto.CompactTextString(m) }
+func (*PluginCapability_Service) ProtoMessage() {}
+func (*PluginCapability_Service) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} }
+
+func (m *PluginCapability_Service) GetType() PluginCapability_Service_Type {
+ if m != nil {
+ return m.Type
+ }
+ return PluginCapability_Service_UNKNOWN
+}
+
+type ProbeRequest struct {
+}
+
+func (m *ProbeRequest) Reset() { *m = ProbeRequest{} }
+func (m *ProbeRequest) String() string { return proto.CompactTextString(m) }
+func (*ProbeRequest) ProtoMessage() {}
+func (*ProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+type ProbeResponse struct {
+}
+
+func (m *ProbeResponse) Reset() { *m = ProbeResponse{} }
+func (m *ProbeResponse) String() string { return proto.CompactTextString(m) }
+func (*ProbeResponse) ProtoMessage() {}
+func (*ProbeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
type CreateVolumeRequest struct {
- // The API version assumed by the CO. This field is REQUIRED.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// The suggested name for the storage space. This field is REQUIRED.
// It serves two purposes:
// 1) Idempotency - This name is generated by the CO to achieve
@@ -305,11 +415,11 @@ type CreateVolumeRequest struct {
// an identifier by which to refer to the newly provisioned
// storage. If a storage system supports this, it can optionally
// use this name as the identifier for the new volume.
- Name string `protobuf:"bytes,2,opt,name=name" json:"name,omitempty"`
+ Name string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
// This field is OPTIONAL. This allows the CO to specify the capacity
// requirement of the volume to be provisioned. If not specified, the
// Plugin MAY choose an implementation-defined capacity range.
- CapacityRange *CapacityRange `protobuf:"bytes,3,opt,name=capacity_range,json=capacityRange" json:"capacity_range,omitempty"`
+ CapacityRange *CapacityRange `protobuf:"bytes,2,opt,name=capacity_range,json=capacityRange" json:"capacity_range,omitempty"`
// The capabilities that the provisioned volume MUST have: the Plugin
// MUST provision a volume that could satisfy ALL of the
// capabilities specified in this list. The Plugin MUST assume that
@@ -318,36 +428,35 @@ type CreateVolumeRequest struct {
// early validation: if ANY of the specified volume capabilities are
// not supported by the Plugin, the call SHALL fail. This field is
// REQUIRED.
- VolumeCapabilities []*VolumeCapability `protobuf:"bytes,4,rep,name=volume_capabilities,json=volumeCapabilities" json:"volume_capabilities,omitempty"`
+ VolumeCapabilities []*VolumeCapability `protobuf:"bytes,3,rep,name=volume_capabilities,json=volumeCapabilities" json:"volume_capabilities,omitempty"`
// Plugin specific parameters passed in as opaque key-value pairs.
// This field is OPTIONAL. The Plugin is responsible for parsing and
// validating these parameters. COs will treat these as opaque.
- Parameters map[string]string `protobuf:"bytes,5,rep,name=parameters" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
- // End user credentials used to authenticate/authorize volume creation
- // request.
- // This field contains credential data, for example username and
- // password. Each key must consist of alphanumeric characters, '-',
- // '_' or '.'. Each value MUST contain a valid string. An SP MAY
- // choose to accept binary (non-string) data by using a binary-to-text
- // encoding scheme, like base64. An SP SHALL advertise the
- // requirements for credentials in documentation. COs SHALL permit
- // users to pass through the required credentials. This information is
- // sensitive and MUST be treated as such (not logged, etc.) by the CO.
+ Parameters map[string]string `protobuf:"bytes,4,rep,name=parameters" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ // Secrets required by plugin to complete volume creation request.
+ // A secret is a string to string map where the key identifies the
+ // name of the secret (e.g. "username" or "password"), and the value
+ // contains the secret data (e.g. "bob" or "abc123").
+ // Each key MUST consist of alphanumeric characters, '-', '_' or '.'.
+ // Each value MUST contain a valid string. An SP MAY choose to accept
+ // binary (non-string) data by using a binary-to-text encoding scheme,
+ // like base64.
+ // An SP SHALL advertise the requirements for required secret keys and
+ // values in documentation.
+ // CO SHALL permit passing through the required secrets.
+ // A CO MAY pass the same secrets to all RPCs, therefore the keys for
+ // all unique secrets that an SP expects must be unique across all CSI
+ // operations.
+ // This information is sensitive and MUST be treated as such (not
+ // logged, etc.) by the CO.
// This field is OPTIONAL.
- UserCredentials map[string]string `protobuf:"bytes,6,rep,name=user_credentials,json=userCredentials" json:"user_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ ControllerCreateSecrets map[string]string `protobuf:"bytes,5,rep,name=controller_create_secrets,json=controllerCreateSecrets" json:"controller_create_secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *CreateVolumeRequest) Reset() { *m = CreateVolumeRequest{} }
func (m *CreateVolumeRequest) String() string { return proto.CompactTextString(m) }
func (*CreateVolumeRequest) ProtoMessage() {}
-func (*CreateVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
-
-func (m *CreateVolumeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*CreateVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
func (m *CreateVolumeRequest) GetName() string {
if m != nil {
@@ -377,9 +486,9 @@ func (m *CreateVolumeRequest) GetParameters() map[string]string {
return nil
}
-func (m *CreateVolumeRequest) GetUserCredentials() map[string]string {
+func (m *CreateVolumeRequest) GetControllerCreateSecrets() map[string]string {
if m != nil {
- return m.UserCredentials
+ return m.ControllerCreateSecrets
}
return nil
}
@@ -388,17 +497,17 @@ type CreateVolumeResponse struct {
// Contains all attributes of the newly created volume that are
// relevant to the CO along with information required by the Plugin
// to uniquely identify the volume. This field is REQUIRED.
- VolumeInfo *VolumeInfo `protobuf:"bytes,1,opt,name=volume_info,json=volumeInfo" json:"volume_info,omitempty"`
+ Volume *Volume `protobuf:"bytes,1,opt,name=volume" json:"volume,omitempty"`
}
func (m *CreateVolumeResponse) Reset() { *m = CreateVolumeResponse{} }
func (m *CreateVolumeResponse) String() string { return proto.CompactTextString(m) }
func (*CreateVolumeResponse) ProtoMessage() {}
-func (*CreateVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+func (*CreateVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
-func (m *CreateVolumeResponse) GetVolumeInfo() *VolumeInfo {
+func (m *CreateVolumeResponse) GetVolume() *Volume {
if m != nil {
- return m.VolumeInfo
+ return m.Volume
}
return nil
}
@@ -419,7 +528,7 @@ type VolumeCapability struct {
func (m *VolumeCapability) Reset() { *m = VolumeCapability{} }
func (m *VolumeCapability) String() string { return proto.CompactTextString(m) }
func (*VolumeCapability) ProtoMessage() {}
-func (*VolumeCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+func (*VolumeCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
type isVolumeCapability_AccessType interface {
isVolumeCapability_AccessType()
@@ -544,7 +653,7 @@ type VolumeCapability_BlockVolume struct {
func (m *VolumeCapability_BlockVolume) Reset() { *m = VolumeCapability_BlockVolume{} }
func (m *VolumeCapability_BlockVolume) String() string { return proto.CompactTextString(m) }
func (*VolumeCapability_BlockVolume) ProtoMessage() {}
-func (*VolumeCapability_BlockVolume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 0} }
+func (*VolumeCapability_BlockVolume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 0} }
// Indicate that the volume will be accessed via the filesystem API.
type VolumeCapability_MountVolume struct {
@@ -562,7 +671,7 @@ type VolumeCapability_MountVolume struct {
func (m *VolumeCapability_MountVolume) Reset() { *m = VolumeCapability_MountVolume{} }
func (m *VolumeCapability_MountVolume) String() string { return proto.CompactTextString(m) }
func (*VolumeCapability_MountVolume) ProtoMessage() {}
-func (*VolumeCapability_MountVolume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 1} }
+func (*VolumeCapability_MountVolume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 1} }
func (m *VolumeCapability_MountVolume) GetFsType() string {
if m != nil {
@@ -581,13 +690,13 @@ func (m *VolumeCapability_MountVolume) GetMountFlags() []string {
// Specify how a volume can be accessed.
type VolumeCapability_AccessMode struct {
// This field is REQUIRED.
- Mode VolumeCapability_AccessMode_Mode `protobuf:"varint,1,opt,name=mode,enum=csi.VolumeCapability_AccessMode_Mode" json:"mode,omitempty"`
+ Mode VolumeCapability_AccessMode_Mode `protobuf:"varint,1,opt,name=mode,enum=csi.v0.VolumeCapability_AccessMode_Mode" json:"mode,omitempty"`
}
func (m *VolumeCapability_AccessMode) Reset() { *m = VolumeCapability_AccessMode{} }
func (m *VolumeCapability_AccessMode) String() string { return proto.CompactTextString(m) }
func (*VolumeCapability_AccessMode) ProtoMessage() {}
-func (*VolumeCapability_AccessMode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7, 2} }
+func (*VolumeCapability_AccessMode) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9, 2} }
func (m *VolumeCapability_AccessMode) GetMode() VolumeCapability_AccessMode_Mode {
if m != nil {
@@ -602,25 +711,27 @@ func (m *VolumeCapability_AccessMode) GetMode() VolumeCapability_AccessMode_Mode
type CapacityRange struct {
// Volume must be at least this big. This field is OPTIONAL.
// A value of 0 is equal to an unspecified field value.
- RequiredBytes uint64 `protobuf:"varint,1,opt,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
+ // The value of this field MUST NOT be negative.
+ RequiredBytes int64 `protobuf:"varint,1,opt,name=required_bytes,json=requiredBytes" json:"required_bytes,omitempty"`
// Volume must not be bigger than this. This field is OPTIONAL.
// A value of 0 is equal to an unspecified field value.
- LimitBytes uint64 `protobuf:"varint,2,opt,name=limit_bytes,json=limitBytes" json:"limit_bytes,omitempty"`
+ // The value of this field MUST NOT be negative.
+ LimitBytes int64 `protobuf:"varint,2,opt,name=limit_bytes,json=limitBytes" json:"limit_bytes,omitempty"`
}
func (m *CapacityRange) Reset() { *m = CapacityRange{} }
func (m *CapacityRange) String() string { return proto.CompactTextString(m) }
func (*CapacityRange) ProtoMessage() {}
-func (*CapacityRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+func (*CapacityRange) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
-func (m *CapacityRange) GetRequiredBytes() uint64 {
+func (m *CapacityRange) GetRequiredBytes() int64 {
if m != nil {
return m.RequiredBytes
}
return 0
}
-func (m *CapacityRange) GetLimitBytes() uint64 {
+func (m *CapacityRange) GetLimitBytes() int64 {
if m != nil {
return m.LimitBytes
}
@@ -628,11 +739,12 @@ func (m *CapacityRange) GetLimitBytes() uint64 {
}
// The information about a provisioned volume.
-type VolumeInfo struct {
+type Volume struct {
// The capacity of the volume in bytes. This field is OPTIONAL. If not
// set (value of 0), it indicates that the capacity of the volume is
// unknown (e.g., NFS share).
- CapacityBytes uint64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes" json:"capacity_bytes,omitempty"`
+ // The value of this field MUST NOT be negative.
+ CapacityBytes int64 `protobuf:"varint,1,opt,name=capacity_bytes,json=capacityBytes" json:"capacity_bytes,omitempty"`
// Contains identity information for the created volume. This field is
// REQUIRED. The identity information will be used by the CO in
// subsequent calls to refer to the provisioned volume.
@@ -648,65 +760,60 @@ type VolumeInfo struct {
Attributes map[string]string `protobuf:"bytes,3,rep,name=attributes" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
-func (m *VolumeInfo) Reset() { *m = VolumeInfo{} }
-func (m *VolumeInfo) String() string { return proto.CompactTextString(m) }
-func (*VolumeInfo) ProtoMessage() {}
-func (*VolumeInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+func (m *Volume) Reset() { *m = Volume{} }
+func (m *Volume) String() string { return proto.CompactTextString(m) }
+func (*Volume) ProtoMessage() {}
+func (*Volume) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
-func (m *VolumeInfo) GetCapacityBytes() uint64 {
+func (m *Volume) GetCapacityBytes() int64 {
if m != nil {
return m.CapacityBytes
}
return 0
}
-func (m *VolumeInfo) GetId() string {
+func (m *Volume) GetId() string {
if m != nil {
return m.Id
}
return ""
}
-func (m *VolumeInfo) GetAttributes() map[string]string {
+func (m *Volume) GetAttributes() map[string]string {
if m != nil {
return m.Attributes
}
return nil
}
-// //////
-// //////
type DeleteVolumeRequest struct {
- // The API version assumed by the CO. This field is REQUIRED.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// The ID of the volume to be deprovisioned.
// This field is REQUIRED.
- VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
- // End user credentials used to authenticate/authorize volume deletion
- // request.
- // This field contains credential data, for example username and
- // password. Each key must consist of alphanumeric characters, '-',
- // '_' or '.'. Each value MUST contain a valid string. An SP MAY
- // choose to accept binary (non-string) data by using a binary-to-text
- // encoding scheme, like base64. An SP SHALL advertise the
- // requirements for credentials in documentation. COs SHALL permit
- // users to pass through the required credentials. This information is
- // sensitive and MUST be treated as such (not logged, etc.) by the CO.
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ // Secrets required by plugin to complete volume deletion request.
+ // A secret is a string to string map where the key identifies the
+ // name of the secret (e.g. "username" or "password"), and the value
+ // contains the secret data (e.g. "bob" or "abc123").
+ // Each key MUST consist of alphanumeric characters, '-', '_' or '.'.
+ // Each value MUST contain a valid string. An SP MAY choose to accept
+ // binary (non-string) data by using a binary-to-text encoding scheme,
+ // like base64.
+ // An SP SHALL advertise the requirements for required secret keys and
+ // values in documentation.
+ // CO SHALL permit passing through the required secrets.
+ // A CO MAY pass the same secrets to all RPCs, therefore the keys for
+ // all unique secrets that an SP expects must be unique across all CSI
+ // operations.
+ // This information is sensitive and MUST be treated as such (not
+ // logged, etc.) by the CO.
// This field is OPTIONAL.
- UserCredentials map[string]string `protobuf:"bytes,3,rep,name=user_credentials,json=userCredentials" json:"user_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ ControllerDeleteSecrets map[string]string `protobuf:"bytes,2,rep,name=controller_delete_secrets,json=controllerDeleteSecrets" json:"controller_delete_secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *DeleteVolumeRequest) Reset() { *m = DeleteVolumeRequest{} }
func (m *DeleteVolumeRequest) String() string { return proto.CompactTextString(m) }
func (*DeleteVolumeRequest) ProtoMessage() {}
-func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
-
-func (m *DeleteVolumeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*DeleteVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
func (m *DeleteVolumeRequest) GetVolumeId() string {
if m != nil {
@@ -715,9 +822,9 @@ func (m *DeleteVolumeRequest) GetVolumeId() string {
return ""
}
-func (m *DeleteVolumeRequest) GetUserCredentials() map[string]string {
+func (m *DeleteVolumeRequest) GetControllerDeleteSecrets() map[string]string {
if m != nil {
- return m.UserCredentials
+ return m.ControllerDeleteSecrets
}
return nil
}
@@ -728,54 +835,50 @@ type DeleteVolumeResponse struct {
func (m *DeleteVolumeResponse) Reset() { *m = DeleteVolumeResponse{} }
func (m *DeleteVolumeResponse) String() string { return proto.CompactTextString(m) }
func (*DeleteVolumeResponse) ProtoMessage() {}
-func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+func (*DeleteVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
-// //////
-// //////
type ControllerPublishVolumeRequest struct {
- // The API version assumed by the CO. This field is REQUIRED.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// The ID of the volume to be used on a node.
// This field is REQUIRED.
- VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
// The ID of the node. This field is REQUIRED. The CO SHALL set this
- // field to match the node ID returned by `GetNodeID`.
- NodeId string `protobuf:"bytes,3,opt,name=node_id,json=nodeId" json:"node_id,omitempty"`
+ // field to match the node ID returned by `NodeGetId`.
+ NodeId string `protobuf:"bytes,2,opt,name=node_id,json=nodeId" json:"node_id,omitempty"`
// The capability of the volume the CO expects the volume to have.
// This is a REQUIRED field.
- VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability" json:"volume_capability,omitempty"`
+ VolumeCapability *VolumeCapability `protobuf:"bytes,3,opt,name=volume_capability,json=volumeCapability" json:"volume_capability,omitempty"`
// Whether to publish the volume in readonly mode. This field is
// REQUIRED.
- Readonly bool `protobuf:"varint,5,opt,name=readonly" json:"readonly,omitempty"`
- // End user credentials used to authenticate/authorize controller
- // publish request.
- // This field contains credential data, for example username and
- // password. Each key must consist of alphanumeric characters, '-',
- // '_' or '.'. Each value MUST contain a valid string. An SP MAY
- // choose to accept binary (non-string) data by using a binary-to-text
- // encoding scheme, like base64. An SP SHALL advertise the
- // requirements for credentials in documentation. COs SHALL permit
- // users to pass through the required credentials. This information is
- // sensitive and MUST be treated as such (not logged, etc.) by the CO.
+ Readonly bool `protobuf:"varint,4,opt,name=readonly" json:"readonly,omitempty"`
+ // Secrets required by plugin to complete controller publish volume
+ // request.
+ // A secret is a string to string map where the key identifies the
+ // name of the secret (e.g. "username" or "password"), and the value
+ // contains the secret data (e.g. "bob" or "abc123").
+ // Each key MUST consist of alphanumeric characters, '-', '_' or '.'.
+ // Each value MUST contain a valid string. An SP MAY choose to accept
+ // binary (non-string) data by using a binary-to-text encoding scheme,
+ // like base64.
+ // An SP SHALL advertise the requirements for required secret keys and
+ // values in documentation.
+ // CO SHALL permit passing through the required secrets.
+ // A CO MAY pass the same secrets to all RPCs, therefore the keys for
+ // all unique secrets that an SP expects must be unique across all CSI
+ // operations.
+ // This information is sensitive and MUST be treated as such (not
+ // logged, etc.) by the CO.
// This field is OPTIONAL.
- UserCredentials map[string]string `protobuf:"bytes,6,rep,name=user_credentials,json=userCredentials" json:"user_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ ControllerPublishSecrets map[string]string `protobuf:"bytes,5,rep,name=controller_publish_secrets,json=controllerPublishSecrets" json:"controller_publish_secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Attributes of the volume to be used on a node. This field is
- // OPTIONAL and MUST match the attributes of the VolumeInfo identified
+ // OPTIONAL and MUST match the attributes of the Volume identified
// by `volume_id`.
- VolumeAttributes map[string]string `protobuf:"bytes,7,rep,name=volume_attributes,json=volumeAttributes" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ VolumeAttributes map[string]string `protobuf:"bytes,6,rep,name=volume_attributes,json=volumeAttributes" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *ControllerPublishVolumeRequest) Reset() { *m = ControllerPublishVolumeRequest{} }
func (m *ControllerPublishVolumeRequest) String() string { return proto.CompactTextString(m) }
func (*ControllerPublishVolumeRequest) ProtoMessage() {}
-func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
-
-func (m *ControllerPublishVolumeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*ControllerPublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
func (m *ControllerPublishVolumeRequest) GetVolumeId() string {
if m != nil {
@@ -805,9 +908,9 @@ func (m *ControllerPublishVolumeRequest) GetReadonly() bool {
return false
}
-func (m *ControllerPublishVolumeRequest) GetUserCredentials() map[string]string {
+func (m *ControllerPublishVolumeRequest) GetControllerPublishSecrets() map[string]string {
if m != nil {
- return m.UserCredentials
+ return m.ControllerPublishSecrets
}
return nil
}
@@ -821,64 +924,63 @@ func (m *ControllerPublishVolumeRequest) GetVolumeAttributes() map[string]string
type ControllerPublishVolumeResponse struct {
// The SP specific information that will be passed to the Plugin in
- // the subsequent `NodePublishVolume` call for the given volume.
+ // the subsequent `NodeStageVolume` or `NodePublishVolume` calls
+ // for the given volume.
// This information is opaque to the CO. This field is OPTIONAL.
- PublishVolumeInfo map[string]string `protobuf:"bytes,1,rep,name=publish_volume_info,json=publishVolumeInfo" json:"publish_volume_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ PublishInfo map[string]string `protobuf:"bytes,1,rep,name=publish_info,json=publishInfo" json:"publish_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *ControllerPublishVolumeResponse) Reset() { *m = ControllerPublishVolumeResponse{} }
func (m *ControllerPublishVolumeResponse) String() string { return proto.CompactTextString(m) }
func (*ControllerPublishVolumeResponse) ProtoMessage() {}
func (*ControllerPublishVolumeResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{13}
+ return fileDescriptor0, []int{15}
}
-func (m *ControllerPublishVolumeResponse) GetPublishVolumeInfo() map[string]string {
+func (m *ControllerPublishVolumeResponse) GetPublishInfo() map[string]string {
if m != nil {
- return m.PublishVolumeInfo
+ return m.PublishInfo
}
return nil
}
-// //////
-// //////
type ControllerUnpublishVolumeRequest struct {
- // The API version assumed by the CO. This field is REQUIRED.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// The ID of the volume. This field is REQUIRED.
- VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
// The ID of the node. This field is OPTIONAL. The CO SHOULD set this
- // field to match the node ID returned by `GetNodeID` or leave it
+ // field to match the node ID returned by `NodeGetId` or leave it
// unset. If the value is set, the SP MUST unpublish the volume from
// the specified node. If the value is unset, the SP MUST unpublish
// the volume from all nodes it is published to.
- NodeId string `protobuf:"bytes,3,opt,name=node_id,json=nodeId" json:"node_id,omitempty"`
- // End user credentials used to authenticate/authorize controller
- // unpublish request.
- // This field contains credential data, for example username and
- // password. Each key must consist of alphanumeric characters, '-',
- // '_' or '.'. Each value MUST contain a valid string. An SP MAY
- // choose to accept binary (non-string) data by using a binary-to-text
- // encoding scheme, like base64. An SP SHALL advertise the
- // requirements for credentials in documentation. COs SHALL permit
- // users to pass through the required credentials. This information is
- // sensitive and MUST be treated as such (not logged, etc.) by the CO.
+ NodeId string `protobuf:"bytes,2,opt,name=node_id,json=nodeId" json:"node_id,omitempty"`
+ // Secrets required by plugin to complete controller unpublish volume
+ // request. This SHOULD be the same secrets passed to the
+ // ControllerPublishVolume.
+ // call for the specified volume.
+ // A secret is a string to string map where the key identifies the
+ // name of the secret (e.g. "username" or "password"), and the value
+ // contains the secret data (e.g. "bob" or "abc123").
+ // Each key MUST consist of alphanumeric characters, '-', '_' or '.'.
+ // Each value MUST contain a valid string. An SP MAY choose to accept
+ // binary (non-string) data by using a binary-to-text encoding scheme,
+ // like base64.
+ // An SP SHALL advertise the requirements for required secret keys and
+ // values in documentation.
+ // CO SHALL permit passing through the required secrets.
+ // A CO MAY pass the same secrets to all RPCs, therefore the keys for
+ // all unique secrets that an SP expects must be unique across all CSI
+ // operations.
+ // This information is sensitive and MUST be treated as such (not
+ // logged, etc.) by the CO.
// This field is OPTIONAL.
- UserCredentials map[string]string `protobuf:"bytes,4,rep,name=user_credentials,json=userCredentials" json:"user_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ ControllerUnpublishSecrets map[string]string `protobuf:"bytes,3,rep,name=controller_unpublish_secrets,json=controllerUnpublishSecrets" json:"controller_unpublish_secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *ControllerUnpublishVolumeRequest) Reset() { *m = ControllerUnpublishVolumeRequest{} }
func (m *ControllerUnpublishVolumeRequest) String() string { return proto.CompactTextString(m) }
func (*ControllerUnpublishVolumeRequest) ProtoMessage() {}
func (*ControllerUnpublishVolumeRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{14}
-}
-
-func (m *ControllerUnpublishVolumeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
+ return fileDescriptor0, []int{16}
}
func (m *ControllerUnpublishVolumeRequest) GetVolumeId() string {
@@ -895,9 +997,9 @@ func (m *ControllerUnpublishVolumeRequest) GetNodeId() string {
return ""
}
-func (m *ControllerUnpublishVolumeRequest) GetUserCredentials() map[string]string {
+func (m *ControllerUnpublishVolumeRequest) GetControllerUnpublishSecrets() map[string]string {
if m != nil {
- return m.UserCredentials
+ return m.ControllerUnpublishSecrets
}
return nil
}
@@ -909,37 +1011,26 @@ func (m *ControllerUnpublishVolumeResponse) Reset() { *m = ControllerUnp
func (m *ControllerUnpublishVolumeResponse) String() string { return proto.CompactTextString(m) }
func (*ControllerUnpublishVolumeResponse) ProtoMessage() {}
func (*ControllerUnpublishVolumeResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{15}
+ return fileDescriptor0, []int{17}
}
-// //////
-// //////
type ValidateVolumeCapabilitiesRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// The ID of the volume to check. This field is REQUIRED.
- VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
// The capabilities that the CO wants to check for the volume. This
// call SHALL return "supported" only if all the volume capabilities
// specified below are supported. This field is REQUIRED.
- VolumeCapabilities []*VolumeCapability `protobuf:"bytes,3,rep,name=volume_capabilities,json=volumeCapabilities" json:"volume_capabilities,omitempty"`
+ VolumeCapabilities []*VolumeCapability `protobuf:"bytes,2,rep,name=volume_capabilities,json=volumeCapabilities" json:"volume_capabilities,omitempty"`
// Attributes of the volume to check. This field is OPTIONAL and MUST
- // match the attributes of the VolumeInfo identified by `volume_id`.
- VolumeAttributes map[string]string `protobuf:"bytes,4,rep,name=volume_attributes,json=volumeAttributes" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ // match the attributes of the Volume identified by `volume_id`.
+ VolumeAttributes map[string]string `protobuf:"bytes,3,rep,name=volume_attributes,json=volumeAttributes" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *ValidateVolumeCapabilitiesRequest) Reset() { *m = ValidateVolumeCapabilitiesRequest{} }
func (m *ValidateVolumeCapabilitiesRequest) String() string { return proto.CompactTextString(m) }
func (*ValidateVolumeCapabilitiesRequest) ProtoMessage() {}
func (*ValidateVolumeCapabilitiesRequest) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{16}
-}
-
-func (m *ValidateVolumeCapabilitiesRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
+ return fileDescriptor0, []int{18}
}
func (m *ValidateVolumeCapabilitiesRequest) GetVolumeId() string {
@@ -977,7 +1068,7 @@ func (m *ValidateVolumeCapabilitiesResponse) Reset() { *m = ValidateVolu
func (m *ValidateVolumeCapabilitiesResponse) String() string { return proto.CompactTextString(m) }
func (*ValidateVolumeCapabilitiesResponse) ProtoMessage() {}
func (*ValidateVolumeCapabilitiesResponse) Descriptor() ([]byte, []int) {
- return fileDescriptor0, []int{17}
+ return fileDescriptor0, []int{19}
}
func (m *ValidateVolumeCapabilitiesResponse) GetSupported() bool {
@@ -994,11 +1085,7 @@ func (m *ValidateVolumeCapabilitiesResponse) GetMessage() string {
return ""
}
-// //////
-// //////
type ListVolumesRequest struct {
- // The API version assumed by the CO. This field is REQUIRED.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// If specified (non-zero value), the Plugin MUST NOT return more
// entries than this number in the response. If the actual number of
// entries is more than this number, the Plugin MUST set `next_token`
@@ -1006,27 +1093,21 @@ type ListVolumesRequest struct {
// in the subsequent `ListVolumes` call. This field is OPTIONAL. If
// not specified (zero value), it means there is no restriction on the
// number of entries that can be returned.
- MaxEntries uint32 `protobuf:"varint,2,opt,name=max_entries,json=maxEntries" json:"max_entries,omitempty"`
+ // The value of this field MUST NOT be negative.
+ MaxEntries int32 `protobuf:"varint,1,opt,name=max_entries,json=maxEntries" json:"max_entries,omitempty"`
// A token to specify where to start paginating. Set this field to
// `next_token` returned by a previous `ListVolumes` call to get the
// next page of entries. This field is OPTIONAL.
// An empty string is equal to an unspecified field value.
- StartingToken string `protobuf:"bytes,3,opt,name=starting_token,json=startingToken" json:"starting_token,omitempty"`
+ StartingToken string `protobuf:"bytes,2,opt,name=starting_token,json=startingToken" json:"starting_token,omitempty"`
}
func (m *ListVolumesRequest) Reset() { *m = ListVolumesRequest{} }
func (m *ListVolumesRequest) String() string { return proto.CompactTextString(m) }
func (*ListVolumesRequest) ProtoMessage() {}
-func (*ListVolumesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+func (*ListVolumesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
-func (m *ListVolumesRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
-
-func (m *ListVolumesRequest) GetMaxEntries() uint32 {
+func (m *ListVolumesRequest) GetMaxEntries() int32 {
if m != nil {
return m.MaxEntries
}
@@ -1054,7 +1135,7 @@ type ListVolumesResponse struct {
func (m *ListVolumesResponse) Reset() { *m = ListVolumesResponse{} }
func (m *ListVolumesResponse) String() string { return proto.CompactTextString(m) }
func (*ListVolumesResponse) ProtoMessage() {}
-func (*ListVolumesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+func (*ListVolumesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
func (m *ListVolumesResponse) GetEntries() []*ListVolumesResponse_Entry {
if m != nil {
@@ -1071,50 +1152,39 @@ func (m *ListVolumesResponse) GetNextToken() string {
}
type ListVolumesResponse_Entry struct {
- VolumeInfo *VolumeInfo `protobuf:"bytes,1,opt,name=volume_info,json=volumeInfo" json:"volume_info,omitempty"`
+ Volume *Volume `protobuf:"bytes,1,opt,name=volume" json:"volume,omitempty"`
}
func (m *ListVolumesResponse_Entry) Reset() { *m = ListVolumesResponse_Entry{} }
func (m *ListVolumesResponse_Entry) String() string { return proto.CompactTextString(m) }
func (*ListVolumesResponse_Entry) ProtoMessage() {}
-func (*ListVolumesResponse_Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19, 0} }
+func (*ListVolumesResponse_Entry) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21, 0} }
-func (m *ListVolumesResponse_Entry) GetVolumeInfo() *VolumeInfo {
+func (m *ListVolumesResponse_Entry) GetVolume() *Volume {
if m != nil {
- return m.VolumeInfo
+ return m.Volume
}
return nil
}
-// //////
-// //////
type GetCapacityRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// If specified, the Plugin SHALL report the capacity of the storage
// that can be used to provision volumes that satisfy ALL of the
// specified `volume_capabilities`. These are the same
// `volume_capabilities` the CO will use in `CreateVolumeRequest`.
// This field is OPTIONAL.
- VolumeCapabilities []*VolumeCapability `protobuf:"bytes,2,rep,name=volume_capabilities,json=volumeCapabilities" json:"volume_capabilities,omitempty"`
+ VolumeCapabilities []*VolumeCapability `protobuf:"bytes,1,rep,name=volume_capabilities,json=volumeCapabilities" json:"volume_capabilities,omitempty"`
// If specified, the Plugin SHALL report the capacity of the storage
// that can be used to provision volumes with the given Plugin
// specific `parameters`. These are the same `parameters` the CO will
// use in `CreateVolumeRequest`. This field is OPTIONAL.
- Parameters map[string]string `protobuf:"bytes,3,rep,name=parameters" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ Parameters map[string]string `protobuf:"bytes,2,rep,name=parameters" json:"parameters,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
func (m *GetCapacityRequest) Reset() { *m = GetCapacityRequest{} }
func (m *GetCapacityRequest) String() string { return proto.CompactTextString(m) }
func (*GetCapacityRequest) ProtoMessage() {}
-func (*GetCapacityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
-
-func (m *GetCapacityRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*GetCapacityRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
func (m *GetCapacityRequest) GetVolumeCapabilities() []*VolumeCapability {
if m != nil {
@@ -1136,53 +1206,23 @@ type GetCapacityResponse struct {
// specified in the request, the Plugin SHALL take those into
// consideration when calculating the available capacity of the
// storage. This field is REQUIRED.
- AvailableCapacity uint64 `protobuf:"varint,1,opt,name=available_capacity,json=availableCapacity" json:"available_capacity,omitempty"`
+ // The value of this field MUST NOT be negative.
+ AvailableCapacity int64 `protobuf:"varint,1,opt,name=available_capacity,json=availableCapacity" json:"available_capacity,omitempty"`
}
func (m *GetCapacityResponse) Reset() { *m = GetCapacityResponse{} }
func (m *GetCapacityResponse) String() string { return proto.CompactTextString(m) }
func (*GetCapacityResponse) ProtoMessage() {}
-func (*GetCapacityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{21} }
+func (*GetCapacityResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
-func (m *GetCapacityResponse) GetAvailableCapacity() uint64 {
+func (m *GetCapacityResponse) GetAvailableCapacity() int64 {
if m != nil {
return m.AvailableCapacity
}
return 0
}
-// //////
-// //////
-type ControllerProbeRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
-}
-
-func (m *ControllerProbeRequest) Reset() { *m = ControllerProbeRequest{} }
-func (m *ControllerProbeRequest) String() string { return proto.CompactTextString(m) }
-func (*ControllerProbeRequest) ProtoMessage() {}
-func (*ControllerProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{22} }
-
-func (m *ControllerProbeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
-
-type ControllerProbeResponse struct {
-}
-
-func (m *ControllerProbeResponse) Reset() { *m = ControllerProbeResponse{} }
-func (m *ControllerProbeResponse) String() string { return proto.CompactTextString(m) }
-func (*ControllerProbeResponse) ProtoMessage() {}
-func (*ControllerProbeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{23} }
-
-// //////
-// //////
type ControllerGetCapabilitiesRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
}
func (m *ControllerGetCapabilitiesRequest) Reset() { *m = ControllerGetCapabilitiesRequest{} }
@@ -1192,13 +1232,6 @@ func (*ControllerGetCapabilitiesRequest) Descriptor() ([]byte, []int) {
return fileDescriptor0, []int{24}
}
-func (m *ControllerGetCapabilitiesRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
-
type ControllerGetCapabilitiesResponse struct {
// All the capabilities that the controller service supports. This
// field is OPTIONAL.
@@ -1311,7 +1344,7 @@ func _ControllerServiceCapability_OneofSizer(msg proto.Message) (n int) {
}
type ControllerServiceCapability_RPC struct {
- Type ControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,enum=csi.ControllerServiceCapability_RPC_Type" json:"type,omitempty"`
+ Type ControllerServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,enum=csi.v0.ControllerServiceCapability_RPC_Type" json:"type,omitempty"`
}
func (m *ControllerServiceCapability_RPC) Reset() { *m = ControllerServiceCapability_RPC{} }
@@ -1328,22 +1361,160 @@ func (m *ControllerServiceCapability_RPC) GetType() ControllerServiceCapability_
return ControllerServiceCapability_RPC_UNKNOWN
}
-// //////
-// //////
+type NodeStageVolumeRequest struct {
+ // The ID of the volume to publish. This field is REQUIRED.
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ // The CO SHALL set this field to the value returned by
+ // `ControllerPublishVolume` if the corresponding Controller Plugin
+ // has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be
+ // left unset if the corresponding Controller Plugin does not have
+ // this capability. This is an OPTIONAL field.
+ PublishInfo map[string]string `protobuf:"bytes,2,rep,name=publish_info,json=publishInfo" json:"publish_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ // The path to which the volume will be published. It MUST be an
+ // absolute path in the root filesystem of the process serving this
+ // request. The CO SHALL ensure that there is only one
+ // staging_target_path per volume.
+ // This is a REQUIRED field.
+ StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath" json:"staging_target_path,omitempty"`
+ // The capability of the volume the CO expects the volume to have.
+ // This is a REQUIRED field.
+ VolumeCapability *VolumeCapability `protobuf:"bytes,4,opt,name=volume_capability,json=volumeCapability" json:"volume_capability,omitempty"`
+ // Secrets required by plugin to complete node stage volume request.
+ // A secret is a string to string map where the key identifies the
+ // name of the secret (e.g. "username" or "password"), and the value
+ // contains the secret data (e.g. "bob" or "abc123").
+ // Each key MUST consist of alphanumeric characters, '-', '_' or '.'.
+ // Each value MUST contain a valid string. An SP MAY choose to accept
+ // binary (non-string) data by using a binary-to-text encoding scheme,
+ // like base64.
+ // An SP SHALL advertise the requirements for required secret keys and
+ // values in documentation.
+ // CO SHALL permit passing through the required secrets.
+ // A CO MAY pass the same secrets to all RPCs, therefore the keys for
+ // all unique secrets that an SP expects must be unique across all CSI
+ // operations.
+ // This information is sensitive and MUST be treated as such (not
+ // logged, etc.) by the CO.
+ // This field is OPTIONAL.
+ NodeStageSecrets map[string]string `protobuf:"bytes,5,rep,name=node_stage_secrets,json=nodeStageSecrets" json:"node_stage_secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ // Attributes of the volume to publish. This field is OPTIONAL and
+ // MUST match the attributes of the VolumeInfo identified by
+ // `volume_id`.
+ VolumeAttributes map[string]string `protobuf:"bytes,6,rep,name=volume_attributes,json=volumeAttributes" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+}
+
+func (m *NodeStageVolumeRequest) Reset() { *m = NodeStageVolumeRequest{} }
+func (m *NodeStageVolumeRequest) String() string { return proto.CompactTextString(m) }
+func (*NodeStageVolumeRequest) ProtoMessage() {}
+func (*NodeStageVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
+
+func (m *NodeStageVolumeRequest) GetVolumeId() string {
+ if m != nil {
+ return m.VolumeId
+ }
+ return ""
+}
+
+func (m *NodeStageVolumeRequest) GetPublishInfo() map[string]string {
+ if m != nil {
+ return m.PublishInfo
+ }
+ return nil
+}
+
+func (m *NodeStageVolumeRequest) GetStagingTargetPath() string {
+ if m != nil {
+ return m.StagingTargetPath
+ }
+ return ""
+}
+
+func (m *NodeStageVolumeRequest) GetVolumeCapability() *VolumeCapability {
+ if m != nil {
+ return m.VolumeCapability
+ }
+ return nil
+}
+
+func (m *NodeStageVolumeRequest) GetNodeStageSecrets() map[string]string {
+ if m != nil {
+ return m.NodeStageSecrets
+ }
+ return nil
+}
+
+func (m *NodeStageVolumeRequest) GetVolumeAttributes() map[string]string {
+ if m != nil {
+ return m.VolumeAttributes
+ }
+ return nil
+}
+
+type NodeStageVolumeResponse struct {
+}
+
+func (m *NodeStageVolumeResponse) Reset() { *m = NodeStageVolumeResponse{} }
+func (m *NodeStageVolumeResponse) String() string { return proto.CompactTextString(m) }
+func (*NodeStageVolumeResponse) ProtoMessage() {}
+func (*NodeStageVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+
+type NodeUnstageVolumeRequest struct {
+ // The ID of the volume. This field is REQUIRED.
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ // The path at which the volume was published. It MUST be an absolute
+ // path in the root filesystem of the process serving this request.
+ // This is a REQUIRED field.
+ StagingTargetPath string `protobuf:"bytes,2,opt,name=staging_target_path,json=stagingTargetPath" json:"staging_target_path,omitempty"`
+}
+
+func (m *NodeUnstageVolumeRequest) Reset() { *m = NodeUnstageVolumeRequest{} }
+func (m *NodeUnstageVolumeRequest) String() string { return proto.CompactTextString(m) }
+func (*NodeUnstageVolumeRequest) ProtoMessage() {}
+func (*NodeUnstageVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
+
+func (m *NodeUnstageVolumeRequest) GetVolumeId() string {
+ if m != nil {
+ return m.VolumeId
+ }
+ return ""
+}
+
+func (m *NodeUnstageVolumeRequest) GetStagingTargetPath() string {
+ if m != nil {
+ return m.StagingTargetPath
+ }
+ return ""
+}
+
+type NodeUnstageVolumeResponse struct {
+}
+
+func (m *NodeUnstageVolumeResponse) Reset() { *m = NodeUnstageVolumeResponse{} }
+func (m *NodeUnstageVolumeResponse) String() string { return proto.CompactTextString(m) }
+func (*NodeUnstageVolumeResponse) ProtoMessage() {}
+func (*NodeUnstageVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+
type NodePublishVolumeRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// The ID of the volume to publish. This field is REQUIRED.
- VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
// The CO SHALL set this field to the value returned by
// `ControllerPublishVolume` if the corresponding Controller Plugin
// has `PUBLISH_UNPUBLISH_VOLUME` controller capability, and SHALL be
// left unset if the corresponding Controller Plugin does not have
// this capability. This is an OPTIONAL field.
- PublishVolumeInfo map[string]string `protobuf:"bytes,3,rep,name=publish_volume_info,json=publishVolumeInfo" json:"publish_volume_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ PublishInfo map[string]string `protobuf:"bytes,2,rep,name=publish_info,json=publishInfo" json:"publish_info,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ // The path to which the device was mounted by `NodeStageVolume`.
+ // It MUST be an absolute path in the root filesystem of the process
+ // serving this request.
+ // It MUST be set if the Node Plugin implements the
+ // `STAGE_UNSTAGE_VOLUME` node capability.
+ // This is an OPTIONAL field.
+ StagingTargetPath string `protobuf:"bytes,3,opt,name=staging_target_path,json=stagingTargetPath" json:"staging_target_path,omitempty"`
// The path to which the volume will be published. It MUST be an
// absolute path in the root filesystem of the process serving this
// request. The CO SHALL ensure uniqueness of target_path per volume.
+ // The CO SHALL ensure that the path exists, and that the process
+ // serving the request has `read` and `write` permissions to the path.
// This is a REQUIRED field.
TargetPath string `protobuf:"bytes,4,opt,name=target_path,json=targetPath" json:"target_path,omitempty"`
// The capability of the volume the CO expects the volume to have.
@@ -1352,20 +1523,26 @@ type NodePublishVolumeRequest struct {
// Whether to publish the volume in readonly mode. This field is
// REQUIRED.
Readonly bool `protobuf:"varint,6,opt,name=readonly" json:"readonly,omitempty"`
- // End user credentials used to authenticate/authorize node
- // publish request.
- // This field contains credential data, for example username and
- // password. Each key must consist of alphanumeric characters, '-',
- // '_' or '.'. Each value MUST contain a valid string. An SP MAY
- // choose to accept binary (non-string) data by using a binary-to-text
- // encoding scheme, like base64. An SP SHALL advertise the
- // requirements for credentials in documentation. COs SHALL permit
- // users to pass through the required credentials. This information is
- // sensitive and MUST be treated as such (not logged, etc.) by the CO.
+ // Secrets required by plugin to complete node publish volume request.
+ // A secret is a string to string map where the key identifies the
+ // name of the secret (e.g. "username" or "password"), and the value
+ // contains the secret data (e.g. "bob" or "abc123").
+ // Each key MUST consist of alphanumeric characters, '-', '_' or '.'.
+ // Each value MUST contain a valid string. An SP MAY choose to accept
+ // binary (non-string) data by using a binary-to-text encoding scheme,
+ // like base64.
+ // An SP SHALL advertise the requirements for required secret keys and
+ // values in documentation.
+ // CO SHALL permit passing through the required secrets.
+ // A CO MAY pass the same secrets to all RPCs, therefore the keys for
+ // all unique secrets that an SP expects must be unique across all CSI
+ // operations.
+ // This information is sensitive and MUST be treated as such (not
+ // logged, etc.) by the CO.
// This field is OPTIONAL.
- UserCredentials map[string]string `protobuf:"bytes,7,rep,name=user_credentials,json=userCredentials" json:"user_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ NodePublishSecrets map[string]string `protobuf:"bytes,7,rep,name=node_publish_secrets,json=nodePublishSecrets" json:"node_publish_secrets,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
// Attributes of the volume to publish. This field is OPTIONAL and
- // MUST match the attributes of the VolumeInfo identified by
+ // MUST match the attributes of the Volume identified by
// `volume_id`.
VolumeAttributes map[string]string `protobuf:"bytes,8,rep,name=volume_attributes,json=volumeAttributes" json:"volume_attributes,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
}
@@ -1373,14 +1550,7 @@ type NodePublishVolumeRequest struct {
func (m *NodePublishVolumeRequest) Reset() { *m = NodePublishVolumeRequest{} }
func (m *NodePublishVolumeRequest) String() string { return proto.CompactTextString(m) }
func (*NodePublishVolumeRequest) ProtoMessage() {}
-func (*NodePublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{27} }
-
-func (m *NodePublishVolumeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*NodePublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
func (m *NodePublishVolumeRequest) GetVolumeId() string {
if m != nil {
@@ -1389,13 +1559,20 @@ func (m *NodePublishVolumeRequest) GetVolumeId() string {
return ""
}
-func (m *NodePublishVolumeRequest) GetPublishVolumeInfo() map[string]string {
+func (m *NodePublishVolumeRequest) GetPublishInfo() map[string]string {
if m != nil {
- return m.PublishVolumeInfo
+ return m.PublishInfo
}
return nil
}
+func (m *NodePublishVolumeRequest) GetStagingTargetPath() string {
+ if m != nil {
+ return m.StagingTargetPath
+ }
+ return ""
+}
+
func (m *NodePublishVolumeRequest) GetTargetPath() string {
if m != nil {
return m.TargetPath
@@ -1417,9 +1594,9 @@ func (m *NodePublishVolumeRequest) GetReadonly() bool {
return false
}
-func (m *NodePublishVolumeRequest) GetUserCredentials() map[string]string {
+func (m *NodePublishVolumeRequest) GetNodePublishSecrets() map[string]string {
if m != nil {
- return m.UserCredentials
+ return m.NodePublishSecrets
}
return nil
}
@@ -1437,44 +1614,21 @@ type NodePublishVolumeResponse struct {
func (m *NodePublishVolumeResponse) Reset() { *m = NodePublishVolumeResponse{} }
func (m *NodePublishVolumeResponse) String() string { return proto.CompactTextString(m) }
func (*NodePublishVolumeResponse) ProtoMessage() {}
-func (*NodePublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{28} }
+func (*NodePublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
-// //////
-// //////
type NodeUnpublishVolumeRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
// The ID of the volume. This field is REQUIRED.
- VolumeId string `protobuf:"bytes,2,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
+ VolumeId string `protobuf:"bytes,1,opt,name=volume_id,json=volumeId" json:"volume_id,omitempty"`
// The path at which the volume was published. It MUST be an absolute
// path in the root filesystem of the process serving this request.
// This is a REQUIRED field.
- TargetPath string `protobuf:"bytes,3,opt,name=target_path,json=targetPath" json:"target_path,omitempty"`
- // End user credentials used to authenticate/authorize node
- // unpublish request.
- // This field contains credential data, for example username and
- // password. Each key must consist of alphanumeric characters, '-',
- // '_' or '.'. Each value MUST contain a valid string. An SP MAY
- // choose to accept binary (non-string) data by using a binary-to-text
- // encoding scheme, like base64. An SP SHALL advertise the
- // requirements for credentials in documentation. COs SHALL permit
- // users to pass through the required credentials. This information is
- // sensitive and MUST be treated as such (not logged, etc.) by the CO.
- // This field is OPTIONAL.
- UserCredentials map[string]string `protobuf:"bytes,4,rep,name=user_credentials,json=userCredentials" json:"user_credentials,omitempty" protobuf_key:"bytes,1,opt,name=key" protobuf_val:"bytes,2,opt,name=value"`
+ TargetPath string `protobuf:"bytes,2,opt,name=target_path,json=targetPath" json:"target_path,omitempty"`
}
func (m *NodeUnpublishVolumeRequest) Reset() { *m = NodeUnpublishVolumeRequest{} }
func (m *NodeUnpublishVolumeRequest) String() string { return proto.CompactTextString(m) }
func (*NodeUnpublishVolumeRequest) ProtoMessage() {}
-func (*NodeUnpublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{29} }
-
-func (m *NodeUnpublishVolumeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*NodeUnpublishVolumeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
func (m *NodeUnpublishVolumeRequest) GetVolumeId() string {
if m != nil {
@@ -1490,104 +1644,48 @@ func (m *NodeUnpublishVolumeRequest) GetTargetPath() string {
return ""
}
-func (m *NodeUnpublishVolumeRequest) GetUserCredentials() map[string]string {
- if m != nil {
- return m.UserCredentials
- }
- return nil
-}
-
type NodeUnpublishVolumeResponse struct {
}
func (m *NodeUnpublishVolumeResponse) Reset() { *m = NodeUnpublishVolumeResponse{} }
func (m *NodeUnpublishVolumeResponse) String() string { return proto.CompactTextString(m) }
func (*NodeUnpublishVolumeResponse) ProtoMessage() {}
-func (*NodeUnpublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{30} }
+func (*NodeUnpublishVolumeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
-// //////
-// //////
-type GetNodeIDRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
+type NodeGetIdRequest struct {
}
-func (m *GetNodeIDRequest) Reset() { *m = GetNodeIDRequest{} }
-func (m *GetNodeIDRequest) String() string { return proto.CompactTextString(m) }
-func (*GetNodeIDRequest) ProtoMessage() {}
-func (*GetNodeIDRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{31} }
+func (m *NodeGetIdRequest) Reset() { *m = NodeGetIdRequest{} }
+func (m *NodeGetIdRequest) String() string { return proto.CompactTextString(m) }
+func (*NodeGetIdRequest) ProtoMessage() {}
+func (*NodeGetIdRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
-func (m *GetNodeIDRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
-
-type GetNodeIDResponse struct {
+type NodeGetIdResponse struct {
// The ID of the node as understood by the SP which SHALL be used by
// CO in subsequent `ControllerPublishVolume`.
// This is a REQUIRED field.
NodeId string `protobuf:"bytes,1,opt,name=node_id,json=nodeId" json:"node_id,omitempty"`
}
-func (m *GetNodeIDResponse) Reset() { *m = GetNodeIDResponse{} }
-func (m *GetNodeIDResponse) String() string { return proto.CompactTextString(m) }
-func (*GetNodeIDResponse) ProtoMessage() {}
-func (*GetNodeIDResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{32} }
+func (m *NodeGetIdResponse) Reset() { *m = NodeGetIdResponse{} }
+func (m *NodeGetIdResponse) String() string { return proto.CompactTextString(m) }
+func (*NodeGetIdResponse) ProtoMessage() {}
+func (*NodeGetIdResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
-func (m *GetNodeIDResponse) GetNodeId() string {
+func (m *NodeGetIdResponse) GetNodeId() string {
if m != nil {
return m.NodeId
}
return ""
}
-// //////
-// //////
-type NodeProbeRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
-}
-
-func (m *NodeProbeRequest) Reset() { *m = NodeProbeRequest{} }
-func (m *NodeProbeRequest) String() string { return proto.CompactTextString(m) }
-func (*NodeProbeRequest) ProtoMessage() {}
-func (*NodeProbeRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{33} }
-
-func (m *NodeProbeRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
-
-type NodeProbeResponse struct {
-}
-
-func (m *NodeProbeResponse) Reset() { *m = NodeProbeResponse{} }
-func (m *NodeProbeResponse) String() string { return proto.CompactTextString(m) }
-func (*NodeProbeResponse) ProtoMessage() {}
-func (*NodeProbeResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{34} }
-
-// //////
-// //////
type NodeGetCapabilitiesRequest struct {
- // The API version assumed by the CO. This is a REQUIRED field.
- Version *Version `protobuf:"bytes,1,opt,name=version" json:"version,omitempty"`
}
func (m *NodeGetCapabilitiesRequest) Reset() { *m = NodeGetCapabilitiesRequest{} }
func (m *NodeGetCapabilitiesRequest) String() string { return proto.CompactTextString(m) }
func (*NodeGetCapabilitiesRequest) ProtoMessage() {}
-func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{35} }
-
-func (m *NodeGetCapabilitiesRequest) GetVersion() *Version {
- if m != nil {
- return m.Version
- }
- return nil
-}
+func (*NodeGetCapabilitiesRequest) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
type NodeGetCapabilitiesResponse struct {
// All the capabilities that the node service supports. This field
@@ -1598,7 +1696,7 @@ type NodeGetCapabilitiesResponse struct {
func (m *NodeGetCapabilitiesResponse) Reset() { *m = NodeGetCapabilitiesResponse{} }
func (m *NodeGetCapabilitiesResponse) String() string { return proto.CompactTextString(m) }
func (*NodeGetCapabilitiesResponse) ProtoMessage() {}
-func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{36} }
+func (*NodeGetCapabilitiesResponse) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{38} }
func (m *NodeGetCapabilitiesResponse) GetCapabilities() []*NodeServiceCapability {
if m != nil {
@@ -1617,7 +1715,7 @@ type NodeServiceCapability struct {
func (m *NodeServiceCapability) Reset() { *m = NodeServiceCapability{} }
func (m *NodeServiceCapability) String() string { return proto.CompactTextString(m) }
func (*NodeServiceCapability) ProtoMessage() {}
-func (*NodeServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37} }
+func (*NodeServiceCapability) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39} }
type isNodeServiceCapability_Type interface {
isNodeServiceCapability_Type()
@@ -1699,13 +1797,13 @@ func _NodeServiceCapability_OneofSizer(msg proto.Message) (n int) {
}
type NodeServiceCapability_RPC struct {
- Type NodeServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,enum=csi.NodeServiceCapability_RPC_Type" json:"type,omitempty"`
+ Type NodeServiceCapability_RPC_Type `protobuf:"varint,1,opt,name=type,enum=csi.v0.NodeServiceCapability_RPC_Type" json:"type,omitempty"`
}
func (m *NodeServiceCapability_RPC) Reset() { *m = NodeServiceCapability_RPC{} }
func (m *NodeServiceCapability_RPC) String() string { return proto.CompactTextString(m) }
func (*NodeServiceCapability_RPC) ProtoMessage() {}
-func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{37, 0} }
+func (*NodeServiceCapability_RPC) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{39, 0} }
func (m *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type {
if m != nil {
@@ -1715,53 +1813,57 @@ func (m *NodeServiceCapability_RPC) GetType() NodeServiceCapability_RPC_Type {
}
func init() {
- proto.RegisterType((*GetSupportedVersionsRequest)(nil), "csi.GetSupportedVersionsRequest")
- proto.RegisterType((*GetSupportedVersionsResponse)(nil), "csi.GetSupportedVersionsResponse")
- proto.RegisterType((*Version)(nil), "csi.Version")
- proto.RegisterType((*GetPluginInfoRequest)(nil), "csi.GetPluginInfoRequest")
- proto.RegisterType((*GetPluginInfoResponse)(nil), "csi.GetPluginInfoResponse")
- proto.RegisterType((*CreateVolumeRequest)(nil), "csi.CreateVolumeRequest")
- proto.RegisterType((*CreateVolumeResponse)(nil), "csi.CreateVolumeResponse")
- proto.RegisterType((*VolumeCapability)(nil), "csi.VolumeCapability")
- proto.RegisterType((*VolumeCapability_BlockVolume)(nil), "csi.VolumeCapability.BlockVolume")
- proto.RegisterType((*VolumeCapability_MountVolume)(nil), "csi.VolumeCapability.MountVolume")
- proto.RegisterType((*VolumeCapability_AccessMode)(nil), "csi.VolumeCapability.AccessMode")
- proto.RegisterType((*CapacityRange)(nil), "csi.CapacityRange")
- proto.RegisterType((*VolumeInfo)(nil), "csi.VolumeInfo")
- proto.RegisterType((*DeleteVolumeRequest)(nil), "csi.DeleteVolumeRequest")
- proto.RegisterType((*DeleteVolumeResponse)(nil), "csi.DeleteVolumeResponse")
- proto.RegisterType((*ControllerPublishVolumeRequest)(nil), "csi.ControllerPublishVolumeRequest")
- proto.RegisterType((*ControllerPublishVolumeResponse)(nil), "csi.ControllerPublishVolumeResponse")
- proto.RegisterType((*ControllerUnpublishVolumeRequest)(nil), "csi.ControllerUnpublishVolumeRequest")
- proto.RegisterType((*ControllerUnpublishVolumeResponse)(nil), "csi.ControllerUnpublishVolumeResponse")
- proto.RegisterType((*ValidateVolumeCapabilitiesRequest)(nil), "csi.ValidateVolumeCapabilitiesRequest")
- proto.RegisterType((*ValidateVolumeCapabilitiesResponse)(nil), "csi.ValidateVolumeCapabilitiesResponse")
- proto.RegisterType((*ListVolumesRequest)(nil), "csi.ListVolumesRequest")
- proto.RegisterType((*ListVolumesResponse)(nil), "csi.ListVolumesResponse")
- proto.RegisterType((*ListVolumesResponse_Entry)(nil), "csi.ListVolumesResponse.Entry")
- proto.RegisterType((*GetCapacityRequest)(nil), "csi.GetCapacityRequest")
- proto.RegisterType((*GetCapacityResponse)(nil), "csi.GetCapacityResponse")
- proto.RegisterType((*ControllerProbeRequest)(nil), "csi.ControllerProbeRequest")
- proto.RegisterType((*ControllerProbeResponse)(nil), "csi.ControllerProbeResponse")
- proto.RegisterType((*ControllerGetCapabilitiesRequest)(nil), "csi.ControllerGetCapabilitiesRequest")
- proto.RegisterType((*ControllerGetCapabilitiesResponse)(nil), "csi.ControllerGetCapabilitiesResponse")
- proto.RegisterType((*ControllerServiceCapability)(nil), "csi.ControllerServiceCapability")
- proto.RegisterType((*ControllerServiceCapability_RPC)(nil), "csi.ControllerServiceCapability.RPC")
- proto.RegisterType((*NodePublishVolumeRequest)(nil), "csi.NodePublishVolumeRequest")
- proto.RegisterType((*NodePublishVolumeResponse)(nil), "csi.NodePublishVolumeResponse")
- proto.RegisterType((*NodeUnpublishVolumeRequest)(nil), "csi.NodeUnpublishVolumeRequest")
- proto.RegisterType((*NodeUnpublishVolumeResponse)(nil), "csi.NodeUnpublishVolumeResponse")
- proto.RegisterType((*GetNodeIDRequest)(nil), "csi.GetNodeIDRequest")
- proto.RegisterType((*GetNodeIDResponse)(nil), "csi.GetNodeIDResponse")
- proto.RegisterType((*NodeProbeRequest)(nil), "csi.NodeProbeRequest")
- proto.RegisterType((*NodeProbeResponse)(nil), "csi.NodeProbeResponse")
- proto.RegisterType((*NodeGetCapabilitiesRequest)(nil), "csi.NodeGetCapabilitiesRequest")
- proto.RegisterType((*NodeGetCapabilitiesResponse)(nil), "csi.NodeGetCapabilitiesResponse")
- proto.RegisterType((*NodeServiceCapability)(nil), "csi.NodeServiceCapability")
- proto.RegisterType((*NodeServiceCapability_RPC)(nil), "csi.NodeServiceCapability.RPC")
- proto.RegisterEnum("csi.VolumeCapability_AccessMode_Mode", VolumeCapability_AccessMode_Mode_name, VolumeCapability_AccessMode_Mode_value)
- proto.RegisterEnum("csi.ControllerServiceCapability_RPC_Type", ControllerServiceCapability_RPC_Type_name, ControllerServiceCapability_RPC_Type_value)
- proto.RegisterEnum("csi.NodeServiceCapability_RPC_Type", NodeServiceCapability_RPC_Type_name, NodeServiceCapability_RPC_Type_value)
+ proto.RegisterType((*GetPluginInfoRequest)(nil), "csi.v0.GetPluginInfoRequest")
+ proto.RegisterType((*GetPluginInfoResponse)(nil), "csi.v0.GetPluginInfoResponse")
+ proto.RegisterType((*GetPluginCapabilitiesRequest)(nil), "csi.v0.GetPluginCapabilitiesRequest")
+ proto.RegisterType((*GetPluginCapabilitiesResponse)(nil), "csi.v0.GetPluginCapabilitiesResponse")
+ proto.RegisterType((*PluginCapability)(nil), "csi.v0.PluginCapability")
+ proto.RegisterType((*PluginCapability_Service)(nil), "csi.v0.PluginCapability.Service")
+ proto.RegisterType((*ProbeRequest)(nil), "csi.v0.ProbeRequest")
+ proto.RegisterType((*ProbeResponse)(nil), "csi.v0.ProbeResponse")
+ proto.RegisterType((*CreateVolumeRequest)(nil), "csi.v0.CreateVolumeRequest")
+ proto.RegisterType((*CreateVolumeResponse)(nil), "csi.v0.CreateVolumeResponse")
+ proto.RegisterType((*VolumeCapability)(nil), "csi.v0.VolumeCapability")
+ proto.RegisterType((*VolumeCapability_BlockVolume)(nil), "csi.v0.VolumeCapability.BlockVolume")
+ proto.RegisterType((*VolumeCapability_MountVolume)(nil), "csi.v0.VolumeCapability.MountVolume")
+ proto.RegisterType((*VolumeCapability_AccessMode)(nil), "csi.v0.VolumeCapability.AccessMode")
+ proto.RegisterType((*CapacityRange)(nil), "csi.v0.CapacityRange")
+ proto.RegisterType((*Volume)(nil), "csi.v0.Volume")
+ proto.RegisterType((*DeleteVolumeRequest)(nil), "csi.v0.DeleteVolumeRequest")
+ proto.RegisterType((*DeleteVolumeResponse)(nil), "csi.v0.DeleteVolumeResponse")
+ proto.RegisterType((*ControllerPublishVolumeRequest)(nil), "csi.v0.ControllerPublishVolumeRequest")
+ proto.RegisterType((*ControllerPublishVolumeResponse)(nil), "csi.v0.ControllerPublishVolumeResponse")
+ proto.RegisterType((*ControllerUnpublishVolumeRequest)(nil), "csi.v0.ControllerUnpublishVolumeRequest")
+ proto.RegisterType((*ControllerUnpublishVolumeResponse)(nil), "csi.v0.ControllerUnpublishVolumeResponse")
+ proto.RegisterType((*ValidateVolumeCapabilitiesRequest)(nil), "csi.v0.ValidateVolumeCapabilitiesRequest")
+ proto.RegisterType((*ValidateVolumeCapabilitiesResponse)(nil), "csi.v0.ValidateVolumeCapabilitiesResponse")
+ proto.RegisterType((*ListVolumesRequest)(nil), "csi.v0.ListVolumesRequest")
+ proto.RegisterType((*ListVolumesResponse)(nil), "csi.v0.ListVolumesResponse")
+ proto.RegisterType((*ListVolumesResponse_Entry)(nil), "csi.v0.ListVolumesResponse.Entry")
+ proto.RegisterType((*GetCapacityRequest)(nil), "csi.v0.GetCapacityRequest")
+ proto.RegisterType((*GetCapacityResponse)(nil), "csi.v0.GetCapacityResponse")
+ proto.RegisterType((*ControllerGetCapabilitiesRequest)(nil), "csi.v0.ControllerGetCapabilitiesRequest")
+ proto.RegisterType((*ControllerGetCapabilitiesResponse)(nil), "csi.v0.ControllerGetCapabilitiesResponse")
+ proto.RegisterType((*ControllerServiceCapability)(nil), "csi.v0.ControllerServiceCapability")
+ proto.RegisterType((*ControllerServiceCapability_RPC)(nil), "csi.v0.ControllerServiceCapability.RPC")
+ proto.RegisterType((*NodeStageVolumeRequest)(nil), "csi.v0.NodeStageVolumeRequest")
+ proto.RegisterType((*NodeStageVolumeResponse)(nil), "csi.v0.NodeStageVolumeResponse")
+ proto.RegisterType((*NodeUnstageVolumeRequest)(nil), "csi.v0.NodeUnstageVolumeRequest")
+ proto.RegisterType((*NodeUnstageVolumeResponse)(nil), "csi.v0.NodeUnstageVolumeResponse")
+ proto.RegisterType((*NodePublishVolumeRequest)(nil), "csi.v0.NodePublishVolumeRequest")
+ proto.RegisterType((*NodePublishVolumeResponse)(nil), "csi.v0.NodePublishVolumeResponse")
+ proto.RegisterType((*NodeUnpublishVolumeRequest)(nil), "csi.v0.NodeUnpublishVolumeRequest")
+ proto.RegisterType((*NodeUnpublishVolumeResponse)(nil), "csi.v0.NodeUnpublishVolumeResponse")
+ proto.RegisterType((*NodeGetIdRequest)(nil), "csi.v0.NodeGetIdRequest")
+ proto.RegisterType((*NodeGetIdResponse)(nil), "csi.v0.NodeGetIdResponse")
+ proto.RegisterType((*NodeGetCapabilitiesRequest)(nil), "csi.v0.NodeGetCapabilitiesRequest")
+ proto.RegisterType((*NodeGetCapabilitiesResponse)(nil), "csi.v0.NodeGetCapabilitiesResponse")
+ proto.RegisterType((*NodeServiceCapability)(nil), "csi.v0.NodeServiceCapability")
+ proto.RegisterType((*NodeServiceCapability_RPC)(nil), "csi.v0.NodeServiceCapability.RPC")
+ proto.RegisterEnum("csi.v0.PluginCapability_Service_Type", PluginCapability_Service_Type_name, PluginCapability_Service_Type_value)
+ proto.RegisterEnum("csi.v0.VolumeCapability_AccessMode_Mode", VolumeCapability_AccessMode_Mode_name, VolumeCapability_AccessMode_Mode_value)
+ proto.RegisterEnum("csi.v0.ControllerServiceCapability_RPC_Type", ControllerServiceCapability_RPC_Type_name, ControllerServiceCapability_RPC_Type_value)
+ proto.RegisterEnum("csi.v0.NodeServiceCapability_RPC_Type", NodeServiceCapability_RPC_Type_name, NodeServiceCapability_RPC_Type_value)
}
// Reference imports to suppress errors if they are not otherwise used.
@@ -1775,8 +1877,9 @@ const _ = grpc.SupportPackageIsVersion4
// Client API for Identity service
type IdentityClient interface {
- GetSupportedVersions(ctx context.Context, in *GetSupportedVersionsRequest, opts ...grpc.CallOption) (*GetSupportedVersionsResponse, error)
GetPluginInfo(ctx context.Context, in *GetPluginInfoRequest, opts ...grpc.CallOption) (*GetPluginInfoResponse, error)
+ GetPluginCapabilities(ctx context.Context, in *GetPluginCapabilitiesRequest, opts ...grpc.CallOption) (*GetPluginCapabilitiesResponse, error)
+ Probe(ctx context.Context, in *ProbeRequest, opts ...grpc.CallOption) (*ProbeResponse, error)
}
type identityClient struct {
@@ -1787,18 +1890,27 @@ func NewIdentityClient(cc *grpc.ClientConn) IdentityClient {
return &identityClient{cc}
}
-func (c *identityClient) GetSupportedVersions(ctx context.Context, in *GetSupportedVersionsRequest, opts ...grpc.CallOption) (*GetSupportedVersionsResponse, error) {
- out := new(GetSupportedVersionsResponse)
- err := grpc.Invoke(ctx, "/csi.Identity/GetSupportedVersions", in, out, c.cc, opts...)
+func (c *identityClient) GetPluginInfo(ctx context.Context, in *GetPluginInfoRequest, opts ...grpc.CallOption) (*GetPluginInfoResponse, error) {
+ out := new(GetPluginInfoResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Identity/GetPluginInfo", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *identityClient) GetPluginInfo(ctx context.Context, in *GetPluginInfoRequest, opts ...grpc.CallOption) (*GetPluginInfoResponse, error) {
- out := new(GetPluginInfoResponse)
- err := grpc.Invoke(ctx, "/csi.Identity/GetPluginInfo", in, out, c.cc, opts...)
+func (c *identityClient) GetPluginCapabilities(ctx context.Context, in *GetPluginCapabilitiesRequest, opts ...grpc.CallOption) (*GetPluginCapabilitiesResponse, error) {
+ out := new(GetPluginCapabilitiesResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Identity/GetPluginCapabilities", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *identityClient) Probe(ctx context.Context, in *ProbeRequest, opts ...grpc.CallOption) (*ProbeResponse, error) {
+ out := new(ProbeResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Identity/Probe", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1808,62 +1920,85 @@ func (c *identityClient) GetPluginInfo(ctx context.Context, in *GetPluginInfoReq
// Server API for Identity service
type IdentityServer interface {
- GetSupportedVersions(context.Context, *GetSupportedVersionsRequest) (*GetSupportedVersionsResponse, error)
GetPluginInfo(context.Context, *GetPluginInfoRequest) (*GetPluginInfoResponse, error)
+ GetPluginCapabilities(context.Context, *GetPluginCapabilitiesRequest) (*GetPluginCapabilitiesResponse, error)
+ Probe(context.Context, *ProbeRequest) (*ProbeResponse, error)
}
func RegisterIdentityServer(s *grpc.Server, srv IdentityServer) {
s.RegisterService(&_Identity_serviceDesc, srv)
}
-func _Identity_GetSupportedVersions_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetSupportedVersionsRequest)
+func _Identity_GetPluginInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetPluginInfoRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(IdentityServer).GetSupportedVersions(ctx, in)
+ return srv.(IdentityServer).GetPluginInfo(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Identity/GetSupportedVersions",
+ FullMethod: "/csi.v0.Identity/GetPluginInfo",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentityServer).GetSupportedVersions(ctx, req.(*GetSupportedVersionsRequest))
+ return srv.(IdentityServer).GetPluginInfo(ctx, req.(*GetPluginInfoRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _Identity_GetPluginInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetPluginInfoRequest)
+func _Identity_GetPluginCapabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(GetPluginCapabilitiesRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(IdentityServer).GetPluginInfo(ctx, in)
+ return srv.(IdentityServer).GetPluginCapabilities(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Identity/GetPluginInfo",
+ FullMethod: "/csi.v0.Identity/GetPluginCapabilities",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(IdentityServer).GetPluginInfo(ctx, req.(*GetPluginInfoRequest))
+ return srv.(IdentityServer).GetPluginCapabilities(ctx, req.(*GetPluginCapabilitiesRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Identity_Probe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ProbeRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(IdentityServer).Probe(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/csi.v0.Identity/Probe",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(IdentityServer).Probe(ctx, req.(*ProbeRequest))
}
return interceptor(ctx, in, info, handler)
}
var _Identity_serviceDesc = grpc.ServiceDesc{
- ServiceName: "csi.Identity",
+ ServiceName: "csi.v0.Identity",
HandlerType: (*IdentityServer)(nil),
Methods: []grpc.MethodDesc{
- {
- MethodName: "GetSupportedVersions",
- Handler: _Identity_GetSupportedVersions_Handler,
- },
{
MethodName: "GetPluginInfo",
Handler: _Identity_GetPluginInfo_Handler,
},
+ {
+ MethodName: "GetPluginCapabilities",
+ Handler: _Identity_GetPluginCapabilities_Handler,
+ },
+ {
+ MethodName: "Probe",
+ Handler: _Identity_Probe_Handler,
+ },
},
Streams: []grpc.StreamDesc{},
Metadata: "csi.proto",
@@ -1879,7 +2014,6 @@ type ControllerClient interface {
ValidateVolumeCapabilities(ctx context.Context, in *ValidateVolumeCapabilitiesRequest, opts ...grpc.CallOption) (*ValidateVolumeCapabilitiesResponse, error)
ListVolumes(ctx context.Context, in *ListVolumesRequest, opts ...grpc.CallOption) (*ListVolumesResponse, error)
GetCapacity(ctx context.Context, in *GetCapacityRequest, opts ...grpc.CallOption) (*GetCapacityResponse, error)
- ControllerProbe(ctx context.Context, in *ControllerProbeRequest, opts ...grpc.CallOption) (*ControllerProbeResponse, error)
ControllerGetCapabilities(ctx context.Context, in *ControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*ControllerGetCapabilitiesResponse, error)
}
@@ -1893,7 +2027,7 @@ func NewControllerClient(cc *grpc.ClientConn) ControllerClient {
func (c *controllerClient) CreateVolume(ctx context.Context, in *CreateVolumeRequest, opts ...grpc.CallOption) (*CreateVolumeResponse, error) {
out := new(CreateVolumeResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/CreateVolume", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/CreateVolume", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1902,7 +2036,7 @@ func (c *controllerClient) CreateVolume(ctx context.Context, in *CreateVolumeReq
func (c *controllerClient) DeleteVolume(ctx context.Context, in *DeleteVolumeRequest, opts ...grpc.CallOption) (*DeleteVolumeResponse, error) {
out := new(DeleteVolumeResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/DeleteVolume", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/DeleteVolume", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1911,7 +2045,7 @@ func (c *controllerClient) DeleteVolume(ctx context.Context, in *DeleteVolumeReq
func (c *controllerClient) ControllerPublishVolume(ctx context.Context, in *ControllerPublishVolumeRequest, opts ...grpc.CallOption) (*ControllerPublishVolumeResponse, error) {
out := new(ControllerPublishVolumeResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/ControllerPublishVolume", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/ControllerPublishVolume", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1920,7 +2054,7 @@ func (c *controllerClient) ControllerPublishVolume(ctx context.Context, in *Cont
func (c *controllerClient) ControllerUnpublishVolume(ctx context.Context, in *ControllerUnpublishVolumeRequest, opts ...grpc.CallOption) (*ControllerUnpublishVolumeResponse, error) {
out := new(ControllerUnpublishVolumeResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/ControllerUnpublishVolume", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/ControllerUnpublishVolume", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1929,7 +2063,7 @@ func (c *controllerClient) ControllerUnpublishVolume(ctx context.Context, in *Co
func (c *controllerClient) ValidateVolumeCapabilities(ctx context.Context, in *ValidateVolumeCapabilitiesRequest, opts ...grpc.CallOption) (*ValidateVolumeCapabilitiesResponse, error) {
out := new(ValidateVolumeCapabilitiesResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/ValidateVolumeCapabilities", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/ValidateVolumeCapabilities", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1938,7 +2072,7 @@ func (c *controllerClient) ValidateVolumeCapabilities(ctx context.Context, in *V
func (c *controllerClient) ListVolumes(ctx context.Context, in *ListVolumesRequest, opts ...grpc.CallOption) (*ListVolumesResponse, error) {
out := new(ListVolumesResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/ListVolumes", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/ListVolumes", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1947,16 +2081,7 @@ func (c *controllerClient) ListVolumes(ctx context.Context, in *ListVolumesReque
func (c *controllerClient) GetCapacity(ctx context.Context, in *GetCapacityRequest, opts ...grpc.CallOption) (*GetCapacityResponse, error) {
out := new(GetCapacityResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/GetCapacity", in, out, c.cc, opts...)
- if err != nil {
- return nil, err
- }
- return out, nil
-}
-
-func (c *controllerClient) ControllerProbe(ctx context.Context, in *ControllerProbeRequest, opts ...grpc.CallOption) (*ControllerProbeResponse, error) {
- out := new(ControllerProbeResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/ControllerProbe", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/GetCapacity", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1965,7 +2090,7 @@ func (c *controllerClient) ControllerProbe(ctx context.Context, in *ControllerPr
func (c *controllerClient) ControllerGetCapabilities(ctx context.Context, in *ControllerGetCapabilitiesRequest, opts ...grpc.CallOption) (*ControllerGetCapabilitiesResponse, error) {
out := new(ControllerGetCapabilitiesResponse)
- err := grpc.Invoke(ctx, "/csi.Controller/ControllerGetCapabilities", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Controller/ControllerGetCapabilities", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -1982,7 +2107,6 @@ type ControllerServer interface {
ValidateVolumeCapabilities(context.Context, *ValidateVolumeCapabilitiesRequest) (*ValidateVolumeCapabilitiesResponse, error)
ListVolumes(context.Context, *ListVolumesRequest) (*ListVolumesResponse, error)
GetCapacity(context.Context, *GetCapacityRequest) (*GetCapacityResponse, error)
- ControllerProbe(context.Context, *ControllerProbeRequest) (*ControllerProbeResponse, error)
ControllerGetCapabilities(context.Context, *ControllerGetCapabilitiesRequest) (*ControllerGetCapabilitiesResponse, error)
}
@@ -2000,7 +2124,7 @@ func _Controller_CreateVolume_Handler(srv interface{}, ctx context.Context, dec
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/CreateVolume",
+ FullMethod: "/csi.v0.Controller/CreateVolume",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).CreateVolume(ctx, req.(*CreateVolumeRequest))
@@ -2018,7 +2142,7 @@ func _Controller_DeleteVolume_Handler(srv interface{}, ctx context.Context, dec
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/DeleteVolume",
+ FullMethod: "/csi.v0.Controller/DeleteVolume",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).DeleteVolume(ctx, req.(*DeleteVolumeRequest))
@@ -2036,7 +2160,7 @@ func _Controller_ControllerPublishVolume_Handler(srv interface{}, ctx context.Co
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/ControllerPublishVolume",
+ FullMethod: "/csi.v0.Controller/ControllerPublishVolume",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).ControllerPublishVolume(ctx, req.(*ControllerPublishVolumeRequest))
@@ -2054,7 +2178,7 @@ func _Controller_ControllerUnpublishVolume_Handler(srv interface{}, ctx context.
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/ControllerUnpublishVolume",
+ FullMethod: "/csi.v0.Controller/ControllerUnpublishVolume",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).ControllerUnpublishVolume(ctx, req.(*ControllerUnpublishVolumeRequest))
@@ -2072,7 +2196,7 @@ func _Controller_ValidateVolumeCapabilities_Handler(srv interface{}, ctx context
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/ValidateVolumeCapabilities",
+ FullMethod: "/csi.v0.Controller/ValidateVolumeCapabilities",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).ValidateVolumeCapabilities(ctx, req.(*ValidateVolumeCapabilitiesRequest))
@@ -2090,7 +2214,7 @@ func _Controller_ListVolumes_Handler(srv interface{}, ctx context.Context, dec f
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/ListVolumes",
+ FullMethod: "/csi.v0.Controller/ListVolumes",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).ListVolumes(ctx, req.(*ListVolumesRequest))
@@ -2108,7 +2232,7 @@ func _Controller_GetCapacity_Handler(srv interface{}, ctx context.Context, dec f
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/GetCapacity",
+ FullMethod: "/csi.v0.Controller/GetCapacity",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).GetCapacity(ctx, req.(*GetCapacityRequest))
@@ -2116,24 +2240,6 @@ func _Controller_GetCapacity_Handler(srv interface{}, ctx context.Context, dec f
return interceptor(ctx, in, info, handler)
}
-func _Controller_ControllerProbe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(ControllerProbeRequest)
- if err := dec(in); err != nil {
- return nil, err
- }
- if interceptor == nil {
- return srv.(ControllerServer).ControllerProbe(ctx, in)
- }
- info := &grpc.UnaryServerInfo{
- Server: srv,
- FullMethod: "/csi.Controller/ControllerProbe",
- }
- handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(ControllerServer).ControllerProbe(ctx, req.(*ControllerProbeRequest))
- }
- return interceptor(ctx, in, info, handler)
-}
-
func _Controller_ControllerGetCapabilities_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
in := new(ControllerGetCapabilitiesRequest)
if err := dec(in); err != nil {
@@ -2144,7 +2250,7 @@ func _Controller_ControllerGetCapabilities_Handler(srv interface{}, ctx context.
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Controller/ControllerGetCapabilities",
+ FullMethod: "/csi.v0.Controller/ControllerGetCapabilities",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(ControllerServer).ControllerGetCapabilities(ctx, req.(*ControllerGetCapabilitiesRequest))
@@ -2153,7 +2259,7 @@ func _Controller_ControllerGetCapabilities_Handler(srv interface{}, ctx context.
}
var _Controller_serviceDesc = grpc.ServiceDesc{
- ServiceName: "csi.Controller",
+ ServiceName: "csi.v0.Controller",
HandlerType: (*ControllerServer)(nil),
Methods: []grpc.MethodDesc{
{
@@ -2184,10 +2290,6 @@ var _Controller_serviceDesc = grpc.ServiceDesc{
MethodName: "GetCapacity",
Handler: _Controller_GetCapacity_Handler,
},
- {
- MethodName: "ControllerProbe",
- Handler: _Controller_ControllerProbe_Handler,
- },
{
MethodName: "ControllerGetCapabilities",
Handler: _Controller_ControllerGetCapabilities_Handler,
@@ -2200,10 +2302,11 @@ var _Controller_serviceDesc = grpc.ServiceDesc{
// Client API for Node service
type NodeClient interface {
+ NodeStageVolume(ctx context.Context, in *NodeStageVolumeRequest, opts ...grpc.CallOption) (*NodeStageVolumeResponse, error)
+ NodeUnstageVolume(ctx context.Context, in *NodeUnstageVolumeRequest, opts ...grpc.CallOption) (*NodeUnstageVolumeResponse, error)
NodePublishVolume(ctx context.Context, in *NodePublishVolumeRequest, opts ...grpc.CallOption) (*NodePublishVolumeResponse, error)
NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*NodeUnpublishVolumeResponse, error)
- GetNodeID(ctx context.Context, in *GetNodeIDRequest, opts ...grpc.CallOption) (*GetNodeIDResponse, error)
- NodeProbe(ctx context.Context, in *NodeProbeRequest, opts ...grpc.CallOption) (*NodeProbeResponse, error)
+ NodeGetId(ctx context.Context, in *NodeGetIdRequest, opts ...grpc.CallOption) (*NodeGetIdResponse, error)
NodeGetCapabilities(ctx context.Context, in *NodeGetCapabilitiesRequest, opts ...grpc.CallOption) (*NodeGetCapabilitiesResponse, error)
}
@@ -2215,36 +2318,45 @@ func NewNodeClient(cc *grpc.ClientConn) NodeClient {
return &nodeClient{cc}
}
-func (c *nodeClient) NodePublishVolume(ctx context.Context, in *NodePublishVolumeRequest, opts ...grpc.CallOption) (*NodePublishVolumeResponse, error) {
- out := new(NodePublishVolumeResponse)
- err := grpc.Invoke(ctx, "/csi.Node/NodePublishVolume", in, out, c.cc, opts...)
+func (c *nodeClient) NodeStageVolume(ctx context.Context, in *NodeStageVolumeRequest, opts ...grpc.CallOption) (*NodeStageVolumeResponse, error) {
+ out := new(NodeStageVolumeResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Node/NodeStageVolume", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *nodeClient) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*NodeUnpublishVolumeResponse, error) {
- out := new(NodeUnpublishVolumeResponse)
- err := grpc.Invoke(ctx, "/csi.Node/NodeUnpublishVolume", in, out, c.cc, opts...)
+func (c *nodeClient) NodeUnstageVolume(ctx context.Context, in *NodeUnstageVolumeRequest, opts ...grpc.CallOption) (*NodeUnstageVolumeResponse, error) {
+ out := new(NodeUnstageVolumeResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Node/NodeUnstageVolume", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *nodeClient) NodePublishVolume(ctx context.Context, in *NodePublishVolumeRequest, opts ...grpc.CallOption) (*NodePublishVolumeResponse, error) {
+ out := new(NodePublishVolumeResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Node/NodePublishVolume", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *nodeClient) GetNodeID(ctx context.Context, in *GetNodeIDRequest, opts ...grpc.CallOption) (*GetNodeIDResponse, error) {
- out := new(GetNodeIDResponse)
- err := grpc.Invoke(ctx, "/csi.Node/GetNodeID", in, out, c.cc, opts...)
+func (c *nodeClient) NodeUnpublishVolume(ctx context.Context, in *NodeUnpublishVolumeRequest, opts ...grpc.CallOption) (*NodeUnpublishVolumeResponse, error) {
+ out := new(NodeUnpublishVolumeResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Node/NodeUnpublishVolume", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
return out, nil
}
-func (c *nodeClient) NodeProbe(ctx context.Context, in *NodeProbeRequest, opts ...grpc.CallOption) (*NodeProbeResponse, error) {
- out := new(NodeProbeResponse)
- err := grpc.Invoke(ctx, "/csi.Node/NodeProbe", in, out, c.cc, opts...)
+func (c *nodeClient) NodeGetId(ctx context.Context, in *NodeGetIdRequest, opts ...grpc.CallOption) (*NodeGetIdResponse, error) {
+ out := new(NodeGetIdResponse)
+ err := grpc.Invoke(ctx, "/csi.v0.Node/NodeGetId", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -2253,7 +2365,7 @@ func (c *nodeClient) NodeProbe(ctx context.Context, in *NodeProbeRequest, opts .
func (c *nodeClient) NodeGetCapabilities(ctx context.Context, in *NodeGetCapabilitiesRequest, opts ...grpc.CallOption) (*NodeGetCapabilitiesResponse, error) {
out := new(NodeGetCapabilitiesResponse)
- err := grpc.Invoke(ctx, "/csi.Node/NodeGetCapabilities", in, out, c.cc, opts...)
+ err := grpc.Invoke(ctx, "/csi.v0.Node/NodeGetCapabilities", in, out, c.cc, opts...)
if err != nil {
return nil, err
}
@@ -2263,10 +2375,11 @@ func (c *nodeClient) NodeGetCapabilities(ctx context.Context, in *NodeGetCapabil
// Server API for Node service
type NodeServer interface {
+ NodeStageVolume(context.Context, *NodeStageVolumeRequest) (*NodeStageVolumeResponse, error)
+ NodeUnstageVolume(context.Context, *NodeUnstageVolumeRequest) (*NodeUnstageVolumeResponse, error)
NodePublishVolume(context.Context, *NodePublishVolumeRequest) (*NodePublishVolumeResponse, error)
NodeUnpublishVolume(context.Context, *NodeUnpublishVolumeRequest) (*NodeUnpublishVolumeResponse, error)
- GetNodeID(context.Context, *GetNodeIDRequest) (*GetNodeIDResponse, error)
- NodeProbe(context.Context, *NodeProbeRequest) (*NodeProbeResponse, error)
+ NodeGetId(context.Context, *NodeGetIdRequest) (*NodeGetIdResponse, error)
NodeGetCapabilities(context.Context, *NodeGetCapabilitiesRequest) (*NodeGetCapabilitiesResponse, error)
}
@@ -2274,74 +2387,92 @@ func RegisterNodeServer(s *grpc.Server, srv NodeServer) {
s.RegisterService(&_Node_serviceDesc, srv)
}
-func _Node_NodePublishVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(NodePublishVolumeRequest)
+func _Node_NodeStageVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(NodeStageVolumeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(NodeServer).NodePublishVolume(ctx, in)
+ return srv.(NodeServer).NodeStageVolume(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Node/NodePublishVolume",
+ FullMethod: "/csi.v0.Node/NodeStageVolume",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(NodeServer).NodePublishVolume(ctx, req.(*NodePublishVolumeRequest))
+ return srv.(NodeServer).NodeStageVolume(ctx, req.(*NodeStageVolumeRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _Node_NodeUnpublishVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(NodeUnpublishVolumeRequest)
+func _Node_NodeUnstageVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(NodeUnstageVolumeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(NodeServer).NodeUnpublishVolume(ctx, in)
+ return srv.(NodeServer).NodeUnstageVolume(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Node/NodeUnpublishVolume",
+ FullMethod: "/csi.v0.Node/NodeUnstageVolume",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(NodeServer).NodeUnpublishVolume(ctx, req.(*NodeUnpublishVolumeRequest))
+ return srv.(NodeServer).NodeUnstageVolume(ctx, req.(*NodeUnstageVolumeRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Node_NodePublishVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(NodePublishVolumeRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(NodeServer).NodePublishVolume(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/csi.v0.Node/NodePublishVolume",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(NodeServer).NodePublishVolume(ctx, req.(*NodePublishVolumeRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _Node_GetNodeID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(GetNodeIDRequest)
+func _Node_NodeUnpublishVolume_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(NodeUnpublishVolumeRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(NodeServer).GetNodeID(ctx, in)
+ return srv.(NodeServer).NodeUnpublishVolume(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Node/GetNodeID",
+ FullMethod: "/csi.v0.Node/NodeUnpublishVolume",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(NodeServer).GetNodeID(ctx, req.(*GetNodeIDRequest))
+ return srv.(NodeServer).NodeUnpublishVolume(ctx, req.(*NodeUnpublishVolumeRequest))
}
return interceptor(ctx, in, info, handler)
}
-func _Node_NodeProbe_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
- in := new(NodeProbeRequest)
+func _Node_NodeGetId_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(NodeGetIdRequest)
if err := dec(in); err != nil {
return nil, err
}
if interceptor == nil {
- return srv.(NodeServer).NodeProbe(ctx, in)
+ return srv.(NodeServer).NodeGetId(ctx, in)
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Node/NodeProbe",
+ FullMethod: "/csi.v0.Node/NodeGetId",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
- return srv.(NodeServer).NodeProbe(ctx, req.(*NodeProbeRequest))
+ return srv.(NodeServer).NodeGetId(ctx, req.(*NodeGetIdRequest))
}
return interceptor(ctx, in, info, handler)
}
@@ -2356,7 +2487,7 @@ func _Node_NodeGetCapabilities_Handler(srv interface{}, ctx context.Context, dec
}
info := &grpc.UnaryServerInfo{
Server: srv,
- FullMethod: "/csi.Node/NodeGetCapabilities",
+ FullMethod: "/csi.v0.Node/NodeGetCapabilities",
}
handler := func(ctx context.Context, req interface{}) (interface{}, error) {
return srv.(NodeServer).NodeGetCapabilities(ctx, req.(*NodeGetCapabilitiesRequest))
@@ -2365,9 +2496,17 @@ func _Node_NodeGetCapabilities_Handler(srv interface{}, ctx context.Context, dec
}
var _Node_serviceDesc = grpc.ServiceDesc{
- ServiceName: "csi.Node",
+ ServiceName: "csi.v0.Node",
HandlerType: (*NodeServer)(nil),
Methods: []grpc.MethodDesc{
+ {
+ MethodName: "NodeStageVolume",
+ Handler: _Node_NodeStageVolume_Handler,
+ },
+ {
+ MethodName: "NodeUnstageVolume",
+ Handler: _Node_NodeUnstageVolume_Handler,
+ },
{
MethodName: "NodePublishVolume",
Handler: _Node_NodePublishVolume_Handler,
@@ -2377,12 +2516,8 @@ var _Node_serviceDesc = grpc.ServiceDesc{
Handler: _Node_NodeUnpublishVolume_Handler,
},
{
- MethodName: "GetNodeID",
- Handler: _Node_GetNodeID_Handler,
- },
- {
- MethodName: "NodeProbe",
- Handler: _Node_NodeProbe_Handler,
+ MethodName: "NodeGetId",
+ Handler: _Node_NodeGetId_Handler,
},
{
MethodName: "NodeGetCapabilities",
@@ -2396,130 +2531,141 @@ var _Node_serviceDesc = grpc.ServiceDesc{
func init() { proto.RegisterFile("csi.proto", fileDescriptor0) }
var fileDescriptor0 = []byte{
- // 1993 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x59, 0x4b, 0x73, 0xe3, 0x58,
- 0x15, 0xb6, 0x6c, 0xe7, 0xe1, 0xe3, 0x38, 0xed, 0x5c, 0xe7, 0xa1, 0x28, 0xfd, 0x70, 0xab, 0xa7,
- 0x7b, 0x42, 0x15, 0xe3, 0xa2, 0x3c, 0x54, 0xd1, 0xe9, 0x9e, 0x19, 0x48, 0x6c, 0x4f, 0x62, 0x26,
- 0x71, 0xa7, 0x14, 0xa7, 0x9b, 0x01, 0xa6, 0x84, 0x62, 0xdf, 0xa4, 0x45, 0xcb, 0x92, 0x47, 0x92,
- 0x5d, 0xed, 0x3d, 0x4b, 0x16, 0xec, 0xd8, 0xc1, 0x72, 0xa0, 0x58, 0x02, 0xbf, 0x80, 0xbf, 0x00,
- 0xac, 0xd9, 0xf2, 0x0f, 0xa8, 0x62, 0x43, 0xdd, 0x87, 0x64, 0x49, 0x96, 0x1c, 0x3b, 0x93, 0x1e,
- 0x66, 0x27, 0x9d, 0xc7, 0x77, 0xcf, 0xe3, 0xde, 0x73, 0xce, 0x95, 0x20, 0xd7, 0x71, 0xf4, 0x4a,
- 0xdf, 0xb6, 0x5c, 0x0b, 0x65, 0x3a, 0x8e, 0x2e, 0xdf, 0x83, 0x9d, 0x43, 0xec, 0x9e, 0x0d, 0xfa,
- 0x7d, 0xcb, 0x76, 0x71, 0xf7, 0x25, 0xb6, 0x1d, 0xdd, 0x32, 0x1d, 0x05, 0x7f, 0x39, 0xc0, 0x8e,
- 0x2b, 0xff, 0x0c, 0xee, 0xc6, 0xb3, 0x9d, 0xbe, 0x65, 0x3a, 0x18, 0x3d, 0x07, 0xe4, 0x78, 0x4c,
- 0x75, 0xc8, 0xb9, 0xa2, 0x50, 0xce, 0xec, 0xe6, 0xab, 0x2b, 0x15, 0xb2, 0x16, 0x57, 0x51, 0xd6,
- 0x9c, 0x28, 0x88, 0xfc, 0x19, 0x2c, 0xf1, 0x67, 0xb4, 0x0e, 0x0b, 0x3d, 0xed, 0x97, 0x96, 0x2d,
- 0x0a, 0x65, 0x61, 0xb7, 0xa0, 0xb0, 0x17, 0x4a, 0xd5, 0x4d, 0xcb, 0x16, 0xd3, 0x9c, 0x4a, 0x5e,
- 0x08, 0xb5, 0xaf, 0xb9, 0x9d, 0xd7, 0x62, 0x86, 0x51, 0xe9, 0x8b, 0xfc, 0x09, 0xac, 0x1f, 0x62,
- 0xf7, 0xd4, 0x18, 0x5c, 0xe9, 0x66, 0xd3, 0xbc, 0xb4, 0xb8, 0x07, 0xe8, 0x09, 0x2c, 0x71, 0xbb,
- 0x28, 0x76, 0xd4, 0x2c, 0x8f, 0x29, 0xff, 0x43, 0x80, 0x8d, 0x08, 0x00, 0xf7, 0x11, 0x41, 0xd6,
- 0xd4, 0x7a, 0x98, 0xaa, 0xe7, 0x14, 0xfa, 0x8c, 0x1e, 0xc3, 0xea, 0x10, 0x9b, 0x5d, 0xcb, 0xf6,
- 0x9c, 0xa6, 0x26, 0xe6, 0x94, 0x02, 0xa3, 0x7a, 0x6e, 0xd5, 0x61, 0xb9, 0xa7, 0x99, 0xfa, 0x25,
- 0x76, 0x5c, 0x31, 0x43, 0x83, 0xb2, 0x4b, 0x57, 0x8f, 0x5d, 0xa8, 0x72, 0xc2, 0x45, 0x1b, 0xa6,
- 0x6b, 0x8f, 0x14, 0x5f, 0x53, 0x7a, 0x0e, 0x85, 0x10, 0x0b, 0x15, 0x21, 0xf3, 0x06, 0x8f, 0xb8,
- 0x41, 0xe4, 0x91, 0xc4, 0x64, 0xa8, 0x19, 0x03, 0xcc, 0xcd, 0x60, 0x2f, 0xcf, 0xd2, 0x4f, 0x05,
- 0xf9, 0xbf, 0x19, 0x28, 0xd5, 0x6c, 0xac, 0xb9, 0xf8, 0xa5, 0x65, 0x0c, 0x7a, 0x78, 0xce, 0xb8,
- 0xf8, 0xde, 0xa7, 0x03, 0xde, 0xef, 0xc1, 0x6a, 0x47, 0xeb, 0x6b, 0x1d, 0xdd, 0x1d, 0xa9, 0xb6,
- 0x66, 0x5e, 0x61, 0x9a, 0x8a, 0x7c, 0x15, 0x51, 0x88, 0x1a, 0x67, 0x29, 0x84, 0xa3, 0x14, 0x3a,
- 0xc1, 0x57, 0xf4, 0x29, 0x94, 0x86, 0xd4, 0x0e, 0x95, 0xd0, 0x2f, 0x74, 0x43, 0x77, 0x75, 0xec,
- 0x88, 0x59, 0x1a, 0x9c, 0x0d, 0x66, 0x02, 0xe5, 0xd7, 0x3c, 0xf6, 0x48, 0x41, 0xc3, 0x30, 0x45,
- 0xc7, 0x0e, 0x3a, 0x02, 0xe8, 0x6b, 0xb6, 0xd6, 0xc3, 0x2e, 0xb6, 0x1d, 0x71, 0x21, 0x10, 0xdb,
- 0x18, 0x67, 0x2b, 0xa7, 0xbe, 0x28, 0x8b, 0x6d, 0x40, 0x17, 0xfd, 0x04, 0x8a, 0x03, 0x07, 0xdb,
- 0x6a, 0xc7, 0xc6, 0x5d, 0x6c, 0xba, 0xba, 0x66, 0x38, 0xe2, 0x22, 0xc5, 0xfb, 0x20, 0x11, 0xef,
- 0xdc, 0xc1, 0x76, 0x6d, 0x2c, 0xcf, 0x40, 0xef, 0x0c, 0xc2, 0x54, 0xe9, 0x63, 0xb8, 0x13, 0x59,
- 0x78, 0x9e, 0xcc, 0x49, 0x07, 0xb0, 0x1e, 0xb7, 0xce, 0x5c, 0xd9, 0x3f, 0x82, 0xf5, 0xb0, 0xfd,
- 0x7c, 0x4f, 0x7f, 0x0f, 0xf2, 0x3c, 0x0d, 0xba, 0x79, 0x69, 0xf1, 0x1d, 0x70, 0x27, 0x10, 0x7e,
- 0xba, 0x31, 0x61, 0xe8, 0x3f, 0xcb, 0xbf, 0xcb, 0x42, 0x31, 0x9a, 0x19, 0xb4, 0x07, 0x0b, 0x17,
- 0x86, 0xd5, 0x79, 0xc3, 0x01, 0x1e, 0xc6, 0xe6, 0xaf, 0x72, 0x40, 0x44, 0x18, 0xf5, 0x28, 0xa5,
- 0x30, 0x0d, 0xa2, 0xda, 0xb3, 0x06, 0xa6, 0x4b, 0x6d, 0x4e, 0x54, 0x3d, 0x21, 0x22, 0x63, 0x55,
- 0xaa, 0x81, 0xf6, 0x21, 0xaf, 0x75, 0x3a, 0xd8, 0x71, 0xd4, 0x9e, 0xd5, 0xf5, 0xf6, 0x5e, 0x39,
- 0x1e, 0x60, 0x9f, 0x0a, 0x9e, 0x58, 0x5d, 0xac, 0x80, 0xe6, 0x3f, 0x4b, 0x05, 0xc8, 0x07, 0xac,
- 0x92, 0x0e, 0x21, 0x1f, 0x58, 0x09, 0x6d, 0xc1, 0xd2, 0xa5, 0xa3, 0xba, 0xa3, 0xbe, 0x77, 0xe8,
- 0x17, 0x2f, 0x9d, 0xf6, 0xa8, 0x8f, 0xd1, 0x03, 0xc8, 0x53, 0x13, 0xd4, 0x4b, 0x43, 0xbb, 0x72,
- 0xc4, 0x74, 0x39, 0xb3, 0x9b, 0x53, 0x80, 0x92, 0x3e, 0x25, 0x14, 0xe9, 0xdf, 0x02, 0xc0, 0x78,
- 0x49, 0xb4, 0x07, 0x59, 0x6a, 0x22, 0x41, 0x59, 0xad, 0x3e, 0xbe, 0xce, 0xc4, 0x0a, 0xb5, 0x93,
- 0xaa, 0xc8, 0xbf, 0x17, 0x20, 0x4b, 0x31, 0xf2, 0xb0, 0x74, 0xde, 0xfa, 0xac, 0xf5, 0xe2, 0x55,
- 0xab, 0x98, 0x42, 0x9b, 0x80, 0xce, 0x9a, 0xad, 0xc3, 0xe3, 0x86, 0xda, 0x7a, 0x51, 0x6f, 0xa8,
- 0xaf, 0x94, 0x66, 0xbb, 0xa1, 0x14, 0x05, 0xb4, 0x03, 0x5b, 0x41, 0xba, 0xd2, 0xd8, 0xaf, 0x37,
- 0x14, 0xf5, 0x45, 0xeb, 0xf8, 0xf3, 0x62, 0x1a, 0x49, 0xb0, 0x79, 0x72, 0x7e, 0xdc, 0x6e, 0x4e,
- 0xf2, 0x32, 0xe8, 0x2e, 0x88, 0x01, 0x1e, 0xc7, 0xe0, 0xb0, 0x59, 0x02, 0x1b, 0xe0, 0xb2, 0x47,
- 0xce, 0x5c, 0x38, 0x28, 0xf8, 0x69, 0x20, 0x91, 0x92, 0x5f, 0x41, 0x21, 0x74, 0xf2, 0x49, 0x8d,
- 0xb4, 0xf1, 0x97, 0x03, 0xdd, 0xc6, 0x5d, 0xf5, 0x62, 0xe4, 0x62, 0x87, 0x86, 0x21, 0xab, 0x14,
- 0x3c, 0xea, 0x01, 0x21, 0x92, 0x98, 0x1a, 0x7a, 0x4f, 0x77, 0xb9, 0x4c, 0x9a, 0xca, 0x00, 0x25,
- 0x51, 0x01, 0xf9, 0x6f, 0x02, 0xc0, 0x78, 0x53, 0x12, 0x58, 0xbf, 0xf8, 0x84, 0x60, 0x3d, 0x2a,
- 0x83, 0x5d, 0x85, 0xb4, 0xde, 0xe5, 0x07, 0x22, 0xad, 0x77, 0xd1, 0x0f, 0x01, 0x34, 0xd7, 0xb5,
- 0xf5, 0x8b, 0x01, 0x51, 0x61, 0xc5, 0xf8, 0x41, 0x64, 0xc3, 0x57, 0xf6, 0x7d, 0x09, 0x5e, 0x27,
- 0xc6, 0x2a, 0xe4, 0x34, 0x47, 0xd8, 0x73, 0x9d, 0xc4, 0xff, 0x08, 0x50, 0xaa, 0x63, 0x03, 0xdf,
- 0xb4, 0x0e, 0xef, 0x40, 0xce, 0x3b, 0xb1, 0x9e, 0x5b, 0xcb, 0xfc, 0x78, 0x76, 0x63, 0x6b, 0x58,
- 0x26, 0x50, 0xc3, 0x62, 0x16, 0x9e, 0xb1, 0x86, 0xdd, 0x46, 0x11, 0xda, 0x84, 0xf5, 0xb0, 0x01,
- 0xac, 0x08, 0xc9, 0x7f, 0xc9, 0xc2, 0xfd, 0x9a, 0x65, 0xba, 0xb6, 0x65, 0x18, 0xd8, 0x3e, 0x1d,
- 0x5c, 0x18, 0xba, 0xf3, 0xfa, 0x1d, 0x44, 0x67, 0x0b, 0x96, 0x4c, 0xab, 0x4b, 0x59, 0x19, 0x76,
- 0x9c, 0xc9, 0x6b, 0xb3, 0x8b, 0x0e, 0x60, 0x2d, 0xda, 0x8c, 0x46, 0x62, 0x96, 0xae, 0x93, 0xd0,
- 0x8a, 0x8a, 0xc3, 0x68, 0x09, 0x94, 0x60, 0xd9, 0xc6, 0x5a, 0xd7, 0x32, 0x8d, 0x91, 0xb8, 0x50,
- 0x16, 0x76, 0x97, 0x15, 0xff, 0x1d, 0x75, 0x12, 0x5b, 0xcb, 0x53, 0xd6, 0x5a, 0xa6, 0x3a, 0x3f,
- 0x5b, 0x86, 0xd0, 0xa5, 0xef, 0x44, 0x60, 0x7f, 0x2f, 0xd1, 0x55, 0xf6, 0x66, 0x59, 0x85, 0xbd,
- 0x45, 0x77, 0x3e, 0x77, 0x74, 0x4c, 0xbe, 0x8d, 0x9d, 0x20, 0xd5, 0x60, 0x23, 0x76, 0xb9, 0xb9,
- 0xb6, 0xd3, 0xdf, 0x05, 0x78, 0x90, 0xe8, 0x13, 0xef, 0x6f, 0x6f, 0xa0, 0xd4, 0x67, 0x0c, 0x35,
- 0xdc, 0xe7, 0x48, 0x58, 0x9e, 0x4f, 0x0f, 0x0b, 0x9f, 0xc6, 0x42, 0x54, 0x52, 0x1d, 0x58, 0x60,
- 0xd6, 0xfa, 0x51, 0xba, 0x54, 0x87, 0xcd, 0x78, 0xe1, 0xb9, 0xdc, 0xfa, 0x53, 0x1a, 0xca, 0x63,
- 0x9b, 0xce, 0xcd, 0xfe, 0x37, 0x7f, 0x1e, 0x70, 0xcc, 0x7e, 0x65, 0x93, 0xd9, 0xb3, 0x48, 0xc8,
- 0xe2, 0xcd, 0xfb, 0x06, 0x6b, 0xca, 0x23, 0x78, 0x38, 0xc5, 0x1a, 0x5e, 0x60, 0xfe, 0x95, 0x86,
- 0x87, 0x2f, 0x35, 0x43, 0xef, 0xfa, 0x03, 0x50, 0x70, 0x86, 0xbc, 0xd5, 0x98, 0x26, 0xcc, 0xb5,
- 0x99, 0x79, 0xe7, 0x5a, 0x3d, 0xee, 0x34, 0xb3, 0x1c, 0x7c, 0xc4, 0x50, 0xae, 0xf3, 0x67, 0xe6,
- 0x03, 0x7d, 0x2b, 0x87, 0xf1, 0xe7, 0x20, 0x4f, 0xb3, 0x88, 0x1f, 0xc7, 0xbb, 0x90, 0xf3, 0xaf,
- 0x7f, 0x14, 0x77, 0x59, 0x19, 0x13, 0x90, 0x08, 0x4b, 0x3d, 0xec, 0x38, 0xda, 0x95, 0x87, 0xef,
- 0xbd, 0xca, 0xbf, 0x12, 0x00, 0x1d, 0xeb, 0x0e, 0x9f, 0xcb, 0xe6, 0xce, 0x18, 0x19, 0xd7, 0xb4,
- 0xb7, 0x2a, 0x36, 0x5d, 0x5b, 0xe7, 0xa3, 0x45, 0x41, 0x81, 0x9e, 0xf6, 0xb6, 0xc1, 0x28, 0x64,
- 0x96, 0x70, 0x5c, 0xcd, 0x76, 0x75, 0xf3, 0x4a, 0x75, 0xad, 0x37, 0xd8, 0xe4, 0x07, 0xa2, 0xe0,
- 0x51, 0xdb, 0x84, 0x28, 0xff, 0x51, 0x80, 0x52, 0xc8, 0x0c, 0xee, 0xd6, 0x53, 0x58, 0xf2, 0xb0,
- 0x59, 0x65, 0xb9, 0x4f, 0xed, 0x88, 0x11, 0xad, 0xb0, 0x24, 0x78, 0xe2, 0xe8, 0x1e, 0x80, 0x89,
- 0xdf, 0xba, 0x7c, 0x51, 0xe6, 0x75, 0x8e, 0x50, 0xe8, 0x82, 0xd2, 0x1e, 0x2c, 0xb0, 0x54, 0xcc,
- 0x3f, 0xa7, 0xff, 0x3a, 0x0d, 0xe8, 0x10, 0xbb, 0xfe, 0x28, 0x36, 0x67, 0xc8, 0x12, 0xf6, 0x71,
- 0x7a, 0xde, 0x7d, 0x7c, 0x18, 0xba, 0x9f, 0xb1, 0x63, 0xf0, 0xbe, 0x77, 0xf7, 0x8d, 0x18, 0x37,
- 0xed, 0x7a, 0xf6, 0x35, 0x2f, 0x51, 0x72, 0x1d, 0x4a, 0xa1, 0x05, 0x79, 0xe6, 0x3e, 0x00, 0xa4,
- 0x0d, 0x35, 0xdd, 0xd0, 0x2e, 0x0c, 0xe6, 0x29, 0xe1, 0xf2, 0x41, 0x72, 0xcd, 0xe7, 0x78, 0x6a,
- 0xf2, 0x8f, 0x60, 0x33, 0xd0, 0x2e, 0x6c, 0xeb, 0x62, 0xde, 0x82, 0x2c, 0x6f, 0xc3, 0xd6, 0x04,
- 0x02, 0xaf, 0x52, 0x3f, 0x0e, 0xd6, 0x7d, 0x6e, 0xec, 0x0d, 0x6b, 0x94, 0xac, 0x07, 0xcb, 0xe2,
- 0x04, 0x16, 0x77, 0xbe, 0x0e, 0x2b, 0x31, 0xc9, 0x2d, 0x47, 0x4a, 0xfc, 0x19, 0xb6, 0x87, 0x7a,
- 0x27, 0x98, 0xe7, 0x90, 0x96, 0xfc, 0xdb, 0x34, 0xec, 0x4c, 0x91, 0x46, 0x4f, 0x21, 0x63, 0xf7,
- 0x3b, 0xdc, 0xdc, 0xf7, 0xae, 0x03, 0xaf, 0x28, 0xa7, 0xb5, 0xa3, 0x94, 0x42, 0x54, 0xa4, 0xbf,
- 0x0a, 0x90, 0x51, 0x4e, 0x6b, 0xe8, 0x63, 0xc8, 0xfa, 0x77, 0xb0, 0xd5, 0xea, 0x77, 0x66, 0x81,
- 0xa8, 0x90, 0x6b, 0x9a, 0x42, 0xd5, 0x64, 0x0b, 0xb2, 0xf4, 0xd2, 0x16, 0xba, 0x40, 0x89, 0xb0,
- 0x5e, 0x53, 0x1a, 0xfb, 0xed, 0x86, 0x5a, 0x6f, 0x1c, 0x37, 0xda, 0x0d, 0xf5, 0xe5, 0x8b, 0xe3,
- 0xf3, 0x93, 0x46, 0x51, 0x20, 0x37, 0xa1, 0xd3, 0xf3, 0x83, 0xe3, 0xe6, 0xd9, 0x91, 0x7a, 0xde,
- 0xf2, 0x9e, 0x38, 0x37, 0x8d, 0x8a, 0xb0, 0x72, 0xdc, 0x3c, 0x6b, 0x73, 0xc2, 0x59, 0x31, 0x43,
- 0x28, 0x87, 0x8d, 0xb6, 0x5a, 0xdb, 0x3f, 0xdd, 0xaf, 0x35, 0xdb, 0x9f, 0x17, 0xb3, 0x07, 0x8b,
- 0xcc, 0x5e, 0xf9, 0x9f, 0x0b, 0x20, 0xb6, 0xac, 0x2e, 0x7e, 0x77, 0x13, 0x6d, 0x37, 0x7e, 0xbc,
- 0x61, 0xc7, 0xec, 0xfb, 0x14, 0x30, 0xc9, 0x80, 0xd9, 0xe7, 0x1a, 0x52, 0x3e, 0x5d, 0xcd, 0xbe,
- 0xc2, 0xae, 0xda, 0xd7, 0xdc, 0xd7, 0x74, 0x30, 0xce, 0x29, 0xc0, 0x48, 0xa7, 0x9a, 0xfb, 0x3a,
- 0x7e, 0x7e, 0x5e, 0xb8, 0xf9, 0xfc, 0xbc, 0x18, 0x99, 0x9f, 0xbf, 0x88, 0x99, 0x47, 0xd8, 0x64,
- 0x5b, 0x9d, 0xee, 0xe3, 0x6c, 0x93, 0xf3, 0x2f, 0xe2, 0x7a, 0xed, 0x32, 0xc5, 0xff, 0x70, 0x3a,
- 0xfe, 0xac, 0x2d, 0xf6, 0x56, 0x26, 0xc3, 0x6f, 0xcf, 0xe4, 0xbd, 0x03, 0xdb, 0x31, 0x21, 0xe1,
- 0x65, 0xec, 0xab, 0x34, 0x48, 0x84, 0xfb, 0x2e, 0x27, 0xd7, 0xc8, 0x8e, 0xcc, 0x4c, 0xec, 0x48,
- 0x35, 0x71, 0x82, 0x1d, 0x9f, 0x8a, 0xff, 0xfb, 0xec, 0x7a, 0x0f, 0x76, 0x62, 0xed, 0xe0, 0x81,
- 0x7c, 0x06, 0xc5, 0x43, 0xec, 0x12, 0x89, 0x66, 0x7d, 0xde, 0xfa, 0xff, 0x5d, 0x58, 0x0b, 0xe8,
- 0xf2, 0x7a, 0x1f, 0x98, 0xf7, 0x85, 0xe0, 0xbc, 0x4f, 0x56, 0xa2, 0xf9, 0xbc, 0x49, 0x43, 0x2b,
- 0xc1, 0x5a, 0x40, 0x97, 0x9b, 0x5e, 0x67, 0x5b, 0xe0, 0x6b, 0x36, 0xb1, 0x2f, 0x58, 0x7c, 0x92,
- 0xda, 0xd7, 0x27, 0x91, 0xf6, 0xc5, 0x46, 0x2f, 0xc9, 0xcf, 0xef, 0x75, 0x8d, 0xeb, 0x0f, 0x02,
- 0x6c, 0xc4, 0xca, 0xa1, 0x6a, 0xb0, 0x65, 0xdd, 0x4f, 0x06, 0x0c, 0x36, 0xab, 0x33, 0xd6, 0xab,
- 0x7e, 0x10, 0xea, 0x55, 0x8f, 0xa6, 0xeb, 0x06, 0xbb, 0x54, 0x29, 0xa6, 0x4b, 0x79, 0x9d, 0xa4,
- 0xfa, 0x67, 0x01, 0x96, 0x9b, 0x74, 0xa3, 0xb9, 0xa4, 0x1a, 0xae, 0xc7, 0xfd, 0x8b, 0x41, 0x65,
- 0x6f, 0xac, 0x4a, 0xfa, 0x8b, 0x23, 0x3d, 0x9c, 0x22, 0xc1, 0x33, 0x97, 0x42, 0x47, 0x50, 0x08,
- 0xfd, 0x96, 0x40, 0xdb, 0x71, 0xbf, 0x2a, 0x18, 0xa0, 0x94, 0xfc, 0x17, 0x43, 0x4e, 0x55, 0xbf,
- 0x5a, 0x04, 0x18, 0xf7, 0x69, 0xd4, 0x80, 0x95, 0xe0, 0x37, 0x68, 0x24, 0x26, 0x7d, 0x56, 0x97,
- 0xb6, 0x63, 0x38, 0xbe, 0x7d, 0x0d, 0x58, 0x09, 0x7e, 0x45, 0xe2, 0x30, 0x31, 0x5f, 0xb6, 0x38,
- 0x4c, 0xec, 0x27, 0xa7, 0x14, 0xba, 0x0c, 0x0d, 0x62, 0xc1, 0x03, 0x88, 0x1e, 0xcd, 0xf0, 0xb9,
- 0x44, 0x7a, 0x6f, 0x96, 0x8f, 0x07, 0x72, 0x0a, 0x19, 0xb0, 0x9d, 0x78, 0x41, 0x45, 0x8f, 0x67,
- 0xba, 0x4e, 0x4b, 0x4f, 0xae, 0x13, 0xf3, 0x57, 0xb3, 0x40, 0x4a, 0xbe, 0x86, 0xa1, 0x27, 0xb3,
- 0xdd, 0x1c, 0xa5, 0xf7, 0xaf, 0x95, 0xf3, 0x17, 0x3c, 0x80, 0x7c, 0xe0, 0x9a, 0x83, 0xb6, 0x26,
- 0x2f, 0x3e, 0x0c, 0x52, 0x4c, 0xba, 0x11, 0x31, 0x8c, 0xc0, 0x6c, 0xce, 0x31, 0x26, 0xaf, 0x07,
- 0x1c, 0x23, 0x66, 0x8c, 0x97, 0x53, 0xa8, 0x05, 0x77, 0x22, 0x73, 0x35, 0xda, 0x89, 0x66, 0x28,
- 0x50, 0xde, 0xa4, 0xbb, 0xf1, 0xcc, 0xf8, 0xb4, 0x45, 0x2a, 0xd0, 0x44, 0xda, 0xe2, 0xeb, 0xdc,
- 0x44, 0xda, 0x12, 0x0a, 0x99, 0x9c, 0xaa, 0xfe, 0x26, 0x03, 0x59, 0x52, 0x25, 0x50, 0x9b, 0x57,
- 0xd3, 0xd0, 0x2e, 0xb9, 0x37, 0x75, 0x08, 0x91, 0xee, 0x27, 0xb1, 0x7d, 0x67, 0x7e, 0x0a, 0xa5,
- 0x98, 0x46, 0x83, 0x1e, 0x5c, 0xd3, 0x0a, 0xa5, 0x72, 0xb2, 0x80, 0x8f, 0xfd, 0x11, 0xe4, 0xfc,
- 0x4e, 0x83, 0x36, 0xbc, 0x0c, 0x85, 0xba, 0x96, 0xb4, 0x19, 0x25, 0x07, 0xb5, 0xfd, 0xee, 0xc1,
- 0xb5, 0xa3, 0x9d, 0x88, 0x6b, 0x4f, 0x36, 0x19, 0xdf, 0xaf, 0x68, 0x7a, 0xc6, 0x7e, 0x25, 0x24,
- 0xa6, 0x9c, 0x2c, 0xe0, 0x61, 0x5f, 0x2c, 0xd2, 0x9f, 0xe3, 0x1f, 0xfe, 0x2f, 0x00, 0x00, 0xff,
- 0xff, 0x17, 0x25, 0x65, 0xbe, 0x29, 0x1f, 0x00, 0x00,
+ // 2173 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xcc, 0x1a, 0x4d, 0x53, 0xe3, 0xc8,
+ 0x15, 0xf9, 0x0b, 0x78, 0x06, 0xd6, 0xd3, 0x30, 0x83, 0x11, 0x30, 0x03, 0x62, 0x67, 0x96, 0xfd,
+ 0xf2, 0x26, 0x24, 0xd9, 0xda, 0xec, 0x90, 0x49, 0xc0, 0x28, 0xe0, 0xc5, 0x18, 0x4a, 0x18, 0xa6,
+ 0x76, 0xb2, 0x29, 0xad, 0xb0, 0x1b, 0x46, 0x19, 0x23, 0x79, 0x24, 0x99, 0x1a, 0x6e, 0xa9, 0x5c,
+ 0x52, 0x95, 0x5b, 0xee, 0x49, 0xa5, 0x2a, 0xc7, 0x9c, 0x73, 0x48, 0x55, 0xaa, 0xe6, 0x9c, 0xaa,
+ 0xfc, 0x81, 0x9c, 0xf2, 0x03, 0x52, 0x39, 0xe6, 0x94, 0x53, 0x4a, 0xdd, 0x2d, 0xb9, 0x25, 0xb7,
+ 0x64, 0x7b, 0x67, 0x6a, 0x2b, 0x27, 0xac, 0xf7, 0xdd, 0xaf, 0xdf, 0x7b, 0xfd, 0x5e, 0x37, 0x30,
+ 0xdd, 0x72, 0xcd, 0x4a, 0xd7, 0xb1, 0x3d, 0x1b, 0x15, 0xfc, 0x9f, 0x37, 0xdf, 0x51, 0xee, 0xc1,
+ 0xc2, 0x3e, 0xf6, 0x4e, 0x3a, 0xbd, 0x2b, 0xd3, 0xaa, 0x59, 0x97, 0xb6, 0x86, 0x5f, 0xf6, 0xb0,
+ 0xeb, 0x29, 0xff, 0x90, 0xe0, 0x6e, 0x0c, 0xe1, 0x76, 0x6d, 0xcb, 0xc5, 0x08, 0x41, 0xce, 0x32,
+ 0xae, 0x71, 0x59, 0x5a, 0x93, 0x36, 0xa7, 0x35, 0xf2, 0x1b, 0x3d, 0x84, 0xb9, 0x1b, 0x6c, 0xb5,
+ 0x6d, 0x47, 0xbf, 0xc1, 0x8e, 0x6b, 0xda, 0x56, 0x39, 0x43, 0xb0, 0xb3, 0x14, 0x7a, 0x4e, 0x81,
+ 0x68, 0x1f, 0xa6, 0xae, 0x0d, 0xcb, 0xbc, 0xc4, 0xae, 0x57, 0xce, 0xae, 0x65, 0x37, 0x8b, 0x5b,
+ 0x1f, 0x56, 0xa8, 0x1d, 0x15, 0xa1, 0xae, 0xca, 0x11, 0xa3, 0x56, 0x2d, 0xcf, 0xb9, 0xd5, 0x42,
+ 0x66, 0xf9, 0x31, 0xcc, 0x46, 0x50, 0xa8, 0x04, 0xd9, 0x17, 0xf8, 0x96, 0xd9, 0xe4, 0xff, 0x44,
+ 0x0b, 0x90, 0xbf, 0x31, 0x3a, 0x3d, 0xcc, 0x2c, 0xa1, 0x1f, 0x9f, 0x67, 0x3e, 0x93, 0x94, 0xfb,
+ 0xb0, 0x12, 0x6a, 0xab, 0x1a, 0x5d, 0xe3, 0xc2, 0xec, 0x98, 0x9e, 0x89, 0xdd, 0x60, 0xe9, 0x3f,
+ 0x87, 0xd5, 0x04, 0x3c, 0xf3, 0xc0, 0x36, 0xcc, 0xb4, 0x38, 0x78, 0x39, 0x43, 0x96, 0x52, 0x0e,
+ 0x96, 0x12, 0xe3, 0xbc, 0xd5, 0x22, 0xd4, 0xca, 0xdf, 0x25, 0x28, 0xc5, 0x49, 0xd0, 0x36, 0x4c,
+ 0xba, 0xd8, 0xb9, 0x31, 0x5b, 0xd4, 0xaf, 0xc5, 0xad, 0xb5, 0x24, 0x69, 0x95, 0x53, 0x4a, 0x77,
+ 0x30, 0xa1, 0x05, 0x2c, 0xf2, 0x4b, 0x98, 0x64, 0x50, 0xf4, 0x43, 0xc8, 0x79, 0xb7, 0x5d, 0x2a,
+ 0x65, 0x6e, 0xeb, 0xe1, 0x30, 0x29, 0x95, 0xe6, 0x6d, 0x17, 0x6b, 0x84, 0x45, 0xf9, 0x10, 0x72,
+ 0xfe, 0x17, 0x2a, 0xc2, 0xe4, 0x59, 0xe3, 0xb0, 0x71, 0xfc, 0xb4, 0x51, 0x9a, 0x40, 0xf7, 0x00,
+ 0x55, 0x8f, 0x1b, 0x4d, 0xed, 0xb8, 0x5e, 0x57, 0x35, 0xfd, 0x54, 0xd5, 0xce, 0x6b, 0x55, 0xb5,
+ 0x24, 0xed, 0x16, 0xa8, 0x1e, 0x65, 0x0e, 0x66, 0x4e, 0x1c, 0xfb, 0x02, 0x07, 0xce, 0x7b, 0x07,
+ 0x66, 0xd9, 0x37, 0x75, 0x96, 0xf2, 0xcb, 0x1c, 0xcc, 0x57, 0x1d, 0x6c, 0x78, 0xf8, 0xdc, 0xee,
+ 0xf4, 0xae, 0x03, 0x42, 0x61, 0x18, 0x6d, 0xc3, 0x9c, 0xef, 0xaa, 0x96, 0xe9, 0xdd, 0xea, 0x8e,
+ 0x61, 0x5d, 0xd1, 0xcd, 0x2b, 0x6e, 0xdd, 0x0d, 0x96, 0x51, 0x65, 0x58, 0xcd, 0x47, 0x6a, 0xb3,
+ 0x2d, 0xfe, 0x13, 0xd5, 0x60, 0xfe, 0x86, 0xa8, 0xd0, 0x23, 0xbb, 0x93, 0x8d, 0xee, 0x0e, 0xb5,
+ 0x82, 0xdb, 0x1d, 0x74, 0x13, 0x85, 0x98, 0xd8, 0x45, 0x87, 0x00, 0x5d, 0xc3, 0x31, 0xae, 0xb1,
+ 0x87, 0x1d, 0xb7, 0x9c, 0x8b, 0x86, 0xaa, 0x60, 0x35, 0x95, 0x93, 0x90, 0x9a, 0x86, 0x2a, 0xc7,
+ 0x8e, 0x3c, 0x58, 0x6a, 0xd9, 0x96, 0xe7, 0xd8, 0x9d, 0x0e, 0x76, 0xf4, 0x16, 0xe1, 0xd6, 0x5d,
+ 0xdc, 0x72, 0xb0, 0xe7, 0x96, 0xf3, 0x44, 0xf6, 0x67, 0x69, 0xb2, 0xab, 0x21, 0x33, 0xc5, 0x9e,
+ 0x52, 0x56, 0xaa, 0x68, 0xb1, 0x25, 0xc6, 0xca, 0x3f, 0x82, 0x77, 0x62, 0x46, 0x8d, 0x93, 0x24,
+ 0xf2, 0x17, 0xb0, 0x92, 0xa6, 0x77, 0xac, 0x84, 0x7b, 0x02, 0x0b, 0xd1, 0x75, 0xb1, 0x3c, 0x7a,
+ 0x04, 0x05, 0xea, 0x7b, 0x16, 0xf3, 0x73, 0xd1, 0x3d, 0xd2, 0x18, 0x56, 0xf9, 0x53, 0x0e, 0x4a,
+ 0xf1, 0x6d, 0x43, 0xdb, 0x90, 0xbf, 0xe8, 0xd8, 0xad, 0x17, 0x8c, 0xf7, 0xdd, 0xa4, 0xfd, 0xad,
+ 0xec, 0xfa, 0x54, 0x14, 0x7a, 0x30, 0xa1, 0x51, 0x26, 0x9f, 0xfb, 0xda, 0xee, 0x59, 0x1e, 0x0b,
+ 0xb0, 0x64, 0xee, 0x23, 0x9f, 0xaa, 0xcf, 0x4d, 0x98, 0xd0, 0x1e, 0x14, 0x8d, 0x56, 0x0b, 0xbb,
+ 0xae, 0x7e, 0x6d, 0xb7, 0x71, 0x39, 0x4b, 0x64, 0x6c, 0x24, 0xca, 0xd8, 0x21, 0xb4, 0x47, 0x76,
+ 0x1b, 0x6b, 0x60, 0x84, 0xbf, 0xe5, 0x59, 0x28, 0x72, 0xb6, 0xc9, 0xfb, 0x50, 0xe4, 0x94, 0xa1,
+ 0x45, 0x98, 0xbc, 0x74, 0xf5, 0x30, 0x97, 0xa7, 0xb5, 0xc2, 0xa5, 0x4b, 0xd2, 0xf3, 0x01, 0x14,
+ 0x89, 0x15, 0xfa, 0x65, 0xc7, 0xb8, 0xa2, 0xc5, 0x67, 0x5a, 0x03, 0x02, 0xfa, 0xa9, 0x0f, 0x91,
+ 0xff, 0x2d, 0x01, 0xf4, 0x55, 0xa2, 0x6d, 0xc8, 0x11, 0x2b, 0x69, 0x45, 0xd8, 0x1c, 0xc1, 0xca,
+ 0x0a, 0x31, 0x95, 0x70, 0x29, 0x7f, 0x90, 0x20, 0x47, 0xc4, 0xc4, 0xab, 0xc2, 0x69, 0xad, 0xb1,
+ 0x5f, 0x57, 0xf5, 0xc6, 0xf1, 0x9e, 0xaa, 0x3f, 0xd5, 0x6a, 0x4d, 0x55, 0x2b, 0x49, 0x68, 0x19,
+ 0x16, 0x79, 0xb8, 0xa6, 0xee, 0xec, 0xa9, 0x9a, 0x7e, 0xdc, 0xa8, 0x7f, 0x59, 0xca, 0x20, 0x19,
+ 0xee, 0x1d, 0x9d, 0xd5, 0x9b, 0xb5, 0x41, 0x5c, 0x16, 0xad, 0x40, 0x99, 0xc3, 0x31, 0x19, 0x4c,
+ 0x6c, 0xce, 0x17, 0xcb, 0x61, 0xe9, 0x4f, 0x86, 0xcc, 0xef, 0xce, 0x86, 0x9b, 0x41, 0x0a, 0xd2,
+ 0x53, 0x98, 0x8d, 0x54, 0x09, 0xff, 0x6c, 0x72, 0xf0, 0xcb, 0x9e, 0xe9, 0xe0, 0xb6, 0x7e, 0x71,
+ 0xeb, 0x61, 0x97, 0x78, 0x22, 0xab, 0xcd, 0x06, 0xd0, 0x5d, 0x1f, 0xe8, 0xbb, 0xb5, 0x63, 0x5e,
+ 0x9b, 0x1e, 0xa3, 0xc9, 0x10, 0x1a, 0x20, 0x20, 0x42, 0xa0, 0xbc, 0x96, 0xa0, 0xc0, 0xf6, 0xe6,
+ 0x21, 0x57, 0xa7, 0x22, 0x22, 0x03, 0x28, 0x15, 0x39, 0x07, 0x19, 0xb3, 0xcd, 0xd2, 0x21, 0x63,
+ 0xb6, 0xd1, 0x13, 0x00, 0xc3, 0xf3, 0x1c, 0xf3, 0xa2, 0xe7, 0x85, 0x75, 0xe9, 0x7e, 0x74, 0x3f,
+ 0x2a, 0x3b, 0x21, 0x01, 0x2b, 0x24, 0x7d, 0x0e, 0x3f, 0xa5, 0x63, 0xe8, 0xb1, 0xd2, 0xf0, 0x3f,
+ 0x12, 0xcc, 0xef, 0xe1, 0x0e, 0x8e, 0x57, 0xe2, 0x65, 0x98, 0x66, 0x75, 0xd3, 0x6c, 0x33, 0x49,
+ 0x53, 0x14, 0x50, 0x6b, 0xc7, 0x8a, 0x57, 0x9b, 0xb0, 0x87, 0xc5, 0x2b, 0x13, 0x2d, 0x5e, 0x02,
+ 0xe1, 0x5c, 0xf1, 0xa2, 0xd8, 0xa4, 0xe2, 0x15, 0xc1, 0x46, 0xab, 0xcf, 0x20, 0xe3, 0x58, 0xcb,
+ 0xbe, 0x07, 0x0b, 0x51, 0xc3, 0xd8, 0xc1, 0xf4, 0xd7, 0x1c, 0xdc, 0xef, 0x2b, 0x39, 0xe9, 0x5d,
+ 0x74, 0x4c, 0xf7, 0xf9, 0x18, 0x9e, 0x59, 0x84, 0x49, 0xcb, 0x6e, 0x13, 0x14, 0xd5, 0x59, 0xf0,
+ 0x3f, 0x6b, 0x6d, 0xa4, 0xc2, 0x9d, 0xf8, 0x39, 0x74, 0xcb, 0x6a, 0x44, 0xf2, 0x29, 0x54, 0xba,
+ 0x89, 0x17, 0x38, 0x19, 0xa6, 0x1c, 0x6c, 0xb4, 0x6d, 0xab, 0x73, 0x5b, 0xce, 0xad, 0x49, 0x9b,
+ 0x53, 0x5a, 0xf8, 0x8d, 0x7e, 0x25, 0x81, 0xcc, 0x6d, 0x4b, 0x97, 0x1a, 0x1f, 0x3b, 0x54, 0xf6,
+ 0xc2, 0x43, 0x25, 0x75, 0x95, 0x83, 0xe8, 0xc8, 0x1e, 0x95, 0x5b, 0x09, 0x68, 0x64, 0x86, 0xeb,
+ 0xe4, 0xa2, 0xba, 0x40, 0x54, 0x6f, 0x8f, 0xa8, 0x9a, 0x7e, 0xc5, 0x63, 0x9e, 0xf9, 0xa2, 0x0f,
+ 0x96, 0x0f, 0x61, 0x35, 0xd5, 0xca, 0xb1, 0x8e, 0xb6, 0x2a, 0xdc, 0x15, 0xea, 0x1d, 0x2b, 0xaa,
+ 0x5e, 0x4b, 0xf0, 0x20, 0x71, 0x71, 0xec, 0x7c, 0xfb, 0x19, 0xcc, 0x04, 0x3b, 0x63, 0x5a, 0x97,
+ 0x76, 0x59, 0x8a, 0x9d, 0xf5, 0xe9, 0xec, 0x15, 0x06, 0xf5, 0x1b, 0x62, 0xea, 0x97, 0x62, 0xb7,
+ 0x0f, 0x91, 0x9f, 0x40, 0x29, 0x4e, 0x30, 0xd6, 0x02, 0xfe, 0x9c, 0x81, 0xb5, 0xbe, 0x05, 0x67,
+ 0x56, 0xf7, 0xed, 0x25, 0xc0, 0x6f, 0x24, 0x58, 0xe1, 0xa2, 0xb3, 0x67, 0xc5, 0xe3, 0x93, 0x96,
+ 0xbe, 0x83, 0x41, 0x47, 0x88, 0xcd, 0x10, 0x11, 0x44, 0x62, 0x94, 0xcb, 0x85, 0x38, 0x81, 0x7c,
+ 0xc4, 0xef, 0x93, 0x90, 0x7d, 0x2c, 0xb7, 0x6d, 0xc0, 0x7a, 0x8a, 0xb9, 0xac, 0xb4, 0xbc, 0xce,
+ 0xc0, 0xfa, 0xb9, 0xd1, 0x31, 0xdb, 0x61, 0xcf, 0x23, 0x98, 0x33, 0xd2, 0x9d, 0x9b, 0xd0, 0xcc,
+ 0x66, 0xbe, 0x41, 0x33, 0xdb, 0x11, 0xe5, 0x29, 0xdd, 0x82, 0x1f, 0x87, 0x82, 0x86, 0x59, 0x3b,
+ 0x72, 0xaa, 0xbe, 0x95, 0xec, 0xfa, 0x0a, 0x94, 0x34, 0x8b, 0x58, 0x7e, 0xad, 0xc0, 0xb4, 0xdb,
+ 0xeb, 0x76, 0x6d, 0xc7, 0xc3, 0xd4, 0x81, 0x53, 0x5a, 0x1f, 0x80, 0xca, 0x30, 0x79, 0x8d, 0x5d,
+ 0xd7, 0xb8, 0x0a, 0xe4, 0x07, 0x9f, 0xca, 0x57, 0x80, 0xea, 0xa6, 0xcb, 0x1a, 0xad, 0x70, 0x3b,
+ 0xfc, 0xbe, 0xca, 0x78, 0xa5, 0x63, 0xcb, 0x73, 0x4c, 0x76, 0xa2, 0xe7, 0x35, 0xb8, 0x36, 0x5e,
+ 0xa9, 0x14, 0xe2, 0x9f, 0xfa, 0xae, 0x67, 0x38, 0x9e, 0x69, 0x5d, 0xe9, 0x9e, 0xfd, 0x02, 0x87,
+ 0x43, 0x6e, 0x00, 0x6d, 0xfa, 0x40, 0xe5, 0x8f, 0x12, 0xcc, 0x47, 0xc4, 0x33, 0x6b, 0x1f, 0xc3,
+ 0x64, 0x5f, 0xb6, 0xef, 0xfc, 0xf5, 0xc0, 0xf9, 0x02, 0xea, 0x0a, 0x75, 0x6f, 0xc0, 0x81, 0x56,
+ 0x01, 0x2c, 0xfc, 0xca, 0x8b, 0xe8, 0x9d, 0xf6, 0x21, 0x44, 0xa7, 0xfc, 0x09, 0xe4, 0xa9, 0x93,
+ 0x47, 0x6d, 0xa9, 0xff, 0x25, 0x01, 0xda, 0xc7, 0x5e, 0xd8, 0x29, 0x31, 0x1f, 0x24, 0x44, 0x9d,
+ 0xf4, 0x0d, 0xa2, 0xee, 0x8b, 0xc8, 0x08, 0x45, 0xe3, 0xf6, 0x03, 0x6e, 0xda, 0x8f, 0xa9, 0x4e,
+ 0x9b, 0xa0, 0xde, 0x70, 0x96, 0x51, 0xf6, 0x60, 0x3e, 0xa2, 0x90, 0x6d, 0xc8, 0xc7, 0x80, 0x8c,
+ 0x1b, 0xc3, 0xec, 0x18, 0x17, 0x1d, 0xba, 0x5e, 0x1f, 0xcb, 0x3a, 0xb9, 0x3b, 0x21, 0x26, 0x60,
+ 0x53, 0x14, 0xbe, 0x5e, 0x32, 0x79, 0xf1, 0xab, 0x83, 0x0e, 0x5f, 0x1d, 0x06, 0x68, 0x98, 0xde,
+ 0x7d, 0xe1, 0xf5, 0xc1, 0xc6, 0x60, 0x35, 0x64, 0x33, 0x7a, 0xe2, 0x4d, 0xc2, 0xef, 0x33, 0xb0,
+ 0x9c, 0x42, 0x8d, 0x1e, 0x43, 0xd6, 0xe9, 0xb6, 0x58, 0x24, 0xbc, 0x37, 0x82, 0xfc, 0x8a, 0x76,
+ 0x52, 0x3d, 0x98, 0xd0, 0x7c, 0x2e, 0xf9, 0x2f, 0x12, 0x64, 0xb5, 0x93, 0x2a, 0xfa, 0x49, 0xe4,
+ 0x42, 0xe1, 0xa3, 0x11, 0xa5, 0xf0, 0xf7, 0x0a, 0xb6, 0xe8, 0x5e, 0xa1, 0x0c, 0x0b, 0x55, 0x4d,
+ 0xdd, 0x69, 0xaa, 0xfa, 0x9e, 0x5a, 0x57, 0x9b, 0xaa, 0x7e, 0x7e, 0x5c, 0x3f, 0x3b, 0x52, 0x4b,
+ 0x92, 0x3f, 0x0a, 0x9c, 0x9c, 0xed, 0xd6, 0x6b, 0xa7, 0x07, 0xfa, 0x59, 0x23, 0xf8, 0xc5, 0xb0,
+ 0x19, 0x54, 0x82, 0x99, 0x7a, 0xed, 0xb4, 0xc9, 0x00, 0xa7, 0xa5, 0xac, 0x0f, 0xd9, 0x57, 0x9b,
+ 0x7a, 0x75, 0xe7, 0x64, 0xa7, 0x5a, 0x6b, 0x7e, 0x59, 0xca, 0x85, 0x77, 0x13, 0xbf, 0xcd, 0xc3,
+ 0xbd, 0x86, 0xdd, 0xc6, 0xa7, 0x9e, 0x71, 0x35, 0x4e, 0xcf, 0xab, 0xc5, 0xce, 0x6d, 0xba, 0x41,
+ 0x9f, 0x04, 0x4b, 0x17, 0x8b, 0x4c, 0x3f, 0xae, 0x51, 0x05, 0xe6, 0x5d, 0xcf, 0xb8, 0x22, 0xb5,
+ 0xc3, 0x70, 0xae, 0xb0, 0xa7, 0x77, 0x0d, 0xef, 0x39, 0x69, 0x0b, 0xa7, 0xb5, 0x3b, 0x0c, 0xd5,
+ 0x24, 0x98, 0x13, 0xc3, 0x7b, 0x2e, 0x6e, 0x22, 0x73, 0x63, 0x37, 0x91, 0x17, 0x80, 0xc8, 0x19,
+ 0xed, 0x2b, 0x88, 0x5f, 0x3a, 0x7c, 0x7f, 0xc8, 0x82, 0x42, 0x70, 0xe4, 0xac, 0x2d, 0x59, 0x31,
+ 0x30, 0x32, 0x92, 0xfb, 0xc0, 0x61, 0x2a, 0x46, 0x3d, 0x54, 0xde, 0xb0, 0xd9, 0xf1, 0x0f, 0x25,
+ 0xe1, 0x6a, 0xbe, 0xfd, 0xbe, 0x71, 0x09, 0x16, 0x07, 0x7c, 0xc1, 0xba, 0x86, 0x2b, 0x28, 0xfb,
+ 0xa8, 0x33, 0xcb, 0x1d, 0x33, 0x5e, 0x13, 0x62, 0x2b, 0x93, 0x10, 0x5b, 0xca, 0x32, 0x2c, 0x09,
+ 0x14, 0x31, 0x2b, 0xfe, 0x99, 0xa7, 0x66, 0x8c, 0x3f, 0x10, 0x35, 0x85, 0x69, 0xf3, 0x5d, 0x3e,
+ 0x04, 0x84, 0x43, 0xc0, 0xdb, 0x4d, 0x9c, 0x07, 0x50, 0xe4, 0xe9, 0x72, 0x84, 0x0e, 0xbc, 0x21,
+ 0x99, 0x95, 0x7f, 0xa3, 0xf1, 0xac, 0x10, 0x1b, 0xcf, 0x7e, 0x01, 0x0b, 0x24, 0xeb, 0xe2, 0x7d,
+ 0xef, 0x64, 0x74, 0x00, 0x48, 0xf4, 0x08, 0x87, 0x88, 0xe4, 0x1e, 0xc9, 0xe5, 0xd8, 0x14, 0xd6,
+ 0x12, 0x65, 0xdf, 0x14, 0x51, 0xf4, 0xe9, 0x50, 0x45, 0xdf, 0x56, 0xfe, 0xa9, 0x34, 0xea, 0xff,
+ 0x2f, 0x26, 0x37, 0x16, 0xfd, 0xc2, 0x99, 0x4b, 0x79, 0x06, 0x32, 0x4d, 0x8d, 0xf1, 0xc7, 0xa1,
+ 0x58, 0xe0, 0x65, 0xe2, 0x81, 0xa7, 0xac, 0xc2, 0xb2, 0x50, 0x36, 0x53, 0x8d, 0xa0, 0xe4, 0xa3,
+ 0xf7, 0xb1, 0x57, 0x6b, 0x07, 0xfd, 0xc4, 0x47, 0x70, 0x87, 0x83, 0xb1, 0xfe, 0x81, 0x9b, 0xbb,
+ 0x24, 0x7e, 0xee, 0x52, 0x56, 0xa8, 0xf1, 0x09, 0xbd, 0xc9, 0xd7, 0x54, 0x7d, 0x52, 0x57, 0xb2,
+ 0x13, 0xeb, 0x4a, 0x68, 0xcf, 0xb7, 0x1a, 0x29, 0xe0, 0x43, 0xfa, 0x91, 0xbf, 0x49, 0xac, 0xcc,
+ 0x0e, 0x74, 0x22, 0x3f, 0xe0, 0x3b, 0x91, 0xf5, 0x54, 0x99, 0x7c, 0x0f, 0xd2, 0xa5, 0x2d, 0xc8,
+ 0xe7, 0x91, 0x16, 0xe4, 0xd1, 0x50, 0x76, 0xbe, 0xf9, 0xf8, 0x38, 0xa1, 0xf9, 0x38, 0x6d, 0xee,
+ 0xec, 0xab, 0xfa, 0x59, 0x83, 0xfe, 0x0d, 0x9a, 0x8f, 0xa0, 0x75, 0xd8, 0xfa, 0xaf, 0x04, 0x53,
+ 0xb5, 0x36, 0xb6, 0x3c, 0xdf, 0xfa, 0x06, 0xcc, 0x46, 0x9e, 0xa7, 0xd0, 0x4a, 0xc2, 0xab, 0x15,
+ 0x71, 0xb4, 0xbc, 0x9a, 0xfa, 0xa6, 0xa5, 0x4c, 0xa0, 0x4b, 0xee, 0x69, 0x2d, 0xd2, 0x33, 0xbf,
+ 0x3b, 0xc0, 0x29, 0xd8, 0x48, 0xf9, 0xe1, 0x10, 0xaa, 0x50, 0xcf, 0xa7, 0x90, 0x27, 0x6f, 0x31,
+ 0x68, 0x21, 0x7c, 0x06, 0xe2, 0x9e, 0x6a, 0xe4, 0xbb, 0x31, 0x68, 0xc0, 0xb7, 0xf5, 0xeb, 0x02,
+ 0x40, 0xbf, 0xbf, 0x43, 0x87, 0x30, 0xc3, 0x5f, 0xdf, 0xa3, 0xe5, 0x94, 0xc7, 0x0a, 0x79, 0x45,
+ 0x8c, 0x0c, 0x6d, 0x3a, 0x84, 0x19, 0xfe, 0x36, 0xae, 0x2f, 0x4c, 0x70, 0x79, 0xd8, 0x17, 0x26,
+ 0xbc, 0xc0, 0x9b, 0x40, 0x1d, 0x58, 0x4c, 0xb8, 0x44, 0x41, 0x8f, 0x46, 0xbb, 0x81, 0x92, 0xdf,
+ 0x1b, 0xf1, 0x36, 0x46, 0x99, 0x40, 0x0e, 0x2c, 0x25, 0x8e, 0xfe, 0x68, 0x73, 0xd4, 0xcb, 0x0c,
+ 0xf9, 0xfd, 0x11, 0x28, 0x43, 0x9d, 0x3d, 0x90, 0x93, 0x07, 0x61, 0xf4, 0xfe, 0xc8, 0xe3, 0xbb,
+ 0xfc, 0xc1, 0x28, 0xa4, 0xa1, 0xda, 0x03, 0x28, 0x72, 0x43, 0x29, 0x92, 0x85, 0x93, 0x2a, 0x15,
+ 0xbc, 0x9c, 0x32, 0xc5, 0x52, 0x49, 0xdc, 0xec, 0xd5, 0x97, 0x34, 0x38, 0x01, 0xf6, 0x25, 0x09,
+ 0x86, 0xb5, 0xb8, 0xfb, 0x63, 0x55, 0x4c, 0xe4, 0x7e, 0x71, 0x19, 0x14, 0xb9, 0x3f, 0xa1, 0x24,
+ 0x2a, 0x13, 0x5b, 0xbf, 0xcb, 0x41, 0xce, 0x2f, 0x33, 0xa8, 0x09, 0xef, 0xc4, 0xda, 0x36, 0x74,
+ 0x3f, 0xbd, 0xb7, 0x95, 0x1f, 0x24, 0xe2, 0xc3, 0x25, 0x3d, 0xa3, 0xe5, 0x3d, 0xd2, 0x88, 0xa1,
+ 0x35, 0x9e, 0x4f, 0xd4, 0x0c, 0xca, 0xeb, 0x29, 0x14, 0x71, 0xd9, 0xd1, 0xac, 0x58, 0x1b, 0xd6,
+ 0x11, 0x44, 0x65, 0x27, 0x65, 0xc2, 0xd7, 0x30, 0x2f, 0x38, 0xc9, 0x90, 0x12, 0xb5, 0x4b, 0x18,
+ 0xfd, 0x1b, 0xa9, 0x34, 0xa1, 0x86, 0x5d, 0x98, 0x0e, 0x0f, 0x3e, 0x54, 0xe6, 0x79, 0xf8, 0xf3,
+ 0x51, 0x5e, 0x12, 0x60, 0xe2, 0x56, 0xc6, 0x43, 0x45, 0x89, 0xf1, 0x88, 0x82, 0x64, 0x23, 0x95,
+ 0x26, 0xd0, 0xb0, 0x9b, 0x7f, 0x96, 0x6d, 0xb9, 0xe6, 0x45, 0x81, 0xfc, 0x4b, 0xc5, 0xf7, 0xfe,
+ 0x17, 0x00, 0x00, 0xff, 0xff, 0x69, 0xaa, 0xdb, 0x41, 0x5f, 0x21, 0x00, 0x00,
}
diff --git a/vendor/github.com/containerd/console/.travis.yml b/vendor/github.com/containerd/console/.travis.yml
new file mode 100644
index 000000000000..ba93012c7676
--- /dev/null
+++ b/vendor/github.com/containerd/console/.travis.yml
@@ -0,0 +1,17 @@
+language: go
+go:
+ - 1.9.x
+ - tip
+
+go_import_path: github.com/containerd/console
+
+install:
+ - go get -d
+ - GOOS=windows go get -d
+ - GOOS=solaris go get -d
+
+script:
+ - go test -race
+ - GOOS=windows go test
+ - GOOS=solaris go build
+ - GOOS=solaris go test -c
diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE b/vendor/github.com/containerd/console/LICENSE
similarity index 94%
rename from vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE
rename to vendor/github.com/containerd/console/LICENSE
index b9fbf3c98fb5..261eeb9e9f8b 100644
--- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.APACHE
+++ b/vendor/github.com/containerd/console/LICENSE
@@ -1,4 +1,3 @@
-
Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/
@@ -176,7 +175,18 @@
END OF TERMS AND CONDITIONS
- Copyright 2014-2017 Docker, Inc.
+ 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.
diff --git a/vendor/github.com/containerd/console/README.md b/vendor/github.com/containerd/console/README.md
new file mode 100644
index 000000000000..4c56d9d134a9
--- /dev/null
+++ b/vendor/github.com/containerd/console/README.md
@@ -0,0 +1,17 @@
+# console
+
+[![Build Status](https://travis-ci.org/containerd/console.svg?branch=master)](https://travis-ci.org/containerd/console)
+
+Golang package for dealing with consoles. Light on deps and a simple API.
+
+## Modifying the current process
+
+```go
+current := console.Current()
+defer current.Reset()
+
+if err := current.SetRaw(); err != nil {
+}
+ws, err := current.Size()
+current.Resize(ws)
+```
diff --git a/vendor/github.com/containerd/console/console.go b/vendor/github.com/containerd/console/console.go
new file mode 100644
index 000000000000..bf2798fda37d
--- /dev/null
+++ b/vendor/github.com/containerd/console/console.go
@@ -0,0 +1,62 @@
+package console
+
+import (
+ "errors"
+ "io"
+ "os"
+)
+
+var ErrNotAConsole = errors.New("provided file is not a console")
+
+type Console interface {
+ io.Reader
+ io.Writer
+ io.Closer
+
+ // Resize resizes the console to the provided window size
+ Resize(WinSize) error
+ // ResizeFrom resizes the calling console to the size of the
+ // provided console
+ ResizeFrom(Console) error
+ // SetRaw sets the console in raw mode
+ SetRaw() error
+ // DisableEcho disables echo on the console
+ DisableEcho() error
+ // Reset restores the console to its orignal state
+ Reset() error
+ // Size returns the window size of the console
+ Size() (WinSize, error)
+ // Fd returns the console's file descriptor
+ Fd() uintptr
+ // Name returns the console's file name
+ Name() string
+}
+
+// WinSize specifies the window size of the console
+type WinSize struct {
+ // Height of the console
+ Height uint16
+ // Width of the console
+ Width uint16
+ x uint16
+ y uint16
+}
+
+// Current returns the current processes console
+func Current() Console {
+ c, err := ConsoleFromFile(os.Stdin)
+ if err != nil {
+ // stdin should always be a console for the design
+ // of this function
+ panic(err)
+ }
+ return c
+}
+
+// ConsoleFromFile returns a console using the provided file
+func ConsoleFromFile(f *os.File) (Console, error) {
+ if err := checkConsole(f); err != nil {
+ return nil, err
+ }
+ return newMaster(f)
+}
diff --git a/vendor/github.com/containerd/console/console_linux.go b/vendor/github.com/containerd/console/console_linux.go
new file mode 100644
index 000000000000..c963729296d7
--- /dev/null
+++ b/vendor/github.com/containerd/console/console_linux.go
@@ -0,0 +1,255 @@
+// +build linux
+
+package console
+
+import (
+ "io"
+ "os"
+ "sync"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ maxEvents = 128
+)
+
+// Epoller manages multiple epoll consoles using edge-triggered epoll api so we
+// dont have to deal with repeated wake-up of EPOLLER or EPOLLHUP.
+// For more details, see:
+// - https://github.com/systemd/systemd/pull/4262
+// - https://github.com/moby/moby/issues/27202
+//
+// Example usage of Epoller and EpollConsole can be as follow:
+//
+// epoller, _ := NewEpoller()
+// epollConsole, _ := epoller.Add(console)
+// go epoller.Wait()
+// var (
+// b bytes.Buffer
+// wg sync.WaitGroup
+// )
+// wg.Add(1)
+// go func() {
+// io.Copy(&b, epollConsole)
+// wg.Done()
+// }()
+// // perform I/O on the console
+// epollConsole.Shutdown(epoller.CloseConsole)
+// wg.Wait()
+// epollConsole.Close()
+type Epoller struct {
+ efd int
+ mu sync.Mutex
+ fdMapping map[int]*EpollConsole
+}
+
+// NewEpoller returns an instance of epoller with a valid epoll fd.
+func NewEpoller() (*Epoller, error) {
+ efd, err := unix.EpollCreate1(unix.EPOLL_CLOEXEC)
+ if err != nil {
+ return nil, err
+ }
+ return &Epoller{
+ efd: efd,
+ fdMapping: make(map[int]*EpollConsole),
+ }, nil
+}
+
+// Add creates a epoll console based on the provided console. The console will
+// be registered with EPOLLET (i.e. using edge-triggered notification) and its
+// file descriptor will be set to non-blocking mode. After this, user should use
+// the return console to perform I/O.
+func (e *Epoller) Add(console Console) (*EpollConsole, error) {
+ sysfd := int(console.Fd())
+ // Set sysfd to non-blocking mode
+ if err := unix.SetNonblock(sysfd, true); err != nil {
+ return nil, err
+ }
+
+ ev := unix.EpollEvent{
+ Events: unix.EPOLLIN | unix.EPOLLOUT | unix.EPOLLRDHUP | unix.EPOLLET,
+ Fd: int32(sysfd),
+ }
+ if err := unix.EpollCtl(e.efd, unix.EPOLL_CTL_ADD, sysfd, &ev); err != nil {
+ return nil, err
+ }
+ ef := &EpollConsole{
+ Console: console,
+ sysfd: sysfd,
+ readc: sync.NewCond(&sync.Mutex{}),
+ writec: sync.NewCond(&sync.Mutex{}),
+ }
+ e.mu.Lock()
+ e.fdMapping[sysfd] = ef
+ e.mu.Unlock()
+ return ef, nil
+}
+
+// Wait starts the loop to wait for its consoles' notifications and signal
+// appropriate console that it can perform I/O.
+func (e *Epoller) Wait() error {
+ events := make([]unix.EpollEvent, maxEvents)
+ for {
+ n, err := unix.EpollWait(e.efd, events, -1)
+ if err != nil {
+ // EINTR: The call was interrupted by a signal handler before either
+ // any of the requested events occurred or the timeout expired
+ if err == unix.EINTR {
+ continue
+ }
+ return err
+ }
+ for i := 0; i < n; i++ {
+ ev := &events[i]
+ // the console is ready to be read from
+ if ev.Events&(unix.EPOLLIN|unix.EPOLLHUP|unix.EPOLLERR) != 0 {
+ if epfile := e.getConsole(int(ev.Fd)); epfile != nil {
+ epfile.signalRead()
+ }
+ }
+ // the console is ready to be written to
+ if ev.Events&(unix.EPOLLOUT|unix.EPOLLHUP|unix.EPOLLERR) != 0 {
+ if epfile := e.getConsole(int(ev.Fd)); epfile != nil {
+ epfile.signalWrite()
+ }
+ }
+ }
+ }
+}
+
+// Close unregister the console's file descriptor from epoll interface
+func (e *Epoller) CloseConsole(fd int) error {
+ e.mu.Lock()
+ defer e.mu.Unlock()
+ delete(e.fdMapping, fd)
+ return unix.EpollCtl(e.efd, unix.EPOLL_CTL_DEL, fd, &unix.EpollEvent{})
+}
+
+func (e *Epoller) getConsole(sysfd int) *EpollConsole {
+ e.mu.Lock()
+ f := e.fdMapping[sysfd]
+ e.mu.Unlock()
+ return f
+}
+
+// Close the epoll fd
+func (e *Epoller) Close() error {
+ return unix.Close(e.efd)
+}
+
+// EpollConsole acts like a console but register its file descriptor with a
+// epoll fd and uses epoll API to perform I/O.
+type EpollConsole struct {
+ Console
+ readc *sync.Cond
+ writec *sync.Cond
+ sysfd int
+ closed bool
+}
+
+// Read reads up to len(p) bytes into p. It returns the number of bytes read
+// (0 <= n <= len(p)) and any error encountered.
+//
+// If the console's read returns EAGAIN or EIO, we assumes that its a
+// temporary error because the other side went away and wait for the signal
+// generated by epoll event to continue.
+func (ec *EpollConsole) Read(p []byte) (n int, err error) {
+ var read int
+ ec.readc.L.Lock()
+ defer ec.readc.L.Unlock()
+ for {
+ read, err = ec.Console.Read(p[n:])
+ n += read
+ if err != nil {
+ var hangup bool
+ if perr, ok := err.(*os.PathError); ok {
+ hangup = (perr.Err == unix.EAGAIN || perr.Err == unix.EIO)
+ } else {
+ hangup = (err == unix.EAGAIN || err == unix.EIO)
+ }
+ // if the other end disappear, assume this is temporary and wait for the
+ // signal to continue again. Unless we didnt read anything and the
+ // console is already marked as closed then we should exit
+ if hangup && !(n == 0 && len(p) > 0 && ec.closed) {
+ ec.readc.Wait()
+ continue
+ }
+ }
+ break
+ }
+ // if we didnt read anything then return io.EOF to end gracefully
+ if n == 0 && len(p) > 0 && err == nil {
+ err = io.EOF
+ }
+ // signal for others that we finished the read
+ ec.readc.Signal()
+ return n, err
+}
+
+// Writes len(p) bytes from p to the console. It returns the number of bytes
+// written from p (0 <= n <= len(p)) and any error encountered that caused
+// the write to stop early.
+//
+// If writes to the console returns EAGAIN or EIO, we assumes that its a
+// temporary error because the other side went away and wait for the signal
+// generated by epoll event to continue.
+func (ec *EpollConsole) Write(p []byte) (n int, err error) {
+ var written int
+ ec.writec.L.Lock()
+ defer ec.writec.L.Unlock()
+ for {
+ written, err = ec.Console.Write(p[n:])
+ n += written
+ if err != nil {
+ var hangup bool
+ if perr, ok := err.(*os.PathError); ok {
+ hangup = (perr.Err == unix.EAGAIN || perr.Err == unix.EIO)
+ } else {
+ hangup = (err == unix.EAGAIN || err == unix.EIO)
+ }
+ // if the other end disappear, assume this is temporary and wait for the
+ // signal to continue again.
+ if hangup {
+ ec.writec.Wait()
+ continue
+ }
+ }
+ // unrecoverable error, break the loop and return the error
+ break
+ }
+ if n < len(p) && err == nil {
+ err = io.ErrShortWrite
+ }
+ // signal for others that we finished the write
+ ec.writec.Signal()
+ return n, err
+}
+
+// Close closed the file descriptor and signal call waiters for this fd.
+// It accepts a callback which will be called with the console's fd. The
+// callback typically will be used to do further cleanup such as unregister the
+// console's fd from the epoll interface.
+// User should call Shutdown and wait for all I/O operation to be finished
+// before closing the console.
+func (ec *EpollConsole) Shutdown(close func(int) error) error {
+ ec.readc.L.Lock()
+ defer ec.readc.L.Unlock()
+ ec.writec.L.Lock()
+ defer ec.writec.L.Unlock()
+
+ ec.readc.Broadcast()
+ ec.writec.Broadcast()
+ ec.closed = true
+ return close(ec.sysfd)
+}
+
+// signalRead signals that the console is readable.
+func (ec *EpollConsole) signalRead() {
+ ec.readc.Signal()
+}
+
+// signalWrite signals that the console is writable.
+func (ec *EpollConsole) signalWrite() {
+ ec.writec.Signal()
+}
diff --git a/vendor/github.com/containerd/console/console_unix.go b/vendor/github.com/containerd/console/console_unix.go
new file mode 100644
index 000000000000..118c8c3abfd2
--- /dev/null
+++ b/vendor/github.com/containerd/console/console_unix.go
@@ -0,0 +1,142 @@
+// +build darwin freebsd linux solaris
+
+package console
+
+import (
+ "os"
+
+ "golang.org/x/sys/unix"
+)
+
+// NewPty creates a new pty pair
+// The master is returned as the first console and a string
+// with the path to the pty slave is returned as the second
+func NewPty() (Console, string, error) {
+ f, err := os.OpenFile("/dev/ptmx", unix.O_RDWR|unix.O_NOCTTY|unix.O_CLOEXEC, 0)
+ if err != nil {
+ return nil, "", err
+ }
+ slave, err := ptsname(f)
+ if err != nil {
+ return nil, "", err
+ }
+ if err := unlockpt(f); err != nil {
+ return nil, "", err
+ }
+ m, err := newMaster(f)
+ if err != nil {
+ return nil, "", err
+ }
+ return m, slave, nil
+}
+
+type master struct {
+ f *os.File
+ original *unix.Termios
+}
+
+func (m *master) Read(b []byte) (int, error) {
+ return m.f.Read(b)
+}
+
+func (m *master) Write(b []byte) (int, error) {
+ return m.f.Write(b)
+}
+
+func (m *master) Close() error {
+ return m.f.Close()
+}
+
+func (m *master) Resize(ws WinSize) error {
+ return tcswinsz(m.f.Fd(), ws)
+}
+
+func (m *master) ResizeFrom(c Console) error {
+ ws, err := c.Size()
+ if err != nil {
+ return err
+ }
+ return m.Resize(ws)
+}
+
+func (m *master) Reset() error {
+ if m.original == nil {
+ return nil
+ }
+ return tcset(m.f.Fd(), m.original)
+}
+
+func (m *master) getCurrent() (unix.Termios, error) {
+ var termios unix.Termios
+ if err := tcget(m.f.Fd(), &termios); err != nil {
+ return unix.Termios{}, err
+ }
+ return termios, nil
+}
+
+func (m *master) SetRaw() error {
+ rawState, err := m.getCurrent()
+ if err != nil {
+ return err
+ }
+ rawState = cfmakeraw(rawState)
+ rawState.Oflag = rawState.Oflag | unix.OPOST
+ return tcset(m.f.Fd(), &rawState)
+}
+
+func (m *master) DisableEcho() error {
+ rawState, err := m.getCurrent()
+ if err != nil {
+ return err
+ }
+ rawState.Lflag = rawState.Lflag &^ unix.ECHO
+ return tcset(m.f.Fd(), &rawState)
+}
+
+func (m *master) Size() (WinSize, error) {
+ return tcgwinsz(m.f.Fd())
+}
+
+func (m *master) Fd() uintptr {
+ return m.f.Fd()
+}
+
+func (m *master) Name() string {
+ return m.f.Name()
+}
+
+// checkConsole checks if the provided file is a console
+func checkConsole(f *os.File) error {
+ var termios unix.Termios
+ if tcget(f.Fd(), &termios) != nil {
+ return ErrNotAConsole
+ }
+ return nil
+}
+
+func newMaster(f *os.File) (Console, error) {
+ m := &master{
+ f: f,
+ }
+ t, err := m.getCurrent()
+ if err != nil {
+ return nil, err
+ }
+ m.original = &t
+ return m, nil
+}
+
+// ClearONLCR sets the necessary tty_ioctl(4)s to ensure that a pty pair
+// created by us acts normally. In particular, a not-very-well-known default of
+// Linux unix98 ptys is that they have +onlcr by default. While this isn't a
+// problem for terminal emulators, because we relay data from the terminal we
+// also relay that funky line discipline.
+func ClearONLCR(fd uintptr) error {
+ return setONLCR(fd, false)
+}
+
+// SetONLCR sets the necessary tty_ioctl(4)s to ensure that a pty pair
+// created by us acts as intended for a terminal emulator.
+func SetONLCR(fd uintptr) error {
+ return setONLCR(fd, true)
+}
diff --git a/vendor/github.com/containerd/console/console_windows.go b/vendor/github.com/containerd/console/console_windows.go
new file mode 100644
index 000000000000..d78a0b8419be
--- /dev/null
+++ b/vendor/github.com/containerd/console/console_windows.go
@@ -0,0 +1,200 @@
+package console
+
+import (
+ "fmt"
+ "os"
+
+ "github.com/pkg/errors"
+ "golang.org/x/sys/windows"
+)
+
+var (
+ vtInputSupported bool
+ ErrNotImplemented = errors.New("not implemented")
+)
+
+func (m *master) initStdios() {
+ m.in = windows.Handle(os.Stdin.Fd())
+ if err := windows.GetConsoleMode(m.in, &m.inMode); err == nil {
+ // Validate that windows.ENABLE_VIRTUAL_TERMINAL_INPUT is supported, but do not set it.
+ if err = windows.SetConsoleMode(m.in, m.inMode|windows.ENABLE_VIRTUAL_TERMINAL_INPUT); err == nil {
+ vtInputSupported = true
+ }
+ // Unconditionally set the console mode back even on failure because SetConsoleMode
+ // remembers invalid bits on input handles.
+ windows.SetConsoleMode(m.in, m.inMode)
+ } else {
+ fmt.Printf("failed to get console mode for stdin: %v\n", err)
+ }
+
+ m.out = windows.Handle(os.Stdout.Fd())
+ if err := windows.GetConsoleMode(m.out, &m.outMode); err == nil {
+ if err := windows.SetConsoleMode(m.out, m.outMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING); err == nil {
+ m.outMode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING
+ } else {
+ windows.SetConsoleMode(m.out, m.outMode)
+ }
+ } else {
+ fmt.Printf("failed to get console mode for stdout: %v\n", err)
+ }
+
+ m.err = windows.Handle(os.Stderr.Fd())
+ if err := windows.GetConsoleMode(m.err, &m.errMode); err == nil {
+ if err := windows.SetConsoleMode(m.err, m.errMode|windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING); err == nil {
+ m.errMode |= windows.ENABLE_VIRTUAL_TERMINAL_PROCESSING
+ } else {
+ windows.SetConsoleMode(m.err, m.errMode)
+ }
+ } else {
+ fmt.Printf("failed to get console mode for stderr: %v\n", err)
+ }
+}
+
+type master struct {
+ in windows.Handle
+ inMode uint32
+
+ out windows.Handle
+ outMode uint32
+
+ err windows.Handle
+ errMode uint32
+}
+
+func (m *master) SetRaw() error {
+ if err := makeInputRaw(m.in, m.inMode); err != nil {
+ return err
+ }
+
+ // Set StdOut and StdErr to raw mode, we ignore failures since
+ // windows.DISABLE_NEWLINE_AUTO_RETURN might not be supported on this version of
+ // Windows.
+
+ windows.SetConsoleMode(m.out, m.outMode|windows.DISABLE_NEWLINE_AUTO_RETURN)
+
+ windows.SetConsoleMode(m.err, m.errMode|windows.DISABLE_NEWLINE_AUTO_RETURN)
+
+ return nil
+}
+
+func (m *master) Reset() error {
+ for _, s := range []struct {
+ fd windows.Handle
+ mode uint32
+ }{
+ {m.in, m.inMode},
+ {m.out, m.outMode},
+ {m.err, m.errMode},
+ } {
+ if err := windows.SetConsoleMode(s.fd, s.mode); err != nil {
+ return errors.Wrap(err, "unable to restore console mode")
+ }
+ }
+
+ return nil
+}
+
+func (m *master) Size() (WinSize, error) {
+ var info windows.ConsoleScreenBufferInfo
+ err := windows.GetConsoleScreenBufferInfo(m.out, &info)
+ if err != nil {
+ return WinSize{}, errors.Wrap(err, "unable to get console info")
+ }
+
+ winsize := WinSize{
+ Width: uint16(info.Window.Right - info.Window.Left + 1),
+ Height: uint16(info.Window.Bottom - info.Window.Top + 1),
+ }
+
+ return winsize, nil
+}
+
+func (m *master) Resize(ws WinSize) error {
+ return ErrNotImplemented
+}
+
+func (m *master) ResizeFrom(c Console) error {
+ return ErrNotImplemented
+}
+
+func (m *master) DisableEcho() error {
+ mode := m.inMode &^ windows.ENABLE_ECHO_INPUT
+ mode |= windows.ENABLE_PROCESSED_INPUT
+ mode |= windows.ENABLE_LINE_INPUT
+
+ if err := windows.SetConsoleMode(m.in, mode); err != nil {
+ return errors.Wrap(err, "unable to set console to disable echo")
+ }
+
+ return nil
+}
+
+func (m *master) Close() error {
+ return nil
+}
+
+func (m *master) Read(b []byte) (int, error) {
+ panic("not implemented on windows")
+}
+
+func (m *master) Write(b []byte) (int, error) {
+ panic("not implemented on windows")
+}
+
+func (m *master) Fd() uintptr {
+ return uintptr(m.in)
+}
+
+// on windows, console can only be made from os.Std{in,out,err}, hence there
+// isnt a single name here we can use. Return a dummy "console" value in this
+// case should be sufficient.
+func (m *master) Name() string {
+ return "console"
+}
+
+// makeInputRaw puts the terminal (Windows Console) connected to the given
+// file descriptor into raw mode
+func makeInputRaw(fd windows.Handle, mode uint32) error {
+ // See
+ // -- https://msdn.microsoft.com/en-us/library/windows/desktop/ms686033(v=vs.85).aspx
+ // -- https://msdn.microsoft.com/en-us/library/windows/desktop/ms683462(v=vs.85).aspx
+
+ // Disable these modes
+ mode &^= windows.ENABLE_ECHO_INPUT
+ mode &^= windows.ENABLE_LINE_INPUT
+ mode &^= windows.ENABLE_MOUSE_INPUT
+ mode &^= windows.ENABLE_WINDOW_INPUT
+ mode &^= windows.ENABLE_PROCESSED_INPUT
+
+ // Enable these modes
+ mode |= windows.ENABLE_EXTENDED_FLAGS
+ mode |= windows.ENABLE_INSERT_MODE
+ mode |= windows.ENABLE_QUICK_EDIT_MODE
+
+ if vtInputSupported {
+ mode |= windows.ENABLE_VIRTUAL_TERMINAL_INPUT
+ }
+
+ if err := windows.SetConsoleMode(fd, mode); err != nil {
+ return errors.Wrap(err, "unable to set console to raw mode")
+ }
+
+ return nil
+}
+
+func checkConsole(f *os.File) error {
+ var mode uint32
+ if err := windows.GetConsoleMode(windows.Handle(f.Fd()), &mode); err != nil {
+ return err
+ }
+ return nil
+}
+
+func newMaster(f *os.File) (Console, error) {
+ if f != os.Stdin && f != os.Stdout && f != os.Stderr {
+ return nil, errors.New("creating a console from a file is not supported on windows")
+ }
+ m := &master{}
+ m.initStdios()
+ return m, nil
+}
diff --git a/vendor/github.com/containerd/console/tc_darwin.go b/vendor/github.com/containerd/console/tc_darwin.go
new file mode 100644
index 000000000000..b102bad743a0
--- /dev/null
+++ b/vendor/github.com/containerd/console/tc_darwin.go
@@ -0,0 +1,37 @@
+package console
+
+import (
+ "fmt"
+ "os"
+ "unsafe"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ cmdTcGet = unix.TIOCGETA
+ cmdTcSet = unix.TIOCSETA
+)
+
+func ioctl(fd, flag, data uintptr) error {
+ if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, flag, data); err != 0 {
+ return err
+ }
+ return nil
+}
+
+// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
+// unlockpt should be called before opening the slave side of a pty.
+func unlockpt(f *os.File) error {
+ var u int32
+ return ioctl(f.Fd(), unix.TIOCPTYUNLK, uintptr(unsafe.Pointer(&u)))
+}
+
+// ptsname retrieves the name of the first available pts for the given master.
+func ptsname(f *os.File) (string, error) {
+ n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCPTYGNAME)
+ if err != nil {
+ return "", err
+ }
+ return fmt.Sprintf("/dev/pts/%d", n), nil
+}
diff --git a/vendor/github.com/containerd/console/tc_freebsd.go b/vendor/github.com/containerd/console/tc_freebsd.go
new file mode 100644
index 000000000000..e2a10e4413c3
--- /dev/null
+++ b/vendor/github.com/containerd/console/tc_freebsd.go
@@ -0,0 +1,29 @@
+package console
+
+import (
+ "fmt"
+ "os"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ cmdTcGet = unix.TIOCGETA
+ cmdTcSet = unix.TIOCSETA
+)
+
+// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
+// unlockpt should be called before opening the slave side of a pty.
+// This does not exist on FreeBSD, it does not allocate controlling terminals on open
+func unlockpt(f *os.File) error {
+ return nil
+}
+
+// ptsname retrieves the name of the first available pts for the given master.
+func ptsname(f *os.File) (string, error) {
+ n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN)
+ if err != nil {
+ return "", err
+ }
+ return fmt.Sprintf("/dev/pts/%d", n), nil
+}
diff --git a/vendor/github.com/containerd/console/tc_linux.go b/vendor/github.com/containerd/console/tc_linux.go
new file mode 100644
index 000000000000..80ef2f6fb39f
--- /dev/null
+++ b/vendor/github.com/containerd/console/tc_linux.go
@@ -0,0 +1,37 @@
+package console
+
+import (
+ "fmt"
+ "os"
+ "unsafe"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ cmdTcGet = unix.TCGETS
+ cmdTcSet = unix.TCSETS
+)
+
+func ioctl(fd, flag, data uintptr) error {
+ if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, flag, data); err != 0 {
+ return err
+ }
+ return nil
+}
+
+// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
+// unlockpt should be called before opening the slave side of a pty.
+func unlockpt(f *os.File) error {
+ var u int32
+ return ioctl(f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u)))
+}
+
+// ptsname retrieves the name of the first available pts for the given master.
+func ptsname(f *os.File) (string, error) {
+ n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN)
+ if err != nil {
+ return "", err
+ }
+ return fmt.Sprintf("/dev/pts/%d", n), nil
+}
diff --git a/vendor/github.com/containerd/console/tc_solaris_cgo.go b/vendor/github.com/containerd/console/tc_solaris_cgo.go
new file mode 100644
index 000000000000..f8066d8e3982
--- /dev/null
+++ b/vendor/github.com/containerd/console/tc_solaris_cgo.go
@@ -0,0 +1,35 @@
+// +build solaris,cgo
+
+package console
+
+import (
+ "os"
+
+ "golang.org/x/sys/unix"
+)
+
+//#include
+import "C"
+
+const (
+ cmdTcGet = unix.TCGETS
+ cmdTcSet = unix.TCSETS
+)
+
+// ptsname retrieves the name of the first available pts for the given master.
+func ptsname(f *os.File) (string, error) {
+ ptspath, err := C.ptsname(C.int(f.Fd()))
+ if err != nil {
+ return "", err
+ }
+ return C.GoString(ptspath), nil
+}
+
+// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
+// unlockpt should be called before opening the slave side of a pty.
+func unlockpt(f *os.File) error {
+ if _, err := C.grantpt(C.int(f.Fd())); err != nil {
+ return err
+ }
+ return nil
+}
diff --git a/vendor/github.com/containerd/console/tc_solaris_nocgo.go b/vendor/github.com/containerd/console/tc_solaris_nocgo.go
new file mode 100644
index 000000000000..0aefa0d2bb12
--- /dev/null
+++ b/vendor/github.com/containerd/console/tc_solaris_nocgo.go
@@ -0,0 +1,31 @@
+// +build solaris,!cgo
+
+//
+// Implementing the functions below requires cgo support. Non-cgo stubs
+// versions are defined below to enable cross-compilation of source code
+// that depends on these functions, but the resultant cross-compiled
+// binaries cannot actually be used. If the stub function(s) below are
+// actually invoked they will display an error message and cause the
+// calling process to exit.
+//
+
+package console
+
+import (
+ "os"
+
+ "golang.org/x/sys/unix"
+)
+
+const (
+ cmdTcGet = unix.TCGETS
+ cmdTcSet = unix.TCSETS
+)
+
+func ptsname(f *os.File) (string, error) {
+ panic("ptsname() support requires cgo.")
+}
+
+func unlockpt(f *os.File) error {
+ panic("unlockpt() support requires cgo.")
+}
diff --git a/vendor/github.com/containerd/console/tc_unix.go b/vendor/github.com/containerd/console/tc_unix.go
new file mode 100644
index 000000000000..df7dcb933420
--- /dev/null
+++ b/vendor/github.com/containerd/console/tc_unix.go
@@ -0,0 +1,75 @@
+// +build darwin freebsd linux solaris
+
+package console
+
+import (
+ "golang.org/x/sys/unix"
+)
+
+func tcget(fd uintptr, p *unix.Termios) error {
+ termios, err := unix.IoctlGetTermios(int(fd), cmdTcGet)
+ if err != nil {
+ return err
+ }
+ *p = *termios
+ return nil
+}
+
+func tcset(fd uintptr, p *unix.Termios) error {
+ return unix.IoctlSetTermios(int(fd), cmdTcSet, p)
+}
+
+func tcgwinsz(fd uintptr) (WinSize, error) {
+ var ws WinSize
+
+ uws, err := unix.IoctlGetWinsize(int(fd), unix.TIOCGWINSZ)
+ if err != nil {
+ return ws, err
+ }
+
+ // Translate from unix.Winsize to console.WinSize
+ ws.Height = uws.Row
+ ws.Width = uws.Col
+ ws.x = uws.Xpixel
+ ws.y = uws.Ypixel
+ return ws, nil
+}
+
+func tcswinsz(fd uintptr, ws WinSize) error {
+ // Translate from console.WinSize to unix.Winsize
+
+ var uws unix.Winsize
+ uws.Row = ws.Height
+ uws.Col = ws.Width
+ uws.Xpixel = ws.x
+ uws.Ypixel = ws.y
+
+ return unix.IoctlSetWinsize(int(fd), unix.TIOCSWINSZ, &uws)
+}
+
+func setONLCR(fd uintptr, enable bool) error {
+ var termios unix.Termios
+ if err := tcget(fd, &termios); err != nil {
+ return err
+ }
+ if enable {
+ // Set +onlcr so we can act like a real terminal
+ termios.Oflag |= unix.ONLCR
+ } else {
+ // Set -onlcr so we don't have to deal with \r.
+ termios.Oflag &^= unix.ONLCR
+ }
+ return tcset(fd, &termios)
+}
+
+func cfmakeraw(t unix.Termios) unix.Termios {
+ t.Iflag &^= (unix.IGNBRK | unix.BRKINT | unix.PARMRK | unix.ISTRIP | unix.INLCR | unix.IGNCR | unix.ICRNL | unix.IXON)
+ t.Oflag &^= unix.OPOST
+ t.Lflag &^= (unix.ECHO | unix.ECHONL | unix.ICANON | unix.ISIG | unix.IEXTEN)
+ t.Cflag &^= (unix.CSIZE | unix.PARENB)
+ t.Cflag &^= unix.CS8
+ t.Cc[unix.VMIN] = 1
+ t.Cc[unix.VTIME] = 0
+
+ return t
+}
diff --git a/vendor/github.com/coreos/etcd/auth/authpb/auth.pb.go b/vendor/github.com/coreos/etcd/auth/authpb/auth.pb.go
index c6e2a12a7faa..009ebda70ca5 100644
--- a/vendor/github.com/coreos/etcd/auth/authpb/auth.pb.go
+++ b/vendor/github.com/coreos/etcd/auth/authpb/auth.pb.go
@@ -803,7 +803,7 @@ func init() { proto.RegisterFile("auth.proto", fileDescriptorAuth) }
var fileDescriptorAuth = []byte{
// 288 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x90, 0xc1, 0x4a, 0xc3, 0x30,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0xc1, 0x4a, 0xc3, 0x30,
0x1c, 0xc6, 0x9b, 0xb6, 0x1b, 0xed, 0x5f, 0x27, 0x25, 0x0c, 0x0c, 0x13, 0x42, 0xe9, 0xa9, 0x78,
0xa8, 0xb0, 0x5d, 0xbc, 0x2a, 0xf6, 0x20, 0x78, 0x90, 0x50, 0xf1, 0x28, 0x1d, 0x0d, 0x75, 0x6c,
0x6d, 0x4a, 0x32, 0x91, 0xbe, 0x89, 0x07, 0x1f, 0x68, 0xc7, 0x3d, 0x82, 0xab, 0x2f, 0x22, 0x4d,
diff --git a/vendor/github.com/coreos/etcd/auth/jwt.go b/vendor/github.com/coreos/etcd/auth/jwt.go
new file mode 100644
index 000000000000..214ae48c83a9
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/auth/jwt.go
@@ -0,0 +1,137 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 auth
+
+import (
+ "crypto/rsa"
+ "io/ioutil"
+
+ jwt "github.com/dgrijalva/jwt-go"
+ "golang.org/x/net/context"
+)
+
+type tokenJWT struct {
+ signMethod string
+ signKey *rsa.PrivateKey
+ verifyKey *rsa.PublicKey
+}
+
+func (t *tokenJWT) enable() {}
+func (t *tokenJWT) disable() {}
+func (t *tokenJWT) invalidateUser(string) {}
+func (t *tokenJWT) genTokenPrefix() (string, error) { return "", nil }
+
+func (t *tokenJWT) info(ctx context.Context, token string, rev uint64) (*AuthInfo, bool) {
+ // rev isn't used in JWT, it is only used in simple token
+ var (
+ username string
+ revision uint64
+ )
+
+ parsed, err := jwt.Parse(token, func(token *jwt.Token) (interface{}, error) {
+ return t.verifyKey, nil
+ })
+
+ switch err.(type) {
+ case nil:
+ if !parsed.Valid {
+ plog.Warningf("invalid jwt token: %s", token)
+ return nil, false
+ }
+
+ claims := parsed.Claims.(jwt.MapClaims)
+
+ username = claims["username"].(string)
+ revision = uint64(claims["revision"].(float64))
+ default:
+ plog.Warningf("failed to parse jwt token: %s", err)
+ return nil, false
+ }
+
+ return &AuthInfo{Username: username, Revision: revision}, true
+}
+
+func (t *tokenJWT) assign(ctx context.Context, username string, revision uint64) (string, error) {
+ // Future work: let a jwt token include permission information would be useful for
+ // permission checking in proxy side.
+ tk := jwt.NewWithClaims(jwt.GetSigningMethod(t.signMethod),
+ jwt.MapClaims{
+ "username": username,
+ "revision": revision,
+ })
+
+ token, err := tk.SignedString(t.signKey)
+ if err != nil {
+ plog.Debugf("failed to sign jwt token: %s", err)
+ return "", err
+ }
+
+ plog.Debugf("jwt token: %s", token)
+
+ return token, err
+}
+
+func prepareOpts(opts map[string]string) (jwtSignMethod, jwtPubKeyPath, jwtPrivKeyPath string, err error) {
+ for k, v := range opts {
+ switch k {
+ case "sign-method":
+ jwtSignMethod = v
+ case "pub-key":
+ jwtPubKeyPath = v
+ case "priv-key":
+ jwtPrivKeyPath = v
+ default:
+ plog.Errorf("unknown token specific option: %s", k)
+ return "", "", "", ErrInvalidAuthOpts
+ }
+ }
+
+ return jwtSignMethod, jwtPubKeyPath, jwtPrivKeyPath, nil
+}
+
+func newTokenProviderJWT(opts map[string]string) (*tokenJWT, error) {
+ jwtSignMethod, jwtPubKeyPath, jwtPrivKeyPath, err := prepareOpts(opts)
+ if err != nil {
+ return nil, ErrInvalidAuthOpts
+ }
+
+ t := &tokenJWT{}
+
+ t.signMethod = jwtSignMethod
+
+ verifyBytes, err := ioutil.ReadFile(jwtPubKeyPath)
+ if err != nil {
+ plog.Errorf("failed to read public key (%s) for jwt: %s", jwtPubKeyPath, err)
+ return nil, err
+ }
+ t.verifyKey, err = jwt.ParseRSAPublicKeyFromPEM(verifyBytes)
+ if err != nil {
+ plog.Errorf("failed to parse public key (%s): %s", jwtPubKeyPath, err)
+ return nil, err
+ }
+
+ signBytes, err := ioutil.ReadFile(jwtPrivKeyPath)
+ if err != nil {
+ plog.Errorf("failed to read private key (%s) for jwt: %s", jwtPrivKeyPath, err)
+ return nil, err
+ }
+ t.signKey, err = jwt.ParseRSAPrivateKeyFromPEM(signBytes)
+ if err != nil {
+ plog.Errorf("failed to parse private key (%s): %s", jwtPrivKeyPath, err)
+ return nil, err
+ }
+
+ return t, nil
+}
diff --git a/vendor/github.com/coreos/etcd/auth/range_perm_cache.go b/vendor/github.com/coreos/etcd/auth/range_perm_cache.go
index 3cd1ad2a4117..691b65ba38e7 100644
--- a/vendor/github.com/coreos/etcd/auth/range_perm_cache.go
+++ b/vendor/github.com/coreos/etcd/auth/range_perm_cache.go
@@ -15,93 +15,11 @@
package auth
import (
- "bytes"
- "sort"
-
"github.com/coreos/etcd/auth/authpb"
"github.com/coreos/etcd/mvcc/backend"
+ "github.com/coreos/etcd/pkg/adt"
)
-// isSubset returns true if a is a subset of b.
-// If a is a prefix of b, then a is a subset of b.
-// Given intervals [a1,a2) and [b1,b2), is
-// the a interval a subset of b?
-func isSubset(a, b *rangePerm) bool {
- switch {
- case len(a.end) == 0 && len(b.end) == 0:
- // a, b are both keys
- return bytes.Equal(a.begin, b.begin)
- case len(b.end) == 0:
- // b is a key, a is a range
- return false
- case len(a.end) == 0:
- // a is a key, b is a range. need b1 <= a1 and a1 < b2
- return bytes.Compare(b.begin, a.begin) <= 0 && bytes.Compare(a.begin, b.end) < 0
- default:
- // both are ranges. need b1 <= a1 and a2 <= b2
- return bytes.Compare(b.begin, a.begin) <= 0 && bytes.Compare(a.end, b.end) <= 0
- }
-}
-
-func isRangeEqual(a, b *rangePerm) bool {
- return bytes.Equal(a.begin, b.begin) && bytes.Equal(a.end, b.end)
-}
-
-// removeSubsetRangePerms removes any rangePerms that are subsets of other rangePerms.
-// If there are equal ranges, removeSubsetRangePerms only keeps one of them.
-// It returns a sorted rangePerm slice.
-func removeSubsetRangePerms(perms []*rangePerm) (newp []*rangePerm) {
- sort.Sort(RangePermSliceByBegin(perms))
- var prev *rangePerm
- for i := range perms {
- if i == 0 {
- prev = perms[i]
- newp = append(newp, perms[i])
- continue
- }
- if isRangeEqual(perms[i], prev) {
- continue
- }
- if isSubset(perms[i], prev) {
- continue
- }
- if isSubset(prev, perms[i]) {
- prev = perms[i]
- newp[len(newp)-1] = perms[i]
- continue
- }
- prev = perms[i]
- newp = append(newp, perms[i])
- }
- return newp
-}
-
-// mergeRangePerms merges adjacent rangePerms.
-func mergeRangePerms(perms []*rangePerm) []*rangePerm {
- var merged []*rangePerm
- perms = removeSubsetRangePerms(perms)
-
- i := 0
- for i < len(perms) {
- begin, next := i, i
- for next+1 < len(perms) && bytes.Compare(perms[next].end, perms[next+1].begin) >= 0 {
- next++
- }
- // don't merge ["a", "b") with ["b", ""), because perms[next+1].end is empty.
- if next != begin && len(perms[next].end) > 0 {
- merged = append(merged, &rangePerm{begin: perms[begin].begin, end: perms[next].end})
- } else {
- merged = append(merged, perms[begin])
- if next != begin {
- merged = append(merged, perms[next])
- }
- }
- i = next + 1
- }
-
- return merged
-}
-
func getMergedPerms(tx backend.BatchTx, userName string) *unifiedRangePermissions {
user := getUser(tx, userName)
if user == nil {
@@ -109,7 +27,8 @@ func getMergedPerms(tx backend.BatchTx, userName string) *unifiedRangePermission
return nil
}
- var readPerms, writePerms []*rangePerm
+ readPerms := &adt.IntervalTree{}
+ writePerms := &adt.IntervalTree{}
for _, roleName := range user.Roles {
role := getRole(tx, roleName)
@@ -118,48 +37,66 @@ func getMergedPerms(tx backend.BatchTx, userName string) *unifiedRangePermission
}
for _, perm := range role.KeyPermission {
- rp := &rangePerm{begin: perm.Key, end: perm.RangeEnd}
+ var ivl adt.Interval
+ var rangeEnd []byte
+
+ if len(perm.RangeEnd) != 1 || perm.RangeEnd[0] != 0 {
+ rangeEnd = perm.RangeEnd
+ }
+
+ if len(perm.RangeEnd) != 0 {
+ ivl = adt.NewBytesAffineInterval(perm.Key, rangeEnd)
+ } else {
+ ivl = adt.NewBytesAffinePoint(perm.Key)
+ }
switch perm.PermType {
case authpb.READWRITE:
- readPerms = append(readPerms, rp)
- writePerms = append(writePerms, rp)
+ readPerms.Insert(ivl, struct{}{})
+ writePerms.Insert(ivl, struct{}{})
case authpb.READ:
- readPerms = append(readPerms, rp)
+ readPerms.Insert(ivl, struct{}{})
case authpb.WRITE:
- writePerms = append(writePerms, rp)
+ writePerms.Insert(ivl, struct{}{})
}
}
}
return &unifiedRangePermissions{
- readPerms: mergeRangePerms(readPerms),
- writePerms: mergeRangePerms(writePerms),
+ readPerms: readPerms,
+ writePerms: writePerms,
}
}
-func checkKeyPerm(cachedPerms *unifiedRangePermissions, key, rangeEnd []byte, permtyp authpb.Permission_Type) bool {
- var tocheck []*rangePerm
+func checkKeyInterval(cachedPerms *unifiedRangePermissions, key, rangeEnd []byte, permtyp authpb.Permission_Type) bool {
+ if len(rangeEnd) == 1 && rangeEnd[0] == 0 {
+ rangeEnd = nil
+ }
+ ivl := adt.NewBytesAffineInterval(key, rangeEnd)
switch permtyp {
case authpb.READ:
- tocheck = cachedPerms.readPerms
+ return cachedPerms.readPerms.Contains(ivl)
case authpb.WRITE:
- tocheck = cachedPerms.writePerms
+ return cachedPerms.writePerms.Contains(ivl)
default:
plog.Panicf("unknown auth type: %v", permtyp)
}
+ return false
+}
- requiredPerm := &rangePerm{begin: key, end: rangeEnd}
-
- for _, perm := range tocheck {
- if isSubset(requiredPerm, perm) {
- return true
- }
+func checkKeyPoint(cachedPerms *unifiedRangePermissions, key []byte, permtyp authpb.Permission_Type) bool {
+ pt := adt.NewBytesAffinePoint(key)
+ switch permtyp {
+ case authpb.READ:
+ return cachedPerms.readPerms.Intersects(pt)
+ case authpb.WRITE:
+ return cachedPerms.writePerms.Intersects(pt)
+ default:
+ plog.Panicf("unknown auth type: %v", permtyp)
}
-
return false
}
@@ -175,7 +112,11 @@ func (as *authStore) isRangeOpPermitted(tx backend.BatchTx, userName string, key
as.rangePermCache[userName] = perms
}
- return checkKeyPerm(as.rangePermCache[userName], key, rangeEnd, permtyp)
+ if len(rangeEnd) == 0 {
+ return checkKeyPoint(as.rangePermCache[userName], key, permtyp)
+ }
+
+ return checkKeyInterval(as.rangePermCache[userName], key, rangeEnd, permtyp)
}
func (as *authStore) clearCachedPerm() {
@@ -187,35 +128,6 @@ func (as *authStore) invalidateCachedPerm(userName string) {
}
type unifiedRangePermissions struct {
- // readPerms[i] and readPerms[j] (i != j) don't overlap
- readPerms []*rangePerm
- // writePerms[i] and writePerms[j] (i != j) don't overlap, too
- writePerms []*rangePerm
-}
-
-type rangePerm struct {
- begin, end []byte
-}
-
-type RangePermSliceByBegin []*rangePerm
-
-func (slice RangePermSliceByBegin) Len() int {
- return len(slice)
-}
-
-func (slice RangePermSliceByBegin) Less(i, j int) bool {
- switch bytes.Compare(slice[i].begin, slice[j].begin) {
- case 0: // begin(i) == begin(j)
- return bytes.Compare(slice[i].end, slice[j].end) == -1
-
- case -1: // begin(i) < begin(j)
- return true
-
- default:
- return false
- }
-}
-
-func (slice RangePermSliceByBegin) Swap(i, j int) {
- slice[i], slice[j] = slice[j], slice[i]
+ readPerms *adt.IntervalTree
+ writePerms *adt.IntervalTree
}
diff --git a/vendor/github.com/coreos/etcd/auth/simple_token.go b/vendor/github.com/coreos/etcd/auth/simple_token.go
index a39f3927685e..94d92a115e24 100644
--- a/vendor/github.com/coreos/etcd/auth/simple_token.go
+++ b/vendor/github.com/coreos/etcd/auth/simple_token.go
@@ -19,10 +19,14 @@ package auth
import (
"crypto/rand"
+ "fmt"
"math/big"
+ "strconv"
"strings"
"sync"
"time"
+
+ "golang.org/x/net/context"
)
const (
@@ -90,24 +94,14 @@ func (tm *simpleTokenTTLKeeper) run() {
}
}
-func (as *authStore) enable() {
- delf := func(tk string) {
- if username, ok := as.simpleTokens[tk]; ok {
- plog.Infof("deleting token %s for user %s", tk, username)
- delete(as.simpleTokens, tk)
- }
- }
- as.simpleTokenKeeper = &simpleTokenTTLKeeper{
- tokens: make(map[string]time.Time),
- donec: make(chan struct{}),
- stopc: make(chan struct{}),
- deleteTokenFunc: delf,
- mu: &as.simpleTokensMu,
- }
- go as.simpleTokenKeeper.run()
+type tokenSimple struct {
+ indexWaiter func(uint64) <-chan struct{}
+ simpleTokenKeeper *simpleTokenTTLKeeper
+ simpleTokensMu sync.Mutex
+ simpleTokens map[string]string // token -> username
}
-func (as *authStore) GenSimpleToken() (string, error) {
+func (t *tokenSimple) genTokenPrefix() (string, error) {
ret := make([]byte, defaultSimpleTokenLength)
for i := 0; i < defaultSimpleTokenLength; i++ {
@@ -122,28 +116,105 @@ func (as *authStore) GenSimpleToken() (string, error) {
return string(ret), nil
}
-func (as *authStore) assignSimpleTokenToUser(username, token string) {
- as.simpleTokensMu.Lock()
- _, ok := as.simpleTokens[token]
+func (t *tokenSimple) assignSimpleTokenToUser(username, token string) {
+ t.simpleTokensMu.Lock()
+ _, ok := t.simpleTokens[token]
if ok {
plog.Panicf("token %s is alredy used", token)
}
- as.simpleTokens[token] = username
- as.simpleTokenKeeper.addSimpleToken(token)
- as.simpleTokensMu.Unlock()
+ t.simpleTokens[token] = username
+ t.simpleTokenKeeper.addSimpleToken(token)
+ t.simpleTokensMu.Unlock()
}
-func (as *authStore) invalidateUser(username string) {
- if as.simpleTokenKeeper == nil {
+func (t *tokenSimple) invalidateUser(username string) {
+ if t.simpleTokenKeeper == nil {
return
}
- as.simpleTokensMu.Lock()
- for token, name := range as.simpleTokens {
+ t.simpleTokensMu.Lock()
+ for token, name := range t.simpleTokens {
if strings.Compare(name, username) == 0 {
- delete(as.simpleTokens, token)
- as.simpleTokenKeeper.deleteSimpleToken(token)
+ delete(t.simpleTokens, token)
+ t.simpleTokenKeeper.deleteSimpleToken(token)
}
}
- as.simpleTokensMu.Unlock()
+ t.simpleTokensMu.Unlock()
+}
+
+func (t *tokenSimple) enable() {
+ delf := func(tk string) {
+ if username, ok := t.simpleTokens[tk]; ok {
+ plog.Infof("deleting token %s for user %s", tk, username)
+ delete(t.simpleTokens, tk)
+ }
+ }
+ t.simpleTokenKeeper = &simpleTokenTTLKeeper{
+ tokens: make(map[string]time.Time),
+ donec: make(chan struct{}),
+ stopc: make(chan struct{}),
+ deleteTokenFunc: delf,
+ mu: &t.simpleTokensMu,
+ }
+ go t.simpleTokenKeeper.run()
+}
+
+func (t *tokenSimple) disable() {
+ t.simpleTokensMu.Lock()
+ tk := t.simpleTokenKeeper
+ t.simpleTokenKeeper = nil
+ t.simpleTokens = make(map[string]string) // invalidate all tokens
+ t.simpleTokensMu.Unlock()
+ if tk != nil {
+ tk.stop()
+ }
+}
+
+func (t *tokenSimple) info(ctx context.Context, token string, revision uint64) (*AuthInfo, bool) {
+ if !t.isValidSimpleToken(ctx, token) {
+ return nil, false
+ }
+ t.simpleTokensMu.Lock()
+ username, ok := t.simpleTokens[token]
+ if ok && t.simpleTokenKeeper != nil {
+ t.simpleTokenKeeper.resetSimpleToken(token)
+ }
+ t.simpleTokensMu.Unlock()
+ return &AuthInfo{Username: username, Revision: revision}, ok
+}
+
+func (t *tokenSimple) assign(ctx context.Context, username string, rev uint64) (string, error) {
+ // rev isn't used in simple token, it is only used in JWT
+ index := ctx.Value("index").(uint64)
+ simpleToken := ctx.Value("simpleToken").(string)
+ token := fmt.Sprintf("%s.%d", simpleToken, index)
+ t.assignSimpleTokenToUser(username, token)
+
+ return token, nil
+}
+
+func (t *tokenSimple) isValidSimpleToken(ctx context.Context, token string) bool {
+ splitted := strings.Split(token, ".")
+ if len(splitted) != 2 {
+ return false
+ }
+ index, err := strconv.Atoi(splitted[1])
+ if err != nil {
+ return false
+ }
+
+ select {
+ case <-t.indexWaiter(uint64(index)):
+ return true
+ case <-ctx.Done():
+ }
+
+ return false
+}
+
+func newTokenProviderSimple(indexWaiter func(uint64) <-chan struct{}) *tokenSimple {
+ return &tokenSimple{
+ simpleTokens: make(map[string]string),
+ indexWaiter: indexWaiter,
+ }
}
diff --git a/vendor/github.com/coreos/etcd/auth/store.go b/vendor/github.com/coreos/etcd/auth/store.go
index 236bb2c529d4..3fac7f5a6fd7 100644
--- a/vendor/github.com/coreos/etcd/auth/store.go
+++ b/vendor/github.com/coreos/etcd/auth/store.go
@@ -18,11 +18,10 @@ import (
"bytes"
"encoding/binary"
"errors"
- "fmt"
"sort"
- "strconv"
"strings"
"sync"
+ "sync/atomic"
"github.com/coreos/etcd/auth/authpb"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
@@ -30,7 +29,9 @@ import (
"github.com/coreos/pkg/capnslog"
"golang.org/x/crypto/bcrypt"
"golang.org/x/net/context"
+ "google.golang.org/grpc/credentials"
"google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/peer"
)
var (
@@ -60,6 +61,8 @@ var (
ErrAuthNotEnabled = errors.New("auth: authentication is not enabled")
ErrAuthOldRevision = errors.New("auth: revision in header is old")
ErrInvalidAuthToken = errors.New("auth: invalid auth token")
+ ErrInvalidAuthOpts = errors.New("auth: invalid auth options")
+ ErrInvalidAuthMgmt = errors.New("auth: invalid auth management")
// BcryptCost is the algorithm cost / strength for hashing auth passwords
BcryptCost = bcrypt.DefaultCost
@@ -129,10 +132,6 @@ type AuthStore interface {
// RoleList gets a list of all roles
RoleList(r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error)
- // AuthInfoFromToken gets a username from the given Token and current revision number
- // (The revision number is used for preventing the TOCTOU problem)
- AuthInfoFromToken(token string) (*AuthInfo, bool)
-
// IsPutPermitted checks put permission of the user
IsPutPermitted(authInfo *AuthInfo, key []byte) error
@@ -145,8 +144,9 @@ type AuthStore interface {
// IsAdminPermitted checks admin permission of the user
IsAdminPermitted(authInfo *AuthInfo) error
- // GenSimpleToken produces a simple random string
- GenSimpleToken() (string, error)
+ // GenTokenPrefix produces a random string in a case of simple token
+ // in a case of JWT, it produces an empty string
+ GenTokenPrefix() (string, error)
// Revision gets current revision of authStore
Revision() uint64
@@ -159,33 +159,32 @@ type AuthStore interface {
// AuthInfoFromCtx gets AuthInfo from gRPC's context
AuthInfoFromCtx(ctx context.Context) (*AuthInfo, error)
+
+ // AuthInfoFromTLS gets AuthInfo from TLS info of gRPC's context
+ AuthInfoFromTLS(ctx context.Context) *AuthInfo
+}
+
+type TokenProvider interface {
+ info(ctx context.Context, token string, revision uint64) (*AuthInfo, bool)
+ assign(ctx context.Context, username string, revision uint64) (string, error)
+ enable()
+ disable()
+
+ invalidateUser(string)
+ genTokenPrefix() (string, error)
}
type authStore struct {
+ // atomic operations; need 64-bit align, or 32-bit tests will crash
+ revision uint64
+
be backend.Backend
enabled bool
enabledMu sync.RWMutex
rangePermCache map[string]*unifiedRangePermissions // username -> unifiedRangePermissions
- revision uint64
-
- // tokenSimple in v3.2+
- indexWaiter func(uint64) <-chan struct{}
- simpleTokenKeeper *simpleTokenTTLKeeper
- simpleTokensMu sync.Mutex
- simpleTokens map[string]string // token -> username
-}
-
-func newDeleterFunc(as *authStore) func(string) {
- return func(t string) {
- as.simpleTokensMu.Lock()
- defer as.simpleTokensMu.Unlock()
- if username, ok := as.simpleTokens[t]; ok {
- plog.Infof("deleting token %s for user %s", t, username)
- delete(as.simpleTokens, t)
- }
- }
+ tokenProvider TokenProvider
}
func (as *authStore) AuthEnable() error {
@@ -215,11 +214,11 @@ func (as *authStore) AuthEnable() error {
tx.UnsafePut(authBucketName, enableFlagKey, authEnabled)
as.enabled = true
- as.enable()
+ as.tokenProvider.enable()
as.rangePermCache = make(map[string]*unifiedRangePermissions)
- as.revision = getRevision(tx)
+ as.setRevision(getRevision(tx))
plog.Noticef("Authentication enabled")
@@ -241,15 +240,7 @@ func (as *authStore) AuthDisable() {
b.ForceCommit()
as.enabled = false
-
- as.simpleTokensMu.Lock()
- tk := as.simpleTokenKeeper
- as.simpleTokenKeeper = nil
- as.simpleTokens = make(map[string]string) // invalidate all tokens
- as.simpleTokensMu.Unlock()
- if tk != nil {
- tk.stop()
- }
+ as.tokenProvider.disable()
plog.Noticef("Authentication disabled")
}
@@ -260,10 +251,7 @@ func (as *authStore) Close() error {
if !as.enabled {
return nil
}
- if as.simpleTokenKeeper != nil {
- as.simpleTokenKeeper.stop()
- as.simpleTokenKeeper = nil
- }
+ as.tokenProvider.disable()
return nil
}
@@ -272,10 +260,6 @@ func (as *authStore) Authenticate(ctx context.Context, username, password string
return nil, ErrAuthNotEnabled
}
- // TODO(mitake): after adding jwt support, branching based on values of ctx is required
- index := ctx.Value("index").(uint64)
- simpleToken := ctx.Value("simpleToken").(string)
-
tx := as.be.BatchTx()
tx.Lock()
defer tx.Unlock()
@@ -285,14 +269,23 @@ func (as *authStore) Authenticate(ctx context.Context, username, password string
return nil, ErrAuthFailed
}
- token := fmt.Sprintf("%s.%d", simpleToken, index)
- as.assignSimpleTokenToUser(username, token)
+ // Password checking is already performed in the API layer, so we don't need to check for now.
+ // Staleness of password can be detected with OCC in the API layer, too.
+
+ token, err := as.tokenProvider.assign(ctx, username, as.Revision())
+ if err != nil {
+ return nil, err
+ }
- plog.Infof("authorized %s, token is %s", username, token)
+ plog.Debugf("authorized %s, token is %s", username, token)
return &pb.AuthenticateResponse{Token: token}, nil
}
func (as *authStore) CheckPassword(username, password string) (uint64, error) {
+ if !as.isAuthEnabled() {
+ return 0, ErrAuthNotEnabled
+ }
+
tx := as.be.BatchTx()
tx.Lock()
defer tx.Unlock()
@@ -322,7 +315,7 @@ func (as *authStore) Recover(be backend.Backend) {
}
}
- as.revision = getRevision(tx)
+ as.setRevision(getRevision(tx))
tx.Unlock()
@@ -366,6 +359,11 @@ func (as *authStore) UserAdd(r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse,
}
func (as *authStore) UserDelete(r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) {
+ if as.enabled && strings.Compare(r.Name, rootUser) == 0 {
+ plog.Errorf("the user root must not be deleted")
+ return nil, ErrInvalidAuthMgmt
+ }
+
tx := as.be.BatchTx()
tx.Lock()
defer tx.Unlock()
@@ -380,7 +378,7 @@ func (as *authStore) UserDelete(r *pb.AuthUserDeleteRequest) (*pb.AuthUserDelete
as.commitRevision(tx)
as.invalidateCachedPerm(r.Name)
- as.invalidateUser(r.Name)
+ as.tokenProvider.invalidateUser(r.Name)
plog.Noticef("deleted a user: %s", r.Name)
@@ -416,7 +414,7 @@ func (as *authStore) UserChangePassword(r *pb.AuthUserChangePasswordRequest) (*p
as.commitRevision(tx)
as.invalidateCachedPerm(r.Name)
- as.invalidateUser(r.Name)
+ as.tokenProvider.invalidateUser(r.Name)
plog.Noticef("changed a password of a user: %s", r.Name)
@@ -491,6 +489,11 @@ func (as *authStore) UserList(r *pb.AuthUserListRequest) (*pb.AuthUserListRespon
}
func (as *authStore) UserRevokeRole(r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) {
+ if as.enabled && strings.Compare(r.Name, rootUser) == 0 && strings.Compare(r.Role, rootRole) == 0 {
+ plog.Errorf("the role root must not be revoked from the user root")
+ return nil, ErrInvalidAuthMgmt
+ }
+
tx := as.be.BatchTx()
tx.Lock()
defer tx.Unlock()
@@ -593,17 +596,10 @@ func (as *authStore) RoleRevokePermission(r *pb.AuthRoleRevokePermissionRequest)
}
func (as *authStore) RoleDelete(r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) {
- // TODO(mitake): current scheme of role deletion allows existing users to have the deleted roles
- //
- // Assume a case like below:
- // create a role r1
- // create a user u1 and grant r1 to u1
- // delete r1
- //
- // After this sequence, u1 is still granted the role r1. So if admin create a new role with the name r1,
- // the new r1 is automatically granted u1.
- // In some cases, it would be confusing. So we need to provide an option for deleting the grant relation
- // from all users.
+ if as.enabled && strings.Compare(r.Role, rootRole) == 0 {
+ plog.Errorf("the role root must not be deleted")
+ return nil, ErrInvalidAuthMgmt
+ }
tx := as.be.BatchTx()
tx.Lock()
@@ -616,6 +612,28 @@ func (as *authStore) RoleDelete(r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDelete
delRole(tx, r.Role)
+ users := getAllUsers(tx)
+ for _, user := range users {
+ updatedUser := &authpb.User{
+ Name: user.Name,
+ Password: user.Password,
+ }
+
+ for _, role := range user.Roles {
+ if strings.Compare(role, r.Role) != 0 {
+ updatedUser.Roles = append(updatedUser.Roles, role)
+ }
+ }
+
+ if len(updatedUser.Roles) == len(user.Roles) {
+ continue
+ }
+
+ putUser(tx, updatedUser)
+
+ as.invalidateCachedPerm(string(user.Name))
+ }
+
as.commitRevision(tx)
plog.Noticef("deleted role %s", r.Role)
@@ -645,15 +663,8 @@ func (as *authStore) RoleAdd(r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse,
return &pb.AuthRoleAddResponse{}, nil
}
-func (as *authStore) AuthInfoFromToken(token string) (*AuthInfo, bool) {
- // same as '(t *tokenSimple) info' in v3.2+
- as.simpleTokensMu.Lock()
- username, ok := as.simpleTokens[token]
- if ok && as.simpleTokenKeeper != nil {
- as.simpleTokenKeeper.resetSimpleToken(token)
- }
- as.simpleTokensMu.Unlock()
- return &AuthInfo{Username: username, Revision: as.revision}, ok
+func (as *authStore) authInfoFromToken(ctx context.Context, token string) (*AuthInfo, bool) {
+ return as.tokenProvider.info(ctx, token, as.Revision())
}
type permSlice []*authpb.Permission
@@ -723,7 +734,7 @@ func (as *authStore) isOpPermitted(userName string, revision uint64, key, rangeE
return ErrUserEmpty
}
- if revision < as.revision {
+ if revision < as.Revision() {
return ErrAuthOldRevision
}
@@ -886,7 +897,7 @@ func (as *authStore) isAuthEnabled() bool {
return as.enabled
}
-func NewAuthStore(be backend.Backend, indexWaiter func(uint64) <-chan struct{}) *authStore {
+func NewAuthStore(be backend.Backend, tp TokenProvider) *authStore {
tx := be.BatchTx()
tx.Lock()
@@ -904,18 +915,17 @@ func NewAuthStore(be backend.Backend, indexWaiter func(uint64) <-chan struct{})
as := &authStore{
be: be,
- simpleTokens: make(map[string]string),
revision: getRevision(tx),
- indexWaiter: indexWaiter,
enabled: enabled,
rangePermCache: make(map[string]*unifiedRangePermissions),
+ tokenProvider: tp,
}
if enabled {
- as.enable()
+ as.tokenProvider.enable()
}
- if as.revision == 0 {
+ if as.Revision() == 0 {
as.commitRevision(tx)
}
@@ -935,9 +945,9 @@ func hasRootRole(u *authpb.User) bool {
}
func (as *authStore) commitRevision(tx backend.BatchTx) {
- as.revision++
+ atomic.AddUint64(&as.revision, 1)
revBytes := make([]byte, revBytesLen)
- binary.BigEndian.PutUint64(revBytes, as.revision)
+ binary.BigEndian.PutUint64(revBytes, as.Revision())
tx.UnsafePut(authBucketName, revisionKey, revBytes)
}
@@ -951,31 +961,38 @@ func getRevision(tx backend.BatchTx) uint64 {
return binary.BigEndian.Uint64(vs[0])
}
+func (as *authStore) setRevision(rev uint64) {
+ atomic.StoreUint64(&as.revision, rev)
+}
+
func (as *authStore) Revision() uint64 {
- return as.revision
+ return atomic.LoadUint64(&as.revision)
}
-func (as *authStore) isValidSimpleToken(token string, ctx context.Context) bool {
- splitted := strings.Split(token, ".")
- if len(splitted) != 2 {
- return false
- }
- index, err := strconv.Atoi(splitted[1])
- if err != nil {
- return false
+func (as *authStore) AuthInfoFromTLS(ctx context.Context) *AuthInfo {
+ peer, ok := peer.FromContext(ctx)
+ if !ok || peer == nil || peer.AuthInfo == nil {
+ return nil
}
- select {
- case <-as.indexWaiter(uint64(index)):
- return true
- case <-ctx.Done():
+ tlsInfo := peer.AuthInfo.(credentials.TLSInfo)
+ for _, chains := range tlsInfo.State.VerifiedChains {
+ for _, chain := range chains {
+ cn := chain.Subject.CommonName
+ plog.Debugf("found common name %s", cn)
+
+ return &AuthInfo{
+ Username: cn,
+ Revision: as.Revision(),
+ }
+ }
}
- return false
+ return nil
}
func (as *authStore) AuthInfoFromCtx(ctx context.Context) (*AuthInfo, error) {
- md, ok := metadata.FromContext(ctx)
+ md, ok := metadata.FromIncomingContext(ctx)
if !ok {
return nil, nil
}
@@ -986,14 +1003,57 @@ func (as *authStore) AuthInfoFromCtx(ctx context.Context) (*AuthInfo, error) {
}
token := ts[0]
- if !as.isValidSimpleToken(token, ctx) {
- return nil, ErrInvalidAuthToken
- }
-
- authInfo, uok := as.AuthInfoFromToken(token)
+ authInfo, uok := as.authInfoFromToken(ctx, token)
if !uok {
plog.Warningf("invalid auth token: %s", token)
return nil, ErrInvalidAuthToken
}
return authInfo, nil
}
+
+func (as *authStore) GenTokenPrefix() (string, error) {
+ return as.tokenProvider.genTokenPrefix()
+}
+
+func decomposeOpts(optstr string) (string, map[string]string, error) {
+ opts := strings.Split(optstr, ",")
+ tokenType := opts[0]
+
+ typeSpecificOpts := make(map[string]string)
+ for i := 1; i < len(opts); i++ {
+ pair := strings.Split(opts[i], "=")
+
+ if len(pair) != 2 {
+ plog.Errorf("invalid token specific option: %s", optstr)
+ return "", nil, ErrInvalidAuthOpts
+ }
+
+ if _, ok := typeSpecificOpts[pair[0]]; ok {
+ plog.Errorf("invalid token specific option, duplicated parameters (%s): %s", pair[0], optstr)
+ return "", nil, ErrInvalidAuthOpts
+ }
+
+ typeSpecificOpts[pair[0]] = pair[1]
+ }
+
+ return tokenType, typeSpecificOpts, nil
+
+}
+
+func NewTokenProvider(tokenOpts string, indexWaiter func(uint64) <-chan struct{}) (TokenProvider, error) {
+ tokenType, typeSpecificOpts, err := decomposeOpts(tokenOpts)
+ if err != nil {
+ return nil, ErrInvalidAuthOpts
+ }
+
+ switch tokenType {
+ case "simple":
+ plog.Warningf("simple token is not cryptographically signed")
+ return newTokenProviderSimple(indexWaiter), nil
+ case "jwt":
+ return newTokenProviderJWT(typeSpecificOpts)
+ default:
+ plog.Errorf("unknown token type: %s", tokenType)
+ return nil, ErrInvalidAuthOpts
+ }
+}
diff --git a/vendor/github.com/coreos/etcd/client/client.go b/vendor/github.com/coreos/etcd/client/client.go
index f9131b4725c1..19ce2ec01dad 100644
--- a/vendor/github.com/coreos/etcd/client/client.go
+++ b/vendor/github.com/coreos/etcd/client/client.go
@@ -15,6 +15,7 @@
package client
import (
+ "encoding/json"
"errors"
"fmt"
"io/ioutil"
@@ -27,6 +28,8 @@ import (
"sync"
"time"
+ "github.com/coreos/etcd/version"
+
"golang.org/x/net/context"
)
@@ -201,6 +204,9 @@ type Client interface {
// returned
SetEndpoints(eps []string) error
+ // GetVersion retrieves the current etcd server and cluster version
+ GetVersion(ctx context.Context) (*version.Versions, error)
+
httpClient
}
@@ -366,12 +372,7 @@ func (c *httpClusterClient) Do(ctx context.Context, act httpAction) (*http.Respo
if err == context.Canceled || err == context.DeadlineExceeded {
return nil, nil, err
}
- if isOneShot {
- return nil, nil, err
- }
- continue
- }
- if resp.StatusCode/100 == 5 {
+ } else if resp.StatusCode/100 == 5 {
switch resp.StatusCode {
case http.StatusInternalServerError, http.StatusServiceUnavailable:
// TODO: make sure this is a no leader response
@@ -379,10 +380,16 @@ func (c *httpClusterClient) Do(ctx context.Context, act httpAction) (*http.Respo
default:
cerr.Errors = append(cerr.Errors, fmt.Errorf("client: etcd member %s returns server error [%s]", eps[k].String(), http.StatusText(resp.StatusCode)))
}
- if isOneShot {
- return nil, nil, cerr.Errors[0]
+ err = cerr.Errors[0]
+ }
+ if err != nil {
+ if !isOneShot {
+ continue
}
- continue
+ c.Lock()
+ c.pinned = (k + 1) % leps
+ c.Unlock()
+ return nil, nil, err
}
if k != pinned {
c.Lock()
@@ -477,6 +484,33 @@ func (c *httpClusterClient) AutoSync(ctx context.Context, interval time.Duration
}
}
+func (c *httpClusterClient) GetVersion(ctx context.Context) (*version.Versions, error) {
+ act := &getAction{Prefix: "/version"}
+
+ resp, body, err := c.Do(ctx, act)
+ if err != nil {
+ return nil, err
+ }
+
+ switch resp.StatusCode {
+ case http.StatusOK:
+ if len(body) == 0 {
+ return nil, ErrEmptyBody
+ }
+ var vresp version.Versions
+ if err := json.Unmarshal(body, &vresp); err != nil {
+ return nil, ErrInvalidJSON
+ }
+ return &vresp, nil
+ default:
+ var etcdErr Error
+ if err := json.Unmarshal(body, &etcdErr); err != nil {
+ return nil, ErrInvalidJSON
+ }
+ return nil, etcdErr
+ }
+}
+
type roundTripResponse struct {
resp *http.Response
err error
diff --git a/vendor/github.com/coreos/etcd/client/discover.go b/vendor/github.com/coreos/etcd/client/discover.go
index bfd7aec93f5c..442e35fe543b 100644
--- a/vendor/github.com/coreos/etcd/client/discover.go
+++ b/vendor/github.com/coreos/etcd/client/discover.go
@@ -14,8 +14,27 @@
package client
+import (
+ "github.com/coreos/etcd/pkg/srv"
+)
+
// Discoverer is an interface that wraps the Discover method.
type Discoverer interface {
// Discover looks up the etcd servers for the domain.
Discover(domain string) ([]string, error)
}
+
+type srvDiscover struct{}
+
+// NewSRVDiscover constructs a new Discoverer that uses the stdlib to lookup SRV records.
+func NewSRVDiscover() Discoverer {
+ return &srvDiscover{}
+}
+
+func (d *srvDiscover) Discover(domain string) ([]string, error) {
+ srvs, err := srv.GetClient("etcd-client", domain)
+ if err != nil {
+ return nil, err
+ }
+ return srvs.Endpoints, nil
+}
diff --git a/vendor/github.com/coreos/etcd/client/srv.go b/vendor/github.com/coreos/etcd/client/srv.go
deleted file mode 100644
index fdfa34359219..000000000000
--- a/vendor/github.com/coreos/etcd/client/srv.go
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2015 The etcd Authors
-//
-// 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 client
-
-import (
- "fmt"
- "net"
- "net/url"
-)
-
-var (
- // indirection for testing
- lookupSRV = net.LookupSRV
-)
-
-type srvDiscover struct{}
-
-// NewSRVDiscover constructs a new Discoverer that uses the stdlib to lookup SRV records.
-func NewSRVDiscover() Discoverer {
- return &srvDiscover{}
-}
-
-// Discover looks up the etcd servers for the domain.
-func (d *srvDiscover) Discover(domain string) ([]string, error) {
- var urls []*url.URL
-
- updateURLs := func(service, scheme string) error {
- _, addrs, err := lookupSRV(service, "tcp", domain)
- if err != nil {
- return err
- }
- for _, srv := range addrs {
- urls = append(urls, &url.URL{
- Scheme: scheme,
- Host: net.JoinHostPort(srv.Target, fmt.Sprintf("%d", srv.Port)),
- })
- }
- return nil
- }
-
- errHTTPS := updateURLs("etcd-client-ssl", "https")
- errHTTP := updateURLs("etcd-client", "http")
-
- if errHTTPS != nil && errHTTP != nil {
- return nil, fmt.Errorf("dns lookup errors: %s and %s", errHTTPS, errHTTP)
- }
-
- endpoints := make([]string, len(urls))
- for i := range urls {
- endpoints[i] = urls[i].String()
- }
- return endpoints, nil
-}
diff --git a/vendor/github.com/coreos/etcd/clientv3/README.md b/vendor/github.com/coreos/etcd/clientv3/README.md
index 87c32d1a88a3..376bfba7614d 100644
--- a/vendor/github.com/coreos/etcd/clientv3/README.md
+++ b/vendor/github.com/coreos/etcd/clientv3/README.md
@@ -1,6 +1,6 @@
# etcd/clientv3
-[![Godoc](http://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/coreos/etcd/clientv3)
+[![Godoc](https://img.shields.io/badge/go-documentation-blue.svg?style=flat-square)](https://godoc.org/github.com/coreos/etcd/clientv3)
`etcd/clientv3` is the official Go etcd client for v3.
@@ -32,7 +32,7 @@ pass `context.WithTimeout` to APIs:
```go
ctx, cancel := context.WithTimeout(context.Background(), timeout)
-resp, err := kvc.Put(ctx, "sample_key", "sample_value")
+resp, err := cli.Put(ctx, "sample_key", "sample_value")
cancel()
if err != nil {
// handle error!
@@ -57,7 +57,7 @@ etcd client returns 2 types of errors:
Here is the example code to handle client errors:
```go
-resp, err := kvc.Put(ctx, "", "")
+resp, err := cli.Put(ctx, "", "")
if err != nil {
switch err {
case context.Canceled:
@@ -76,6 +76,10 @@ if err != nil {
The etcd client optionally exposes RPC metrics through [go-grpc-prometheus](https://github.com/grpc-ecosystem/go-grpc-prometheus). See the [examples](https://github.com/coreos/etcd/blob/master/clientv3/example_metrics_test.go).
+## Namespacing
+
+The [namespace](https://godoc.org/github.com/coreos/etcd/clientv3/namespace) package provides `clientv3` interface wrappers to transparently isolate client requests to a user-defined prefix.
+
## Examples
More code examples can be found at [GoDoc](https://godoc.org/github.com/coreos/etcd/clientv3).
diff --git a/vendor/github.com/coreos/etcd/clientv3/auth.go b/vendor/github.com/coreos/etcd/clientv3/auth.go
index b995bce8e3f2..a64b8caca895 100644
--- a/vendor/github.com/coreos/etcd/clientv3/auth.go
+++ b/vendor/github.com/coreos/etcd/clientv3/auth.go
@@ -20,6 +20,7 @@ import (
"github.com/coreos/etcd/auth/authpb"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
)
@@ -100,68 +101,65 @@ type Auth interface {
}
type auth struct {
- c *Client
-
- conn *grpc.ClientConn // conn in-use
- remote pb.AuthClient
+ remote pb.AuthClient
+ callOpts []grpc.CallOption
}
func NewAuth(c *Client) Auth {
- conn := c.ActiveConnection()
- return &auth{
- conn: c.ActiveConnection(),
- remote: pb.NewAuthClient(conn),
- c: c,
+ api := &auth{remote: RetryAuthClient(c)}
+ if c != nil {
+ api.callOpts = c.callOpts
}
+ return api
}
func (auth *auth) AuthEnable(ctx context.Context) (*AuthEnableResponse, error) {
- resp, err := auth.remote.AuthEnable(ctx, &pb.AuthEnableRequest{}, grpc.FailFast(false))
+ resp, err := auth.remote.AuthEnable(ctx, &pb.AuthEnableRequest{}, auth.callOpts...)
return (*AuthEnableResponse)(resp), toErr(ctx, err)
}
func (auth *auth) AuthDisable(ctx context.Context) (*AuthDisableResponse, error) {
- resp, err := auth.remote.AuthDisable(ctx, &pb.AuthDisableRequest{}, grpc.FailFast(false))
+ resp, err := auth.remote.AuthDisable(ctx, &pb.AuthDisableRequest{}, auth.callOpts...)
return (*AuthDisableResponse)(resp), toErr(ctx, err)
}
func (auth *auth) UserAdd(ctx context.Context, name string, password string) (*AuthUserAddResponse, error) {
- resp, err := auth.remote.UserAdd(ctx, &pb.AuthUserAddRequest{Name: name, Password: password})
+ resp, err := auth.remote.UserAdd(ctx, &pb.AuthUserAddRequest{Name: name, Password: password}, auth.callOpts...)
return (*AuthUserAddResponse)(resp), toErr(ctx, err)
}
func (auth *auth) UserDelete(ctx context.Context, name string) (*AuthUserDeleteResponse, error) {
- resp, err := auth.remote.UserDelete(ctx, &pb.AuthUserDeleteRequest{Name: name})
+ resp, err := auth.remote.UserDelete(ctx, &pb.AuthUserDeleteRequest{Name: name}, auth.callOpts...)
return (*AuthUserDeleteResponse)(resp), toErr(ctx, err)
}
func (auth *auth) UserChangePassword(ctx context.Context, name string, password string) (*AuthUserChangePasswordResponse, error) {
- resp, err := auth.remote.UserChangePassword(ctx, &pb.AuthUserChangePasswordRequest{Name: name, Password: password})
+ resp, err := auth.remote.UserChangePassword(ctx, &pb.AuthUserChangePasswordRequest{Name: name, Password: password}, auth.callOpts...)
return (*AuthUserChangePasswordResponse)(resp), toErr(ctx, err)
}
func (auth *auth) UserGrantRole(ctx context.Context, user string, role string) (*AuthUserGrantRoleResponse, error) {
- resp, err := auth.remote.UserGrantRole(ctx, &pb.AuthUserGrantRoleRequest{User: user, Role: role})
+ resp, err := auth.remote.UserGrantRole(ctx, &pb.AuthUserGrantRoleRequest{User: user, Role: role}, auth.callOpts...)
return (*AuthUserGrantRoleResponse)(resp), toErr(ctx, err)
}
func (auth *auth) UserGet(ctx context.Context, name string) (*AuthUserGetResponse, error) {
- resp, err := auth.remote.UserGet(ctx, &pb.AuthUserGetRequest{Name: name}, grpc.FailFast(false))
+ resp, err := auth.remote.UserGet(ctx, &pb.AuthUserGetRequest{Name: name}, auth.callOpts...)
return (*AuthUserGetResponse)(resp), toErr(ctx, err)
}
func (auth *auth) UserList(ctx context.Context) (*AuthUserListResponse, error) {
- resp, err := auth.remote.UserList(ctx, &pb.AuthUserListRequest{}, grpc.FailFast(false))
+ resp, err := auth.remote.UserList(ctx, &pb.AuthUserListRequest{}, auth.callOpts...)
return (*AuthUserListResponse)(resp), toErr(ctx, err)
}
func (auth *auth) UserRevokeRole(ctx context.Context, name string, role string) (*AuthUserRevokeRoleResponse, error) {
- resp, err := auth.remote.UserRevokeRole(ctx, &pb.AuthUserRevokeRoleRequest{Name: name, Role: role})
+ resp, err := auth.remote.UserRevokeRole(ctx, &pb.AuthUserRevokeRoleRequest{Name: name, Role: role}, auth.callOpts...)
return (*AuthUserRevokeRoleResponse)(resp), toErr(ctx, err)
}
func (auth *auth) RoleAdd(ctx context.Context, name string) (*AuthRoleAddResponse, error) {
- resp, err := auth.remote.RoleAdd(ctx, &pb.AuthRoleAddRequest{Name: name})
+ resp, err := auth.remote.RoleAdd(ctx, &pb.AuthRoleAddRequest{Name: name}, auth.callOpts...)
return (*AuthRoleAddResponse)(resp), toErr(ctx, err)
}
@@ -171,27 +169,27 @@ func (auth *auth) RoleGrantPermission(ctx context.Context, name string, key, ran
RangeEnd: []byte(rangeEnd),
PermType: authpb.Permission_Type(permType),
}
- resp, err := auth.remote.RoleGrantPermission(ctx, &pb.AuthRoleGrantPermissionRequest{Name: name, Perm: perm})
+ resp, err := auth.remote.RoleGrantPermission(ctx, &pb.AuthRoleGrantPermissionRequest{Name: name, Perm: perm}, auth.callOpts...)
return (*AuthRoleGrantPermissionResponse)(resp), toErr(ctx, err)
}
func (auth *auth) RoleGet(ctx context.Context, role string) (*AuthRoleGetResponse, error) {
- resp, err := auth.remote.RoleGet(ctx, &pb.AuthRoleGetRequest{Role: role}, grpc.FailFast(false))
+ resp, err := auth.remote.RoleGet(ctx, &pb.AuthRoleGetRequest{Role: role}, auth.callOpts...)
return (*AuthRoleGetResponse)(resp), toErr(ctx, err)
}
func (auth *auth) RoleList(ctx context.Context) (*AuthRoleListResponse, error) {
- resp, err := auth.remote.RoleList(ctx, &pb.AuthRoleListRequest{}, grpc.FailFast(false))
+ resp, err := auth.remote.RoleList(ctx, &pb.AuthRoleListRequest{}, auth.callOpts...)
return (*AuthRoleListResponse)(resp), toErr(ctx, err)
}
func (auth *auth) RoleRevokePermission(ctx context.Context, role string, key, rangeEnd string) (*AuthRoleRevokePermissionResponse, error) {
- resp, err := auth.remote.RoleRevokePermission(ctx, &pb.AuthRoleRevokePermissionRequest{Role: role, Key: key, RangeEnd: rangeEnd})
+ resp, err := auth.remote.RoleRevokePermission(ctx, &pb.AuthRoleRevokePermissionRequest{Role: role, Key: key, RangeEnd: rangeEnd}, auth.callOpts...)
return (*AuthRoleRevokePermissionResponse)(resp), toErr(ctx, err)
}
func (auth *auth) RoleDelete(ctx context.Context, role string) (*AuthRoleDeleteResponse, error) {
- resp, err := auth.remote.RoleDelete(ctx, &pb.AuthRoleDeleteRequest{Role: role})
+ resp, err := auth.remote.RoleDelete(ctx, &pb.AuthRoleDeleteRequest{Role: role}, auth.callOpts...)
return (*AuthRoleDeleteResponse)(resp), toErr(ctx, err)
}
@@ -204,12 +202,13 @@ func StrToPermissionType(s string) (PermissionType, error) {
}
type authenticator struct {
- conn *grpc.ClientConn // conn in-use
- remote pb.AuthClient
+ conn *grpc.ClientConn // conn in-use
+ remote pb.AuthClient
+ callOpts []grpc.CallOption
}
func (auth *authenticator) authenticate(ctx context.Context, name string, password string) (*AuthenticateResponse, error) {
- resp, err := auth.remote.Authenticate(ctx, &pb.AuthenticateRequest{Name: name, Password: password}, grpc.FailFast(false))
+ resp, err := auth.remote.Authenticate(ctx, &pb.AuthenticateRequest{Name: name, Password: password}, auth.callOpts...)
return (*AuthenticateResponse)(resp), toErr(ctx, err)
}
@@ -217,14 +216,18 @@ func (auth *authenticator) close() {
auth.conn.Close()
}
-func newAuthenticator(endpoint string, opts []grpc.DialOption) (*authenticator, error) {
+func newAuthenticator(endpoint string, opts []grpc.DialOption, c *Client) (*authenticator, error) {
conn, err := grpc.Dial(endpoint, opts...)
if err != nil {
return nil, err
}
- return &authenticator{
+ api := &authenticator{
conn: conn,
remote: pb.NewAuthClient(conn),
- }, nil
+ }
+ if c != nil {
+ api.callOpts = c.callOpts
+ }
+ return api, nil
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/balancer.go b/vendor/github.com/coreos/etcd/clientv3/balancer.go
deleted file mode 100644
index 0fef9c54934f..000000000000
--- a/vendor/github.com/coreos/etcd/clientv3/balancer.go
+++ /dev/null
@@ -1,239 +0,0 @@
-// Copyright 2016 The etcd Authors
-//
-// 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 clientv3
-
-import (
- "net/url"
- "strings"
- "sync"
-
- "golang.org/x/net/context"
- "google.golang.org/grpc"
- "google.golang.org/grpc/codes"
-)
-
-// ErrNoAddrAvilable is returned by Get() when the balancer does not have
-// any active connection to endpoints at the time.
-// This error is returned only when opts.BlockingWait is true.
-var ErrNoAddrAvilable = grpc.Errorf(codes.Unavailable, "there is no address available")
-
-// simpleBalancer does the bare minimum to expose multiple eps
-// to the grpc reconnection code path
-type simpleBalancer struct {
- // addrs are the client's endpoints for grpc
- addrs []grpc.Address
- // notifyCh notifies grpc of the set of addresses for connecting
- notifyCh chan []grpc.Address
-
- // readyc closes once the first connection is up
- readyc chan struct{}
- readyOnce sync.Once
-
- // mu protects upEps, pinAddr, and connectingAddr
- mu sync.RWMutex
- // upEps holds the current endpoints that have an active connection
- upEps map[string]struct{}
- // upc closes when upEps transitions from empty to non-zero or the balancer closes.
- upc chan struct{}
-
- // grpc issues TLS cert checks using the string passed into dial so
- // that string must be the host. To recover the full scheme://host URL,
- // have a map from hosts to the original endpoint.
- host2ep map[string]string
-
- // pinAddr is the currently pinned address; set to the empty string on
- // intialization and shutdown.
- pinAddr string
-
- closed bool
-}
-
-func newSimpleBalancer(eps []string) *simpleBalancer {
- notifyCh := make(chan []grpc.Address, 1)
- addrs := make([]grpc.Address, len(eps))
- for i := range eps {
- addrs[i].Addr = getHost(eps[i])
- }
- notifyCh <- addrs
- sb := &simpleBalancer{
- addrs: addrs,
- notifyCh: notifyCh,
- readyc: make(chan struct{}),
- upEps: make(map[string]struct{}),
- upc: make(chan struct{}),
- host2ep: getHost2ep(eps),
- }
- return sb
-}
-
-func (b *simpleBalancer) Start(target string, config grpc.BalancerConfig) error { return nil }
-
-func (b *simpleBalancer) ConnectNotify() <-chan struct{} {
- b.mu.Lock()
- defer b.mu.Unlock()
- return b.upc
-}
-
-func (b *simpleBalancer) getEndpoint(host string) string {
- b.mu.Lock()
- defer b.mu.Unlock()
- return b.host2ep[host]
-}
-
-func getHost2ep(eps []string) map[string]string {
- hm := make(map[string]string, len(eps))
- for i := range eps {
- _, host, _ := parseEndpoint(eps[i])
- hm[host] = eps[i]
- }
- return hm
-}
-
-func (b *simpleBalancer) updateAddrs(eps []string) {
- np := getHost2ep(eps)
-
- b.mu.Lock()
- defer b.mu.Unlock()
-
- match := len(np) == len(b.host2ep)
- for k, v := range np {
- if b.host2ep[k] != v {
- match = false
- break
- }
- }
- if match {
- // same endpoints, so no need to update address
- return
- }
-
- b.host2ep = np
-
- addrs := make([]grpc.Address, 0, len(eps))
- for i := range eps {
- addrs = append(addrs, grpc.Address{Addr: getHost(eps[i])})
- }
- b.addrs = addrs
- b.notifyCh <- addrs
-}
-
-func (b *simpleBalancer) Up(addr grpc.Address) func(error) {
- b.mu.Lock()
- defer b.mu.Unlock()
-
- // gRPC might call Up after it called Close. We add this check
- // to "fix" it up at application layer. Or our simplerBalancer
- // might panic since b.upc is closed.
- if b.closed {
- return func(err error) {}
- }
-
- if len(b.upEps) == 0 {
- // notify waiting Get()s and pin first connected address
- close(b.upc)
- b.pinAddr = addr.Addr
- }
- b.upEps[addr.Addr] = struct{}{}
-
- // notify client that a connection is up
- b.readyOnce.Do(func() { close(b.readyc) })
-
- return func(err error) {
- b.mu.Lock()
- delete(b.upEps, addr.Addr)
- if len(b.upEps) == 0 && b.pinAddr != "" {
- b.upc = make(chan struct{})
- } else if b.pinAddr == addr.Addr {
- // choose new random up endpoint
- for k := range b.upEps {
- b.pinAddr = k
- break
- }
- }
- b.mu.Unlock()
- }
-}
-
-func (b *simpleBalancer) Get(ctx context.Context, opts grpc.BalancerGetOptions) (grpc.Address, func(), error) {
- var addr string
-
- // If opts.BlockingWait is false (for fail-fast RPCs), it should return
- // an address it has notified via Notify immediately instead of blocking.
- if !opts.BlockingWait {
- b.mu.RLock()
- closed := b.closed
- addr = b.pinAddr
- upEps := len(b.upEps)
- b.mu.RUnlock()
- if closed {
- return grpc.Address{Addr: ""}, nil, grpc.ErrClientConnClosing
- }
-
- if upEps == 0 {
- return grpc.Address{Addr: ""}, nil, ErrNoAddrAvilable
- }
- return grpc.Address{Addr: addr}, func() {}, nil
- }
-
- for {
- b.mu.RLock()
- ch := b.upc
- b.mu.RUnlock()
- select {
- case <-ch:
- case <-ctx.Done():
- return grpc.Address{Addr: ""}, nil, ctx.Err()
- }
- b.mu.RLock()
- addr = b.pinAddr
- upEps := len(b.upEps)
- b.mu.RUnlock()
- if addr == "" {
- return grpc.Address{Addr: ""}, nil, grpc.ErrClientConnClosing
- }
- if upEps > 0 {
- break
- }
- }
- return grpc.Address{Addr: addr}, func() {}, nil
-}
-
-func (b *simpleBalancer) Notify() <-chan []grpc.Address { return b.notifyCh }
-
-func (b *simpleBalancer) Close() error {
- b.mu.Lock()
- defer b.mu.Unlock()
- // In case gRPC calls close twice. TODO: remove the checking
- // when we are sure that gRPC wont call close twice.
- if b.closed {
- return nil
- }
- b.closed = true
- close(b.notifyCh)
- // terminate all waiting Get()s
- b.pinAddr = ""
- if len(b.upEps) == 0 {
- close(b.upc)
- }
- return nil
-}
-
-func getHost(ep string) string {
- url, uerr := url.Parse(ep)
- if uerr != nil || !strings.Contains(ep, "://") {
- return ep
- }
- return url.Host
-}
diff --git a/vendor/github.com/coreos/etcd/clientv3/client.go b/vendor/github.com/coreos/etcd/clientv3/client.go
index 8263890bdff0..2bdd928771f1 100644
--- a/vendor/github.com/coreos/etcd/clientv3/client.go
+++ b/vendor/github.com/coreos/etcd/clientv3/client.go
@@ -20,22 +20,25 @@ import (
"fmt"
"net"
"net/url"
+ "strconv"
"strings"
"sync"
"time"
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
- prometheus "github.com/grpc-ecosystem/go-grpc-prometheus"
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/credentials"
+ "google.golang.org/grpc/keepalive"
"google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
)
var (
ErrNoAvailableEndpoints = errors.New("etcdclient: no available endpoints")
+ ErrOldCluster = errors.New("etcdclient: old cluster version")
)
// Client provides and manages an etcd v3 client session.
@@ -47,22 +50,25 @@ type Client struct {
Auth
Maintenance
- conn *grpc.ClientConn
- cfg Config
- creds *credentials.TransportCredentials
- balancer *simpleBalancer
- retryWrapper retryRpcFunc
- retryAuthWrapper retryRpcFunc
+ conn *grpc.ClientConn
+ dialerrc chan error
+
+ cfg Config
+ creds *credentials.TransportCredentials
+ balancer *healthBalancer
+ mu *sync.Mutex
ctx context.Context
cancel context.CancelFunc
- // Username is a username for authentication
+ // Username is a user name for authentication.
Username string
- // Password is a password for authentication
+ // Password is a password for authentication.
Password string
// tokenCred is an instance of WithPerRPCCredentials()'s argument
tokenCred *authTokenCredential
+
+ callOpts []grpc.CallOption
}
// New creates a new etcdv3 client from a given configuration.
@@ -74,26 +80,28 @@ func New(cfg Config) (*Client, error) {
return newClient(&cfg)
}
+// NewCtxClient creates a client with a context but no underlying grpc
+// connection. This is useful for embedded cases that override the
+// service interface implementations and do not need connection management.
+func NewCtxClient(ctx context.Context) *Client {
+ cctx, cancel := context.WithCancel(ctx)
+ return &Client{ctx: cctx, cancel: cancel}
+}
+
// NewFromURL creates a new etcdv3 client from a URL.
func NewFromURL(url string) (*Client, error) {
return New(Config{Endpoints: []string{url}})
}
-// NewFromConfigFile creates a new etcdv3 client from a configuration file.
-func NewFromConfigFile(path string) (*Client, error) {
- cfg, err := configFromFile(path)
- if err != nil {
- return nil, err
- }
- return New(*cfg)
-}
-
// Close shuts down the client's etcd connections.
func (c *Client) Close() error {
c.cancel()
c.Watcher.Close()
c.Lease.Close()
- return toErr(c.ctx, c.conn.Close())
+ if c.conn != nil {
+ return toErr(c.ctx, c.conn.Close())
+ }
+ return c.ctx.Err()
}
// Ctx is a context for "out of band" messages (e.g., for sending
@@ -111,8 +119,23 @@ func (c *Client) Endpoints() (eps []string) {
// SetEndpoints updates client's endpoints.
func (c *Client) SetEndpoints(eps ...string) {
+ c.mu.Lock()
c.cfg.Endpoints = eps
- c.balancer.updateAddrs(eps)
+ c.mu.Unlock()
+ c.balancer.updateAddrs(eps...)
+
+ // updating notifyCh can trigger new connections,
+ // need update addrs if all connections are down
+ // or addrs does not include pinAddr.
+ c.balancer.mu.RLock()
+ update := !hasAddr(c.balancer.addrs, c.balancer.pinAddr)
+ c.balancer.mu.RUnlock()
+ if update {
+ select {
+ case c.balancer.updateAddrsC <- notifyNext:
+ case <-c.balancer.stopc:
+ }
+ }
}
// Sync synchronizes client's endpoints with the known endpoints from the etcd membership.
@@ -139,8 +162,10 @@ func (c *Client) autoSync() {
case <-c.ctx.Done():
return
case <-time.After(c.cfg.AutoSyncInterval):
- ctx, _ := context.WithTimeout(c.ctx, 5*time.Second)
- if err := c.Sync(ctx); err != nil && err != c.ctx.Err() {
+ ctx, cancel := context.WithTimeout(c.ctx, 5*time.Second)
+ err := c.Sync(ctx)
+ cancel()
+ if err != nil && err != c.ctx.Err() {
logger.Println("Auto sync endpoints failed:", err)
}
}
@@ -169,7 +194,7 @@ func parseEndpoint(endpoint string) (proto string, host string, scheme string) {
host = endpoint
url, uerr := url.Parse(endpoint)
if uerr != nil || !strings.Contains(endpoint, "://") {
- return
+ return proto, host, scheme
}
scheme = url.Scheme
@@ -177,12 +202,13 @@ func parseEndpoint(endpoint string) (proto string, host string, scheme string) {
host = url.Host
switch url.Scheme {
case "http", "https":
- case "unix":
+ case "unix", "unixs":
proto = "unix"
+ host = url.Host + url.Path
default:
proto, host = "", ""
}
- return
+ return proto, host, scheme
}
func (c *Client) processCreds(scheme string) (creds *credentials.TransportCredentials) {
@@ -191,7 +217,7 @@ func (c *Client) processCreds(scheme string) (creds *credentials.TransportCreden
case "unix":
case "http":
creds = nil
- case "https":
+ case "https", "unixs":
if creds != nil {
break
}
@@ -201,7 +227,7 @@ func (c *Client) processCreds(scheme string) (creds *credentials.TransportCreden
default:
creds = nil
}
- return
+ return creds
}
// dialSetupOpts gives the dial opts prior to any authentication
@@ -209,10 +235,22 @@ func (c *Client) dialSetupOpts(endpoint string, dopts ...grpc.DialOption) (opts
if c.cfg.DialTimeout > 0 {
opts = []grpc.DialOption{grpc.WithTimeout(c.cfg.DialTimeout)}
}
+ if c.cfg.DialKeepAliveTime > 0 {
+ params := keepalive.ClientParameters{
+ Time: c.cfg.DialKeepAliveTime,
+ Timeout: c.cfg.DialKeepAliveTimeout,
+ }
+ opts = append(opts, grpc.WithKeepaliveParams(params))
+ }
opts = append(opts, dopts...)
f := func(host string, t time.Duration) (net.Conn, error) {
- proto, host, _ := parseEndpoint(c.balancer.getEndpoint(host))
+ proto, host, _ := parseEndpoint(c.balancer.endpoint(host))
+ if host == "" && endpoint != "" {
+ // dialing an endpoint not in the balancer; use
+ // endpoint passed into dial
+ proto, host, _ = parseEndpoint(endpoint)
+ }
if proto == "" {
return nil, fmt.Errorf("unknown scheme for %q", host)
}
@@ -222,7 +260,14 @@ func (c *Client) dialSetupOpts(endpoint string, dopts ...grpc.DialOption) (opts
default:
}
dialer := &net.Dialer{Timeout: t}
- return dialer.DialContext(c.ctx, proto, host)
+ conn, err := dialer.DialContext(c.ctx, proto, host)
+ if err != nil {
+ select {
+ case c.dialerrc <- err:
+ default:
+ }
+ }
+ return conn, err
}
opts = append(opts, grpc.WithDialer(f))
@@ -252,7 +297,7 @@ func (c *Client) getToken(ctx context.Context) error {
endpoint := c.cfg.Endpoints[i]
host := getHost(endpoint)
// use dial options without dopts to avoid reusing the client balancer
- auth, err = newAuthenticator(host, c.dialSetupOpts(endpoint))
+ auth, err = newAuthenticator(host, c.dialSetupOpts(endpoint), c)
if err != nil {
continue
}
@@ -288,21 +333,23 @@ func (c *Client) dial(endpoint string, dopts ...grpc.DialOption) (*grpc.ClientCo
defer cancel()
ctx = cctx
}
- if err := c.getToken(ctx); err != nil {
- if err == ctx.Err() && ctx.Err() != c.ctx.Err() {
- err = grpc.ErrClientConnTimeout
+
+ err := c.getToken(ctx)
+ if err != nil {
+ if toErr(ctx, err) != rpctypes.ErrAuthNotEnabled {
+ if err == ctx.Err() && ctx.Err() != c.ctx.Err() {
+ err = context.DeadlineExceeded
+ }
+ return nil, err
}
- return nil, err
+ } else {
+ opts = append(opts, grpc.WithPerRPCCredentials(c.tokenCred))
}
-
- opts = append(opts, grpc.WithPerRPCCredentials(c.tokenCred))
}
- // add metrics options
- opts = append(opts, grpc.WithUnaryInterceptor(prometheus.UnaryClientInterceptor))
- opts = append(opts, grpc.WithStreamInterceptor(prometheus.StreamClientInterceptor))
+ opts = append(opts, c.cfg.DialOptions...)
- conn, err := grpc.Dial(host, opts...)
+ conn, err := grpc.DialContext(c.ctx, host, opts...)
if err != nil {
return nil, err
}
@@ -313,7 +360,7 @@ func (c *Client) dial(endpoint string, dopts ...grpc.DialOption) (*grpc.ClientCo
// when the cluster has a leader.
func WithRequireLeader(ctx context.Context) context.Context {
md := metadata.Pairs(rpctypes.MetadataRequireLeaderKey, rpctypes.MetadataHasLeader)
- return metadata.NewContext(ctx, md)
+ return metadata.NewOutgoingContext(ctx, md)
}
func newClient(cfg *Config) (*Client, error) {
@@ -327,20 +374,50 @@ func newClient(cfg *Config) (*Client, error) {
}
// use a temporary skeleton client to bootstrap first connection
- ctx, cancel := context.WithCancel(context.TODO())
+ baseCtx := context.TODO()
+ if cfg.Context != nil {
+ baseCtx = cfg.Context
+ }
+
+ ctx, cancel := context.WithCancel(baseCtx)
client := &Client{
- conn: nil,
- cfg: *cfg,
- creds: creds,
- ctx: ctx,
- cancel: cancel,
+ conn: nil,
+ dialerrc: make(chan error, 1),
+ cfg: *cfg,
+ creds: creds,
+ ctx: ctx,
+ cancel: cancel,
+ mu: new(sync.Mutex),
+ callOpts: defaultCallOpts,
}
if cfg.Username != "" && cfg.Password != "" {
client.Username = cfg.Username
client.Password = cfg.Password
}
+ if cfg.MaxCallSendMsgSize > 0 || cfg.MaxCallRecvMsgSize > 0 {
+ if cfg.MaxCallRecvMsgSize > 0 && cfg.MaxCallSendMsgSize > cfg.MaxCallRecvMsgSize {
+ return nil, fmt.Errorf("gRPC message recv limit (%d bytes) must be greater than send limit (%d bytes)", cfg.MaxCallRecvMsgSize, cfg.MaxCallSendMsgSize)
+ }
+ callOpts := []grpc.CallOption{
+ defaultFailFast,
+ defaultMaxCallSendMsgSize,
+ defaultMaxCallRecvMsgSize,
+ }
+ if cfg.MaxCallSendMsgSize > 0 {
+ callOpts[1] = grpc.MaxCallSendMsgSize(cfg.MaxCallSendMsgSize)
+ }
+ if cfg.MaxCallRecvMsgSize > 0 {
+ callOpts[2] = grpc.MaxCallRecvMsgSize(cfg.MaxCallRecvMsgSize)
+ }
+ client.callOpts = callOpts
+ }
- client.balancer = newSimpleBalancer(cfg.Endpoints)
+ client.balancer = newHealthBalancer(cfg.Endpoints, cfg.DialTimeout, func(ep string) (bool, error) {
+ return grpcHealthCheck(client, ep)
+ })
+
+ // use Endpoints[0] so that for https:// without any tls config given, then
+ // grpc will assume the certificate server name is the endpoint host.
conn, err := client.dial(cfg.Endpoints[0], grpc.WithBalancer(client.balancer))
if err != nil {
client.cancel()
@@ -348,24 +425,27 @@ func newClient(cfg *Config) (*Client, error) {
return nil, err
}
client.conn = conn
- client.retryWrapper = client.newRetryWrapper()
- client.retryAuthWrapper = client.newAuthRetryWrapper()
// wait for a connection
if cfg.DialTimeout > 0 {
hasConn := false
waitc := time.After(cfg.DialTimeout)
select {
- case <-client.balancer.readyc:
+ case <-client.balancer.ready():
hasConn = true
case <-ctx.Done():
case <-waitc:
}
if !hasConn {
+ err := context.DeadlineExceeded
+ select {
+ case err = <-client.dialerrc:
+ default:
+ }
client.cancel()
client.balancer.Close()
conn.Close()
- return nil, grpc.ErrClientConnTimeout
+ return nil, err
}
}
@@ -376,10 +456,57 @@ func newClient(cfg *Config) (*Client, error) {
client.Auth = NewAuth(client)
client.Maintenance = NewMaintenance(client)
+ if cfg.RejectOldCluster {
+ if err := client.checkVersion(); err != nil {
+ client.Close()
+ return nil, err
+ }
+ }
+
go client.autoSync()
return client, nil
}
+func (c *Client) checkVersion() (err error) {
+ var wg sync.WaitGroup
+ errc := make(chan error, len(c.cfg.Endpoints))
+ ctx, cancel := context.WithCancel(c.ctx)
+ if c.cfg.DialTimeout > 0 {
+ ctx, cancel = context.WithTimeout(ctx, c.cfg.DialTimeout)
+ }
+ wg.Add(len(c.cfg.Endpoints))
+ for _, ep := range c.cfg.Endpoints {
+ // if cluster is current, any endpoint gives a recent version
+ go func(e string) {
+ defer wg.Done()
+ resp, rerr := c.Status(ctx, e)
+ if rerr != nil {
+ errc <- rerr
+ return
+ }
+ vs := strings.Split(resp.Version, ".")
+ maj, min := 0, 0
+ if len(vs) >= 2 {
+ maj, _ = strconv.Atoi(vs[0])
+ min, rerr = strconv.Atoi(vs[1])
+ }
+ if maj < 3 || (maj == 3 && min < 2) {
+ rerr = ErrOldCluster
+ }
+ errc <- rerr
+ }(ep)
+ }
+ // wait for success
+ for i := 0; i < len(c.cfg.Endpoints); i++ {
+ if err = <-errc; err == nil {
+ break
+ }
+ }
+ cancel()
+ wg.Wait()
+ return err
+}
+
// ActiveConnection returns the current in-use connection
func (c *Client) ActiveConnection() *grpc.ClientConn { return c.conn }
@@ -392,14 +519,14 @@ func isHaltErr(ctx context.Context, err error) bool {
if err == nil {
return false
}
- code := grpc.Code(err)
+ ev, _ := status.FromError(err)
// Unavailable codes mean the system will be right back.
// (e.g., can't connect, lost leader)
// Treat Internal codes as if something failed, leaving the
// system in an inconsistent state, but retrying could make progress.
// (e.g., failed in middle of send, corrupted frame)
// TODO: are permanent Internal errors possible from grpc?
- return code != codes.Unavailable && code != codes.Internal
+ return ev.Code() != codes.Unavailable && ev.Code() != codes.Internal
}
func toErr(ctx context.Context, err error) error {
@@ -410,7 +537,8 @@ func toErr(ctx context.Context, err error) error {
if _, ok := err.(rpctypes.EtcdError); ok {
return err
}
- code := grpc.Code(err)
+ ev, _ := status.FromError(err)
+ code := ev.Code()
switch code {
case codes.DeadlineExceeded:
fallthrough
@@ -419,9 +547,16 @@ func toErr(ctx context.Context, err error) error {
err = ctx.Err()
}
case codes.Unavailable:
- err = ErrNoAvailableEndpoints
case codes.FailedPrecondition:
err = grpc.ErrClientConnClosing
}
return err
}
+
+func canceledByCaller(stopCtx context.Context, err error) bool {
+ if stopCtx.Err() == nil || err == nil {
+ return false
+ }
+
+ return err == context.Canceled || err == context.DeadlineExceeded
+}
diff --git a/vendor/github.com/coreos/etcd/clientv3/cluster.go b/vendor/github.com/coreos/etcd/clientv3/cluster.go
index b9bff626bd7b..545d676e7bb3 100644
--- a/vendor/github.com/coreos/etcd/clientv3/cluster.go
+++ b/vendor/github.com/coreos/etcd/clientv3/cluster.go
@@ -16,6 +16,7 @@ package clientv3
import (
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
)
@@ -43,60 +44,59 @@ type Cluster interface {
}
type cluster struct {
- remote pb.ClusterClient
+ remote pb.ClusterClient
+ callOpts []grpc.CallOption
}
func NewCluster(c *Client) Cluster {
- return &cluster{remote: RetryClusterClient(c)}
+ api := &cluster{remote: RetryClusterClient(c)}
+ if c != nil {
+ api.callOpts = c.callOpts
+ }
+ return api
+}
+
+func NewClusterFromClusterClient(remote pb.ClusterClient, c *Client) Cluster {
+ api := &cluster{remote: remote}
+ if c != nil {
+ api.callOpts = c.callOpts
+ }
+ return api
}
func (c *cluster) MemberAdd(ctx context.Context, peerAddrs []string) (*MemberAddResponse, error) {
r := &pb.MemberAddRequest{PeerURLs: peerAddrs}
- resp, err := c.remote.MemberAdd(ctx, r)
- if err == nil {
- return (*MemberAddResponse)(resp), nil
- }
- if isHaltErr(ctx, err) {
+ resp, err := c.remote.MemberAdd(ctx, r, c.callOpts...)
+ if err != nil {
return nil, toErr(ctx, err)
}
- return nil, toErr(ctx, err)
+ return (*MemberAddResponse)(resp), nil
}
func (c *cluster) MemberRemove(ctx context.Context, id uint64) (*MemberRemoveResponse, error) {
r := &pb.MemberRemoveRequest{ID: id}
- resp, err := c.remote.MemberRemove(ctx, r)
- if err == nil {
- return (*MemberRemoveResponse)(resp), nil
- }
- if isHaltErr(ctx, err) {
+ resp, err := c.remote.MemberRemove(ctx, r, c.callOpts...)
+ if err != nil {
return nil, toErr(ctx, err)
}
- return nil, toErr(ctx, err)
+ return (*MemberRemoveResponse)(resp), nil
}
func (c *cluster) MemberUpdate(ctx context.Context, id uint64, peerAddrs []string) (*MemberUpdateResponse, error) {
// it is safe to retry on update.
- for {
- r := &pb.MemberUpdateRequest{ID: id, PeerURLs: peerAddrs}
- resp, err := c.remote.MemberUpdate(ctx, r, grpc.FailFast(false))
- if err == nil {
- return (*MemberUpdateResponse)(resp), nil
- }
- if isHaltErr(ctx, err) {
- return nil, toErr(ctx, err)
- }
+ r := &pb.MemberUpdateRequest{ID: id, PeerURLs: peerAddrs}
+ resp, err := c.remote.MemberUpdate(ctx, r, c.callOpts...)
+ if err == nil {
+ return (*MemberUpdateResponse)(resp), nil
}
+ return nil, toErr(ctx, err)
}
func (c *cluster) MemberList(ctx context.Context) (*MemberListResponse, error) {
// it is safe to retry on list.
- for {
- resp, err := c.remote.MemberList(ctx, &pb.MemberListRequest{}, grpc.FailFast(false))
- if err == nil {
- return (*MemberListResponse)(resp), nil
- }
- if isHaltErr(ctx, err) {
- return nil, toErr(ctx, err)
- }
+ resp, err := c.remote.MemberList(ctx, &pb.MemberListRequest{}, c.callOpts...)
+ if err == nil {
+ return (*MemberListResponse)(resp), nil
}
+ return nil, toErr(ctx, err)
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/compact_op.go b/vendor/github.com/coreos/etcd/clientv3/compact_op.go
index 32d97eb0cc1c..41e80c1da5d4 100644
--- a/vendor/github.com/coreos/etcd/clientv3/compact_op.go
+++ b/vendor/github.com/coreos/etcd/clientv3/compact_op.go
@@ -44,10 +44,8 @@ func (op CompactOp) toRequest() *pb.CompactionRequest {
return &pb.CompactionRequest{Revision: op.revision, Physical: op.physical}
}
-// WithCompactPhysical makes compact RPC call wait until
-// the compaction is physically applied to the local database
-// such that compacted entries are totally removed from the
-// backend database.
+// WithCompactPhysical makes Compact wait until all compacted entries are
+// removed from the etcd server's storage.
func WithCompactPhysical() CompactOption {
return func(op *CompactOp) { op.physical = true }
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/compare.go b/vendor/github.com/coreos/etcd/clientv3/compare.go
index f89ffb52c4ad..68a25fd800fb 100644
--- a/vendor/github.com/coreos/etcd/clientv3/compare.go
+++ b/vendor/github.com/coreos/etcd/clientv3/compare.go
@@ -82,6 +82,24 @@ func ModRevision(key string) Cmp {
return Cmp{Key: []byte(key), Target: pb.Compare_MOD}
}
+// KeyBytes returns the byte slice holding with the comparison key.
+func (cmp *Cmp) KeyBytes() []byte { return cmp.Key }
+
+// WithKeyBytes sets the byte slice for the comparison key.
+func (cmp *Cmp) WithKeyBytes(key []byte) { cmp.Key = key }
+
+// ValueBytes returns the byte slice holding the comparison value, if any.
+func (cmp *Cmp) ValueBytes() []byte {
+ if tu, ok := cmp.TargetUnion.(*pb.Compare_Value); ok {
+ return tu.Value
+ }
+ return nil
+}
+
+// WithValueBytes sets the byte slice for the comparison's value.
+func (cmp *Cmp) WithValueBytes(v []byte) { cmp.TargetUnion.(*pb.Compare_Value).Value = v }
+
+// mustInt64 panics if val isn't an int or int64. It returns an int64 otherwise.
func mustInt64(val interface{}) int64 {
if v, ok := val.(int64); ok {
return v
@@ -91,3 +109,12 @@ func mustInt64(val interface{}) int64 {
}
panic("bad value")
}
+
+// mustInt64orLeaseID panics if val isn't a LeaseID, int or int64. It returns an
+// int64 otherwise.
+func mustInt64orLeaseID(val interface{}) int64 {
+ if v, ok := val.(LeaseID); ok {
+ return int64(v)
+ }
+ return mustInt64(val)
+}
diff --git a/vendor/github.com/cockroachdb/cmux/doc.go b/vendor/github.com/coreos/etcd/clientv3/concurrency/doc.go
similarity index 55%
rename from vendor/github.com/cockroachdb/cmux/doc.go
rename to vendor/github.com/coreos/etcd/clientv3/concurrency/doc.go
index aaa8f3158998..dcdbf511d1b1 100644
--- a/vendor/github.com/cockroachdb/cmux/doc.go
+++ b/vendor/github.com/coreos/etcd/clientv3/concurrency/doc.go
@@ -1,4 +1,4 @@
-// Copyright 2016 The CMux Authors. All rights reserved.
+// Copyright 2016 The etcd Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -8,11 +8,10 @@
//
// 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.
+// 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 cmux is a library to multiplex network connections based on
-// their payload. Using cmux, you can serve different protocols from the
-// same listener.
-package cmux
+// Package concurrency implements concurrency operations on top of
+// etcd such as distributed locks, barriers, and elections.
+package concurrency
diff --git a/vendor/github.com/coreos/etcd/clientv3/concurrency/election.go b/vendor/github.com/coreos/etcd/clientv3/concurrency/election.go
new file mode 100644
index 000000000000..c092bde0aeb6
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/concurrency/election.go
@@ -0,0 +1,246 @@
+// Copyright 2016 The etcd Authors
+//
+// 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 concurrency
+
+import (
+ "errors"
+ "fmt"
+
+ v3 "github.com/coreos/etcd/clientv3"
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+ "github.com/coreos/etcd/mvcc/mvccpb"
+
+ "golang.org/x/net/context"
+)
+
+var (
+ ErrElectionNotLeader = errors.New("election: not leader")
+ ErrElectionNoLeader = errors.New("election: no leader")
+)
+
+type Election struct {
+ session *Session
+
+ keyPrefix string
+
+ leaderKey string
+ leaderRev int64
+ leaderSession *Session
+ hdr *pb.ResponseHeader
+}
+
+// NewElection returns a new election on a given key prefix.
+func NewElection(s *Session, pfx string) *Election {
+ return &Election{session: s, keyPrefix: pfx + "/"}
+}
+
+// ResumeElection initializes an election with a known leader.
+func ResumeElection(s *Session, pfx string, leaderKey string, leaderRev int64) *Election {
+ return &Election{
+ session: s,
+ leaderKey: leaderKey,
+ leaderRev: leaderRev,
+ leaderSession: s,
+ }
+}
+
+// Campaign puts a value as eligible for the election. It blocks until
+// it is elected, an error occurs, or the context is cancelled.
+func (e *Election) Campaign(ctx context.Context, val string) error {
+ s := e.session
+ client := e.session.Client()
+
+ k := fmt.Sprintf("%s%x", e.keyPrefix, s.Lease())
+ txn := client.Txn(ctx).If(v3.Compare(v3.CreateRevision(k), "=", 0))
+ txn = txn.Then(v3.OpPut(k, val, v3.WithLease(s.Lease())))
+ txn = txn.Else(v3.OpGet(k))
+ resp, err := txn.Commit()
+ if err != nil {
+ return err
+ }
+ e.leaderKey, e.leaderRev, e.leaderSession = k, resp.Header.Revision, s
+ if !resp.Succeeded {
+ kv := resp.Responses[0].GetResponseRange().Kvs[0]
+ e.leaderRev = kv.CreateRevision
+ if string(kv.Value) != val {
+ if err = e.Proclaim(ctx, val); err != nil {
+ e.Resign(ctx)
+ return err
+ }
+ }
+ }
+
+ _, err = waitDeletes(ctx, client, e.keyPrefix, e.leaderRev-1)
+ if err != nil {
+ // clean up in case of context cancel
+ select {
+ case <-ctx.Done():
+ e.Resign(client.Ctx())
+ default:
+ e.leaderSession = nil
+ }
+ return err
+ }
+ e.hdr = resp.Header
+
+ return nil
+}
+
+// Proclaim lets the leader announce a new value without another election.
+func (e *Election) Proclaim(ctx context.Context, val string) error {
+ if e.leaderSession == nil {
+ return ErrElectionNotLeader
+ }
+ client := e.session.Client()
+ cmp := v3.Compare(v3.CreateRevision(e.leaderKey), "=", e.leaderRev)
+ txn := client.Txn(ctx).If(cmp)
+ txn = txn.Then(v3.OpPut(e.leaderKey, val, v3.WithLease(e.leaderSession.Lease())))
+ tresp, terr := txn.Commit()
+ if terr != nil {
+ return terr
+ }
+ if !tresp.Succeeded {
+ e.leaderKey = ""
+ return ErrElectionNotLeader
+ }
+
+ e.hdr = tresp.Header
+ return nil
+}
+
+// Resign lets a leader start a new election.
+func (e *Election) Resign(ctx context.Context) (err error) {
+ if e.leaderSession == nil {
+ return nil
+ }
+ client := e.session.Client()
+ cmp := v3.Compare(v3.CreateRevision(e.leaderKey), "=", e.leaderRev)
+ resp, err := client.Txn(ctx).If(cmp).Then(v3.OpDelete(e.leaderKey)).Commit()
+ if err == nil {
+ e.hdr = resp.Header
+ }
+ e.leaderKey = ""
+ e.leaderSession = nil
+ return err
+}
+
+// Leader returns the leader value for the current election.
+func (e *Election) Leader(ctx context.Context) (*v3.GetResponse, error) {
+ client := e.session.Client()
+ resp, err := client.Get(ctx, e.keyPrefix, v3.WithFirstCreate()...)
+ if err != nil {
+ return nil, err
+ } else if len(resp.Kvs) == 0 {
+ // no leader currently elected
+ return nil, ErrElectionNoLeader
+ }
+ return resp, nil
+}
+
+// Observe returns a channel that reliably observes ordered leader proposals
+// as GetResponse values on every current elected leader key. It will not
+// necessarily fetch all historical leader updates, but will always post the
+// most recent leader value.
+//
+// The channel closes when the context is canceled or the underlying watcher
+// is otherwise disrupted.
+func (e *Election) Observe(ctx context.Context) <-chan v3.GetResponse {
+ retc := make(chan v3.GetResponse)
+ go e.observe(ctx, retc)
+ return retc
+}
+
+func (e *Election) observe(ctx context.Context, ch chan<- v3.GetResponse) {
+ client := e.session.Client()
+
+ defer close(ch)
+ for {
+ resp, err := client.Get(ctx, e.keyPrefix, v3.WithFirstCreate()...)
+ if err != nil {
+ return
+ }
+
+ var kv *mvccpb.KeyValue
+ var hdr *pb.ResponseHeader
+
+ if len(resp.Kvs) == 0 {
+ cctx, cancel := context.WithCancel(ctx)
+ // wait for first key put on prefix
+ opts := []v3.OpOption{v3.WithRev(resp.Header.Revision), v3.WithPrefix()}
+ wch := client.Watch(cctx, e.keyPrefix, opts...)
+ for kv == nil {
+ wr, ok := <-wch
+ if !ok || wr.Err() != nil {
+ cancel()
+ return
+ }
+ // only accept puts; a delete will make observe() spin
+ for _, ev := range wr.Events {
+ if ev.Type == mvccpb.PUT {
+ hdr, kv = &wr.Header, ev.Kv
+ // may have multiple revs; hdr.rev = the last rev
+ // set to kv's rev in case batch has multiple Puts
+ hdr.Revision = kv.ModRevision
+ break
+ }
+ }
+ }
+ cancel()
+ } else {
+ hdr, kv = resp.Header, resp.Kvs[0]
+ }
+
+ select {
+ case ch <- v3.GetResponse{Header: hdr, Kvs: []*mvccpb.KeyValue{kv}}:
+ case <-ctx.Done():
+ return
+ }
+
+ cctx, cancel := context.WithCancel(ctx)
+ wch := client.Watch(cctx, string(kv.Key), v3.WithRev(hdr.Revision+1))
+ keyDeleted := false
+ for !keyDeleted {
+ wr, ok := <-wch
+ if !ok {
+ cancel()
+ return
+ }
+ for _, ev := range wr.Events {
+ if ev.Type == mvccpb.DELETE {
+ keyDeleted = true
+ break
+ }
+ resp.Header = &wr.Header
+ resp.Kvs = []*mvccpb.KeyValue{ev.Kv}
+ select {
+ case ch <- *resp:
+ case <-cctx.Done():
+ cancel()
+ return
+ }
+ }
+ }
+ cancel()
+ }
+}
+
+// Key returns the leader key if elected, empty string otherwise.
+func (e *Election) Key() string { return e.leaderKey }
+
+// Rev returns the leader key's creation revision, if elected.
+func (e *Election) Rev() int64 { return e.leaderRev }
+
+// Header is the response header from the last successful election proposal.
+func (e *Election) Header() *pb.ResponseHeader { return e.hdr }
diff --git a/vendor/github.com/coreos/etcd/clientv3/concurrency/key.go b/vendor/github.com/coreos/etcd/clientv3/concurrency/key.go
new file mode 100644
index 000000000000..9936737756ca
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/concurrency/key.go
@@ -0,0 +1,66 @@
+// Copyright 2016 The etcd Authors
+//
+// 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 concurrency
+
+import (
+ "fmt"
+
+ v3 "github.com/coreos/etcd/clientv3"
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+ "github.com/coreos/etcd/mvcc/mvccpb"
+
+ "golang.org/x/net/context"
+)
+
+func waitDelete(ctx context.Context, client *v3.Client, key string, rev int64) error {
+ cctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+
+ var wr v3.WatchResponse
+ wch := client.Watch(cctx, key, v3.WithRev(rev))
+ for wr = range wch {
+ for _, ev := range wr.Events {
+ if ev.Type == mvccpb.DELETE {
+ return nil
+ }
+ }
+ }
+ if err := wr.Err(); err != nil {
+ return err
+ }
+ if err := ctx.Err(); err != nil {
+ return err
+ }
+ return fmt.Errorf("lost watcher waiting for delete")
+}
+
+// waitDeletes efficiently waits until all keys matching the prefix and no greater
+// than the create revision.
+func waitDeletes(ctx context.Context, client *v3.Client, pfx string, maxCreateRev int64) (*pb.ResponseHeader, error) {
+ getOpts := append(v3.WithLastCreate(), v3.WithMaxCreateRev(maxCreateRev))
+ for {
+ resp, err := client.Get(ctx, pfx, getOpts...)
+ if err != nil {
+ return nil, err
+ }
+ if len(resp.Kvs) == 0 {
+ return resp.Header, nil
+ }
+ lastKey := string(resp.Kvs[0].Key)
+ if err = waitDelete(ctx, client, lastKey, resp.Header.Revision); err != nil {
+ return nil, err
+ }
+ }
+}
diff --git a/vendor/github.com/coreos/etcd/clientv3/concurrency/mutex.go b/vendor/github.com/coreos/etcd/clientv3/concurrency/mutex.go
new file mode 100644
index 000000000000..736a9d3d353f
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/concurrency/mutex.go
@@ -0,0 +1,119 @@
+// Copyright 2016 The etcd Authors
+//
+// 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 concurrency
+
+import (
+ "fmt"
+ "sync"
+
+ v3 "github.com/coreos/etcd/clientv3"
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
+ "golang.org/x/net/context"
+)
+
+// Mutex implements the sync Locker interface with etcd
+type Mutex struct {
+ s *Session
+
+ pfx string
+ myKey string
+ myRev int64
+ hdr *pb.ResponseHeader
+}
+
+func NewMutex(s *Session, pfx string) *Mutex {
+ return &Mutex{s, pfx + "/", "", -1, nil}
+}
+
+// Lock locks the mutex with a cancelable context. If the context is canceled
+// while trying to acquire the lock, the mutex tries to clean its stale lock entry.
+func (m *Mutex) Lock(ctx context.Context) error {
+ s := m.s
+ client := m.s.Client()
+
+ m.myKey = fmt.Sprintf("%s%x", m.pfx, s.Lease())
+ cmp := v3.Compare(v3.CreateRevision(m.myKey), "=", 0)
+ // put self in lock waiters via myKey; oldest waiter holds lock
+ put := v3.OpPut(m.myKey, "", v3.WithLease(s.Lease()))
+ // reuse key in case this session already holds the lock
+ get := v3.OpGet(m.myKey)
+ // fetch current holder to complete uncontended path with only one RPC
+ getOwner := v3.OpGet(m.pfx, v3.WithFirstCreate()...)
+ resp, err := client.Txn(ctx).If(cmp).Then(put, getOwner).Else(get, getOwner).Commit()
+ if err != nil {
+ return err
+ }
+ m.myRev = resp.Header.Revision
+ if !resp.Succeeded {
+ m.myRev = resp.Responses[0].GetResponseRange().Kvs[0].CreateRevision
+ }
+ // if no key on prefix / the minimum rev is key, already hold the lock
+ ownerKey := resp.Responses[1].GetResponseRange().Kvs
+ if len(ownerKey) == 0 || ownerKey[0].CreateRevision == m.myRev {
+ m.hdr = resp.Header
+ return nil
+ }
+
+ // wait for deletion revisions prior to myKey
+ hdr, werr := waitDeletes(ctx, client, m.pfx, m.myRev-1)
+ // release lock key if cancelled
+ select {
+ case <-ctx.Done():
+ m.Unlock(client.Ctx())
+ default:
+ m.hdr = hdr
+ }
+ return werr
+}
+
+func (m *Mutex) Unlock(ctx context.Context) error {
+ client := m.s.Client()
+ if _, err := client.Delete(ctx, m.myKey); err != nil {
+ return err
+ }
+ m.myKey = "\x00"
+ m.myRev = -1
+ return nil
+}
+
+func (m *Mutex) IsOwner() v3.Cmp {
+ return v3.Compare(v3.CreateRevision(m.myKey), "=", m.myRev)
+}
+
+func (m *Mutex) Key() string { return m.myKey }
+
+// Header is the response header received from etcd on acquiring the lock.
+func (m *Mutex) Header() *pb.ResponseHeader { return m.hdr }
+
+type lockerMutex struct{ *Mutex }
+
+func (lm *lockerMutex) Lock() {
+ client := lm.s.Client()
+ if err := lm.Mutex.Lock(client.Ctx()); err != nil {
+ panic(err)
+ }
+}
+func (lm *lockerMutex) Unlock() {
+ client := lm.s.Client()
+ if err := lm.Mutex.Unlock(client.Ctx()); err != nil {
+ panic(err)
+ }
+}
+
+// NewLocker creates a sync.Locker backed by an etcd mutex.
+func NewLocker(s *Session, pfx string) sync.Locker {
+ return &lockerMutex{NewMutex(s, pfx)}
+}
diff --git a/vendor/github.com/coreos/etcd/clientv3/concurrency/session.go b/vendor/github.com/coreos/etcd/clientv3/concurrency/session.go
new file mode 100644
index 000000000000..55cb553ea4ad
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/concurrency/session.go
@@ -0,0 +1,142 @@
+// Copyright 2016 The etcd Authors
+//
+// 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 concurrency
+
+import (
+ "time"
+
+ v3 "github.com/coreos/etcd/clientv3"
+
+ "golang.org/x/net/context"
+)
+
+const defaultSessionTTL = 60
+
+// Session represents a lease kept alive for the lifetime of a client.
+// Fault-tolerant applications may use sessions to reason about liveness.
+type Session struct {
+ client *v3.Client
+ opts *sessionOptions
+ id v3.LeaseID
+
+ cancel context.CancelFunc
+ donec <-chan struct{}
+}
+
+// NewSession gets the leased session for a client.
+func NewSession(client *v3.Client, opts ...SessionOption) (*Session, error) {
+ ops := &sessionOptions{ttl: defaultSessionTTL, ctx: client.Ctx()}
+ for _, opt := range opts {
+ opt(ops)
+ }
+
+ id := ops.leaseID
+ if id == v3.NoLease {
+ resp, err := client.Grant(ops.ctx, int64(ops.ttl))
+ if err != nil {
+ return nil, err
+ }
+ id = v3.LeaseID(resp.ID)
+ }
+
+ ctx, cancel := context.WithCancel(ops.ctx)
+ keepAlive, err := client.KeepAlive(ctx, id)
+ if err != nil || keepAlive == nil {
+ cancel()
+ return nil, err
+ }
+
+ donec := make(chan struct{})
+ s := &Session{client: client, opts: ops, id: id, cancel: cancel, donec: donec}
+
+ // keep the lease alive until client error or cancelled context
+ go func() {
+ defer close(donec)
+ for range keepAlive {
+ // eat messages until keep alive channel closes
+ }
+ }()
+
+ return s, nil
+}
+
+// Client is the etcd client that is attached to the session.
+func (s *Session) Client() *v3.Client {
+ return s.client
+}
+
+// Lease is the lease ID for keys bound to the session.
+func (s *Session) Lease() v3.LeaseID { return s.id }
+
+// Done returns a channel that closes when the lease is orphaned, expires, or
+// is otherwise no longer being refreshed.
+func (s *Session) Done() <-chan struct{} { return s.donec }
+
+// Orphan ends the refresh for the session lease. This is useful
+// in case the state of the client connection is indeterminate (revoke
+// would fail) or when transferring lease ownership.
+func (s *Session) Orphan() {
+ s.cancel()
+ <-s.donec
+}
+
+// Close orphans the session and revokes the session lease.
+func (s *Session) Close() error {
+ s.Orphan()
+ // if revoke takes longer than the ttl, lease is expired anyway
+ ctx, cancel := context.WithTimeout(s.opts.ctx, time.Duration(s.opts.ttl)*time.Second)
+ _, err := s.client.Revoke(ctx, s.id)
+ cancel()
+ return err
+}
+
+type sessionOptions struct {
+ ttl int
+ leaseID v3.LeaseID
+ ctx context.Context
+}
+
+// SessionOption configures Session.
+type SessionOption func(*sessionOptions)
+
+// WithTTL configures the session's TTL in seconds.
+// If TTL is <= 0, the default 60 seconds TTL will be used.
+func WithTTL(ttl int) SessionOption {
+ return func(so *sessionOptions) {
+ if ttl > 0 {
+ so.ttl = ttl
+ }
+ }
+}
+
+// WithLease specifies the existing leaseID to be used for the session.
+// This is useful in process restart scenario, for example, to reclaim
+// leadership from an election prior to restart.
+func WithLease(leaseID v3.LeaseID) SessionOption {
+ return func(so *sessionOptions) {
+ so.leaseID = leaseID
+ }
+}
+
+// WithContext assigns a context to the session instead of defaulting to
+// using the client context. This is useful for canceling NewSession and
+// Close operations immediately without having to close the client. If the
+// context is canceled before Close() completes, the session's lease will be
+// abandoned and left to expire instead of being revoked.
+func WithContext(ctx context.Context) SessionOption {
+ return func(so *sessionOptions) {
+ so.ctx = ctx
+ }
+}
diff --git a/vendor/github.com/coreos/etcd/clientv3/concurrency/stm.go b/vendor/github.com/coreos/etcd/clientv3/concurrency/stm.go
new file mode 100644
index 000000000000..6bfd70ec4286
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/concurrency/stm.go
@@ -0,0 +1,388 @@
+// Copyright 2016 The etcd Authors
+//
+// 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 concurrency
+
+import (
+ "math"
+
+ v3 "github.com/coreos/etcd/clientv3"
+
+ "golang.org/x/net/context"
+)
+
+// STM is an interface for software transactional memory.
+type STM interface {
+ // Get returns the value for a key and inserts the key in the txn's read set.
+ // If Get fails, it aborts the transaction with an error, never returning.
+ Get(key ...string) string
+ // Put adds a value for a key to the write set.
+ Put(key, val string, opts ...v3.OpOption)
+ // Rev returns the revision of a key in the read set.
+ Rev(key string) int64
+ // Del deletes a key.
+ Del(key string)
+
+ // commit attempts to apply the txn's changes to the server.
+ commit() *v3.TxnResponse
+ reset()
+}
+
+// Isolation is an enumeration of transactional isolation levels which
+// describes how transactions should interfere and conflict.
+type Isolation int
+
+const (
+ // SerializableSnapshot provides serializable isolation and also checks
+ // for write conflicts.
+ SerializableSnapshot Isolation = iota
+ // Serializable reads within the same transaction attempt return data
+ // from the at the revision of the first read.
+ Serializable
+ // RepeatableReads reads within the same transaction attempt always
+ // return the same data.
+ RepeatableReads
+ // ReadCommitted reads keys from any committed revision.
+ ReadCommitted
+)
+
+// stmError safely passes STM errors through panic to the STM error channel.
+type stmError struct{ err error }
+
+type stmOptions struct {
+ iso Isolation
+ ctx context.Context
+ prefetch []string
+}
+
+type stmOption func(*stmOptions)
+
+// WithIsolation specifies the transaction isolation level.
+func WithIsolation(lvl Isolation) stmOption {
+ return func(so *stmOptions) { so.iso = lvl }
+}
+
+// WithAbortContext specifies the context for permanently aborting the transaction.
+func WithAbortContext(ctx context.Context) stmOption {
+ return func(so *stmOptions) { so.ctx = ctx }
+}
+
+// WithPrefetch is a hint to prefetch a list of keys before trying to apply.
+// If an STM transaction will unconditionally fetch a set of keys, prefetching
+// those keys will save the round-trip cost from requesting each key one by one
+// with Get().
+func WithPrefetch(keys ...string) stmOption {
+ return func(so *stmOptions) { so.prefetch = append(so.prefetch, keys...) }
+}
+
+// NewSTM initiates a new STM instance, using serializable snapshot isolation by default.
+func NewSTM(c *v3.Client, apply func(STM) error, so ...stmOption) (*v3.TxnResponse, error) {
+ opts := &stmOptions{ctx: c.Ctx()}
+ for _, f := range so {
+ f(opts)
+ }
+ if len(opts.prefetch) != 0 {
+ f := apply
+ apply = func(s STM) error {
+ s.Get(opts.prefetch...)
+ return f(s)
+ }
+ }
+ return runSTM(mkSTM(c, opts), apply)
+}
+
+func mkSTM(c *v3.Client, opts *stmOptions) STM {
+ switch opts.iso {
+ case SerializableSnapshot:
+ s := &stmSerializable{
+ stm: stm{client: c, ctx: opts.ctx},
+ prefetch: make(map[string]*v3.GetResponse),
+ }
+ s.conflicts = func() []v3.Cmp {
+ return append(s.rset.cmps(), s.wset.cmps(s.rset.first()+1)...)
+ }
+ return s
+ case Serializable:
+ s := &stmSerializable{
+ stm: stm{client: c, ctx: opts.ctx},
+ prefetch: make(map[string]*v3.GetResponse),
+ }
+ s.conflicts = func() []v3.Cmp { return s.rset.cmps() }
+ return s
+ case RepeatableReads:
+ s := &stm{client: c, ctx: opts.ctx, getOpts: []v3.OpOption{v3.WithSerializable()}}
+ s.conflicts = func() []v3.Cmp { return s.rset.cmps() }
+ return s
+ case ReadCommitted:
+ s := &stm{client: c, ctx: opts.ctx, getOpts: []v3.OpOption{v3.WithSerializable()}}
+ s.conflicts = func() []v3.Cmp { return nil }
+ return s
+ default:
+ panic("unsupported stm")
+ }
+}
+
+type stmResponse struct {
+ resp *v3.TxnResponse
+ err error
+}
+
+func runSTM(s STM, apply func(STM) error) (*v3.TxnResponse, error) {
+ outc := make(chan stmResponse, 1)
+ go func() {
+ defer func() {
+ if r := recover(); r != nil {
+ e, ok := r.(stmError)
+ if !ok {
+ // client apply panicked
+ panic(r)
+ }
+ outc <- stmResponse{nil, e.err}
+ }
+ }()
+ var out stmResponse
+ for {
+ s.reset()
+ if out.err = apply(s); out.err != nil {
+ break
+ }
+ if out.resp = s.commit(); out.resp != nil {
+ break
+ }
+ }
+ outc <- out
+ }()
+ r := <-outc
+ return r.resp, r.err
+}
+
+// stm implements repeatable-read software transactional memory over etcd
+type stm struct {
+ client *v3.Client
+ ctx context.Context
+ // rset holds read key values and revisions
+ rset readSet
+ // wset holds overwritten keys and their values
+ wset writeSet
+ // getOpts are the opts used for gets
+ getOpts []v3.OpOption
+ // conflicts computes the current conflicts on the txn
+ conflicts func() []v3.Cmp
+}
+
+type stmPut struct {
+ val string
+ op v3.Op
+}
+
+type readSet map[string]*v3.GetResponse
+
+func (rs readSet) add(keys []string, txnresp *v3.TxnResponse) {
+ for i, resp := range txnresp.Responses {
+ rs[keys[i]] = (*v3.GetResponse)(resp.GetResponseRange())
+ }
+}
+
+// first returns the store revision from the first fetch
+func (rs readSet) first() int64 {
+ ret := int64(math.MaxInt64 - 1)
+ for _, resp := range rs {
+ if rev := resp.Header.Revision; rev < ret {
+ ret = rev
+ }
+ }
+ return ret
+}
+
+// cmps guards the txn from updates to read set
+func (rs readSet) cmps() []v3.Cmp {
+ cmps := make([]v3.Cmp, 0, len(rs))
+ for k, rk := range rs {
+ cmps = append(cmps, isKeyCurrent(k, rk))
+ }
+ return cmps
+}
+
+type writeSet map[string]stmPut
+
+func (ws writeSet) get(keys ...string) *stmPut {
+ for _, key := range keys {
+ if wv, ok := ws[key]; ok {
+ return &wv
+ }
+ }
+ return nil
+}
+
+// cmps returns a cmp list testing no writes have happened past rev
+func (ws writeSet) cmps(rev int64) []v3.Cmp {
+ cmps := make([]v3.Cmp, 0, len(ws))
+ for key := range ws {
+ cmps = append(cmps, v3.Compare(v3.ModRevision(key), "<", rev))
+ }
+ return cmps
+}
+
+// puts is the list of ops for all pending writes
+func (ws writeSet) puts() []v3.Op {
+ puts := make([]v3.Op, 0, len(ws))
+ for _, v := range ws {
+ puts = append(puts, v.op)
+ }
+ return puts
+}
+
+func (s *stm) Get(keys ...string) string {
+ if wv := s.wset.get(keys...); wv != nil {
+ return wv.val
+ }
+ return respToValue(s.fetch(keys...))
+}
+
+func (s *stm) Put(key, val string, opts ...v3.OpOption) {
+ s.wset[key] = stmPut{val, v3.OpPut(key, val, opts...)}
+}
+
+func (s *stm) Del(key string) { s.wset[key] = stmPut{"", v3.OpDelete(key)} }
+
+func (s *stm) Rev(key string) int64 {
+ if resp := s.fetch(key); resp != nil && len(resp.Kvs) != 0 {
+ return resp.Kvs[0].ModRevision
+ }
+ return 0
+}
+
+func (s *stm) commit() *v3.TxnResponse {
+ txnresp, err := s.client.Txn(s.ctx).If(s.conflicts()...).Then(s.wset.puts()...).Commit()
+ if err != nil {
+ panic(stmError{err})
+ }
+ if txnresp.Succeeded {
+ return txnresp
+ }
+ return nil
+}
+
+func (s *stm) fetch(keys ...string) *v3.GetResponse {
+ if len(keys) == 0 {
+ return nil
+ }
+ ops := make([]v3.Op, len(keys))
+ for i, key := range keys {
+ if resp, ok := s.rset[key]; ok {
+ return resp
+ }
+ ops[i] = v3.OpGet(key, s.getOpts...)
+ }
+ txnresp, err := s.client.Txn(s.ctx).Then(ops...).Commit()
+ if err != nil {
+ panic(stmError{err})
+ }
+ s.rset.add(keys, txnresp)
+ return (*v3.GetResponse)(txnresp.Responses[0].GetResponseRange())
+}
+
+func (s *stm) reset() {
+ s.rset = make(map[string]*v3.GetResponse)
+ s.wset = make(map[string]stmPut)
+}
+
+type stmSerializable struct {
+ stm
+ prefetch map[string]*v3.GetResponse
+}
+
+func (s *stmSerializable) Get(keys ...string) string {
+ if wv := s.wset.get(keys...); wv != nil {
+ return wv.val
+ }
+ firstRead := len(s.rset) == 0
+ for _, key := range keys {
+ if resp, ok := s.prefetch[key]; ok {
+ delete(s.prefetch, key)
+ s.rset[key] = resp
+ }
+ }
+ resp := s.stm.fetch(keys...)
+ if firstRead {
+ // txn's base revision is defined by the first read
+ s.getOpts = []v3.OpOption{
+ v3.WithRev(resp.Header.Revision),
+ v3.WithSerializable(),
+ }
+ }
+ return respToValue(resp)
+}
+
+func (s *stmSerializable) Rev(key string) int64 {
+ s.Get(key)
+ return s.stm.Rev(key)
+}
+
+func (s *stmSerializable) gets() ([]string, []v3.Op) {
+ keys := make([]string, 0, len(s.rset))
+ ops := make([]v3.Op, 0, len(s.rset))
+ for k := range s.rset {
+ keys = append(keys, k)
+ ops = append(ops, v3.OpGet(k))
+ }
+ return keys, ops
+}
+
+func (s *stmSerializable) commit() *v3.TxnResponse {
+ keys, getops := s.gets()
+ txn := s.client.Txn(s.ctx).If(s.conflicts()...).Then(s.wset.puts()...)
+ // use Else to prefetch keys in case of conflict to save a round trip
+ txnresp, err := txn.Else(getops...).Commit()
+ if err != nil {
+ panic(stmError{err})
+ }
+ if txnresp.Succeeded {
+ return txnresp
+ }
+ // load prefetch with Else data
+ s.rset.add(keys, txnresp)
+ s.prefetch = s.rset
+ s.getOpts = nil
+ return nil
+}
+
+func isKeyCurrent(k string, r *v3.GetResponse) v3.Cmp {
+ if len(r.Kvs) != 0 {
+ return v3.Compare(v3.ModRevision(k), "=", r.Kvs[0].ModRevision)
+ }
+ return v3.Compare(v3.ModRevision(k), "=", 0)
+}
+
+func respToValue(resp *v3.GetResponse) string {
+ if resp == nil || len(resp.Kvs) == 0 {
+ return ""
+ }
+ return string(resp.Kvs[0].Value)
+}
+
+// NewSTMRepeatable is deprecated.
+func NewSTMRepeatable(ctx context.Context, c *v3.Client, apply func(STM) error) (*v3.TxnResponse, error) {
+ return NewSTM(c, apply, WithAbortContext(ctx), WithIsolation(RepeatableReads))
+}
+
+// NewSTMSerializable is deprecated.
+func NewSTMSerializable(ctx context.Context, c *v3.Client, apply func(STM) error) (*v3.TxnResponse, error) {
+ return NewSTM(c, apply, WithAbortContext(ctx), WithIsolation(Serializable))
+}
+
+// NewSTMReadCommitted is deprecated.
+func NewSTMReadCommitted(ctx context.Context, c *v3.Client, apply func(STM) error) (*v3.TxnResponse, error) {
+ return NewSTM(c, apply, WithAbortContext(ctx), WithIsolation(ReadCommitted))
+}
diff --git a/vendor/github.com/coreos/etcd/clientv3/config.go b/vendor/github.com/coreos/etcd/clientv3/config.go
index d1d5f40906a1..fee12eaf60bb 100644
--- a/vendor/github.com/coreos/etcd/clientv3/config.go
+++ b/vendor/github.com/coreos/etcd/clientv3/config.go
@@ -16,98 +16,60 @@ package clientv3
import (
"crypto/tls"
- "crypto/x509"
- "io/ioutil"
"time"
- "github.com/coreos/etcd/pkg/tlsutil"
- "github.com/ghodss/yaml"
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
)
type Config struct {
- // Endpoints is a list of URLs
- Endpoints []string
+ // Endpoints is a list of URLs.
+ Endpoints []string `json:"endpoints"`
// AutoSyncInterval is the interval to update endpoints with its latest members.
// 0 disables auto-sync. By default auto-sync is disabled.
- AutoSyncInterval time.Duration
+ AutoSyncInterval time.Duration `json:"auto-sync-interval"`
// DialTimeout is the timeout for failing to establish a connection.
- DialTimeout time.Duration
+ DialTimeout time.Duration `json:"dial-timeout"`
+
+ // DialKeepAliveTime is the time in seconds after which client pings the server to see if
+ // transport is alive.
+ DialKeepAliveTime time.Duration `json:"dial-keep-alive-time"`
+
+ // DialKeepAliveTimeout is the time in seconds that the client waits for a response for the
+ // keep-alive probe. If the response is not received in this time, the connection is closed.
+ DialKeepAliveTimeout time.Duration `json:"dial-keep-alive-timeout"`
+
+ // MaxCallSendMsgSize is the client-side request send limit in bytes.
+ // If 0, it defaults to 2.0 MiB (2 * 1024 * 1024).
+ // Make sure that "MaxCallSendMsgSize" < server-side default send/recv limit.
+ // ("--max-request-bytes" flag to etcd or "embed.Config.MaxRequestBytes").
+ MaxCallSendMsgSize int
+
+ // MaxCallRecvMsgSize is the client-side response receive limit.
+ // If 0, it defaults to "math.MaxInt32", because range response can
+ // easily exceed request send limits.
+ // Make sure that "MaxCallRecvMsgSize" >= server-side default send/recv limit.
+ // ("--max-request-bytes" flag to etcd or "embed.Config.MaxRequestBytes").
+ MaxCallRecvMsgSize int
// TLS holds the client secure credentials, if any.
TLS *tls.Config
- // Username is a username for authentication
- Username string
+ // Username is a user name for authentication.
+ Username string `json:"username"`
- // Password is a password for authentication
- Password string
-}
+ // Password is a password for authentication.
+ Password string `json:"password"`
-type yamlConfig struct {
- Endpoints []string `json:"endpoints"`
- AutoSyncInterval time.Duration `json:"auto-sync-interval"`
- DialTimeout time.Duration `json:"dial-timeout"`
- InsecureTransport bool `json:"insecure-transport"`
- InsecureSkipTLSVerify bool `json:"insecure-skip-tls-verify"`
- Certfile string `json:"cert-file"`
- Keyfile string `json:"key-file"`
- CAfile string `json:"ca-file"`
-}
+ // RejectOldCluster when set will refuse to create a client against an outdated cluster.
+ RejectOldCluster bool `json:"reject-old-cluster"`
+
+ // DialOptions is a list of dial options for the grpc client (e.g., for interceptors).
+ DialOptions []grpc.DialOption
-func configFromFile(fpath string) (*Config, error) {
- b, err := ioutil.ReadFile(fpath)
- if err != nil {
- return nil, err
- }
-
- yc := &yamlConfig{}
-
- err = yaml.Unmarshal(b, yc)
- if err != nil {
- return nil, err
- }
-
- cfg := &Config{
- Endpoints: yc.Endpoints,
- AutoSyncInterval: yc.AutoSyncInterval,
- DialTimeout: yc.DialTimeout,
- }
-
- if yc.InsecureTransport {
- cfg.TLS = nil
- return cfg, nil
- }
-
- var (
- cert *tls.Certificate
- cp *x509.CertPool
- )
-
- if yc.Certfile != "" && yc.Keyfile != "" {
- cert, err = tlsutil.NewCert(yc.Certfile, yc.Keyfile, nil)
- if err != nil {
- return nil, err
- }
- }
-
- if yc.CAfile != "" {
- cp, err = tlsutil.NewCertPool([]string{yc.CAfile})
- if err != nil {
- return nil, err
- }
- }
-
- tlscfg := &tls.Config{
- MinVersion: tls.VersionTLS10,
- InsecureSkipVerify: yc.InsecureSkipTLSVerify,
- RootCAs: cp,
- }
- if cert != nil {
- tlscfg.Certificates = []tls.Certificate{*cert}
- }
- cfg.TLS = tlscfg
-
- return cfg, nil
+ // Context is the default client context; it can be used to cancel grpc dial out and
+ // other operations that do not have an explicit context.
+ Context context.Context
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/doc.go b/vendor/github.com/coreos/etcd/clientv3/doc.go
index 470ca4dc4769..dacc5bb346fc 100644
--- a/vendor/github.com/coreos/etcd/clientv3/doc.go
+++ b/vendor/github.com/coreos/etcd/clientv3/doc.go
@@ -28,7 +28,7 @@
// Make sure to close the client after using it. If the client is not closed, the
// connection will have leaky goroutines.
//
-// To specify client request timeout, pass context.WithTimeout to APIs:
+// To specify a client request timeout, wrap the context with context.WithTimeout:
//
// ctx, cancel := context.WithTimeout(context.Background(), timeout)
// resp, err := kvc.Put(ctx, "sample_key", "sample_value")
diff --git a/vendor/github.com/coreos/etcd/clientv3/grpc_options.go b/vendor/github.com/coreos/etcd/clientv3/grpc_options.go
new file mode 100644
index 000000000000..592dd6993cf6
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/grpc_options.go
@@ -0,0 +1,46 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 clientv3
+
+import (
+ "math"
+
+ "google.golang.org/grpc"
+)
+
+var (
+ // Disable gRPC internal retrial logic
+ // TODO: enable when gRPC retry is stable (FailFast=false)
+ // Reference:
+ // - https://github.com/grpc/grpc-go/issues/1532
+ // - https://github.com/grpc/proposal/blob/master/A6-client-retries.md
+ defaultFailFast = grpc.FailFast(true)
+
+ // client-side request send limit, gRPC default is math.MaxInt32
+ // Make sure that "client-side send limit < server-side default send/recv limit"
+ // Same value as "embed.DefaultMaxRequestBytes" plus gRPC overhead bytes
+ defaultMaxCallSendMsgSize = grpc.MaxCallSendMsgSize(2 * 1024 * 1024)
+
+ // client-side response receive limit, gRPC default is 4MB
+ // Make sure that "client-side receive limit >= server-side default send/recv limit"
+ // because range response can easily exceed request send limits
+ // Default to math.MaxInt32; writes exceeding server-side send limit fails anyway
+ defaultMaxCallRecvMsgSize = grpc.MaxCallRecvMsgSize(math.MaxInt32)
+)
+
+// defaultCallOpts defines a list of default "gRPC.CallOption".
+// Some options are exposed to "clientv3.Config".
+// Defaults will be overridden by the settings in "clientv3.Config".
+var defaultCallOpts = []grpc.CallOption{defaultFailFast, defaultMaxCallSendMsgSize, defaultMaxCallRecvMsgSize}
diff --git a/vendor/github.com/coreos/etcd/clientv3/health_balancer.go b/vendor/github.com/coreos/etcd/clientv3/health_balancer.go
new file mode 100644
index 000000000000..52bea90e66ed
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/health_balancer.go
@@ -0,0 +1,627 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 clientv3
+
+import (
+ "errors"
+ "net/url"
+ "strings"
+ "sync"
+ "time"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ healthpb "google.golang.org/grpc/health/grpc_health_v1"
+ "google.golang.org/grpc/status"
+)
+
+const (
+ minHealthRetryDuration = 3 * time.Second
+ unknownService = "unknown service grpc.health.v1.Health"
+)
+
+// ErrNoAddrAvilable is returned by Get() when the balancer does not have
+// any active connection to endpoints at the time.
+// This error is returned only when opts.BlockingWait is true.
+var ErrNoAddrAvilable = status.Error(codes.Unavailable, "there is no address available")
+
+type healthCheckFunc func(ep string) (bool, error)
+
+type notifyMsg int
+
+const (
+ notifyReset notifyMsg = iota
+ notifyNext
+)
+
+// healthBalancer does the bare minimum to expose multiple eps
+// to the grpc reconnection code path
+type healthBalancer struct {
+ // addrs are the client's endpoint addresses for grpc
+ addrs []grpc.Address
+
+ // eps holds the raw endpoints from the client
+ eps []string
+
+ // notifyCh notifies grpc of the set of addresses for connecting
+ notifyCh chan []grpc.Address
+
+ // readyc closes once the first connection is up
+ readyc chan struct{}
+ readyOnce sync.Once
+
+ // healthCheck checks an endpoint's health.
+ healthCheck healthCheckFunc
+ healthCheckTimeout time.Duration
+
+ unhealthyMu sync.RWMutex
+ unhealthyHostPorts map[string]time.Time
+
+ // mu protects all fields below.
+ mu sync.RWMutex
+
+ // upc closes when pinAddr transitions from empty to non-empty or the balancer closes.
+ upc chan struct{}
+
+ // downc closes when grpc calls down() on pinAddr
+ downc chan struct{}
+
+ // stopc is closed to signal updateNotifyLoop should stop.
+ stopc chan struct{}
+ stopOnce sync.Once
+ wg sync.WaitGroup
+
+ // donec closes when all goroutines are exited
+ donec chan struct{}
+
+ // updateAddrsC notifies updateNotifyLoop to update addrs.
+ updateAddrsC chan notifyMsg
+
+ // grpc issues TLS cert checks using the string passed into dial so
+ // that string must be the host. To recover the full scheme://host URL,
+ // have a map from hosts to the original endpoint.
+ hostPort2ep map[string]string
+
+ // pinAddr is the currently pinned address; set to the empty string on
+ // initialization and shutdown.
+ pinAddr string
+
+ closed bool
+}
+
+func newHealthBalancer(eps []string, timeout time.Duration, hc healthCheckFunc) *healthBalancer {
+ notifyCh := make(chan []grpc.Address)
+ addrs := eps2addrs(eps)
+ hb := &healthBalancer{
+ addrs: addrs,
+ eps: eps,
+ notifyCh: notifyCh,
+ readyc: make(chan struct{}),
+ healthCheck: hc,
+ unhealthyHostPorts: make(map[string]time.Time),
+ upc: make(chan struct{}),
+ stopc: make(chan struct{}),
+ downc: make(chan struct{}),
+ donec: make(chan struct{}),
+ updateAddrsC: make(chan notifyMsg),
+ hostPort2ep: getHostPort2ep(eps),
+ }
+ if timeout < minHealthRetryDuration {
+ timeout = minHealthRetryDuration
+ }
+ hb.healthCheckTimeout = timeout
+
+ close(hb.downc)
+ go hb.updateNotifyLoop()
+ hb.wg.Add(1)
+ go func() {
+ defer hb.wg.Done()
+ hb.updateUnhealthy()
+ }()
+ return hb
+}
+
+func (b *healthBalancer) Start(target string, config grpc.BalancerConfig) error { return nil }
+
+func (b *healthBalancer) ConnectNotify() <-chan struct{} {
+ b.mu.Lock()
+ defer b.mu.Unlock()
+ return b.upc
+}
+
+func (b *healthBalancer) ready() <-chan struct{} { return b.readyc }
+
+func (b *healthBalancer) endpoint(hostPort string) string {
+ b.mu.RLock()
+ defer b.mu.RUnlock()
+ return b.hostPort2ep[hostPort]
+}
+
+func (b *healthBalancer) pinned() string {
+ b.mu.RLock()
+ defer b.mu.RUnlock()
+ return b.pinAddr
+}
+
+func (b *healthBalancer) hostPortError(hostPort string, err error) {
+ if b.endpoint(hostPort) == "" {
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: %q is stale (skip marking as unhealthy on %q)", hostPort, err.Error())
+ }
+ return
+ }
+
+ b.unhealthyMu.Lock()
+ b.unhealthyHostPorts[hostPort] = time.Now()
+ b.unhealthyMu.Unlock()
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: %q is marked unhealthy (%q)", hostPort, err.Error())
+ }
+}
+
+func (b *healthBalancer) removeUnhealthy(hostPort, msg string) {
+ if b.endpoint(hostPort) == "" {
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: %q was not in unhealthy (%q)", hostPort, msg)
+ }
+ return
+ }
+
+ b.unhealthyMu.Lock()
+ delete(b.unhealthyHostPorts, hostPort)
+ b.unhealthyMu.Unlock()
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: %q is removed from unhealthy (%q)", hostPort, msg)
+ }
+}
+
+func (b *healthBalancer) countUnhealthy() (count int) {
+ b.unhealthyMu.RLock()
+ count = len(b.unhealthyHostPorts)
+ b.unhealthyMu.RUnlock()
+ return count
+}
+
+func (b *healthBalancer) isUnhealthy(hostPort string) (unhealthy bool) {
+ b.unhealthyMu.RLock()
+ _, unhealthy = b.unhealthyHostPorts[hostPort]
+ b.unhealthyMu.RUnlock()
+ return unhealthy
+}
+
+func (b *healthBalancer) cleanupUnhealthy() {
+ b.unhealthyMu.Lock()
+ for k, v := range b.unhealthyHostPorts {
+ if time.Since(v) > b.healthCheckTimeout {
+ delete(b.unhealthyHostPorts, k)
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: removed %q from unhealthy after %v", k, b.healthCheckTimeout)
+ }
+ }
+ }
+ b.unhealthyMu.Unlock()
+}
+
+func (b *healthBalancer) liveAddrs() ([]grpc.Address, map[string]struct{}) {
+ unhealthyCnt := b.countUnhealthy()
+
+ b.mu.RLock()
+ defer b.mu.RUnlock()
+
+ hbAddrs := b.addrs
+ if len(b.addrs) == 1 || unhealthyCnt == 0 || unhealthyCnt == len(b.addrs) {
+ liveHostPorts := make(map[string]struct{}, len(b.hostPort2ep))
+ for k := range b.hostPort2ep {
+ liveHostPorts[k] = struct{}{}
+ }
+ return hbAddrs, liveHostPorts
+ }
+
+ addrs := make([]grpc.Address, 0, len(b.addrs)-unhealthyCnt)
+ liveHostPorts := make(map[string]struct{}, len(addrs))
+ for _, addr := range b.addrs {
+ if !b.isUnhealthy(addr.Addr) {
+ addrs = append(addrs, addr)
+ liveHostPorts[addr.Addr] = struct{}{}
+ }
+ }
+ return addrs, liveHostPorts
+}
+
+func (b *healthBalancer) updateUnhealthy() {
+ for {
+ select {
+ case <-time.After(b.healthCheckTimeout):
+ b.cleanupUnhealthy()
+ pinned := b.pinned()
+ if pinned == "" || b.isUnhealthy(pinned) {
+ select {
+ case b.updateAddrsC <- notifyNext:
+ case <-b.stopc:
+ return
+ }
+ }
+ case <-b.stopc:
+ return
+ }
+ }
+}
+
+func (b *healthBalancer) updateAddrs(eps ...string) {
+ np := getHostPort2ep(eps)
+
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ match := len(np) == len(b.hostPort2ep)
+ if match {
+ for k, v := range np {
+ if b.hostPort2ep[k] != v {
+ match = false
+ break
+ }
+ }
+ }
+ if match {
+ // same endpoints, so no need to update address
+ return
+ }
+
+ b.hostPort2ep = np
+ b.addrs, b.eps = eps2addrs(eps), eps
+
+ b.unhealthyMu.Lock()
+ b.unhealthyHostPorts = make(map[string]time.Time)
+ b.unhealthyMu.Unlock()
+}
+
+func (b *healthBalancer) next() {
+ b.mu.RLock()
+ downc := b.downc
+ b.mu.RUnlock()
+ select {
+ case b.updateAddrsC <- notifyNext:
+ case <-b.stopc:
+ }
+ // wait until disconnect so new RPCs are not issued on old connection
+ select {
+ case <-downc:
+ case <-b.stopc:
+ }
+}
+
+func (b *healthBalancer) updateNotifyLoop() {
+ defer close(b.donec)
+
+ for {
+ b.mu.RLock()
+ upc, downc, addr := b.upc, b.downc, b.pinAddr
+ b.mu.RUnlock()
+ // downc or upc should be closed
+ select {
+ case <-downc:
+ downc = nil
+ default:
+ }
+ select {
+ case <-upc:
+ upc = nil
+ default:
+ }
+ switch {
+ case downc == nil && upc == nil:
+ // stale
+ select {
+ case <-b.stopc:
+ return
+ default:
+ }
+ case downc == nil:
+ b.notifyAddrs(notifyReset)
+ select {
+ case <-upc:
+ case msg := <-b.updateAddrsC:
+ b.notifyAddrs(msg)
+ case <-b.stopc:
+ return
+ }
+ case upc == nil:
+ select {
+ // close connections that are not the pinned address
+ case b.notifyCh <- []grpc.Address{{Addr: addr}}:
+ case <-downc:
+ case <-b.stopc:
+ return
+ }
+ select {
+ case <-downc:
+ b.notifyAddrs(notifyReset)
+ case msg := <-b.updateAddrsC:
+ b.notifyAddrs(msg)
+ case <-b.stopc:
+ return
+ }
+ }
+ }
+}
+
+func (b *healthBalancer) notifyAddrs(msg notifyMsg) {
+ if msg == notifyNext {
+ select {
+ case b.notifyCh <- []grpc.Address{}:
+ case <-b.stopc:
+ return
+ }
+ }
+ b.mu.RLock()
+ pinAddr := b.pinAddr
+ downc := b.downc
+ b.mu.RUnlock()
+ addrs, hostPorts := b.liveAddrs()
+
+ var waitDown bool
+ if pinAddr != "" {
+ _, ok := hostPorts[pinAddr]
+ waitDown = !ok
+ }
+
+ select {
+ case b.notifyCh <- addrs:
+ if waitDown {
+ select {
+ case <-downc:
+ case <-b.stopc:
+ }
+ }
+ case <-b.stopc:
+ }
+}
+
+func (b *healthBalancer) Up(addr grpc.Address) func(error) {
+ if !b.mayPin(addr) {
+ return func(err error) {}
+ }
+
+ b.mu.Lock()
+ defer b.mu.Unlock()
+
+ // gRPC might call Up after it called Close. We add this check
+ // to "fix" it up at application layer. Otherwise, will panic
+ // if b.upc is already closed.
+ if b.closed {
+ return func(err error) {}
+ }
+
+ // gRPC might call Up on a stale address.
+ // Prevent updating pinAddr with a stale address.
+ if !hasAddr(b.addrs, addr.Addr) {
+ return func(err error) {}
+ }
+
+ if b.pinAddr != "" {
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: %q is up but not pinned (already pinned %q)", addr.Addr, b.pinAddr)
+ }
+ return func(err error) {}
+ }
+
+ // notify waiting Get()s and pin first connected address
+ close(b.upc)
+ b.downc = make(chan struct{})
+ b.pinAddr = addr.Addr
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: pin %q", addr.Addr)
+ }
+
+ // notify client that a connection is up
+ b.readyOnce.Do(func() { close(b.readyc) })
+
+ return func(err error) {
+ // If connected to a black hole endpoint or a killed server, the gRPC ping
+ // timeout will induce a network I/O error, and retrying until success;
+ // finding healthy endpoint on retry could take several timeouts and redials.
+ // To avoid wasting retries, gray-list unhealthy endpoints.
+ b.hostPortError(addr.Addr, err)
+
+ b.mu.Lock()
+ b.upc = make(chan struct{})
+ close(b.downc)
+ b.pinAddr = ""
+ b.mu.Unlock()
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: unpin %q (%q)", addr.Addr, err.Error())
+ }
+ }
+}
+
+func (b *healthBalancer) mayPin(addr grpc.Address) bool {
+ if b.endpoint(addr.Addr) == "" { // stale host:port
+ return false
+ }
+
+ b.unhealthyMu.RLock()
+ unhealthyCnt := len(b.unhealthyHostPorts)
+ failedTime, bad := b.unhealthyHostPorts[addr.Addr]
+ b.unhealthyMu.RUnlock()
+
+ b.mu.RLock()
+ skip := len(b.addrs) == 1 || unhealthyCnt == 0 || len(b.addrs) == unhealthyCnt
+ b.mu.RUnlock()
+ if skip || !bad {
+ return true
+ }
+
+ // prevent isolated member's endpoint from being infinitely retried, as follows:
+ // 1. keepalive pings detects GoAway with http2.ErrCodeEnhanceYourCalm
+ // 2. balancer 'Up' unpins with grpc: failed with network I/O error
+ // 3. grpc-healthcheck still SERVING, thus retry to pin
+ // instead, return before grpc-healthcheck if failed within healthcheck timeout
+ if elapsed := time.Since(failedTime); elapsed < b.healthCheckTimeout {
+ if logger.V(4) {
+ logger.Infof("clientv3/balancer: %q is up but not pinned (failed %v ago, require minimum %v after failure)", addr.Addr, elapsed, b.healthCheckTimeout)
+ }
+ return false
+ }
+
+ if ok, _ := b.healthCheck(addr.Addr); ok {
+ b.removeUnhealthy(addr.Addr, "health check success")
+ return true
+ }
+
+ b.hostPortError(addr.Addr, errors.New("health check failed"))
+ return false
+}
+
+func (b *healthBalancer) Get(ctx context.Context, opts grpc.BalancerGetOptions) (grpc.Address, func(), error) {
+ var (
+ addr string
+ closed bool
+ )
+
+ // If opts.BlockingWait is false (for fail-fast RPCs), it should return
+ // an address it has notified via Notify immediately instead of blocking.
+ if !opts.BlockingWait {
+ b.mu.RLock()
+ closed = b.closed
+ addr = b.pinAddr
+ b.mu.RUnlock()
+ if closed {
+ return grpc.Address{Addr: ""}, nil, grpc.ErrClientConnClosing
+ }
+ if addr == "" {
+ return grpc.Address{Addr: ""}, nil, ErrNoAddrAvilable
+ }
+ return grpc.Address{Addr: addr}, func() {}, nil
+ }
+
+ for {
+ b.mu.RLock()
+ ch := b.upc
+ b.mu.RUnlock()
+ select {
+ case <-ch:
+ case <-b.donec:
+ return grpc.Address{Addr: ""}, nil, grpc.ErrClientConnClosing
+ case <-ctx.Done():
+ return grpc.Address{Addr: ""}, nil, ctx.Err()
+ }
+ b.mu.RLock()
+ closed = b.closed
+ addr = b.pinAddr
+ b.mu.RUnlock()
+ // Close() which sets b.closed = true can be called before Get(), Get() must exit if balancer is closed.
+ if closed {
+ return grpc.Address{Addr: ""}, nil, grpc.ErrClientConnClosing
+ }
+ if addr != "" {
+ break
+ }
+ }
+ return grpc.Address{Addr: addr}, func() {}, nil
+}
+
+func (b *healthBalancer) Notify() <-chan []grpc.Address { return b.notifyCh }
+
+func (b *healthBalancer) Close() error {
+ b.mu.Lock()
+ // In case gRPC calls close twice. TODO: remove the checking
+ // when we are sure that gRPC wont call close twice.
+ if b.closed {
+ b.mu.Unlock()
+ <-b.donec
+ return nil
+ }
+ b.closed = true
+ b.stopOnce.Do(func() { close(b.stopc) })
+ b.pinAddr = ""
+
+ // In the case of following scenario:
+ // 1. upc is not closed; no pinned address
+ // 2. client issues an RPC, calling invoke(), which calls Get(), enters for loop, blocks
+ // 3. client.conn.Close() calls balancer.Close(); closed = true
+ // 4. for loop in Get() never exits since ctx is the context passed in by the client and may not be canceled
+ // we must close upc so Get() exits from blocking on upc
+ select {
+ case <-b.upc:
+ default:
+ // terminate all waiting Get()s
+ close(b.upc)
+ }
+
+ b.mu.Unlock()
+ b.wg.Wait()
+
+ // wait for updateNotifyLoop to finish
+ <-b.donec
+ close(b.notifyCh)
+
+ return nil
+}
+
+func grpcHealthCheck(client *Client, ep string) (bool, error) {
+ conn, err := client.dial(ep)
+ if err != nil {
+ return false, err
+ }
+ defer conn.Close()
+ cli := healthpb.NewHealthClient(conn)
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+ resp, err := cli.Check(ctx, &healthpb.HealthCheckRequest{})
+ cancel()
+ if err != nil {
+ if s, ok := status.FromError(err); ok && s.Code() == codes.Unavailable {
+ if s.Message() == unknownService { // etcd < v3.3.0
+ return true, nil
+ }
+ }
+ return false, err
+ }
+ return resp.Status == healthpb.HealthCheckResponse_SERVING, nil
+}
+
+func hasAddr(addrs []grpc.Address, targetAddr string) bool {
+ for _, addr := range addrs {
+ if targetAddr == addr.Addr {
+ return true
+ }
+ }
+ return false
+}
+
+func getHost(ep string) string {
+ url, uerr := url.Parse(ep)
+ if uerr != nil || !strings.Contains(ep, "://") {
+ return ep
+ }
+ return url.Host
+}
+
+func eps2addrs(eps []string) []grpc.Address {
+ addrs := make([]grpc.Address, len(eps))
+ for i := range eps {
+ addrs[i].Addr = getHost(eps[i])
+ }
+ return addrs
+}
+
+func getHostPort2ep(eps []string) map[string]string {
+ hm := make(map[string]string, len(eps))
+ for i := range eps {
+ _, host, _ := parseEndpoint(eps[i])
+ hm[host] = eps[i]
+ }
+ return hm
+}
diff --git a/vendor/github.com/coreos/etcd/clientv3/kv.go b/vendor/github.com/coreos/etcd/clientv3/kv.go
index c8350f9268b2..6289605c8e05 100644
--- a/vendor/github.com/coreos/etcd/clientv3/kv.go
+++ b/vendor/github.com/coreos/etcd/clientv3/kv.go
@@ -16,6 +16,7 @@ package clientv3
import (
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
)
@@ -32,7 +33,7 @@ type KV interface {
// Put puts a key-value pair into etcd.
// Note that key,value can be plain bytes array and string is
// an immutable representation of that bytes array.
- // To get a string of bytes, do string([]byte(0x10, 0x20)).
+ // To get a string of bytes, do string([]byte{0x10, 0x20}).
Put(ctx context.Context, key, val string, opts ...OpOption) (*PutResponse, error)
// Get retrieves keys.
@@ -51,11 +52,6 @@ type KV interface {
// Compact compacts etcd KV history before the given rev.
Compact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error)
- // Do applies a single Op on KV without a transaction.
- // Do is useful when declaring operations to be issued at a later time
- // whereas Get/Put/Delete are for better suited for when the operation
- // should be immediately issued at time of declaration.
-
// Do applies a single Op on KV without a transaction.
// Do is useful when creating arbitrary operations to be issued at a
// later time; the user can range over the operations, calling Do to
@@ -71,22 +67,46 @@ type OpResponse struct {
put *PutResponse
get *GetResponse
del *DeleteResponse
+ txn *TxnResponse
}
func (op OpResponse) Put() *PutResponse { return op.put }
func (op OpResponse) Get() *GetResponse { return op.get }
func (op OpResponse) Del() *DeleteResponse { return op.del }
+func (op OpResponse) Txn() *TxnResponse { return op.txn }
+
+func (resp *PutResponse) OpResponse() OpResponse {
+ return OpResponse{put: resp}
+}
+func (resp *GetResponse) OpResponse() OpResponse {
+ return OpResponse{get: resp}
+}
+func (resp *DeleteResponse) OpResponse() OpResponse {
+ return OpResponse{del: resp}
+}
+func (resp *TxnResponse) OpResponse() OpResponse {
+ return OpResponse{txn: resp}
+}
type kv struct {
- remote pb.KVClient
+ remote pb.KVClient
+ callOpts []grpc.CallOption
}
func NewKV(c *Client) KV {
- return &kv{remote: RetryKVClient(c)}
+ api := &kv{remote: RetryKVClient(c)}
+ if c != nil {
+ api.callOpts = c.callOpts
+ }
+ return api
}
-func NewKVFromKVClient(remote pb.KVClient) KV {
- return &kv{remote: remote}
+func NewKVFromKVClient(remote pb.KVClient, c *Client) KV {
+ api := &kv{remote: remote}
+ if c != nil {
+ api.callOpts = c.callOpts
+ }
+ return api
}
func (kv *kv) Put(ctx context.Context, key, val string, opts ...OpOption) (*PutResponse, error) {
@@ -105,7 +125,7 @@ func (kv *kv) Delete(ctx context.Context, key string, opts ...OpOption) (*Delete
}
func (kv *kv) Compact(ctx context.Context, rev int64, opts ...CompactOption) (*CompactResponse, error) {
- resp, err := kv.remote.Compact(ctx, OpCompact(rev, opts...).toRequest())
+ resp, err := kv.remote.Compact(ctx, OpCompact(rev, opts...).toRequest(), kv.callOpts...)
if err != nil {
return nil, toErr(ctx, err)
}
@@ -114,54 +134,43 @@ func (kv *kv) Compact(ctx context.Context, rev int64, opts ...CompactOption) (*C
func (kv *kv) Txn(ctx context.Context) Txn {
return &txn{
- kv: kv,
- ctx: ctx,
+ kv: kv,
+ ctx: ctx,
+ callOpts: kv.callOpts,
}
}
func (kv *kv) Do(ctx context.Context, op Op) (OpResponse, error) {
- for {
- resp, err := kv.do(ctx, op)
- if err == nil {
- return resp, nil
- }
-
- if isHaltErr(ctx, err) {
- return resp, toErr(ctx, err)
- }
- // do not retry on modifications
- if op.isWrite() {
- return resp, toErr(ctx, err)
- }
- }
-}
-
-func (kv *kv) do(ctx context.Context, op Op) (OpResponse, error) {
var err error
switch op.t {
- // TODO: handle other ops
case tRange:
var resp *pb.RangeResponse
- resp, err = kv.remote.Range(ctx, op.toRangeRequest(), grpc.FailFast(false))
+ resp, err = kv.remote.Range(ctx, op.toRangeRequest(), kv.callOpts...)
if err == nil {
return OpResponse{get: (*GetResponse)(resp)}, nil
}
case tPut:
var resp *pb.PutResponse
- r := &pb.PutRequest{Key: op.key, Value: op.val, Lease: int64(op.leaseID), PrevKv: op.prevKV}
- resp, err = kv.remote.Put(ctx, r)
+ r := &pb.PutRequest{Key: op.key, Value: op.val, Lease: int64(op.leaseID), PrevKv: op.prevKV, IgnoreValue: op.ignoreValue, IgnoreLease: op.ignoreLease}
+ resp, err = kv.remote.Put(ctx, r, kv.callOpts...)
if err == nil {
return OpResponse{put: (*PutResponse)(resp)}, nil
}
case tDeleteRange:
var resp *pb.DeleteRangeResponse
r := &pb.DeleteRangeRequest{Key: op.key, RangeEnd: op.end, PrevKv: op.prevKV}
- resp, err = kv.remote.DeleteRange(ctx, r)
+ resp, err = kv.remote.DeleteRange(ctx, r, kv.callOpts...)
if err == nil {
return OpResponse{del: (*DeleteResponse)(resp)}, nil
}
+ case tTxn:
+ var resp *pb.TxnResponse
+ resp, err = kv.remote.Txn(ctx, op.toTxnRequest(), kv.callOpts...)
+ if err == nil {
+ return OpResponse{txn: (*TxnResponse)(resp)}, nil
+ }
default:
panic("Unknown op")
}
- return OpResponse{}, err
+ return OpResponse{}, toErr(ctx, err)
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/lease.go b/vendor/github.com/coreos/etcd/clientv3/lease.go
index 10d3dd0b27f8..e74e1d6b549f 100644
--- a/vendor/github.com/coreos/etcd/clientv3/lease.go
+++ b/vendor/github.com/coreos/etcd/clientv3/lease.go
@@ -20,8 +20,10 @@ import (
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
+ "google.golang.org/grpc/metadata"
)
type (
@@ -29,7 +31,7 @@ type (
LeaseID int64
)
-// LeaseGrantResponse is used to convert the protobuf grant response.
+// LeaseGrantResponse wraps the protobuf message LeaseGrantResponse.
type LeaseGrantResponse struct {
*pb.ResponseHeader
ID LeaseID
@@ -37,14 +39,14 @@ type LeaseGrantResponse struct {
Error string
}
-// LeaseKeepAliveResponse is used to convert the protobuf keepalive response.
+// LeaseKeepAliveResponse wraps the protobuf message LeaseKeepAliveResponse.
type LeaseKeepAliveResponse struct {
*pb.ResponseHeader
ID LeaseID
TTL int64
}
-// LeaseTimeToLiveResponse is used to convert the protobuf lease timetolive response.
+// LeaseTimeToLiveResponse wraps the protobuf message LeaseTimeToLiveResponse.
type LeaseTimeToLiveResponse struct {
*pb.ResponseHeader
ID LeaseID `json:"id"`
@@ -59,6 +61,12 @@ type LeaseTimeToLiveResponse struct {
Keys [][]byte `json:"keys"`
}
+// LeaseStatus represents a lease status.
+type LeaseStatus struct {
+ ID LeaseID `json:"id"`
+ // TODO: TTL int64
+}
+
const (
// defaultTTL is the assumed lease TTL used for the first keepalive
// deadline before the actual TTL is known to the client.
@@ -67,6 +75,9 @@ const (
leaseResponseChSize = 16
// NoLease is a lease ID for the absence of a lease.
NoLease LeaseID = 0
+
+ // retryConnWait is how long to wait before retrying request due to an error
+ retryConnWait = 500 * time.Millisecond
)
// ErrKeepAliveHalted is returned if client keep alive loop halts with an unexpected error.
@@ -97,7 +108,7 @@ type Lease interface {
// KeepAlive keeps the given lease alive forever.
KeepAlive(ctx context.Context, id LeaseID) (<-chan *LeaseKeepAliveResponse, error)
- // KeepAliveOnce renews the lease once. In most of the cases, Keepalive
+ // KeepAliveOnce renews the lease once. In most of the cases, KeepAlive
// should be used instead of KeepAliveOnce.
KeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAliveResponse, error)
@@ -126,6 +137,11 @@ type lessor struct {
// firstKeepAliveTimeout is the timeout for the first keepalive request
// before the actual TTL is known to the lease client
firstKeepAliveTimeout time.Duration
+
+ // firstKeepAliveOnce ensures stream starts after first KeepAlive call.
+ firstKeepAliveOnce sync.Once
+
+ callOpts []grpc.CallOption
}
// keepAlive multiplexes a keepalive for a lease over multiple channels
@@ -141,85 +157,65 @@ type keepAlive struct {
}
func NewLease(c *Client) Lease {
+ return NewLeaseFromLeaseClient(RetryLeaseClient(c), c, c.cfg.DialTimeout+time.Second)
+}
+
+func NewLeaseFromLeaseClient(remote pb.LeaseClient, c *Client, keepAliveTimeout time.Duration) Lease {
l := &lessor{
donec: make(chan struct{}),
keepAlives: make(map[LeaseID]*keepAlive),
- remote: RetryLeaseClient(c),
- firstKeepAliveTimeout: c.cfg.DialTimeout + time.Second,
+ remote: remote,
+ firstKeepAliveTimeout: keepAliveTimeout,
}
if l.firstKeepAliveTimeout == time.Second {
l.firstKeepAliveTimeout = defaultTTL
}
-
- l.stopCtx, l.stopCancel = context.WithCancel(context.Background())
- go l.recvKeepAliveLoop()
- go l.deadlineLoop()
+ if c != nil {
+ l.callOpts = c.callOpts
+ }
+ reqLeaderCtx := WithRequireLeader(context.Background())
+ l.stopCtx, l.stopCancel = context.WithCancel(reqLeaderCtx)
return l
}
func (l *lessor) Grant(ctx context.Context, ttl int64) (*LeaseGrantResponse, error) {
- cctx, cancel := context.WithCancel(ctx)
- done := cancelWhenStop(cancel, l.stopCtx.Done())
- defer close(done)
-
- for {
- r := &pb.LeaseGrantRequest{TTL: ttl}
- resp, err := l.remote.LeaseGrant(cctx, r)
- if err == nil {
- gresp := &LeaseGrantResponse{
- ResponseHeader: resp.GetHeader(),
- ID: LeaseID(resp.ID),
- TTL: resp.TTL,
- Error: resp.Error,
- }
- return gresp, nil
- }
- if isHaltErr(cctx, err) {
- return nil, toErr(cctx, err)
+ r := &pb.LeaseGrantRequest{TTL: ttl}
+ resp, err := l.remote.LeaseGrant(ctx, r, l.callOpts...)
+ if err == nil {
+ gresp := &LeaseGrantResponse{
+ ResponseHeader: resp.GetHeader(),
+ ID: LeaseID(resp.ID),
+ TTL: resp.TTL,
+ Error: resp.Error,
}
+ return gresp, nil
}
+ return nil, toErr(ctx, err)
}
func (l *lessor) Revoke(ctx context.Context, id LeaseID) (*LeaseRevokeResponse, error) {
- cctx, cancel := context.WithCancel(ctx)
- done := cancelWhenStop(cancel, l.stopCtx.Done())
- defer close(done)
-
- for {
- r := &pb.LeaseRevokeRequest{ID: int64(id)}
- resp, err := l.remote.LeaseRevoke(cctx, r)
-
- if err == nil {
- return (*LeaseRevokeResponse)(resp), nil
- }
- if isHaltErr(ctx, err) {
- return nil, toErr(ctx, err)
- }
+ r := &pb.LeaseRevokeRequest{ID: int64(id)}
+ resp, err := l.remote.LeaseRevoke(ctx, r, l.callOpts...)
+ if err == nil {
+ return (*LeaseRevokeResponse)(resp), nil
}
+ return nil, toErr(ctx, err)
}
func (l *lessor) TimeToLive(ctx context.Context, id LeaseID, opts ...LeaseOption) (*LeaseTimeToLiveResponse, error) {
- cctx, cancel := context.WithCancel(ctx)
- done := cancelWhenStop(cancel, l.stopCtx.Done())
- defer close(done)
-
- for {
- r := toLeaseTimeToLiveRequest(id, opts...)
- resp, err := l.remote.LeaseTimeToLive(cctx, r, grpc.FailFast(false))
- if err == nil {
- gresp := &LeaseTimeToLiveResponse{
- ResponseHeader: resp.GetHeader(),
- ID: LeaseID(resp.ID),
- TTL: resp.TTL,
- GrantedTTL: resp.GrantedTTL,
- Keys: resp.Keys,
- }
- return gresp, nil
- }
- if isHaltErr(cctx, err) {
- return nil, toErr(cctx, err)
+ r := toLeaseTimeToLiveRequest(id, opts...)
+ resp, err := l.remote.LeaseTimeToLive(ctx, r, l.callOpts...)
+ if err == nil {
+ gresp := &LeaseTimeToLiveResponse{
+ ResponseHeader: resp.GetHeader(),
+ ID: LeaseID(resp.ID),
+ TTL: resp.TTL,
+ GrantedTTL: resp.GrantedTTL,
+ Keys: resp.Keys,
}
+ return gresp, nil
}
+ return nil, toErr(ctx, err)
}
func (l *lessor) KeepAlive(ctx context.Context, id LeaseID) (<-chan *LeaseKeepAliveResponse, error) {
@@ -254,19 +250,19 @@ func (l *lessor) KeepAlive(ctx context.Context, id LeaseID) (<-chan *LeaseKeepAl
l.mu.Unlock()
go l.keepAliveCtxCloser(id, ctx, ka.donec)
+ l.firstKeepAliveOnce.Do(func() {
+ go l.recvKeepAliveLoop()
+ go l.deadlineLoop()
+ })
return ch, nil
}
func (l *lessor) KeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAliveResponse, error) {
- cctx, cancel := context.WithCancel(ctx)
- done := cancelWhenStop(cancel, l.stopCtx.Done())
- defer close(done)
-
for {
- resp, err := l.keepAliveOnce(cctx, id)
+ resp, err := l.keepAliveOnce(ctx, id)
if err == nil {
- if resp.TTL == 0 {
+ if resp.TTL <= 0 {
err = rpctypes.ErrLeaseNotFound
}
return resp, err
@@ -279,6 +275,8 @@ func (l *lessor) KeepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAlive
func (l *lessor) Close() error {
l.stopCancel()
+ // close for synchronous teardown if stream goroutines never launched
+ l.firstKeepAliveOnce.Do(func() { close(l.donec) })
<-l.donec
return nil
}
@@ -315,11 +313,50 @@ func (l *lessor) keepAliveCtxCloser(id LeaseID, ctx context.Context, donec <-cha
}
}
+// closeRequireLeader scans keepAlives for ctxs that have require leader
+// and closes the associated channels.
+func (l *lessor) closeRequireLeader() {
+ l.mu.Lock()
+ defer l.mu.Unlock()
+ for _, ka := range l.keepAlives {
+ reqIdxs := 0
+ // find all required leader channels, close, mark as nil
+ for i, ctx := range ka.ctxs {
+ md, ok := metadata.FromOutgoingContext(ctx)
+ if !ok {
+ continue
+ }
+ ks := md[rpctypes.MetadataRequireLeaderKey]
+ if len(ks) < 1 || ks[0] != rpctypes.MetadataHasLeader {
+ continue
+ }
+ close(ka.chs[i])
+ ka.chs[i] = nil
+ reqIdxs++
+ }
+ if reqIdxs == 0 {
+ continue
+ }
+ // remove all channels that required a leader from keepalive
+ newChs := make([]chan<- *LeaseKeepAliveResponse, len(ka.chs)-reqIdxs)
+ newCtxs := make([]context.Context, len(newChs))
+ newIdx := 0
+ for i := range ka.chs {
+ if ka.chs[i] == nil {
+ continue
+ }
+ newChs[newIdx], newCtxs[newIdx] = ka.chs[i], ka.ctxs[newIdx]
+ newIdx++
+ }
+ ka.chs, ka.ctxs = newChs, newCtxs
+ }
+}
+
func (l *lessor) keepAliveOnce(ctx context.Context, id LeaseID) (*LeaseKeepAliveResponse, error) {
cctx, cancel := context.WithCancel(ctx)
defer cancel()
- stream, err := l.remote.LeaseKeepAlive(cctx, grpc.FailFast(false))
+ stream, err := l.remote.LeaseKeepAlive(cctx, l.callOpts...)
if err != nil {
return nil, toErr(ctx, err)
}
@@ -348,32 +385,50 @@ func (l *lessor) recvKeepAliveLoop() (gerr error) {
close(l.donec)
l.loopErr = gerr
for _, ka := range l.keepAlives {
- ka.Close()
+ ka.close()
}
l.keepAlives = make(map[LeaseID]*keepAlive)
l.mu.Unlock()
}()
- stream, serr := l.resetRecv()
- for serr == nil {
- resp, err := stream.Recv()
+ for {
+ stream, err := l.resetRecv()
if err != nil {
- if isHaltErr(l.stopCtx, err) {
+ if canceledByCaller(l.stopCtx, err) {
return err
}
- stream, serr = l.resetRecv()
+ } else {
+ for {
+ resp, err := stream.Recv()
+ if err != nil {
+ if canceledByCaller(l.stopCtx, err) {
+ return err
+ }
+
+ if toErr(l.stopCtx, err) == rpctypes.ErrNoLeader {
+ l.closeRequireLeader()
+ }
+ break
+ }
+
+ l.recvKeepAlive(resp)
+ }
+ }
+
+ select {
+ case <-time.After(retryConnWait):
continue
+ case <-l.stopCtx.Done():
+ return l.stopCtx.Err()
}
- l.recvKeepAlive(resp)
}
- return serr
}
-// resetRecv opens a new lease stream and starts sending LeaseKeepAliveRequests
+// resetRecv opens a new lease stream and starts sending keep alive requests.
func (l *lessor) resetRecv() (pb.Lease_LeaseKeepAliveClient, error) {
sctx, cancel := context.WithCancel(l.stopCtx)
- stream, err := l.remote.LeaseKeepAlive(sctx, grpc.FailFast(false))
- if err = toErr(sctx, err); err != nil {
+ stream, err := l.remote.LeaseKeepAlive(sctx, l.callOpts...)
+ if err != nil {
cancel()
return nil, err
}
@@ -381,7 +436,6 @@ func (l *lessor) resetRecv() (pb.Lease_LeaseKeepAliveClient, error) {
l.mu.Lock()
defer l.mu.Unlock()
if l.stream != nil && l.streamCancel != nil {
- l.stream.CloseSend()
l.streamCancel()
}
@@ -411,7 +465,7 @@ func (l *lessor) recvKeepAlive(resp *pb.LeaseKeepAliveResponse) {
if karesp.TTL <= 0 {
// lease expired; close all keep alive channels
delete(l.keepAlives, karesp.ID)
- ka.Close()
+ ka.close()
return
}
@@ -441,7 +495,7 @@ func (l *lessor) deadlineLoop() {
for id, ka := range l.keepAlives {
if ka.deadline.Before(now) {
// waited too long for response; lease may be expired
- ka.Close()
+ ka.close()
delete(l.keepAlives, id)
}
}
@@ -449,19 +503,9 @@ func (l *lessor) deadlineLoop() {
}
}
-// sendKeepAliveLoop sends LeaseKeepAliveRequests for the lifetime of a lease stream
+// sendKeepAliveLoop sends keep alive requests for the lifetime of the given stream.
func (l *lessor) sendKeepAliveLoop(stream pb.Lease_LeaseKeepAliveClient) {
for {
- select {
- case <-time.After(500 * time.Millisecond):
- case <-stream.Context().Done():
- return
- case <-l.donec:
- return
- case <-l.stopCtx.Done():
- return
- }
-
var tosend []LeaseID
now := time.Now()
@@ -480,29 +524,22 @@ func (l *lessor) sendKeepAliveLoop(stream pb.Lease_LeaseKeepAliveClient) {
return
}
}
+
+ select {
+ case <-time.After(500 * time.Millisecond):
+ case <-stream.Context().Done():
+ return
+ case <-l.donec:
+ return
+ case <-l.stopCtx.Done():
+ return
+ }
}
}
-func (ka *keepAlive) Close() {
+func (ka *keepAlive) close() {
close(ka.donec)
for _, ch := range ka.chs {
close(ch)
}
}
-
-// cancelWhenStop calls cancel when the given stopc fires. It returns a done chan. done
-// should be closed when the work is finished. When done fires, cancelWhenStop will release
-// its internal resource.
-func cancelWhenStop(cancel context.CancelFunc, stopc <-chan struct{}) chan<- struct{} {
- done := make(chan struct{}, 1)
-
- go func() {
- select {
- case <-stopc:
- case <-done:
- }
- cancel()
- }()
-
- return done
-}
diff --git a/vendor/github.com/coreos/etcd/clientv3/logger.go b/vendor/github.com/coreos/etcd/clientv3/logger.go
index 519db45d8e34..012abdbce639 100644
--- a/vendor/github.com/coreos/etcd/clientv3/logger.go
+++ b/vendor/github.com/coreos/etcd/clientv3/logger.go
@@ -16,36 +16,35 @@ package clientv3
import (
"io/ioutil"
- "log"
"sync"
"google.golang.org/grpc/grpclog"
)
// Logger is the logger used by client library.
-// It implements grpclog.Logger interface.
-type Logger grpclog.Logger
+// It implements grpclog.LoggerV2 interface.
+type Logger grpclog.LoggerV2
var (
logger settableLogger
)
type settableLogger struct {
- l grpclog.Logger
+ l grpclog.LoggerV2
mu sync.RWMutex
}
func init() {
// disable client side logs by default
logger.mu.Lock()
- logger.l = log.New(ioutil.Discard, "", 0)
+ logger.l = grpclog.NewLoggerV2(ioutil.Discard, ioutil.Discard, ioutil.Discard)
// logger has to override the grpclog at initialization so that
// any changes to the grpclog go through logger with locking
// instead of through SetLogger
//
// now updates only happen through settableLogger.set
- grpclog.SetLogger(&logger)
+ grpclog.SetLoggerV2(&logger)
logger.mu.Unlock()
}
@@ -62,6 +61,7 @@ func GetLogger() Logger {
func (s *settableLogger) set(l Logger) {
s.mu.Lock()
logger.l = l
+ grpclog.SetLoggerV2(&logger)
s.mu.Unlock()
}
@@ -72,11 +72,25 @@ func (s *settableLogger) get() Logger {
return l
}
-// implement the grpclog.Logger interface
+// implement the grpclog.LoggerV2 interface
+func (s *settableLogger) Info(args ...interface{}) { s.get().Info(args...) }
+func (s *settableLogger) Infof(format string, args ...interface{}) { s.get().Infof(format, args...) }
+func (s *settableLogger) Infoln(args ...interface{}) { s.get().Infoln(args...) }
+func (s *settableLogger) Warning(args ...interface{}) { s.get().Warning(args...) }
+func (s *settableLogger) Warningf(format string, args ...interface{}) {
+ s.get().Warningf(format, args...)
+}
+func (s *settableLogger) Warningln(args ...interface{}) { s.get().Warningln(args...) }
+func (s *settableLogger) Error(args ...interface{}) { s.get().Error(args...) }
+func (s *settableLogger) Errorf(format string, args ...interface{}) {
+ s.get().Errorf(format, args...)
+}
+func (s *settableLogger) Errorln(args ...interface{}) { s.get().Errorln(args...) }
func (s *settableLogger) Fatal(args ...interface{}) { s.get().Fatal(args...) }
func (s *settableLogger) Fatalf(format string, args ...interface{}) { s.get().Fatalf(format, args...) }
func (s *settableLogger) Fatalln(args ...interface{}) { s.get().Fatalln(args...) }
-func (s *settableLogger) Print(args ...interface{}) { s.get().Print(args...) }
-func (s *settableLogger) Printf(format string, args ...interface{}) { s.get().Printf(format, args...) }
-func (s *settableLogger) Println(args ...interface{}) { s.get().Println(args...) }
+func (s *settableLogger) Print(args ...interface{}) { s.get().Info(args...) }
+func (s *settableLogger) Printf(format string, args ...interface{}) { s.get().Infof(format, args...) }
+func (s *settableLogger) Println(args ...interface{}) { s.get().Infoln(args...) }
+func (s *settableLogger) V(l int) bool { return s.get().V(l) }
diff --git a/vendor/github.com/coreos/etcd/clientv3/maintenance.go b/vendor/github.com/coreos/etcd/clientv3/maintenance.go
index 718356250beb..67b928fcfb3a 100644
--- a/vendor/github.com/coreos/etcd/clientv3/maintenance.go
+++ b/vendor/github.com/coreos/etcd/clientv3/maintenance.go
@@ -18,6 +18,7 @@ import (
"io"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
)
@@ -36,7 +37,7 @@ type Maintenance interface {
// AlarmDisarm disarms a given alarm.
AlarmDisarm(ctx context.Context, m *AlarmMember) (*AlarmResponse, error)
- // Defragment defragments storage backend of the etcd member with given endpoint.
+ // Defragment releases wasted space from internal fragmentation on a given etcd member.
// Defragment is only needed when deleting a large number of keys and want to reclaim
// the resources.
// Defragment is an expensive operation. User should avoid defragmenting multiple members
@@ -48,17 +49,45 @@ type Maintenance interface {
// Status gets the status of the endpoint.
Status(ctx context.Context, endpoint string) (*StatusResponse, error)
- // Snapshot provides a reader for a snapshot of a backend.
+ // Snapshot provides a reader for a point-in-time snapshot of etcd.
Snapshot(ctx context.Context) (io.ReadCloser, error)
}
type maintenance struct {
- c *Client
- remote pb.MaintenanceClient
+ dial func(endpoint string) (pb.MaintenanceClient, func(), error)
+ remote pb.MaintenanceClient
+ callOpts []grpc.CallOption
}
func NewMaintenance(c *Client) Maintenance {
- return &maintenance{c: c, remote: pb.NewMaintenanceClient(c.conn)}
+ api := &maintenance{
+ dial: func(endpoint string) (pb.MaintenanceClient, func(), error) {
+ conn, err := c.dial(endpoint)
+ if err != nil {
+ return nil, nil, err
+ }
+ cancel := func() { conn.Close() }
+ return RetryMaintenanceClient(c, conn), cancel, nil
+ },
+ remote: RetryMaintenanceClient(c, c.conn),
+ }
+ if c != nil {
+ api.callOpts = c.callOpts
+ }
+ return api
+}
+
+func NewMaintenanceFromMaintenanceClient(remote pb.MaintenanceClient, c *Client) Maintenance {
+ api := &maintenance{
+ dial: func(string) (pb.MaintenanceClient, func(), error) {
+ return remote, func() {}, nil
+ },
+ remote: remote,
+ }
+ if c != nil {
+ api.callOpts = c.callOpts
+ }
+ return api
}
func (m *maintenance) AlarmList(ctx context.Context) (*AlarmResponse, error) {
@@ -67,15 +96,11 @@ func (m *maintenance) AlarmList(ctx context.Context) (*AlarmResponse, error) {
MemberID: 0, // all
Alarm: pb.AlarmType_NONE, // all
}
- for {
- resp, err := m.remote.Alarm(ctx, req, grpc.FailFast(false))
- if err == nil {
- return (*AlarmResponse)(resp), nil
- }
- if isHaltErr(ctx, err) {
- return nil, toErr(ctx, err)
- }
+ resp, err := m.remote.Alarm(ctx, req, m.callOpts...)
+ if err == nil {
+ return (*AlarmResponse)(resp), nil
}
+ return nil, toErr(ctx, err)
}
func (m *maintenance) AlarmDisarm(ctx context.Context, am *AlarmMember) (*AlarmResponse, error) {
@@ -101,7 +126,7 @@ func (m *maintenance) AlarmDisarm(ctx context.Context, am *AlarmMember) (*AlarmR
return &ret, nil
}
- resp, err := m.remote.Alarm(ctx, req, grpc.FailFast(false))
+ resp, err := m.remote.Alarm(ctx, req, m.callOpts...)
if err == nil {
return (*AlarmResponse)(resp), nil
}
@@ -109,13 +134,12 @@ func (m *maintenance) AlarmDisarm(ctx context.Context, am *AlarmMember) (*AlarmR
}
func (m *maintenance) Defragment(ctx context.Context, endpoint string) (*DefragmentResponse, error) {
- conn, err := m.c.Dial(endpoint)
+ remote, cancel, err := m.dial(endpoint)
if err != nil {
return nil, toErr(ctx, err)
}
- defer conn.Close()
- remote := pb.NewMaintenanceClient(conn)
- resp, err := remote.Defragment(ctx, &pb.DefragmentRequest{}, grpc.FailFast(false))
+ defer cancel()
+ resp, err := remote.Defragment(ctx, &pb.DefragmentRequest{}, m.callOpts...)
if err != nil {
return nil, toErr(ctx, err)
}
@@ -123,13 +147,12 @@ func (m *maintenance) Defragment(ctx context.Context, endpoint string) (*Defragm
}
func (m *maintenance) Status(ctx context.Context, endpoint string) (*StatusResponse, error) {
- conn, err := m.c.Dial(endpoint)
+ remote, cancel, err := m.dial(endpoint)
if err != nil {
return nil, toErr(ctx, err)
}
- defer conn.Close()
- remote := pb.NewMaintenanceClient(conn)
- resp, err := remote.Status(ctx, &pb.StatusRequest{}, grpc.FailFast(false))
+ defer cancel()
+ resp, err := remote.Status(ctx, &pb.StatusRequest{}, m.callOpts...)
if err != nil {
return nil, toErr(ctx, err)
}
@@ -137,7 +160,7 @@ func (m *maintenance) Status(ctx context.Context, endpoint string) (*StatusRespo
}
func (m *maintenance) Snapshot(ctx context.Context) (io.ReadCloser, error) {
- ss, err := m.remote.Snapshot(ctx, &pb.SnapshotRequest{}, grpc.FailFast(false))
+ ss, err := m.remote.Snapshot(ctx, &pb.SnapshotRequest{}, m.callOpts...)
if err != nil {
return nil, toErr(ctx, err)
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/op.go b/vendor/github.com/coreos/etcd/clientv3/op.go
index 6e2600766988..e18d28662c46 100644
--- a/vendor/github.com/coreos/etcd/clientv3/op.go
+++ b/vendor/github.com/coreos/etcd/clientv3/op.go
@@ -23,6 +23,7 @@ const (
tRange opType = iota + 1
tPut
tDeleteRange
+ tTxn
)
var (
@@ -52,6 +53,10 @@ type Op struct {
// for watch, put, delete
prevKV bool
+ // for put
+ ignoreValue bool
+ ignoreLease bool
+
// progressNotify is for progress updates.
progressNotify bool
// createdNotify is for created event
@@ -63,8 +68,69 @@ type Op struct {
// for put
val []byte
leaseID LeaseID
+
+ // txn
+ cmps []Cmp
+ thenOps []Op
+ elseOps []Op
}
+// accessors / mutators
+
+func (op Op) IsTxn() bool { return op.t == tTxn }
+func (op Op) Txn() ([]Cmp, []Op, []Op) { return op.cmps, op.thenOps, op.elseOps }
+
+// KeyBytes returns the byte slice holding the Op's key.
+func (op Op) KeyBytes() []byte { return op.key }
+
+// WithKeyBytes sets the byte slice for the Op's key.
+func (op *Op) WithKeyBytes(key []byte) { op.key = key }
+
+// RangeBytes returns the byte slice holding with the Op's range end, if any.
+func (op Op) RangeBytes() []byte { return op.end }
+
+// Rev returns the requested revision, if any.
+func (op Op) Rev() int64 { return op.rev }
+
+// IsPut returns true iff the operation is a Put.
+func (op Op) IsPut() bool { return op.t == tPut }
+
+// IsGet returns true iff the operation is a Get.
+func (op Op) IsGet() bool { return op.t == tRange }
+
+// IsDelete returns true iff the operation is a Delete.
+func (op Op) IsDelete() bool { return op.t == tDeleteRange }
+
+// IsSerializable returns true if the serializable field is true.
+func (op Op) IsSerializable() bool { return op.serializable == true }
+
+// IsKeysOnly returns whether keysOnly is set.
+func (op Op) IsKeysOnly() bool { return op.keysOnly == true }
+
+// IsCountOnly returns whether countOnly is set.
+func (op Op) IsCountOnly() bool { return op.countOnly == true }
+
+// MinModRev returns the operation's minimum modify revision.
+func (op Op) MinModRev() int64 { return op.minModRev }
+
+// MaxModRev returns the operation's maximum modify revision.
+func (op Op) MaxModRev() int64 { return op.maxModRev }
+
+// MinCreateRev returns the operation's minimum create revision.
+func (op Op) MinCreateRev() int64 { return op.minCreateRev }
+
+// MaxCreateRev returns the operation's maximum create revision.
+func (op Op) MaxCreateRev() int64 { return op.maxCreateRev }
+
+// WithRangeBytes sets the byte slice for the Op's range end.
+func (op *Op) WithRangeBytes(end []byte) { op.end = end }
+
+// ValueBytes returns the byte slice holding the Op's value, if any.
+func (op Op) ValueBytes() []byte { return op.val }
+
+// WithValueBytes sets the byte slice for the Op's value.
+func (op *Op) WithValueBytes(v []byte) { op.val = v }
+
func (op Op) toRangeRequest() *pb.RangeRequest {
if op.t != tRange {
panic("op.t != tRange")
@@ -89,12 +155,28 @@ func (op Op) toRangeRequest() *pb.RangeRequest {
return r
}
+func (op Op) toTxnRequest() *pb.TxnRequest {
+ thenOps := make([]*pb.RequestOp, len(op.thenOps))
+ for i, tOp := range op.thenOps {
+ thenOps[i] = tOp.toRequestOp()
+ }
+ elseOps := make([]*pb.RequestOp, len(op.elseOps))
+ for i, eOp := range op.elseOps {
+ elseOps[i] = eOp.toRequestOp()
+ }
+ cmps := make([]*pb.Compare, len(op.cmps))
+ for i := range op.cmps {
+ cmps[i] = (*pb.Compare)(&op.cmps[i])
+ }
+ return &pb.TxnRequest{Compare: cmps, Success: thenOps, Failure: elseOps}
+}
+
func (op Op) toRequestOp() *pb.RequestOp {
switch op.t {
case tRange:
return &pb.RequestOp{Request: &pb.RequestOp_RequestRange{RequestRange: op.toRangeRequest()}}
case tPut:
- r := &pb.PutRequest{Key: op.key, Value: op.val, Lease: int64(op.leaseID), PrevKv: op.prevKV}
+ r := &pb.PutRequest{Key: op.key, Value: op.val, Lease: int64(op.leaseID), PrevKv: op.prevKV, IgnoreValue: op.ignoreValue, IgnoreLease: op.ignoreLease}
return &pb.RequestOp{Request: &pb.RequestOp_RequestPut{RequestPut: r}}
case tDeleteRange:
r := &pb.DeleteRangeRequest{Key: op.key, RangeEnd: op.end, PrevKv: op.prevKV}
@@ -105,6 +187,19 @@ func (op Op) toRequestOp() *pb.RequestOp {
}
func (op Op) isWrite() bool {
+ if op.t == tTxn {
+ for _, tOp := range op.thenOps {
+ if tOp.isWrite() {
+ return true
+ }
+ }
+ for _, tOp := range op.elseOps {
+ if tOp.isWrite() {
+ return true
+ }
+ }
+ return false
+ }
return op.t != tRange
}
@@ -170,6 +265,10 @@ func OpPut(key, val string, opts ...OpOption) Op {
return ret
}
+func OpTxn(cmps []Cmp, thenOps []Op, elseOps []Op) Op {
+ return Op{t: tTxn, cmps: cmps, thenOps: thenOps, elseOps: elseOps}
+}
+
func opWatch(key string, opts ...OpOption) Op {
ret := Op{t: tRange, key: []byte(key)}
ret.applyOpts(opts)
@@ -207,6 +306,7 @@ func WithLease(leaseID LeaseID) OpOption {
}
// WithLimit limits the number of results to return from 'Get' request.
+// If WithLimit is given a 0 limit, it is treated as no limit.
func WithLimit(n int64) OpOption { return func(op *Op) { op.limit = n } }
// WithRev specifies the store revision for 'Get' request.
@@ -222,9 +322,9 @@ func WithSort(target SortTarget, order SortOrder) OpOption {
if target == SortByKey && order == SortAscend {
// If order != SortNone, server fetches the entire key-space,
// and then applies the sort and limit, if provided.
- // Since current mvcc.Range implementation returns results
- // sorted by keys in lexicographically ascending order,
- // client should ignore SortOrder if the target is SortByKey.
+ // Since by default the server returns results sorted by keys
+ // in lexicographically ascending order, the client should ignore
+ // SortOrder if the target is SortByKey.
order = SortNone
}
op.sort = &SortOption{target, order}
@@ -257,6 +357,10 @@ func getPrefix(key []byte) []byte {
// can return 'foo1', 'foo2', and so on.
func WithPrefix() OpOption {
return func(op *Op) {
+ if len(op.key) == 0 {
+ op.key, op.end = []byte{0}, []byte{0}
+ return
+ }
op.end = getPrefix(op.key)
}
}
@@ -360,6 +464,24 @@ func WithPrevKV() OpOption {
}
}
+// WithIgnoreValue updates the key using its current value.
+// This option can not be combined with non-empty values.
+// Returns an error if the key does not exist.
+func WithIgnoreValue() OpOption {
+ return func(op *Op) {
+ op.ignoreValue = true
+ }
+}
+
+// WithIgnoreLease updates the key using its current lease.
+// This option can not be combined with WithLease.
+// Returns an error if the key does not exist.
+func WithIgnoreLease() OpOption {
+ return func(op *Op) {
+ op.ignoreLease = true
+ }
+}
+
// LeaseOp represents an Operation that lease can execute.
type LeaseOp struct {
id LeaseID
@@ -377,8 +499,7 @@ func (op *LeaseOp) applyOpts(opts []LeaseOption) {
}
}
-// WithAttachedKeys requests lease timetolive API to return
-// attached keys of given lease ID.
+// WithAttachedKeys makes TimeToLive list the keys attached to the given lease ID.
func WithAttachedKeys() LeaseOption {
return func(op *LeaseOp) { op.attachedKeys = true }
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/ready_wait.go b/vendor/github.com/coreos/etcd/clientv3/ready_wait.go
new file mode 100644
index 000000000000..23eea9367ff7
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/clientv3/ready_wait.go
@@ -0,0 +1,30 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 clientv3
+
+import "golang.org/x/net/context"
+
+// TODO: remove this when "FailFast=false" is fixed.
+// See https://github.com/grpc/grpc-go/issues/1532.
+func readyWait(rpcCtx, clientCtx context.Context, ready <-chan struct{}) error {
+ select {
+ case <-ready:
+ return nil
+ case <-rpcCtx.Done():
+ return rpcCtx.Err()
+ case <-clientCtx.Done():
+ return clientCtx.Err()
+ }
+}
diff --git a/vendor/github.com/coreos/etcd/clientv3/retry.go b/vendor/github.com/coreos/etcd/clientv3/retry.go
index 78f31a8c4b0c..c95b2cad7c4f 100644
--- a/vendor/github.com/coreos/etcd/clientv3/retry.go
+++ b/vendor/github.com/coreos/etcd/clientv3/retry.go
@@ -17,135 +17,183 @@ package clientv3
import (
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
)
type rpcFunc func(ctx context.Context) error
-type retryRpcFunc func(context.Context, rpcFunc) error
+type retryRPCFunc func(context.Context, rpcFunc) error
+type retryStopErrFunc func(error) bool
+
+func isRepeatableStopError(err error) bool {
+ eErr := rpctypes.Error(err)
+ // always stop retry on etcd errors
+ if serverErr, ok := eErr.(rpctypes.EtcdError); ok && serverErr.Code() != codes.Unavailable {
+ return true
+ }
+ // only retry if unavailable
+ ev, _ := status.FromError(err)
+ return ev.Code() != codes.Unavailable
+}
+
+func isNonRepeatableStopError(err error) bool {
+ ev, _ := status.FromError(err)
+ if ev.Code() != codes.Unavailable {
+ return true
+ }
+ desc := rpctypes.ErrorDesc(err)
+ return desc != "there is no address available" && desc != "there is no connection available"
+}
-func (c *Client) newRetryWrapper() retryRpcFunc {
+func (c *Client) newRetryWrapper(isStop retryStopErrFunc) retryRPCFunc {
return func(rpcCtx context.Context, f rpcFunc) error {
for {
+ if err := readyWait(rpcCtx, c.ctx, c.balancer.ConnectNotify()); err != nil {
+ return err
+ }
+ pinned := c.balancer.pinned()
err := f(rpcCtx)
if err == nil {
return nil
}
-
- eErr := rpctypes.Error(err)
- // always stop retry on etcd errors
- if _, ok := eErr.(rpctypes.EtcdError); ok {
- return err
+ if logger.V(4) {
+ logger.Infof("clientv3/retry: error %q on pinned endpoint %q", err.Error(), pinned)
}
- // only retry if unavailable
- if grpc.Code(err) != codes.Unavailable {
- return err
+ if s, ok := status.FromError(err); ok && (s.Code() == codes.Unavailable || s.Code() == codes.DeadlineExceeded || s.Code() == codes.Internal) {
+ // mark this before endpoint switch is triggered
+ c.balancer.hostPortError(pinned, err)
+ c.balancer.next()
+ if logger.V(4) {
+ logger.Infof("clientv3/retry: switching from %q due to error %q", pinned, err.Error())
+ }
}
- select {
- case <-c.balancer.ConnectNotify():
- case <-rpcCtx.Done():
- return rpcCtx.Err()
- case <-c.ctx.Done():
- return c.ctx.Err()
+ if isStop(err) {
+ return err
}
}
}
}
-func (c *Client) newAuthRetryWrapper() retryRpcFunc {
+func (c *Client) newAuthRetryWrapper() retryRPCFunc {
return func(rpcCtx context.Context, f rpcFunc) error {
for {
+ pinned := c.balancer.pinned()
err := f(rpcCtx)
if err == nil {
return nil
}
-
+ if logger.V(4) {
+ logger.Infof("clientv3/auth-retry: error %q on pinned endpoint %q", err.Error(), pinned)
+ }
// always stop retry on etcd errors other than invalid auth token
if rpctypes.Error(err) == rpctypes.ErrInvalidAuthToken {
gterr := c.getToken(rpcCtx)
if gterr != nil {
+ if logger.V(4) {
+ logger.Infof("clientv3/auth-retry: cannot retry due to error %q(%q) on pinned endpoint %q", err.Error(), gterr.Error(), pinned)
+ }
return err // return the original error for simplicity
}
continue
}
-
return err
}
}
}
-// RetryKVClient implements a KVClient that uses the client's FailFast retry policy.
+// RetryKVClient implements a KVClient.
func RetryKVClient(c *Client) pb.KVClient {
- retryWrite := &retryWriteKVClient{pb.NewKVClient(c.conn), c.retryWrapper}
- return &retryKVClient{&retryWriteKVClient{retryWrite, c.retryAuthWrapper}}
+ repeatableRetry := c.newRetryWrapper(isRepeatableStopError)
+ nonRepeatableRetry := c.newRetryWrapper(isNonRepeatableStopError)
+ conn := pb.NewKVClient(c.conn)
+ retryBasic := &retryKVClient{&nonRepeatableKVClient{conn, nonRepeatableRetry}, repeatableRetry}
+ retryAuthWrapper := c.newAuthRetryWrapper()
+ return &retryKVClient{
+ &nonRepeatableKVClient{retryBasic, retryAuthWrapper},
+ retryAuthWrapper}
}
type retryKVClient struct {
- *retryWriteKVClient
+ *nonRepeatableKVClient
+ repeatableRetry retryRPCFunc
}
func (rkv *retryKVClient) Range(ctx context.Context, in *pb.RangeRequest, opts ...grpc.CallOption) (resp *pb.RangeResponse, err error) {
- err = rkv.retryf(ctx, func(rctx context.Context) error {
- resp, err = rkv.retryWriteKVClient.Range(rctx, in, opts...)
+ err = rkv.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rkv.kc.Range(rctx, in, opts...)
return err
})
return resp, err
}
-type retryWriteKVClient struct {
- pb.KVClient
- retryf retryRpcFunc
+type nonRepeatableKVClient struct {
+ kc pb.KVClient
+ nonRepeatableRetry retryRPCFunc
}
-func (rkv *retryWriteKVClient) Put(ctx context.Context, in *pb.PutRequest, opts ...grpc.CallOption) (resp *pb.PutResponse, err error) {
- err = rkv.retryf(ctx, func(rctx context.Context) error {
- resp, err = rkv.KVClient.Put(rctx, in, opts...)
+func (rkv *nonRepeatableKVClient) Put(ctx context.Context, in *pb.PutRequest, opts ...grpc.CallOption) (resp *pb.PutResponse, err error) {
+ err = rkv.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rkv.kc.Put(rctx, in, opts...)
return err
})
return resp, err
}
-func (rkv *retryWriteKVClient) DeleteRange(ctx context.Context, in *pb.DeleteRangeRequest, opts ...grpc.CallOption) (resp *pb.DeleteRangeResponse, err error) {
- err = rkv.retryf(ctx, func(rctx context.Context) error {
- resp, err = rkv.KVClient.DeleteRange(rctx, in, opts...)
+func (rkv *nonRepeatableKVClient) DeleteRange(ctx context.Context, in *pb.DeleteRangeRequest, opts ...grpc.CallOption) (resp *pb.DeleteRangeResponse, err error) {
+ err = rkv.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rkv.kc.DeleteRange(rctx, in, opts...)
return err
})
return resp, err
}
-func (rkv *retryWriteKVClient) Txn(ctx context.Context, in *pb.TxnRequest, opts ...grpc.CallOption) (resp *pb.TxnResponse, err error) {
- err = rkv.retryf(ctx, func(rctx context.Context) error {
- resp, err = rkv.KVClient.Txn(rctx, in, opts...)
+func (rkv *nonRepeatableKVClient) Txn(ctx context.Context, in *pb.TxnRequest, opts ...grpc.CallOption) (resp *pb.TxnResponse, err error) {
+ // TODO: repeatableRetry if read-only txn
+ err = rkv.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rkv.kc.Txn(rctx, in, opts...)
return err
})
return resp, err
}
-func (rkv *retryWriteKVClient) Compact(ctx context.Context, in *pb.CompactionRequest, opts ...grpc.CallOption) (resp *pb.CompactionResponse, err error) {
- err = rkv.retryf(ctx, func(rctx context.Context) error {
- resp, err = rkv.KVClient.Compact(rctx, in, opts...)
+func (rkv *nonRepeatableKVClient) Compact(ctx context.Context, in *pb.CompactionRequest, opts ...grpc.CallOption) (resp *pb.CompactionResponse, err error) {
+ err = rkv.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rkv.kc.Compact(rctx, in, opts...)
return err
})
return resp, err
}
type retryLeaseClient struct {
- pb.LeaseClient
- retryf retryRpcFunc
+ lc pb.LeaseClient
+ repeatableRetry retryRPCFunc
}
-// RetryLeaseClient implements a LeaseClient that uses the client's FailFast retry policy.
+// RetryLeaseClient implements a LeaseClient.
func RetryLeaseClient(c *Client) pb.LeaseClient {
- retry := &retryLeaseClient{pb.NewLeaseClient(c.conn), c.retryWrapper}
- return &retryLeaseClient{retry, c.retryAuthWrapper}
+ retry := &retryLeaseClient{
+ pb.NewLeaseClient(c.conn),
+ c.newRetryWrapper(isRepeatableStopError),
+ }
+ return &retryLeaseClient{retry, c.newAuthRetryWrapper()}
+}
+
+func (rlc *retryLeaseClient) LeaseTimeToLive(ctx context.Context, in *pb.LeaseTimeToLiveRequest, opts ...grpc.CallOption) (resp *pb.LeaseTimeToLiveResponse, err error) {
+ err = rlc.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rlc.lc.LeaseTimeToLive(rctx, in, opts...)
+ return err
+ })
+ return resp, err
}
func (rlc *retryLeaseClient) LeaseGrant(ctx context.Context, in *pb.LeaseGrantRequest, opts ...grpc.CallOption) (resp *pb.LeaseGrantResponse, err error) {
- err = rlc.retryf(ctx, func(rctx context.Context) error {
- resp, err = rlc.LeaseClient.LeaseGrant(rctx, in, opts...)
+ err = rlc.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rlc.lc.LeaseGrant(rctx, in, opts...)
return err
})
return resp, err
@@ -153,140 +201,270 @@ func (rlc *retryLeaseClient) LeaseGrant(ctx context.Context, in *pb.LeaseGrantRe
}
func (rlc *retryLeaseClient) LeaseRevoke(ctx context.Context, in *pb.LeaseRevokeRequest, opts ...grpc.CallOption) (resp *pb.LeaseRevokeResponse, err error) {
- err = rlc.retryf(ctx, func(rctx context.Context) error {
- resp, err = rlc.LeaseClient.LeaseRevoke(rctx, in, opts...)
+ err = rlc.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rlc.lc.LeaseRevoke(rctx, in, opts...)
return err
})
return resp, err
}
+func (rlc *retryLeaseClient) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (stream pb.Lease_LeaseKeepAliveClient, err error) {
+ err = rlc.repeatableRetry(ctx, func(rctx context.Context) error {
+ stream, err = rlc.lc.LeaseKeepAlive(rctx, opts...)
+ return err
+ })
+ return stream, err
+}
+
type retryClusterClient struct {
- pb.ClusterClient
- retryf retryRpcFunc
+ *nonRepeatableClusterClient
+ repeatableRetry retryRPCFunc
}
-// RetryClusterClient implements a ClusterClient that uses the client's FailFast retry policy.
+// RetryClusterClient implements a ClusterClient.
func RetryClusterClient(c *Client) pb.ClusterClient {
- return &retryClusterClient{pb.NewClusterClient(c.conn), c.retryWrapper}
+ repeatableRetry := c.newRetryWrapper(isRepeatableStopError)
+ nonRepeatableRetry := c.newRetryWrapper(isNonRepeatableStopError)
+ cc := pb.NewClusterClient(c.conn)
+ return &retryClusterClient{&nonRepeatableClusterClient{cc, nonRepeatableRetry}, repeatableRetry}
+}
+
+func (rcc *retryClusterClient) MemberList(ctx context.Context, in *pb.MemberListRequest, opts ...grpc.CallOption) (resp *pb.MemberListResponse, err error) {
+ err = rcc.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rcc.cc.MemberList(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+type nonRepeatableClusterClient struct {
+ cc pb.ClusterClient
+ nonRepeatableRetry retryRPCFunc
+}
+
+func (rcc *nonRepeatableClusterClient) MemberAdd(ctx context.Context, in *pb.MemberAddRequest, opts ...grpc.CallOption) (resp *pb.MemberAddResponse, err error) {
+ err = rcc.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rcc.cc.MemberAdd(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+func (rcc *nonRepeatableClusterClient) MemberRemove(ctx context.Context, in *pb.MemberRemoveRequest, opts ...grpc.CallOption) (resp *pb.MemberRemoveResponse, err error) {
+ err = rcc.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rcc.cc.MemberRemove(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+func (rcc *nonRepeatableClusterClient) MemberUpdate(ctx context.Context, in *pb.MemberUpdateRequest, opts ...grpc.CallOption) (resp *pb.MemberUpdateResponse, err error) {
+ err = rcc.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rcc.cc.MemberUpdate(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+// RetryMaintenanceClient implements a Maintenance.
+func RetryMaintenanceClient(c *Client, conn *grpc.ClientConn) pb.MaintenanceClient {
+ repeatableRetry := c.newRetryWrapper(isRepeatableStopError)
+ nonRepeatableRetry := c.newRetryWrapper(isNonRepeatableStopError)
+ mc := pb.NewMaintenanceClient(conn)
+ return &retryMaintenanceClient{&nonRepeatableMaintenanceClient{mc, nonRepeatableRetry}, repeatableRetry}
+}
+
+type retryMaintenanceClient struct {
+ *nonRepeatableMaintenanceClient
+ repeatableRetry retryRPCFunc
}
-func (rcc *retryClusterClient) MemberAdd(ctx context.Context, in *pb.MemberAddRequest, opts ...grpc.CallOption) (resp *pb.MemberAddResponse, err error) {
- err = rcc.retryf(ctx, func(rctx context.Context) error {
- resp, err = rcc.ClusterClient.MemberAdd(rctx, in, opts...)
+func (rmc *retryMaintenanceClient) Alarm(ctx context.Context, in *pb.AlarmRequest, opts ...grpc.CallOption) (resp *pb.AlarmResponse, err error) {
+ err = rmc.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rmc.mc.Alarm(rctx, in, opts...)
return err
})
return resp, err
}
-func (rcc *retryClusterClient) MemberRemove(ctx context.Context, in *pb.MemberRemoveRequest, opts ...grpc.CallOption) (resp *pb.MemberRemoveResponse, err error) {
- err = rcc.retryf(ctx, func(rctx context.Context) error {
- resp, err = rcc.ClusterClient.MemberRemove(rctx, in, opts...)
+func (rmc *retryMaintenanceClient) Status(ctx context.Context, in *pb.StatusRequest, opts ...grpc.CallOption) (resp *pb.StatusResponse, err error) {
+ err = rmc.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rmc.mc.Status(rctx, in, opts...)
return err
})
return resp, err
}
-func (rcc *retryClusterClient) MemberUpdate(ctx context.Context, in *pb.MemberUpdateRequest, opts ...grpc.CallOption) (resp *pb.MemberUpdateResponse, err error) {
- err = rcc.retryf(ctx, func(rctx context.Context) error {
- resp, err = rcc.ClusterClient.MemberUpdate(rctx, in, opts...)
+func (rmc *retryMaintenanceClient) Hash(ctx context.Context, in *pb.HashRequest, opts ...grpc.CallOption) (resp *pb.HashResponse, err error) {
+ err = rmc.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rmc.mc.Hash(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+func (rmc *retryMaintenanceClient) Snapshot(ctx context.Context, in *pb.SnapshotRequest, opts ...grpc.CallOption) (stream pb.Maintenance_SnapshotClient, err error) {
+ err = rmc.repeatableRetry(ctx, func(rctx context.Context) error {
+ stream, err = rmc.mc.Snapshot(rctx, in, opts...)
+ return err
+ })
+ return stream, err
+}
+
+type nonRepeatableMaintenanceClient struct {
+ mc pb.MaintenanceClient
+ nonRepeatableRetry retryRPCFunc
+}
+
+func (rmc *nonRepeatableMaintenanceClient) Defragment(ctx context.Context, in *pb.DefragmentRequest, opts ...grpc.CallOption) (resp *pb.DefragmentResponse, err error) {
+ err = rmc.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rmc.mc.Defragment(rctx, in, opts...)
return err
})
return resp, err
}
type retryAuthClient struct {
- pb.AuthClient
- retryf retryRpcFunc
+ *nonRepeatableAuthClient
+ repeatableRetry retryRPCFunc
}
-// RetryAuthClient implements a AuthClient that uses the client's FailFast retry policy.
+// RetryAuthClient implements a AuthClient.
func RetryAuthClient(c *Client) pb.AuthClient {
- return &retryAuthClient{pb.NewAuthClient(c.conn), c.retryWrapper}
+ repeatableRetry := c.newRetryWrapper(isRepeatableStopError)
+ nonRepeatableRetry := c.newRetryWrapper(isNonRepeatableStopError)
+ ac := pb.NewAuthClient(c.conn)
+ return &retryAuthClient{&nonRepeatableAuthClient{ac, nonRepeatableRetry}, repeatableRetry}
+}
+
+func (rac *retryAuthClient) UserList(ctx context.Context, in *pb.AuthUserListRequest, opts ...grpc.CallOption) (resp *pb.AuthUserListResponse, err error) {
+ err = rac.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.UserList(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+func (rac *retryAuthClient) UserGet(ctx context.Context, in *pb.AuthUserGetRequest, opts ...grpc.CallOption) (resp *pb.AuthUserGetResponse, err error) {
+ err = rac.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.UserGet(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+func (rac *retryAuthClient) RoleGet(ctx context.Context, in *pb.AuthRoleGetRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleGetResponse, err error) {
+ err = rac.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.RoleGet(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+func (rac *retryAuthClient) RoleList(ctx context.Context, in *pb.AuthRoleListRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleListResponse, err error) {
+ err = rac.repeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.RoleList(rctx, in, opts...)
+ return err
+ })
+ return resp, err
+}
+
+type nonRepeatableAuthClient struct {
+ ac pb.AuthClient
+ nonRepeatableRetry retryRPCFunc
+}
+
+func (rac *nonRepeatableAuthClient) AuthEnable(ctx context.Context, in *pb.AuthEnableRequest, opts ...grpc.CallOption) (resp *pb.AuthEnableResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.AuthEnable(rctx, in, opts...)
+ return err
+ })
+ return resp, err
}
-func (rac *retryAuthClient) AuthEnable(ctx context.Context, in *pb.AuthEnableRequest, opts ...grpc.CallOption) (resp *pb.AuthEnableResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.AuthEnable(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) AuthDisable(ctx context.Context, in *pb.AuthDisableRequest, opts ...grpc.CallOption) (resp *pb.AuthDisableResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.AuthDisable(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) AuthDisable(ctx context.Context, in *pb.AuthDisableRequest, opts ...grpc.CallOption) (resp *pb.AuthDisableResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.AuthDisable(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) UserAdd(ctx context.Context, in *pb.AuthUserAddRequest, opts ...grpc.CallOption) (resp *pb.AuthUserAddResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.UserAdd(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) UserAdd(ctx context.Context, in *pb.AuthUserAddRequest, opts ...grpc.CallOption) (resp *pb.AuthUserAddResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.UserAdd(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) UserDelete(ctx context.Context, in *pb.AuthUserDeleteRequest, opts ...grpc.CallOption) (resp *pb.AuthUserDeleteResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.UserDelete(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) UserDelete(ctx context.Context, in *pb.AuthUserDeleteRequest, opts ...grpc.CallOption) (resp *pb.AuthUserDeleteResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.UserDelete(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) UserChangePassword(ctx context.Context, in *pb.AuthUserChangePasswordRequest, opts ...grpc.CallOption) (resp *pb.AuthUserChangePasswordResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.UserChangePassword(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) UserChangePassword(ctx context.Context, in *pb.AuthUserChangePasswordRequest, opts ...grpc.CallOption) (resp *pb.AuthUserChangePasswordResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.UserChangePassword(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) UserGrantRole(ctx context.Context, in *pb.AuthUserGrantRoleRequest, opts ...grpc.CallOption) (resp *pb.AuthUserGrantRoleResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.UserGrantRole(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) UserGrantRole(ctx context.Context, in *pb.AuthUserGrantRoleRequest, opts ...grpc.CallOption) (resp *pb.AuthUserGrantRoleResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.UserGrantRole(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) UserRevokeRole(ctx context.Context, in *pb.AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (resp *pb.AuthUserRevokeRoleResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.UserRevokeRole(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) UserRevokeRole(ctx context.Context, in *pb.AuthUserRevokeRoleRequest, opts ...grpc.CallOption) (resp *pb.AuthUserRevokeRoleResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.UserRevokeRole(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) RoleAdd(ctx context.Context, in *pb.AuthRoleAddRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleAddResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.RoleAdd(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) RoleAdd(ctx context.Context, in *pb.AuthRoleAddRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleAddResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.RoleAdd(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) RoleDelete(ctx context.Context, in *pb.AuthRoleDeleteRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleDeleteResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.RoleDelete(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) RoleDelete(ctx context.Context, in *pb.AuthRoleDeleteRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleDeleteResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.RoleDelete(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) RoleGrantPermission(ctx context.Context, in *pb.AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleGrantPermissionResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.RoleGrantPermission(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) RoleGrantPermission(ctx context.Context, in *pb.AuthRoleGrantPermissionRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleGrantPermissionResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.RoleGrantPermission(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) RoleRevokePermission(ctx context.Context, in *pb.AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleRevokePermissionResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.RoleRevokePermission(rctx, in, opts...)
return err
})
return resp, err
}
-func (rac *retryAuthClient) RoleRevokePermission(ctx context.Context, in *pb.AuthRoleRevokePermissionRequest, opts ...grpc.CallOption) (resp *pb.AuthRoleRevokePermissionResponse, err error) {
- err = rac.retryf(ctx, func(rctx context.Context) error {
- resp, err = rac.AuthClient.RoleRevokePermission(rctx, in, opts...)
+func (rac *nonRepeatableAuthClient) Authenticate(ctx context.Context, in *pb.AuthenticateRequest, opts ...grpc.CallOption) (resp *pb.AuthenticateResponse, err error) {
+ err = rac.nonRepeatableRetry(ctx, func(rctx context.Context) error {
+ resp, err = rac.ac.Authenticate(rctx, in, opts...)
return err
})
return resp, err
diff --git a/vendor/github.com/coreos/etcd/clientv3/txn.go b/vendor/github.com/coreos/etcd/clientv3/txn.go
index a61decd6406d..1a80c8ebaabe 100644
--- a/vendor/github.com/coreos/etcd/clientv3/txn.go
+++ b/vendor/github.com/coreos/etcd/clientv3/txn.go
@@ -18,13 +18,14 @@ import (
"sync"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
)
// Txn is the interface that wraps mini-transactions.
//
-// Tx.If(
+// Txn(context.TODO()).If(
// Compare(Value(k1), ">", v1),
// Compare(Version(k1), "=", 2)
// ).Then(
@@ -49,8 +50,6 @@ type Txn interface {
// Commit tries to commit the transaction.
Commit() (*TxnResponse, error)
-
- // TODO: add a Do for shortcut the txn without any condition?
}
type txn struct {
@@ -68,6 +67,8 @@ type txn struct {
sus []*pb.RequestOp
fas []*pb.RequestOp
+
+ callOpts []grpc.CallOption
}
func (txn *txn) If(cs ...Cmp) Txn {
@@ -137,30 +138,14 @@ func (txn *txn) Else(ops ...Op) Txn {
func (txn *txn) Commit() (*TxnResponse, error) {
txn.mu.Lock()
defer txn.mu.Unlock()
- for {
- resp, err := txn.commit()
- if err == nil {
- return resp, err
- }
- if isHaltErr(txn.ctx, err) {
- return nil, toErr(txn.ctx, err)
- }
- if txn.isWrite {
- return nil, toErr(txn.ctx, err)
- }
- }
-}
-func (txn *txn) commit() (*TxnResponse, error) {
r := &pb.TxnRequest{Compare: txn.cmps, Success: txn.sus, Failure: txn.fas}
- var opts []grpc.CallOption
- if !txn.isWrite {
- opts = []grpc.CallOption{grpc.FailFast(false)}
- }
- resp, err := txn.kv.remote.Txn(txn.ctx, r, opts...)
+ var resp *pb.TxnResponse
+ var err error
+ resp, err = txn.kv.remote.Txn(txn.ctx, r, txn.callOpts...)
if err != nil {
- return nil, err
+ return nil, toErr(txn.ctx, err)
}
return (*TxnResponse)(resp), nil
}
diff --git a/vendor/github.com/coreos/etcd/clientv3/watch.go b/vendor/github.com/coreos/etcd/clientv3/watch.go
index 9b083cc94627..16a91fdff404 100644
--- a/vendor/github.com/coreos/etcd/clientv3/watch.go
+++ b/vendor/github.com/coreos/etcd/clientv3/watch.go
@@ -22,8 +22,12 @@ import (
v3rpc "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
mvccpb "github.com/coreos/etcd/mvcc/mvccpb"
+
"golang.org/x/net/context"
"google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
)
const (
@@ -39,10 +43,9 @@ type WatchChan <-chan WatchResponse
type Watcher interface {
// Watch watches on a key or prefix. The watched events will be returned
- // through the returned channel.
- // If the watch is slow or the required rev is compacted, the watch request
- // might be canceled from the server-side and the chan will be closed.
- // 'opts' can be: 'WithRev' and/or 'WithPrefix'.
+ // through the returned channel. If revisions waiting to be sent over the
+ // watch are compacted, then the watch will be canceled by the server, the
+ // client will post a compacted error watch response, and the channel will close.
Watch(ctx context.Context, key string, opts ...OpOption) WatchChan
// Close closes the watcher and cancels all watch requests.
@@ -65,6 +68,9 @@ type WatchResponse struct {
Created bool
closeErr error
+
+ // cancelReason is a reason of canceling watch
+ cancelReason string
}
// IsCreate returns true if the event tells that the key is newly created.
@@ -85,6 +91,9 @@ func (wr *WatchResponse) Err() error {
case wr.CompactRevision != 0:
return v3rpc.ErrCompacted
case wr.Canceled:
+ if len(wr.cancelReason) != 0 {
+ return v3rpc.Error(status.Error(codes.FailedPrecondition, wr.cancelReason))
+ }
return v3rpc.ErrFutureRev
}
return nil
@@ -97,7 +106,8 @@ func (wr *WatchResponse) IsProgressNotify() bool {
// watcher implements the Watcher interface
type watcher struct {
- remote pb.WatchClient
+ remote pb.WatchClient
+ callOpts []grpc.CallOption
// mu protects the grpc streams map
mu sync.RWMutex
@@ -108,8 +118,9 @@ type watcher struct {
// watchGrpcStream tracks all watch resources attached to a single grpc stream.
type watchGrpcStream struct {
- owner *watcher
- remote pb.WatchClient
+ owner *watcher
+ remote pb.WatchClient
+ callOpts []grpc.CallOption
// ctx controls internal remote.Watch requests
ctx context.Context
@@ -128,7 +139,7 @@ type watchGrpcStream struct {
respc chan *pb.WatchResponse
// donec closes to broadcast shutdown
donec chan struct{}
- // errc transmits errors from grpc Recv to the watch stream reconn logic
+ // errc transmits errors from grpc Recv to the watch stream reconnect logic
errc chan error
// closingc gets the watcherStream of closing watchers
closingc chan *watcherStream
@@ -180,14 +191,18 @@ type watcherStream struct {
}
func NewWatcher(c *Client) Watcher {
- return NewWatchFromWatchClient(pb.NewWatchClient(c.conn))
+ return NewWatchFromWatchClient(pb.NewWatchClient(c.conn), c)
}
-func NewWatchFromWatchClient(wc pb.WatchClient) Watcher {
- return &watcher{
+func NewWatchFromWatchClient(wc pb.WatchClient, c *Client) Watcher {
+ w := &watcher{
remote: wc,
streams: make(map[string]*watchGrpcStream),
}
+ if c != nil {
+ w.callOpts = c.callOpts
+ }
+ return w
}
// never closes
@@ -206,17 +221,17 @@ func (w *watcher) newWatcherGrpcStream(inctx context.Context) *watchGrpcStream {
wgs := &watchGrpcStream{
owner: w,
remote: w.remote,
+ callOpts: w.callOpts,
ctx: ctx,
- ctxKey: fmt.Sprintf("%v", inctx),
+ ctxKey: streamKeyFromCtx(inctx),
cancel: cancel,
substreams: make(map[int64]*watcherStream),
-
- respc: make(chan *pb.WatchResponse),
- reqc: make(chan *watchRequest),
- donec: make(chan struct{}),
- errc: make(chan error, 1),
- closingc: make(chan *watcherStream),
- resumec: make(chan struct{}),
+ respc: make(chan *pb.WatchResponse),
+ reqc: make(chan *watchRequest),
+ donec: make(chan struct{}),
+ errc: make(chan error, 1),
+ closingc: make(chan *watcherStream),
+ resumec: make(chan struct{}),
}
go wgs.run()
return wgs
@@ -247,7 +262,7 @@ func (w *watcher) Watch(ctx context.Context, key string, opts ...OpOption) Watch
}
ok := false
- ctxKey := fmt.Sprintf("%v", ctx)
+ ctxKey := streamKeyFromCtx(ctx)
// find or allocate appropriate grpc watch stream
w.mu.Lock()
@@ -310,14 +325,14 @@ func (w *watcher) Close() (err error) {
w.streams = nil
w.mu.Unlock()
for _, wgs := range streams {
- if werr := wgs.Close(); werr != nil {
+ if werr := wgs.close(); werr != nil {
err = werr
}
}
return err
}
-func (w *watchGrpcStream) Close() (err error) {
+func (w *watchGrpcStream) close() (err error) {
w.cancel()
<-w.donec
select {
@@ -428,7 +443,7 @@ func (w *watchGrpcStream) run() {
initReq: *wreq,
id: -1,
outc: outc,
- // unbufffered so resumes won't cause repeat events
+ // unbuffered so resumes won't cause repeat events
recvc: make(chan *WatchResponse),
}
@@ -480,7 +495,7 @@ func (w *watchGrpcStream) run() {
req := &pb.WatchRequest{RequestUnion: cr}
wc.Send(req)
}
- // watch client failed to recv; spawn another if possible
+ // watch client failed on Recv; spawn another if possible
case err := <-w.errc:
if isHaltErr(w.ctx, err) || toErr(w.ctx, err) == v3rpc.ErrNoLeader {
closeErr = err
@@ -520,10 +535,6 @@ func (w *watchGrpcStream) nextResume() *watcherStream {
// dispatchEvent sends a WatchResponse to the appropriate watcher stream
func (w *watchGrpcStream) dispatchEvent(pbresp *pb.WatchResponse) bool {
- ws, ok := w.substreams[pbresp.WatchId]
- if !ok {
- return false
- }
events := make([]*Event, len(pbresp.Events))
for i, ev := range pbresp.Events {
events[i] = (*Event)(ev)
@@ -534,6 +545,11 @@ func (w *watchGrpcStream) dispatchEvent(pbresp *pb.WatchResponse) bool {
CompactRevision: pbresp.CompactRevision,
Created: pbresp.Created,
Canceled: pbresp.Canceled,
+ cancelReason: pbresp.CancelReason,
+ }
+ ws, ok := w.substreams[pbresp.WatchId]
+ if !ok {
+ return false
}
select {
case ws.recvc <- wr:
@@ -725,7 +741,11 @@ func (w *watchGrpcStream) waitCancelSubstreams(stopc <-chan struct{}) <-chan str
ws.closing = true
close(ws.outc)
ws.outc = nil
- go func() { w.closingc <- ws }()
+ w.wg.Add(1)
+ go func() {
+ defer w.wg.Done()
+ w.closingc <- ws
+ }()
case <-stopc:
}
}(w.resuming[i])
@@ -737,7 +757,7 @@ func (w *watchGrpcStream) waitCancelSubstreams(stopc <-chan struct{}) <-chan str
return donec
}
-// joinSubstream waits for all substream goroutines to complete
+// joinSubstreams waits for all substream goroutines to complete.
func (w *watchGrpcStream) joinSubstreams() {
for _, ws := range w.substreams {
<-ws.donec
@@ -749,7 +769,9 @@ func (w *watchGrpcStream) joinSubstreams() {
}
}
-// openWatchClient retries opening a watchclient until retryConnection fails
+// openWatchClient retries opening a watch client until success or halt.
+// manually retry in case "ws==nil && err==nil"
+// TODO: remove FailFast=false
func (w *watchGrpcStream) openWatchClient() (ws pb.Watch_WatchClient, err error) {
for {
select {
@@ -760,7 +782,7 @@ func (w *watchGrpcStream) openWatchClient() (ws pb.Watch_WatchClient, err error)
return nil, err
default:
}
- if ws, err = w.remote.Watch(w.ctx, grpc.FailFast(false)); ws != nil && err == nil {
+ if ws, err = w.remote.Watch(w.ctx, w.callOpts...); ws != nil && err == nil {
break
}
if isHaltErr(w.ctx, err) {
@@ -770,7 +792,7 @@ func (w *watchGrpcStream) openWatchClient() (ws pb.Watch_WatchClient, err error)
return ws, nil
}
-// toPB converts an internal watch request structure to its protobuf messagefunc (wr *watchRequest)
+// toPB converts an internal watch request structure to its protobuf WatchRequest structure.
func (wr *watchRequest) toPB() *pb.WatchRequest {
req := &pb.WatchCreateRequest{
StartRevision: wr.rev,
@@ -783,3 +805,10 @@ func (wr *watchRequest) toPB() *pb.WatchRequest {
cr := &pb.WatchRequest_CreateRequest{CreateRequest: req}
return &pb.WatchRequest{RequestUnion: cr}
}
+
+func streamKeyFromCtx(ctx context.Context) string {
+ if md, ok := metadata.FromOutgoingContext(ctx); ok {
+ return fmt.Sprintf("%+v", md)
+ }
+ return ""
+}
diff --git a/vendor/github.com/coreos/etcd/compactor/compactor.go b/vendor/github.com/coreos/etcd/compactor/compactor.go
index 322a0987011c..5cf7b65094a3 100644
--- a/vendor/github.com/coreos/etcd/compactor/compactor.go
+++ b/vendor/github.com/coreos/etcd/compactor/compactor.go
@@ -30,7 +30,8 @@ var (
)
const (
- checkCompactionInterval = 5 * time.Minute
+ checkCompactionInterval = 5 * time.Minute
+ executeCompactionInterval = time.Hour
)
type Compactable interface {
@@ -41,6 +42,8 @@ type RevGetter interface {
Rev() int64
}
+// Periodic compacts the log by purging revisions older than
+// the configured retention time. Compaction happens hourly.
type Periodic struct {
clock clockwork.Clock
periodInHour int
@@ -85,11 +88,12 @@ func (t *Periodic) Run() {
continue
}
}
- if clock.Now().Sub(last) < time.Duration(t.periodInHour)*time.Hour {
+
+ if clock.Now().Sub(last) < executeCompactionInterval {
continue
}
- rev := t.getRev(t.periodInHour)
+ rev, remaining := t.getRev(t.periodInHour)
if rev < 0 {
continue
}
@@ -97,11 +101,11 @@ func (t *Periodic) Run() {
plog.Noticef("Starting auto-compaction at revision %d", rev)
_, err := t.c.Compact(t.ctx, &pb.CompactionRequest{Revision: rev})
if err == nil || err == mvcc.ErrCompacted {
- t.revs = make([]int64, 0)
+ t.revs = remaining
last = clock.Now()
plog.Noticef("Finished auto-compaction at revision %d", rev)
} else {
- plog.Noticef("Failed auto-compaction at revision %d (%v)", err, rev)
+ plog.Noticef("Failed auto-compaction at revision %d (%v)", rev, err)
plog.Noticef("Retry after %v", checkCompactionInterval)
}
}
@@ -124,10 +128,10 @@ func (t *Periodic) Resume() {
t.paused = false
}
-func (t *Periodic) getRev(h int) int64 {
+func (t *Periodic) getRev(h int) (int64, []int64) {
i := len(t.revs) - int(time.Duration(h)*time.Hour/checkCompactionInterval)
if i < 0 {
- return -1
+ return -1, t.revs
}
- return t.revs[i]
+ return t.revs[i], t.revs[i+1:]
}
diff --git a/vendor/github.com/coreos/etcd/discovery/srv.go b/vendor/github.com/coreos/etcd/discovery/srv.go
deleted file mode 100644
index c3d20ca92437..000000000000
--- a/vendor/github.com/coreos/etcd/discovery/srv.go
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2015 The etcd Authors
-//
-// 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 discovery
-
-import (
- "fmt"
- "net"
- "net/url"
- "strings"
-
- "github.com/coreos/etcd/pkg/types"
-)
-
-var (
- // indirection for testing
- lookupSRV = net.LookupSRV
- resolveTCPAddr = net.ResolveTCPAddr
-)
-
-// SRVGetCluster gets the cluster information via DNS discovery.
-// TODO(barakmich): Currently ignores priority and weight (as they don't make as much sense for a bootstrap)
-// Also doesn't do any lookups for the token (though it could)
-// Also sees each entry as a separate instance.
-func SRVGetCluster(name, dns string, defaultToken string, apurls types.URLs) (string, string, error) {
- tempName := int(0)
- tcp2ap := make(map[string]url.URL)
-
- // First, resolve the apurls
- for _, url := range apurls {
- tcpAddr, err := resolveTCPAddr("tcp", url.Host)
- if err != nil {
- plog.Errorf("couldn't resolve host %s during SRV discovery", url.Host)
- return "", "", err
- }
- tcp2ap[tcpAddr.String()] = url
- }
-
- stringParts := []string{}
- updateNodeMap := func(service, scheme string) error {
- _, addrs, err := lookupSRV(service, "tcp", dns)
- if err != nil {
- return err
- }
- for _, srv := range addrs {
- port := fmt.Sprintf("%d", srv.Port)
- host := net.JoinHostPort(srv.Target, port)
- tcpAddr, err := resolveTCPAddr("tcp", host)
- if err != nil {
- plog.Warningf("couldn't resolve host %s during SRV discovery", host)
- continue
- }
- n := ""
- url, ok := tcp2ap[tcpAddr.String()]
- if ok {
- n = name
- }
- if n == "" {
- n = fmt.Sprintf("%d", tempName)
- tempName++
- }
- // SRV records have a trailing dot but URL shouldn't.
- shortHost := strings.TrimSuffix(srv.Target, ".")
- urlHost := net.JoinHostPort(shortHost, port)
- stringParts = append(stringParts, fmt.Sprintf("%s=%s://%s", n, scheme, urlHost))
- plog.Noticef("got bootstrap from DNS for %s at %s://%s", service, scheme, urlHost)
- if ok && url.Scheme != scheme {
- plog.Errorf("bootstrap at %s from DNS for %s has scheme mismatch with expected peer %s", scheme+"://"+urlHost, service, url.String())
- }
- }
- return nil
- }
-
- failCount := 0
- err := updateNodeMap("etcd-server-ssl", "https")
- srvErr := make([]string, 2)
- if err != nil {
- srvErr[0] = fmt.Sprintf("error querying DNS SRV records for _etcd-server-ssl %s", err)
- failCount++
- }
- err = updateNodeMap("etcd-server", "http")
- if err != nil {
- srvErr[1] = fmt.Sprintf("error querying DNS SRV records for _etcd-server %s", err)
- failCount++
- }
- if failCount == 2 {
- plog.Warningf(srvErr[0])
- plog.Warningf(srvErr[1])
- plog.Errorf("SRV discovery failed: too many errors querying DNS SRV records")
- return "", "", err
- }
- return strings.Join(stringParts, ","), defaultToken, nil
-}
diff --git a/vendor/github.com/coreos/etcd/embed/config.go b/vendor/github.com/coreos/etcd/embed/config.go
index 242145301631..90efb3937d79 100644
--- a/vendor/github.com/coreos/etcd/embed/config.go
+++ b/vendor/github.com/coreos/etcd/embed/config.go
@@ -21,23 +21,30 @@ import (
"net/http"
"net/url"
"strings"
+ "time"
- "github.com/coreos/etcd/discovery"
"github.com/coreos/etcd/etcdserver"
"github.com/coreos/etcd/pkg/cors"
"github.com/coreos/etcd/pkg/netutil"
+ "github.com/coreos/etcd/pkg/srv"
"github.com/coreos/etcd/pkg/transport"
"github.com/coreos/etcd/pkg/types"
+
"github.com/ghodss/yaml"
+ "google.golang.org/grpc"
)
const (
ClusterStateFlagNew = "new"
ClusterStateFlagExisting = "existing"
- DefaultName = "default"
- DefaultMaxSnapshots = 5
- DefaultMaxWALs = 5
+ DefaultName = "default"
+ DefaultMaxSnapshots = 5
+ DefaultMaxWALs = 5
+ DefaultMaxRequestBytes = 1.5 * 1024 * 1024
+ DefaultGRPCKeepAliveMinTime = 5 * time.Second
+ DefaultGRPCKeepAliveInterval = 2 * time.Hour
+ DefaultGRPCKeepAliveTimeout = 20 * time.Second
DefaultListenPeerURLs = "http://localhost:2380"
DefaultListenClientURLs = "http://localhost:2379"
@@ -83,6 +90,24 @@ type Config struct {
TickMs uint `json:"heartbeat-interval"`
ElectionMs uint `json:"election-timeout"`
QuotaBackendBytes int64 `json:"quota-backend-bytes"`
+ MaxRequestBytes uint `json:"max-request-bytes"`
+
+ // gRPC server options
+
+ // GRPCKeepAliveMinTime is the minimum interval that a client should
+ // wait before pinging server. When client pings "too fast", server
+ // sends goaway and closes the connection (errors: too_many_pings,
+ // http2.ErrCodeEnhanceYourCalm). When too slow, nothing happens.
+ // Server expects client pings only when there is any active streams
+ // (PermitWithoutStream is set false).
+ GRPCKeepAliveMinTime time.Duration `json:"grpc-keepalive-min-time"`
+ // GRPCKeepAliveInterval is the frequency of server-to-client ping
+ // to check if a connection is alive. Close a non-responsive connection
+ // after an additional duration of Timeout. 0 to disable.
+ GRPCKeepAliveInterval time.Duration `json:"grpc-keepalive-interval"`
+ // GRPCKeepAliveTimeout is the additional duration of wait
+ // before closing a non-responsive connection. 0 to disable.
+ GRPCKeepAliveTimeout time.Duration `json:"grpc-keepalive-timeout"`
// clustering
@@ -94,6 +119,7 @@ type Config struct {
InitialCluster string `json:"initial-cluster"`
InitialClusterToken string `json:"initial-cluster-token"`
StrictReconfigCheck bool `json:"strict-reconfig-check"`
+ EnableV2 bool `json:"enable-v2"`
// security
@@ -106,7 +132,7 @@ type Config struct {
Debug bool `json:"debug"`
LogPkgLevels string `json:"log-package-levels"`
- EnablePprof bool
+ EnablePprof bool `json:"enable-pprof"`
Metrics string `json:"metrics"`
// ForceNewCluster starts a new cluster even if previously started; unsafe.
@@ -117,6 +143,18 @@ type Config struct {
// The map key is the route path for the handler, and
// you must ensure it can't be conflicted with etcd's.
UserHandlers map[string]http.Handler `json:"-"`
+ // ServiceRegister is for registering users' gRPC services. A simple usage example:
+ // cfg := embed.NewConfig()
+ // cfg.ServerRegister = func(s *grpc.Server) {
+ // pb.RegisterFooServer(s, &fooServer{})
+ // pb.RegisterBarServer(s, &barServer{})
+ // }
+ // embed.StartEtcd(cfg)
+ ServiceRegister func(*grpc.Server) `json:"-"`
+
+ // auth
+
+ AuthToken string `json:"auth-token"`
}
// configYAML holds the config suitable for yaml parsing
@@ -152,21 +190,27 @@ func NewConfig() *Config {
lcurl, _ := url.Parse(DefaultListenClientURLs)
acurl, _ := url.Parse(DefaultAdvertiseClientURLs)
cfg := &Config{
- CorsInfo: &cors.CORSInfo{},
- MaxSnapFiles: DefaultMaxSnapshots,
- MaxWalFiles: DefaultMaxWALs,
- Name: DefaultName,
- SnapCount: etcdserver.DefaultSnapCount,
- TickMs: 100,
- ElectionMs: 1000,
- LPUrls: []url.URL{*lpurl},
- LCUrls: []url.URL{*lcurl},
- APUrls: []url.URL{*apurl},
- ACUrls: []url.URL{*acurl},
- ClusterState: ClusterStateFlagNew,
- InitialClusterToken: "etcd-cluster",
- StrictReconfigCheck: true,
- Metrics: "basic",
+ CorsInfo: &cors.CORSInfo{},
+ MaxSnapFiles: DefaultMaxSnapshots,
+ MaxWalFiles: DefaultMaxWALs,
+ Name: DefaultName,
+ SnapCount: etcdserver.DefaultSnapCount,
+ MaxRequestBytes: DefaultMaxRequestBytes,
+ GRPCKeepAliveMinTime: DefaultGRPCKeepAliveMinTime,
+ GRPCKeepAliveInterval: DefaultGRPCKeepAliveInterval,
+ GRPCKeepAliveTimeout: DefaultGRPCKeepAliveTimeout,
+ TickMs: 100,
+ ElectionMs: 1000,
+ LPUrls: []url.URL{*lpurl},
+ LCUrls: []url.URL{*lcurl},
+ APUrls: []url.URL{*apurl},
+ ACUrls: []url.URL{*acurl},
+ ClusterState: ClusterStateFlagNew,
+ InitialClusterToken: "etcd-cluster",
+ StrictReconfigCheck: true,
+ Metrics: "basic",
+ EnableV2: true,
+ AuthToken: "simple",
}
cfg.InitialCluster = cfg.InitialClusterFromName(cfg.Name)
return cfg
@@ -186,6 +230,8 @@ func (cfg *configYAML) configFromFile(path string) error {
return err
}
+ defaultInitialCluster := cfg.InitialCluster
+
err = yaml.Unmarshal(b, cfg)
if err != nil {
return err
@@ -229,7 +275,8 @@ func (cfg *configYAML) configFromFile(path string) error {
cfg.ACUrls = []url.URL(u)
}
- if (cfg.Durl != "" || cfg.DNSCluster != "") && cfg.InitialCluster == cfg.InitialClusterFromName(cfg.Name) {
+ // If a discovery flag is set, clear default initial cluster set by InitialClusterFromName
+ if (cfg.Durl != "" || cfg.DNSCluster != "") && cfg.InitialCluster == defaultInitialCluster {
cfg.InitialCluster = ""
}
if cfg.ClusterState == "" {
@@ -292,6 +339,7 @@ func (cfg *Config) Validate() error {
// PeerURLsMapAndToken sets up an initial peer URLsMap and cluster token for bootstrap or discovery.
func (cfg *Config) PeerURLsMapAndToken(which string) (urlsmap types.URLsMap, token string, err error) {
+ token = cfg.InitialClusterToken
switch {
case cfg.Durl != "":
urlsmap = types.URLsMap{}
@@ -300,11 +348,15 @@ func (cfg *Config) PeerURLsMapAndToken(which string) (urlsmap types.URLsMap, tok
urlsmap[cfg.Name] = cfg.APUrls
token = cfg.Durl
case cfg.DNSCluster != "":
- var clusterStr string
- clusterStr, token, err = discovery.SRVGetCluster(cfg.Name, cfg.DNSCluster, cfg.InitialClusterToken, cfg.APUrls)
- if err != nil {
- return nil, "", err
+ clusterStrs, cerr := srv.GetCluster("etcd-server", cfg.Name, cfg.DNSCluster, cfg.APUrls)
+ if cerr != nil {
+ plog.Errorf("couldn't resolve during SRV discovery (%v)", cerr)
+ return nil, "", cerr
+ }
+ for _, s := range clusterStrs {
+ plog.Noticef("got bootstrap from DNS for etcd-server at %s", s)
}
+ clusterStr := strings.Join(clusterStrs, ",")
if strings.Contains(clusterStr, "https://") && cfg.PeerTLSInfo.CAFile == "" {
cfg.PeerTLSInfo.ServerName = cfg.DNSCluster
}
@@ -319,7 +371,6 @@ func (cfg *Config) PeerURLsMapAndToken(which string) (urlsmap types.URLsMap, tok
default:
// We're statically configured, and cluster has appropriately been set.
urlsmap, err = types.NewURLsMap(cfg.InitialCluster)
- token = cfg.InitialClusterToken
}
return urlsmap, token, err
}
@@ -367,7 +418,7 @@ func (cfg *Config) UpdateDefaultClusterFromName(defaultInitialCluster string) (s
}
used := false
- pip, pport, _ := net.SplitHostPort(cfg.LPUrls[0].Host)
+ pip, pport := cfg.LPUrls[0].Hostname(), cfg.LPUrls[0].Port()
if cfg.defaultPeerHost() && pip == "0.0.0.0" {
cfg.APUrls[0] = url.URL{Scheme: cfg.APUrls[0].Scheme, Host: fmt.Sprintf("%s:%s", defaultHostname, pport)}
used = true
@@ -377,7 +428,7 @@ func (cfg *Config) UpdateDefaultClusterFromName(defaultInitialCluster string) (s
cfg.InitialCluster = cfg.InitialClusterFromName(cfg.Name)
}
- cip, cport, _ := net.SplitHostPort(cfg.LCUrls[0].Host)
+ cip, cport := cfg.LCUrls[0].Hostname(), cfg.LCUrls[0].Port()
if cfg.defaultClientHost() && cip == "0.0.0.0" {
cfg.ACUrls[0] = url.URL{Scheme: cfg.ACUrls[0].Scheme, Host: fmt.Sprintf("%s:%s", defaultHostname, cport)}
used = true
@@ -406,8 +457,7 @@ func checkBindURLs(urls []url.URL) error {
continue
}
if net.ParseIP(host) == nil {
- err := fmt.Errorf("expected IP in URL for binding (%s)", url.String())
- plog.Warning(err)
+ return fmt.Errorf("expected IP in URL for binding (%s)", url.String())
}
}
return nil
diff --git a/vendor/github.com/coreos/etcd/embed/etcd.go b/vendor/github.com/coreos/etcd/embed/etcd.go
index a33a85546259..2f500f9f13b7 100644
--- a/vendor/github.com/coreos/etcd/embed/etcd.go
+++ b/vendor/github.com/coreos/etcd/embed/etcd.go
@@ -15,20 +15,32 @@
package embed
import (
+ "context"
"crypto/tls"
"fmt"
+ "io/ioutil"
+ defaultLog "log"
"net"
"net/http"
"path/filepath"
+ "sync"
+ "time"
"github.com/coreos/etcd/etcdserver"
+ "github.com/coreos/etcd/etcdserver/api/etcdhttp"
"github.com/coreos/etcd/etcdserver/api/v2http"
+ "github.com/coreos/etcd/etcdserver/api/v3rpc"
"github.com/coreos/etcd/pkg/cors"
+ "github.com/coreos/etcd/pkg/debugutil"
runtimeutil "github.com/coreos/etcd/pkg/runtime"
"github.com/coreos/etcd/pkg/transport"
"github.com/coreos/etcd/pkg/types"
"github.com/coreos/etcd/rafthttp"
+
+ "github.com/cockroachdb/cmux"
"github.com/coreos/pkg/capnslog"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/keepalive"
)
var plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "embed")
@@ -49,13 +61,24 @@ const (
// Etcd contains a running etcd server and its listeners.
type Etcd struct {
- Peers []net.Listener
+ Peers []*peerListener
Clients []net.Listener
- Server *etcdserver.EtcdServer
+ // a map of contexts for the servers that serves client requests.
+ sctxs map[string]*serveCtx
+
+ Server *etcdserver.EtcdServer
cfg Config
+ stopc chan struct{}
errc chan error
- sctxs map[string]*serveCtx
+
+ closeOnce sync.Once
+}
+
+type peerListener struct {
+ net.Listener
+ serve func() error
+ close func(context.Context) error
}
// StartEtcd launches the etcd server and HTTP handlers for client/server communication.
@@ -65,20 +88,28 @@ func StartEtcd(inCfg *Config) (e *Etcd, err error) {
if err = inCfg.Validate(); err != nil {
return nil, err
}
- e = &Etcd{cfg: *inCfg}
+ serving := false
+ e = &Etcd{cfg: *inCfg, stopc: make(chan struct{})}
cfg := &e.cfg
defer func() {
- if e != nil && err != nil {
- e.Close()
- e = nil
+ if e == nil || err == nil {
+ return
+ }
+ if !serving {
+ // errored before starting gRPC server for serveCtx.serversC
+ for _, sctx := range e.sctxs {
+ close(sctx.serversC)
+ }
}
+ e.Close()
+ e = nil
}()
if e.Peers, err = startPeerListeners(cfg); err != nil {
- return
+ return e, err
}
if e.sctxs, err = startClientListeners(cfg); err != nil {
- return
+ return e, err
}
for _, sctx := range e.sctxs {
e.Clients = append(e.Clients, sctx.l)
@@ -116,22 +147,31 @@ func StartEtcd(inCfg *Config) (e *Etcd, err error) {
ElectionTicks: cfg.ElectionTicks(),
AutoCompactionRetention: cfg.AutoCompactionRetention,
QuotaBackendBytes: cfg.QuotaBackendBytes,
+ MaxRequestBytes: cfg.MaxRequestBytes,
StrictReconfigCheck: cfg.StrictReconfigCheck,
ClientCertAuthEnabled: cfg.ClientTLSInfo.ClientCertAuth,
+ AuthToken: cfg.AuthToken,
+ Debug: cfg.Debug,
}
if e.Server, err = etcdserver.NewServer(srvcfg); err != nil {
- return
+ return e, err
}
// buffer channel so goroutines on closed connections won't wait forever
e.errc = make(chan error, len(e.Peers)+len(e.Clients)+2*len(e.sctxs))
e.Server.Start()
- if err = e.serve(); err != nil {
- return
+
+ if err = e.servePeers(); err != nil {
+ return e, err
+ }
+ if err = e.serveClients(); err != nil {
+ return e, err
}
- return
+
+ serving = true
+ return e, nil
}
// Config returns the current configuration.
@@ -139,28 +179,90 @@ func (e *Etcd) Config() Config {
return e.cfg
}
+// Close gracefully shuts down all servers/listeners.
+// Client requests will be terminated with request timeout.
+// After timeout, enforce remaning requests be closed immediately.
func (e *Etcd) Close() {
- for _, sctx := range e.sctxs {
- sctx.cancel()
+ e.closeOnce.Do(func() { close(e.stopc) })
+
+ // close client requests with request timeout
+ timeout := 2 * time.Second
+ if e.Server != nil {
+ timeout = e.Server.Cfg.ReqTimeout()
}
- for i := range e.Peers {
- if e.Peers[i] != nil {
- e.Peers[i].Close()
+ for _, sctx := range e.sctxs {
+ for ss := range sctx.serversC {
+ ctx, cancel := context.WithTimeout(context.Background(), timeout)
+ stopServers(ctx, ss)
+ cancel()
}
}
+
+ for _, sctx := range e.sctxs {
+ sctx.cancel()
+ }
+
for i := range e.Clients {
if e.Clients[i] != nil {
e.Clients[i].Close()
}
}
+
+ // close rafthttp transports
if e.Server != nil {
e.Server.Stop()
}
+
+ // close all idle connections in peer handler (wait up to 1-second)
+ for i := range e.Peers {
+ if e.Peers[i] != nil && e.Peers[i].close != nil {
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+ e.Peers[i].close(ctx)
+ cancel()
+ }
+ }
+}
+
+func stopServers(ctx context.Context, ss *servers) {
+ shutdownNow := func() {
+ // first, close the http.Server
+ ss.http.Shutdown(ctx)
+ // then close grpc.Server; cancels all active RPCs
+ ss.grpc.Stop()
+ }
+
+ // do not grpc.Server.GracefulStop with TLS enabled etcd server
+ // See https://github.com/grpc/grpc-go/issues/1384#issuecomment-317124531
+ // and https://github.com/coreos/etcd/issues/8916
+ if ss.secure {
+ shutdownNow()
+ return
+ }
+
+ ch := make(chan struct{})
+ go func() {
+ defer close(ch)
+ // close listeners to stop accepting new connections,
+ // will block on any existing transports
+ ss.grpc.GracefulStop()
+ }()
+
+ // wait until all pending RPCs are finished
+ select {
+ case <-ch:
+ case <-ctx.Done():
+ // took too long, manually close open transports
+ // e.g. watch streams
+ shutdownNow()
+
+ // concurrent GracefulStop should be interrupted
+ <-ch
+ }
}
func (e *Etcd) Err() <-chan error { return e.errc }
-func startPeerListeners(cfg *Config) (plns []net.Listener, err error) {
+func startPeerListeners(cfg *Config) (peers []*peerListener, err error) {
if cfg.PeerAutoTLS && cfg.PeerTLSInfo.Empty() {
phosts := make([]string, len(cfg.LPUrls))
for i, u := range cfg.LPUrls {
@@ -178,22 +280,22 @@ func startPeerListeners(cfg *Config) (plns []net.Listener, err error) {
plog.Infof("peerTLS: %s", cfg.PeerTLSInfo)
}
- plns = make([]net.Listener, len(cfg.LPUrls))
+ peers = make([]*peerListener, len(cfg.LPUrls))
defer func() {
if err == nil {
return
}
- for i := range plns {
- if plns[i] == nil {
- continue
+ for i := range peers {
+ if peers[i] != nil && peers[i].close != nil {
+ plog.Info("stopping listening for peers on ", cfg.LPUrls[i].String())
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+ peers[i].close(ctx)
+ cancel()
}
- plns[i].Close()
- plog.Info("stopping listening for peers on ", cfg.LPUrls[i].String())
}
}()
for i, u := range cfg.LPUrls {
- var tlscfg *tls.Config
if u.Scheme == "http" {
if !cfg.PeerTLSInfo.Empty() {
plog.Warningf("The scheme of peer url %s is HTTP while peer key/cert files are presented. Ignored peer key/cert files.", u.String())
@@ -202,17 +304,57 @@ func startPeerListeners(cfg *Config) (plns []net.Listener, err error) {
plog.Warningf("The scheme of peer url %s is HTTP while client cert auth (--peer-client-cert-auth) is enabled. Ignored client cert auth for this url.", u.String())
}
}
- if !cfg.PeerTLSInfo.Empty() {
- if tlscfg, err = cfg.PeerTLSInfo.ServerConfig(); err != nil {
- return nil, err
- }
- }
- if plns[i], err = rafthttp.NewListener(u, tlscfg); err != nil {
+ peers[i] = &peerListener{close: func(context.Context) error { return nil }}
+ peers[i].Listener, err = rafthttp.NewListener(u, &cfg.PeerTLSInfo)
+ if err != nil {
return nil, err
}
+ // once serve, overwrite with 'http.Server.Shutdown'
+ peers[i].close = func(context.Context) error {
+ return peers[i].Listener.Close()
+ }
plog.Info("listening for peers on ", u.String())
}
- return plns, nil
+ return peers, nil
+}
+
+// configure peer handlers after rafthttp.Transport started
+func (e *Etcd) servePeers() (err error) {
+ ph := etcdhttp.NewPeerHandler(e.Server)
+ var peerTLScfg *tls.Config
+ if !e.cfg.PeerTLSInfo.Empty() {
+ if peerTLScfg, err = e.cfg.PeerTLSInfo.ServerConfig(); err != nil {
+ return err
+ }
+ }
+
+ for _, p := range e.Peers {
+ gs := v3rpc.Server(e.Server, peerTLScfg)
+ m := cmux.New(p.Listener)
+ go gs.Serve(m.Match(cmux.HTTP2()))
+ srv := &http.Server{
+ Handler: grpcHandlerFunc(gs, ph),
+ ReadTimeout: 5 * time.Minute,
+ ErrorLog: defaultLog.New(ioutil.Discard, "", 0), // do not log user error
+ }
+ go srv.Serve(m.Match(cmux.Any()))
+ p.serve = func() error { return m.Serve() }
+ p.close = func(ctx context.Context) error {
+ // gracefully shutdown http.Server
+ // close open listeners, idle connections
+ // until context cancel or time-out
+ stopServers(ctx, &servers{secure: peerTLScfg != nil, grpc: gs, http: srv})
+ return nil
+ }
+ }
+
+ // start peer servers in a goroutine
+ for _, pl := range e.Peers {
+ go func(l *peerListener) {
+ e.errHandler(l.serve())
+ }(pl)
+ }
+ return nil
}
func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
@@ -230,7 +372,7 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
}
if cfg.EnablePprof {
- plog.Infof("pprof is enabled under %s", pprofPrefix)
+ plog.Infof("pprof is enabled under %s", debugutil.HTTPPrefixPProf)
}
sctxs = make(map[string]*serveCtx)
@@ -250,21 +392,26 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
}
proto := "tcp"
+ addr := u.Host
if u.Scheme == "unix" || u.Scheme == "unixs" {
proto = "unix"
+ addr = u.Host + u.Path
}
sctx.secure = u.Scheme == "https" || u.Scheme == "unixs"
sctx.insecure = !sctx.secure
- if oldctx := sctxs[u.Host]; oldctx != nil {
+ if oldctx := sctxs[addr]; oldctx != nil {
oldctx.secure = oldctx.secure || sctx.secure
oldctx.insecure = oldctx.insecure || sctx.insecure
continue
}
- if sctx.l, err = net.Listen(proto, u.Host); err != nil {
+ if sctx.l, err = net.Listen(proto, addr); err != nil {
return nil, err
}
+ // net.Listener will rewrite ipv4 0.0.0.0 to ipv6 [::], breaking
+ // hosts that disable ipv6. So, use the address given by the user.
+ sctx.addr = addr
if fdLimit, fderr := runtimeutil.FDLimit(); fderr == nil {
if fdLimit <= reservedInternalFDNum {
@@ -289,15 +436,19 @@ func startClientListeners(cfg *Config) (sctxs map[string]*serveCtx, err error) {
for k := range cfg.UserHandlers {
sctx.userHandlers[k] = cfg.UserHandlers[k]
}
- if cfg.EnablePprof {
+ sctx.serviceRegister = cfg.ServiceRegister
+ if cfg.EnablePprof || cfg.Debug {
sctx.registerPprof()
}
- sctxs[u.Host] = sctx
+ if cfg.Debug {
+ sctx.registerTrace()
+ }
+ sctxs[addr] = sctx
}
return sctxs, nil
}
-func (e *Etcd) serve() (err error) {
+func (e *Etcd) serveClients() (err error) {
var ctlscfg *tls.Config
if !e.cfg.ClientTLSInfo.Empty() {
plog.Infof("ClientTLS: %s", e.cfg.ClientTLSInfo)
@@ -310,25 +461,49 @@ func (e *Etcd) serve() (err error) {
plog.Infof("cors = %s", e.cfg.CorsInfo)
}
- // Start the peer server in a goroutine
- ph := v2http.NewPeerHandler(e.Server)
- for _, l := range e.Peers {
- go func(l net.Listener) {
- e.errc <- servePeerHTTP(l, ph)
- }(l)
+ // Start a client server goroutine for each listen address
+ var h http.Handler
+ if e.Config().EnableV2 {
+ h = v2http.NewClientHandler(e.Server, e.Server.Cfg.ReqTimeout())
+ } else {
+ mux := http.NewServeMux()
+ etcdhttp.HandleBasic(mux, e.Server)
+ h = mux
+ }
+ h = http.Handler(&cors.CORSHandler{Handler: h, Info: e.cfg.CorsInfo})
+
+ gopts := []grpc.ServerOption{}
+ if e.cfg.GRPCKeepAliveMinTime > time.Duration(0) {
+ gopts = append(gopts, grpc.KeepaliveEnforcementPolicy(keepalive.EnforcementPolicy{
+ MinTime: e.cfg.GRPCKeepAliveMinTime,
+ PermitWithoutStream: false,
+ }))
+ }
+ if e.cfg.GRPCKeepAliveInterval > time.Duration(0) &&
+ e.cfg.GRPCKeepAliveTimeout > time.Duration(0) {
+ gopts = append(gopts, grpc.KeepaliveParams(keepalive.ServerParameters{
+ Time: e.cfg.GRPCKeepAliveInterval,
+ Timeout: e.cfg.GRPCKeepAliveTimeout,
+ }))
}
- // Start a client server goroutine for each listen address
- ch := http.Handler(&cors.CORSHandler{
- Handler: v2http.NewClientHandler(e.Server, e.Server.Cfg.ReqTimeout()),
- Info: e.cfg.CorsInfo,
- })
+ // start client servers in a goroutine
for _, sctx := range e.sctxs {
- // read timeout does not work with http close notify
- // TODO: https://github.com/golang/go/issues/9524
go func(s *serveCtx) {
- e.errc <- s.serve(e.Server, ctlscfg, ch, e.errc)
+ e.errHandler(s.serve(e.Server, ctlscfg, h, e.errHandler, gopts...))
}(sctx)
}
return nil
}
+
+func (e *Etcd) errHandler(err error) {
+ select {
+ case <-e.stopc:
+ return
+ default:
+ }
+ select {
+ case <-e.stopc:
+ case e.errc <- err:
+ }
+}
diff --git a/vendor/github.com/coreos/etcd/embed/serve.go b/vendor/github.com/coreos/etcd/embed/serve.go
index 84b97615c617..b659bf8b7d68 100644
--- a/vendor/github.com/coreos/etcd/embed/serve.go
+++ b/vendor/github.com/coreos/etcd/embed/serve.go
@@ -20,58 +20,87 @@ import (
defaultLog "log"
"net"
"net/http"
- "net/http/pprof"
"strings"
- "time"
"github.com/coreos/etcd/etcdserver"
+ "github.com/coreos/etcd/etcdserver/api/v3client"
+ "github.com/coreos/etcd/etcdserver/api/v3election"
+ "github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb"
+ v3electiongw "github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/gw"
+ "github.com/coreos/etcd/etcdserver/api/v3lock"
+ "github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb"
+ v3lockgw "github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/gw"
"github.com/coreos/etcd/etcdserver/api/v3rpc"
- pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
- "github.com/coreos/etcd/pkg/transport"
+ etcdservergw "github.com/coreos/etcd/etcdserver/etcdserverpb/gw"
+ "github.com/coreos/etcd/pkg/debugutil"
"github.com/cockroachdb/cmux"
gw "github.com/grpc-ecosystem/grpc-gateway/runtime"
"golang.org/x/net/context"
+ "golang.org/x/net/trace"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials"
)
-const pprofPrefix = "/debug/pprof"
-
type serveCtx struct {
l net.Listener
+ addr string
secure bool
insecure bool
ctx context.Context
cancel context.CancelFunc
- userHandlers map[string]http.Handler
+ userHandlers map[string]http.Handler
+ serviceRegister func(*grpc.Server)
+ serversC chan *servers
+}
+
+type servers struct {
+ secure bool
+ grpc *grpc.Server
+ http *http.Server
}
func newServeCtx() *serveCtx {
ctx, cancel := context.WithCancel(context.Background())
- return &serveCtx{ctx: ctx, cancel: cancel, userHandlers: make(map[string]http.Handler)}
+ return &serveCtx{
+ ctx: ctx,
+ cancel: cancel,
+ userHandlers: make(map[string]http.Handler),
+ serversC: make(chan *servers, 2), // in case sctx.insecure,sctx.secure true
+ }
}
// serve accepts incoming connections on the listener l,
// creating a new service goroutine for each. The service goroutines
// read requests and then call handler to reply to them.
-func (sctx *serveCtx) serve(s *etcdserver.EtcdServer, tlscfg *tls.Config, handler http.Handler, errc chan<- error) error {
+func (sctx *serveCtx) serve(
+ s *etcdserver.EtcdServer,
+ tlscfg *tls.Config,
+ handler http.Handler,
+ errHandler func(error),
+ gopts ...grpc.ServerOption) error {
logger := defaultLog.New(ioutil.Discard, "etcdhttp", 0)
<-s.ReadyNotify()
plog.Info("ready to serve client requests")
m := cmux.New(sctx.l)
+ v3c := v3client.New(s)
+ servElection := v3election.NewElectionServer(v3c)
+ servLock := v3lock.NewLockServer(v3c)
if sctx.insecure {
- gs := v3rpc.Server(s, nil)
+ gs := v3rpc.Server(s, nil, gopts...)
+ v3electionpb.RegisterElectionServer(gs, servElection)
+ v3lockpb.RegisterLockServer(gs, servLock)
+ if sctx.serviceRegister != nil {
+ sctx.serviceRegister(gs)
+ }
grpcl := m.Match(cmux.HTTP2())
- go func() { errc <- gs.Serve(grpcl) }()
+ go func() { errHandler(gs.Serve(grpcl)) }()
- opts := []grpc.DialOption{
- grpc.WithInsecure(),
- }
+ opts := []grpc.DialOption{grpc.WithInsecure()}
gwmux, err := sctx.registerGateway(opts)
if err != nil {
return err
@@ -84,15 +113,22 @@ func (sctx *serveCtx) serve(s *etcdserver.EtcdServer, tlscfg *tls.Config, handle
ErrorLog: logger, // do not log user error
}
httpl := m.Match(cmux.HTTP1())
- go func() { errc <- srvhttp.Serve(httpl) }()
+ go func() { errHandler(srvhttp.Serve(httpl)) }()
+
+ sctx.serversC <- &servers{grpc: gs, http: srvhttp}
plog.Noticef("serving insecure client requests on %s, this is strongly discouraged!", sctx.l.Addr().String())
}
if sctx.secure {
- gs := v3rpc.Server(s, tlscfg)
+ gs := v3rpc.Server(s, tlscfg, gopts...)
+ v3electionpb.RegisterElectionServer(gs, servElection)
+ v3lockpb.RegisterLockServer(gs, servLock)
+ if sctx.serviceRegister != nil {
+ sctx.serviceRegister(gs)
+ }
handler = grpcHandlerFunc(gs, handler)
- dtls := transport.ShallowCopyTLSConfig(tlscfg)
+ dtls := tlscfg.Clone()
// trust local server
dtls.InsecureSkipVerify = true
creds := credentials.NewTLS(dtls)
@@ -111,17 +147,24 @@ func (sctx *serveCtx) serve(s *etcdserver.EtcdServer, tlscfg *tls.Config, handle
TLSConfig: tlscfg,
ErrorLog: logger, // do not log user error
}
- go func() { errc <- srv.Serve(tlsl) }()
+ go func() { errHandler(srv.Serve(tlsl)) }()
+ sctx.serversC <- &servers{secure: true, grpc: gs, http: srv}
plog.Infof("serving client requests on %s", sctx.l.Addr().String())
}
+ close(sctx.serversC)
return m.Serve()
}
// grpcHandlerFunc returns an http.Handler that delegates to grpcServer on incoming gRPC
// connections or otherHandler otherwise. Copied from cockroachdb.
func grpcHandlerFunc(grpcServer *grpc.Server, otherHandler http.Handler) http.Handler {
+ if otherHandler == nil {
+ return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
+ grpcServer.ServeHTTP(w, r)
+ })
+ }
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.ProtoMajor == 2 && strings.Contains(r.Header.Get("Content-Type"), "application/grpc") {
grpcServer.ServeHTTP(w, r)
@@ -131,46 +174,38 @@ func grpcHandlerFunc(grpcServer *grpc.Server, otherHandler http.Handler) http.Ha
})
}
-func servePeerHTTP(l net.Listener, handler http.Handler) error {
- logger := defaultLog.New(ioutil.Discard, "etcdhttp", 0)
- // TODO: add debug flag; enable logging when debug flag is set
- srv := &http.Server{
- Handler: handler,
- ReadTimeout: 5 * time.Minute,
- ErrorLog: logger, // do not log user error
- }
- return srv.Serve(l)
-}
+type registerHandlerFunc func(context.Context, *gw.ServeMux, *grpc.ClientConn) error
func (sctx *serveCtx) registerGateway(opts []grpc.DialOption) (*gw.ServeMux, error) {
ctx := sctx.ctx
- addr := sctx.l.Addr().String()
- gwmux := gw.NewServeMux()
-
- err := pb.RegisterKVHandlerFromEndpoint(ctx, gwmux, addr, opts)
- if err != nil {
- return nil, err
- }
- err = pb.RegisterWatchHandlerFromEndpoint(ctx, gwmux, addr, opts)
- if err != nil {
- return nil, err
- }
- err = pb.RegisterLeaseHandlerFromEndpoint(ctx, gwmux, addr, opts)
+ conn, err := grpc.DialContext(ctx, sctx.addr, opts...)
if err != nil {
return nil, err
}
- err = pb.RegisterClusterHandlerFromEndpoint(ctx, gwmux, addr, opts)
- if err != nil {
- return nil, err
- }
- err = pb.RegisterMaintenanceHandlerFromEndpoint(ctx, gwmux, addr, opts)
- if err != nil {
- return nil, err
+ gwmux := gw.NewServeMux()
+
+ handlers := []registerHandlerFunc{
+ etcdservergw.RegisterKVHandler,
+ etcdservergw.RegisterWatchHandler,
+ etcdservergw.RegisterLeaseHandler,
+ etcdservergw.RegisterClusterHandler,
+ etcdservergw.RegisterMaintenanceHandler,
+ etcdservergw.RegisterAuthHandler,
+ v3lockgw.RegisterLockHandler,
+ v3electiongw.RegisterElectionHandler,
}
- err = pb.RegisterAuthHandlerFromEndpoint(ctx, gwmux, addr, opts)
- if err != nil {
- return nil, err
+ for _, h := range handlers {
+ if err := h(ctx, gwmux, conn); err != nil {
+ return nil, err
+ }
}
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ plog.Warningf("failed to close conn to %s: %v", sctx.l.Addr().String(), cerr)
+ }
+ }()
+
return gwmux, nil
}
@@ -181,26 +216,29 @@ func (sctx *serveCtx) createMux(gwmux *gw.ServeMux, handler http.Handler) *http.
}
httpmux.Handle("/v3alpha/", gwmux)
- httpmux.Handle("/", handler)
+ if handler != nil {
+ httpmux.Handle("/", handler)
+ }
return httpmux
}
+func (sctx *serveCtx) registerUserHandler(s string, h http.Handler) {
+ if sctx.userHandlers[s] != nil {
+ plog.Warningf("path %s already registered by user handler", s)
+ return
+ }
+ sctx.userHandlers[s] = h
+}
+
func (sctx *serveCtx) registerPprof() {
- f := func(s string, h http.Handler) {
- if sctx.userHandlers[s] != nil {
- plog.Warningf("path %s already registered by user handler", s)
- return
- }
- sctx.userHandlers[s] = h
+ for p, h := range debugutil.PProfHandlers() {
+ sctx.registerUserHandler(p, h)
}
- f(pprofPrefix+"/", http.HandlerFunc(pprof.Index))
- f(pprofPrefix+"/profile", http.HandlerFunc(pprof.Profile))
- f(pprofPrefix+"/symbol", http.HandlerFunc(pprof.Symbol))
- f(pprofPrefix+"/cmdline", http.HandlerFunc(pprof.Cmdline))
- f(pprofPrefix+"/trace", http.HandlerFunc(pprof.Trace))
-
- f(pprofPrefix+"/heap", pprof.Handler("heap"))
- f(pprofPrefix+"/goroutine", pprof.Handler("goroutine"))
- f(pprofPrefix+"/threadcreate", pprof.Handler("threadcreate"))
- f(pprofPrefix+"/block", pprof.Handler("block"))
+}
+
+func (sctx *serveCtx) registerTrace() {
+ reqf := func(w http.ResponseWriter, r *http.Request) { trace.Render(w, r, true) }
+ sctx.registerUserHandler("/debug/requests", http.HandlerFunc(reqf))
+ evf := func(w http.ResponseWriter, r *http.Request) { trace.RenderEvents(w, r, true) }
+ sctx.registerUserHandler("/debug/events", http.HandlerFunc(evf))
}
diff --git a/vendor/github.com/coreos/etcd/error/error.go b/vendor/github.com/coreos/etcd/error/error.go
index 8cf83cc716af..b541a628b87f 100644
--- a/vendor/github.com/coreos/etcd/error/error.go
+++ b/vendor/github.com/coreos/etcd/error/error.go
@@ -154,9 +154,10 @@ func (e Error) StatusCode() int {
return status
}
-func (e Error) WriteTo(w http.ResponseWriter) {
+func (e Error) WriteTo(w http.ResponseWriter) error {
w.Header().Add("X-Etcd-Index", fmt.Sprint(e.Index))
w.Header().Set("Content-Type", "application/json")
w.WriteHeader(e.StatusCode())
- fmt.Fprintln(w, e.toJsonString())
+ _, err := w.Write([]byte(e.toJsonString() + "\n"))
+ return err
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/capability.go b/vendor/github.com/coreos/etcd/etcdserver/api/capability.go
index ab8cee7cf89c..5e2de58e9a10 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/capability.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/capability.go
@@ -33,11 +33,10 @@ var (
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "etcdserver/api")
// capabilityMaps is a static map of version to capability map.
- // the base capabilities is the set of capability 2.0 supports.
capabilityMaps = map[string]map[Capability]bool{
- "2.3.0": {AuthCapability: true},
"3.0.0": {AuthCapability: true, V3rpcCapability: true},
"3.1.0": {AuthCapability: true, V3rpcCapability: true},
+ "3.2.0": {AuthCapability: true, V3rpcCapability: true},
}
enableMapMu sync.RWMutex
@@ -48,7 +47,10 @@ var (
)
func init() {
- enabledMap = make(map[Capability]bool)
+ enabledMap = map[Capability]bool{
+ AuthCapability: true,
+ V3rpcCapability: true,
+ }
}
// UpdateCapability updates the enabledMap when the cluster version increases.
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/etcdhttp/base.go b/vendor/github.com/coreos/etcd/etcdserver/api/etcdhttp/base.go
new file mode 100644
index 000000000000..283b32dbf956
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/etcdhttp/base.go
@@ -0,0 +1,186 @@
+// Copyright 2015 The etcd Authors
+//
+// 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 etcdhttp
+
+import (
+ "encoding/json"
+ "expvar"
+ "fmt"
+ "net/http"
+ "strings"
+ "time"
+
+ etcdErr "github.com/coreos/etcd/error"
+ "github.com/coreos/etcd/etcdserver"
+ "github.com/coreos/etcd/etcdserver/api"
+ "github.com/coreos/etcd/etcdserver/api/v2http/httptypes"
+ "github.com/coreos/etcd/etcdserver/etcdserverpb"
+ "github.com/coreos/etcd/pkg/logutil"
+ "github.com/coreos/etcd/raft"
+ "github.com/coreos/etcd/version"
+ "github.com/coreos/pkg/capnslog"
+ "github.com/prometheus/client_golang/prometheus"
+ "golang.org/x/net/context"
+)
+
+var (
+ plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "etcdserver/api/etcdhttp")
+ mlog = logutil.NewMergeLogger(plog)
+)
+
+const (
+ configPath = "/config"
+ metricsPath = "/metrics"
+ healthPath = "/health"
+ varsPath = "/debug/vars"
+ versionPath = "/version"
+)
+
+// HandleBasic adds handlers to a mux for serving JSON etcd client requests
+// that do not access the v2 store.
+func HandleBasic(mux *http.ServeMux, server *etcdserver.EtcdServer) {
+ mux.HandleFunc(varsPath, serveVars)
+ mux.HandleFunc(configPath+"/local/log", logHandleFunc)
+ mux.Handle(metricsPath, prometheus.Handler())
+ mux.Handle(healthPath, healthHandler(server))
+ mux.HandleFunc(versionPath, versionHandler(server.Cluster(), serveVersion))
+}
+
+func healthHandler(server *etcdserver.EtcdServer) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ if !allowMethod(w, r, "GET") {
+ return
+ }
+ if uint64(server.Leader()) == raft.None {
+ http.Error(w, `{"health": "false"}`, http.StatusServiceUnavailable)
+ return
+ }
+ ctx, cancel := context.WithTimeout(context.Background(), time.Second)
+ defer cancel()
+ if _, err := server.Do(ctx, etcdserverpb.Request{Method: "QGET"}); err != nil {
+ http.Error(w, `{"health": "false"}`, http.StatusServiceUnavailable)
+ return
+ }
+ w.WriteHeader(http.StatusOK)
+ w.Write([]byte(`{"health": "true"}`))
+ }
+}
+
+func versionHandler(c api.Cluster, fn func(http.ResponseWriter, *http.Request, string)) http.HandlerFunc {
+ return func(w http.ResponseWriter, r *http.Request) {
+ v := c.Version()
+ if v != nil {
+ fn(w, r, v.String())
+ } else {
+ fn(w, r, "not_decided")
+ }
+ }
+}
+
+func serveVersion(w http.ResponseWriter, r *http.Request, clusterV string) {
+ if !allowMethod(w, r, "GET") {
+ return
+ }
+ vs := version.Versions{
+ Server: version.Version,
+ Cluster: clusterV,
+ }
+
+ w.Header().Set("Content-Type", "application/json")
+ b, err := json.Marshal(&vs)
+ if err != nil {
+ plog.Panicf("cannot marshal versions to json (%v)", err)
+ }
+ w.Write(b)
+}
+
+func logHandleFunc(w http.ResponseWriter, r *http.Request) {
+ if !allowMethod(w, r, "PUT") {
+ return
+ }
+
+ in := struct{ Level string }{}
+
+ d := json.NewDecoder(r.Body)
+ if err := d.Decode(&in); err != nil {
+ WriteError(w, r, httptypes.NewHTTPError(http.StatusBadRequest, "Invalid json body"))
+ return
+ }
+
+ logl, err := capnslog.ParseLevel(strings.ToUpper(in.Level))
+ if err != nil {
+ WriteError(w, r, httptypes.NewHTTPError(http.StatusBadRequest, "Invalid log level "+in.Level))
+ return
+ }
+
+ plog.Noticef("globalLogLevel set to %q", logl.String())
+ capnslog.SetGlobalLogLevel(logl)
+ w.WriteHeader(http.StatusNoContent)
+}
+
+func serveVars(w http.ResponseWriter, r *http.Request) {
+ if !allowMethod(w, r, "GET") {
+ return
+ }
+
+ w.Header().Set("Content-Type", "application/json; charset=utf-8")
+ fmt.Fprintf(w, "{\n")
+ first := true
+ expvar.Do(func(kv expvar.KeyValue) {
+ if !first {
+ fmt.Fprintf(w, ",\n")
+ }
+ first = false
+ fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value)
+ })
+ fmt.Fprintf(w, "\n}\n")
+}
+
+func allowMethod(w http.ResponseWriter, r *http.Request, m string) bool {
+ if m == r.Method {
+ return true
+ }
+ w.Header().Set("Allow", m)
+ http.Error(w, "Method Not Allowed", http.StatusMethodNotAllowed)
+ return false
+}
+
+// WriteError logs and writes the given Error to the ResponseWriter
+// If Error is an etcdErr, it is rendered to the ResponseWriter
+// Otherwise, it is assumed to be a StatusInternalServerError
+func WriteError(w http.ResponseWriter, r *http.Request, err error) {
+ if err == nil {
+ return
+ }
+ switch e := err.(type) {
+ case *etcdErr.Error:
+ e.WriteTo(w)
+ case *httptypes.HTTPError:
+ if et := e.WriteTo(w); et != nil {
+ plog.Debugf("error writing HTTPError (%v) to %s", et, r.RemoteAddr)
+ }
+ default:
+ switch err {
+ case etcdserver.ErrTimeoutDueToLeaderFail, etcdserver.ErrTimeoutDueToConnectionLost, etcdserver.ErrNotEnoughStartedMembers, etcdserver.ErrUnhealthy:
+ mlog.MergeError(err)
+ default:
+ mlog.MergeErrorf("got unexpected response error (%v)", err)
+ }
+ herr := httptypes.NewHTTPError(http.StatusInternalServerError, "Internal Server Error")
+ if et := herr.WriteTo(w); et != nil {
+ plog.Debugf("error writing HTTPError (%v) to %s", et, r.RemoteAddr)
+ }
+ }
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v2http/peer.go b/vendor/github.com/coreos/etcd/etcdserver/api/etcdhttp/peer.go
similarity index 97%
rename from vendor/github.com/coreos/etcd/etcdserver/api/v2http/peer.go
rename to vendor/github.com/coreos/etcd/etcdserver/api/etcdhttp/peer.go
index a1abadba8e72..721bae3c6000 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v2http/peer.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/etcdhttp/peer.go
@@ -12,7 +12,7 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-package v2http
+package etcdhttp
import (
"encoding/json"
@@ -61,7 +61,7 @@ type peerMembersHandler struct {
}
func (h *peerMembersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- if !allowMethod(w, r.Method, "GET") {
+ if !allowMethod(w, r, "GET") {
return
}
w.Header().Set("X-Etcd-Cluster-ID", h.cluster.ID().String())
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v2http/client.go b/vendor/github.com/coreos/etcd/etcdserver/api/v2http/client.go
index 038f5417e67e..aa1e71ec3291 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v2http/client.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v2http/client.go
@@ -17,7 +17,6 @@ package v2http
import (
"encoding/json"
"errors"
- "expvar"
"fmt"
"io/ioutil"
"net/http"
@@ -30,38 +29,36 @@ import (
etcdErr "github.com/coreos/etcd/error"
"github.com/coreos/etcd/etcdserver"
"github.com/coreos/etcd/etcdserver/api"
+ "github.com/coreos/etcd/etcdserver/api/etcdhttp"
"github.com/coreos/etcd/etcdserver/api/v2http/httptypes"
"github.com/coreos/etcd/etcdserver/auth"
"github.com/coreos/etcd/etcdserver/etcdserverpb"
"github.com/coreos/etcd/etcdserver/membership"
"github.com/coreos/etcd/etcdserver/stats"
"github.com/coreos/etcd/pkg/types"
- "github.com/coreos/etcd/raft"
"github.com/coreos/etcd/store"
- "github.com/coreos/etcd/version"
- "github.com/coreos/pkg/capnslog"
"github.com/jonboulle/clockwork"
- "github.com/prometheus/client_golang/prometheus"
"golang.org/x/net/context"
)
const (
- authPrefix = "/v2/auth"
- keysPrefix = "/v2/keys"
- deprecatedMachinesPrefix = "/v2/machines"
- membersPrefix = "/v2/members"
- statsPrefix = "/v2/stats"
- varsPath = "/debug/vars"
- metricsPath = "/metrics"
- healthPath = "/health"
- versionPath = "/version"
- configPath = "/config"
+ authPrefix = "/v2/auth"
+ keysPrefix = "/v2/keys"
+ machinesPrefix = "/v2/machines"
+ membersPrefix = "/v2/members"
+ statsPrefix = "/v2/stats"
)
// NewClientHandler generates a muxed http.Handler with the given parameters to serve etcd client requests.
func NewClientHandler(server *etcdserver.EtcdServer, timeout time.Duration) http.Handler {
- sec := auth.NewStore(server, timeout)
+ mux := http.NewServeMux()
+ etcdhttp.HandleBasic(mux, server)
+ handleV2(mux, server, timeout)
+ return requestLogger(mux)
+}
+func handleV2(mux *http.ServeMux, server *etcdserver.EtcdServer, timeout time.Duration) {
+ sec := auth.NewStore(server, timeout)
kh := &keysHandler{
sec: sec,
server: server,
@@ -84,34 +81,23 @@ func NewClientHandler(server *etcdserver.EtcdServer, timeout time.Duration) http
clientCertAuthEnabled: server.Cfg.ClientCertAuthEnabled,
}
- dmh := &deprecatedMachinesHandler{
- cluster: server.Cluster(),
- }
+ mah := &machinesHandler{cluster: server.Cluster()}
sech := &authHandler{
sec: sec,
cluster: server.Cluster(),
clientCertAuthEnabled: server.Cfg.ClientCertAuthEnabled,
}
-
- mux := http.NewServeMux()
mux.HandleFunc("/", http.NotFound)
- mux.Handle(healthPath, healthHandler(server))
- mux.HandleFunc(versionPath, versionHandler(server.Cluster(), serveVersion))
mux.Handle(keysPrefix, kh)
mux.Handle(keysPrefix+"/", kh)
mux.HandleFunc(statsPrefix+"/store", sh.serveStore)
mux.HandleFunc(statsPrefix+"/self", sh.serveSelf)
mux.HandleFunc(statsPrefix+"/leader", sh.serveLeader)
- mux.HandleFunc(varsPath, serveVars)
- mux.HandleFunc(configPath+"/local/log", logHandleFunc)
- mux.Handle(metricsPath, prometheus.Handler())
mux.Handle(membersPrefix, mh)
mux.Handle(membersPrefix+"/", mh)
- mux.Handle(deprecatedMachinesPrefix, dmh)
+ mux.Handle(machinesPrefix, mah)
handleAuth(mux, sech)
-
- return requestLogger(mux)
}
type keysHandler struct {
@@ -170,11 +156,11 @@ func (h *keysHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
}
-type deprecatedMachinesHandler struct {
+type machinesHandler struct {
cluster api.Cluster
}
-func (h *deprecatedMachinesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+func (h *machinesHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if !allowMethod(w, r.Method, "GET", "HEAD") {
return
}
@@ -234,7 +220,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
}
now := h.clock.Now()
m := membership.NewMember("", req.PeerURLs, "", &now)
- err := h.server.AddMember(ctx, *m)
+ _, err := h.server.AddMember(ctx, *m)
switch {
case err == membership.ErrIDExists || err == membership.ErrPeerURLexists:
writeError(w, r, httptypes.NewHTTPError(http.StatusConflict, err.Error()))
@@ -255,7 +241,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if !ok {
return
}
- err := h.server.RemoveMember(ctx, uint64(id))
+ _, err := h.server.RemoveMember(ctx, uint64(id))
switch {
case err == membership.ErrIDRemoved:
writeError(w, r, httptypes.NewHTTPError(http.StatusGone, fmt.Sprintf("Member permanently removed: %s", id)))
@@ -280,7 +266,7 @@ func (h *membersHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
ID: id,
RaftAttributes: membership.RaftAttributes{PeerURLs: req.PeerURLs.StringSlice()},
}
- err := h.server.UpdateMember(ctx, m)
+ _, err := h.server.UpdateMember(ctx, m)
switch {
case err == membership.ErrPeerURLexists:
writeError(w, r, httptypes.NewHTTPError(http.StatusConflict, err.Error()))
@@ -321,103 +307,13 @@ func (h *statsHandler) serveLeader(w http.ResponseWriter, r *http.Request) {
}
stats := h.stats.LeaderStats()
if stats == nil {
- writeError(w, r, httptypes.NewHTTPError(http.StatusForbidden, "not current leader"))
+ etcdhttp.WriteError(w, r, httptypes.NewHTTPError(http.StatusForbidden, "not current leader"))
return
}
w.Header().Set("Content-Type", "application/json")
w.Write(stats)
}
-func serveVars(w http.ResponseWriter, r *http.Request) {
- if !allowMethod(w, r.Method, "GET") {
- return
- }
-
- w.Header().Set("Content-Type", "application/json; charset=utf-8")
- fmt.Fprintf(w, "{\n")
- first := true
- expvar.Do(func(kv expvar.KeyValue) {
- if !first {
- fmt.Fprintf(w, ",\n")
- }
- first = false
- fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value)
- })
- fmt.Fprintf(w, "\n}\n")
-}
-
-func healthHandler(server *etcdserver.EtcdServer) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- if !allowMethod(w, r.Method, "GET") {
- return
- }
- if uint64(server.Leader()) == raft.None {
- http.Error(w, `{"health": "false"}`, http.StatusServiceUnavailable)
- return
- }
- ctx, cancel := context.WithTimeout(context.Background(), time.Second)
- defer cancel()
- if _, err := server.Do(ctx, etcdserverpb.Request{Method: "QGET"}); err != nil {
- http.Error(w, `{"health": "false"}`, http.StatusServiceUnavailable)
- return
- }
- w.WriteHeader(http.StatusOK)
- w.Write([]byte(`{"health": "true"}`))
- }
-}
-
-func versionHandler(c api.Cluster, fn func(http.ResponseWriter, *http.Request, string)) http.HandlerFunc {
- return func(w http.ResponseWriter, r *http.Request) {
- v := c.Version()
- if v != nil {
- fn(w, r, v.String())
- } else {
- fn(w, r, "not_decided")
- }
- }
-}
-
-func serveVersion(w http.ResponseWriter, r *http.Request, clusterV string) {
- if !allowMethod(w, r.Method, "GET") {
- return
- }
- vs := version.Versions{
- Server: version.Version,
- Cluster: clusterV,
- }
-
- w.Header().Set("Content-Type", "application/json")
- b, err := json.Marshal(&vs)
- if err != nil {
- plog.Panicf("cannot marshal versions to json (%v)", err)
- }
- w.Write(b)
-}
-
-func logHandleFunc(w http.ResponseWriter, r *http.Request) {
- if !allowMethod(w, r.Method, "PUT") {
- return
- }
-
- in := struct{ Level string }{}
-
- d := json.NewDecoder(r.Body)
- if err := d.Decode(&in); err != nil {
- writeError(w, r, httptypes.NewHTTPError(http.StatusBadRequest, "Invalid json body"))
- return
- }
-
- logl, err := capnslog.ParseLevel(strings.ToUpper(in.Level))
- if err != nil {
- writeError(w, r, httptypes.NewHTTPError(http.StatusBadRequest, "Invalid log level "+in.Level))
- return
- }
-
- plog.Noticef("globalLogLevel set to %q", logl.String())
- capnslog.SetGlobalLogLevel(logl)
- w.WriteHeader(http.StatusNoContent)
-}
-
// parseKeyRequest converts a received http.Request on keysPrefix to
// a server Request, performing validation of supplied fields as appropriate.
// If any validation fails, an empty Request and non-nil error is returned.
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v2http/http.go b/vendor/github.com/coreos/etcd/etcdserver/api/v2http/http.go
index 62c99e19d4a7..589c172dbbb4 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v2http/http.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v2http/http.go
@@ -20,12 +20,11 @@ import (
"strings"
"time"
- etcdErr "github.com/coreos/etcd/error"
- "github.com/coreos/etcd/etcdserver"
+ "github.com/coreos/etcd/etcdserver/api/etcdhttp"
"github.com/coreos/etcd/etcdserver/api/v2http/httptypes"
-
"github.com/coreos/etcd/etcdserver/auth"
"github.com/coreos/etcd/pkg/logutil"
+
"github.com/coreos/pkg/capnslog"
)
@@ -39,37 +38,18 @@ var (
mlog = logutil.NewMergeLogger(plog)
)
-// writeError logs and writes the given Error to the ResponseWriter
-// If Error is an etcdErr, it is rendered to the ResponseWriter
-// Otherwise, it is assumed to be a StatusInternalServerError
func writeError(w http.ResponseWriter, r *http.Request, err error) {
if err == nil {
return
}
- switch e := err.(type) {
- case *etcdErr.Error:
- e.WriteTo(w)
- case *httptypes.HTTPError:
- if et := e.WriteTo(w); et != nil {
- plog.Debugf("error writing HTTPError (%v) to %s", et, r.RemoteAddr)
- }
- case auth.Error:
+ if e, ok := err.(auth.Error); ok {
herr := httptypes.NewHTTPError(e.HTTPStatus(), e.Error())
if et := herr.WriteTo(w); et != nil {
plog.Debugf("error writing HTTPError (%v) to %s", et, r.RemoteAddr)
}
- default:
- switch err {
- case etcdserver.ErrTimeoutDueToLeaderFail, etcdserver.ErrTimeoutDueToConnectionLost, etcdserver.ErrNotEnoughStartedMembers, etcdserver.ErrUnhealthy:
- mlog.MergeError(err)
- default:
- mlog.MergeErrorf("got unexpected response error (%v)", err)
- }
- herr := httptypes.NewHTTPError(http.StatusInternalServerError, "Internal Server Error")
- if et := herr.WriteTo(w); et != nil {
- plog.Debugf("error writing HTTPError (%v) to %s", et, r.RemoteAddr)
- }
+ return
}
+ etcdhttp.WriteError(w, r, err)
}
// allowMethod verifies that the given method is one of the allowed methods,
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3client/doc.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3client/doc.go
new file mode 100644
index 000000000000..310715f5cd74
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3client/doc.go
@@ -0,0 +1,45 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 v3client provides clientv3 interfaces from an etcdserver.
+//
+// Use v3client by creating an EtcdServer instance, then wrapping it with v3client.New:
+//
+// import (
+// "context"
+//
+// "github.com/coreos/etcd/embed"
+// "github.com/coreos/etcd/etcdserver/api/v3client"
+// )
+//
+// ...
+//
+// // create an embedded EtcdServer from the default configuration
+// cfg := embed.NewConfig()
+// cfg.Dir = "default.etcd"
+// e, err := embed.StartEtcd(cfg)
+// if err != nil {
+// // handle error!
+// }
+//
+// // wrap the EtcdServer with v3client
+// cli := v3client.New(e.Server)
+//
+// // use like an ordinary clientv3
+// resp, err := cli.Put(context.TODO(), "some-key", "it works!")
+// if err != nil {
+// // handle error!
+// }
+//
+package v3client
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3client/v3client.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3client/v3client.go
new file mode 100644
index 000000000000..c0c07c8d767d
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3client/v3client.go
@@ -0,0 +1,67 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 v3client
+
+import (
+ "time"
+
+ "github.com/coreos/etcd/clientv3"
+ "github.com/coreos/etcd/etcdserver"
+ "github.com/coreos/etcd/etcdserver/api/v3rpc"
+ "github.com/coreos/etcd/proxy/grpcproxy/adapter"
+
+ "golang.org/x/net/context"
+)
+
+// New creates a clientv3 client that wraps an in-process EtcdServer. Instead
+// of making gRPC calls through sockets, the client makes direct function calls
+// to the etcd server through its api/v3rpc function interfaces.
+func New(s *etcdserver.EtcdServer) *clientv3.Client {
+ c := clientv3.NewCtxClient(context.Background())
+
+ kvc := adapter.KvServerToKvClient(v3rpc.NewQuotaKVServer(s))
+ c.KV = clientv3.NewKVFromKVClient(kvc, c)
+
+ lc := adapter.LeaseServerToLeaseClient(v3rpc.NewQuotaLeaseServer(s))
+ c.Lease = clientv3.NewLeaseFromLeaseClient(lc, c, time.Second)
+
+ wc := adapter.WatchServerToWatchClient(v3rpc.NewWatchServer(s))
+ c.Watcher = &watchWrapper{clientv3.NewWatchFromWatchClient(wc, c)}
+
+ mc := adapter.MaintenanceServerToMaintenanceClient(v3rpc.NewMaintenanceServer(s))
+ c.Maintenance = clientv3.NewMaintenanceFromMaintenanceClient(mc, c)
+
+ clc := adapter.ClusterServerToClusterClient(v3rpc.NewClusterServer(s))
+ c.Cluster = clientv3.NewClusterFromClusterClient(clc, c)
+
+ // TODO: implement clientv3.Auth interface?
+
+ return c
+}
+
+// BlankContext implements Stringer on a context so the ctx string doesn't
+// depend on the context's WithValue data, which tends to be unsynchronized
+// (e.g., x/net/trace), causing ctx.String() to throw data races.
+type blankContext struct{ context.Context }
+
+func (*blankContext) String() string { return "(blankCtx)" }
+
+// watchWrapper wraps clientv3 watch calls to blank out the context
+// to avoid races on trace data.
+type watchWrapper struct{ clientv3.Watcher }
+
+func (ww *watchWrapper) Watch(ctx context.Context, key string, opts ...clientv3.OpOption) clientv3.WatchChan {
+ return ww.Watcher.Watch(&blankContext{ctx}, key, opts...)
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3election/doc.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/doc.go
new file mode 100644
index 000000000000..d6fefd741500
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/doc.go
@@ -0,0 +1,16 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 v3election provides a v3 election service from an etcdserver.
+package v3election
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3election/election.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/election.go
new file mode 100644
index 000000000000..f9061c079268
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/election.go
@@ -0,0 +1,123 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 v3election
+
+import (
+ "golang.org/x/net/context"
+
+ "github.com/coreos/etcd/clientv3"
+ "github.com/coreos/etcd/clientv3/concurrency"
+ epb "github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb"
+)
+
+type electionServer struct {
+ c *clientv3.Client
+}
+
+func NewElectionServer(c *clientv3.Client) epb.ElectionServer {
+ return &electionServer{c}
+}
+
+func (es *electionServer) Campaign(ctx context.Context, req *epb.CampaignRequest) (*epb.CampaignResponse, error) {
+ s, err := es.session(ctx, req.Lease)
+ if err != nil {
+ return nil, err
+ }
+ e := concurrency.NewElection(s, string(req.Name))
+ if err = e.Campaign(ctx, string(req.Value)); err != nil {
+ return nil, err
+ }
+ return &epb.CampaignResponse{
+ Header: e.Header(),
+ Leader: &epb.LeaderKey{
+ Name: req.Name,
+ Key: []byte(e.Key()),
+ Rev: e.Rev(),
+ Lease: int64(s.Lease()),
+ },
+ }, nil
+}
+
+func (es *electionServer) Proclaim(ctx context.Context, req *epb.ProclaimRequest) (*epb.ProclaimResponse, error) {
+ s, err := es.session(ctx, req.Leader.Lease)
+ if err != nil {
+ return nil, err
+ }
+ e := concurrency.ResumeElection(s, string(req.Leader.Name), string(req.Leader.Key), req.Leader.Rev)
+ if err := e.Proclaim(ctx, string(req.Value)); err != nil {
+ return nil, err
+ }
+ return &epb.ProclaimResponse{Header: e.Header()}, nil
+}
+
+func (es *electionServer) Observe(req *epb.LeaderRequest, stream epb.Election_ObserveServer) error {
+ s, err := es.session(stream.Context(), -1)
+ if err != nil {
+ return err
+ }
+ e := concurrency.NewElection(s, string(req.Name))
+ ch := e.Observe(stream.Context())
+ for stream.Context().Err() == nil {
+ select {
+ case <-stream.Context().Done():
+ case resp, ok := <-ch:
+ if !ok {
+ return nil
+ }
+ lresp := &epb.LeaderResponse{Header: resp.Header, Kv: resp.Kvs[0]}
+ if err := stream.Send(lresp); err != nil {
+ return err
+ }
+ }
+ }
+ return stream.Context().Err()
+}
+
+func (es *electionServer) Leader(ctx context.Context, req *epb.LeaderRequest) (*epb.LeaderResponse, error) {
+ s, err := es.session(ctx, -1)
+ if err != nil {
+ return nil, err
+ }
+ l, lerr := concurrency.NewElection(s, string(req.Name)).Leader(ctx)
+ if lerr != nil {
+ return nil, lerr
+ }
+ return &epb.LeaderResponse{Header: l.Header, Kv: l.Kvs[0]}, nil
+}
+
+func (es *electionServer) Resign(ctx context.Context, req *epb.ResignRequest) (*epb.ResignResponse, error) {
+ s, err := es.session(ctx, req.Leader.Lease)
+ if err != nil {
+ return nil, err
+ }
+ e := concurrency.ResumeElection(s, string(req.Leader.Name), string(req.Leader.Key), req.Leader.Rev)
+ if err := e.Resign(ctx); err != nil {
+ return nil, err
+ }
+ return &epb.ResignResponse{Header: e.Header()}, nil
+}
+
+func (es *electionServer) session(ctx context.Context, lease int64) (*concurrency.Session, error) {
+ s, err := concurrency.NewSession(
+ es.c,
+ concurrency.WithLease(clientv3.LeaseID(lease)),
+ concurrency.WithContext(ctx),
+ )
+ if err != nil {
+ return nil, err
+ }
+ s.Orphan()
+ return s, nil
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go
new file mode 100644
index 000000000000..ac00cbea9837
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/gw/v3election.pb.gw.go
@@ -0,0 +1,313 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: etcdserver/api/v3election/v3electionpb/v3election.proto
+
+/*
+Package v3electionpb is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package gw
+
+import (
+ "github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb"
+ "io"
+ "net/http"
+
+ "github.com/golang/protobuf/proto"
+ "github.com/grpc-ecosystem/grpc-gateway/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/utilities"
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/status"
+)
+
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+
+func request_Election_Campaign_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq v3electionpb.CampaignRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Campaign(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func request_Election_Proclaim_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq v3electionpb.ProclaimRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Proclaim(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func request_Election_Leader_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq v3electionpb.LeaderRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Leader(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func request_Election_Observe_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (v3electionpb.Election_ObserveClient, runtime.ServerMetadata, error) {
+ var protoReq v3electionpb.LeaderRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ stream, err := client.Observe(ctx, &protoReq)
+ if err != nil {
+ return nil, metadata, err
+ }
+ header, err := stream.Header()
+ if err != nil {
+ return nil, metadata, err
+ }
+ metadata.HeaderMD = header
+ return stream, metadata, nil
+
+}
+
+func request_Election_Resign_0(ctx context.Context, marshaler runtime.Marshaler, client v3electionpb.ElectionClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq v3electionpb.ResignRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Resign(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+// RegisterElectionHandlerFromEndpoint is same as RegisterElectionHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterElectionHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterElectionHandler(ctx, mux, conn)
+}
+
+// RegisterElectionHandler registers the http handlers for service Election to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterElectionHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterElectionHandlerClient(ctx, mux, v3electionpb.NewElectionClient(conn))
+}
+
+// RegisterElectionHandler registers the http handlers for service Election to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "ElectionClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ElectionClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "ElectionClient" to call the correct interceptors.
+func RegisterElectionHandlerClient(ctx context.Context, mux *runtime.ServeMux, client v3electionpb.ElectionClient) error {
+
+ mux.Handle("POST", pattern_Election_Campaign_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ if cn, ok := w.(http.CloseNotifier); ok {
+ go func(done <-chan struct{}, closed <-chan bool) {
+ select {
+ case <-done:
+ case <-closed:
+ cancel()
+ }
+ }(ctx.Done(), cn.CloseNotify())
+ }
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Election_Campaign_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Election_Campaign_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Election_Proclaim_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ if cn, ok := w.(http.CloseNotifier); ok {
+ go func(done <-chan struct{}, closed <-chan bool) {
+ select {
+ case <-done:
+ case <-closed:
+ cancel()
+ }
+ }(ctx.Done(), cn.CloseNotify())
+ }
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Election_Proclaim_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Election_Proclaim_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Election_Leader_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ if cn, ok := w.(http.CloseNotifier); ok {
+ go func(done <-chan struct{}, closed <-chan bool) {
+ select {
+ case <-done:
+ case <-closed:
+ cancel()
+ }
+ }(ctx.Done(), cn.CloseNotify())
+ }
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Election_Leader_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Election_Leader_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Election_Observe_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ if cn, ok := w.(http.CloseNotifier); ok {
+ go func(done <-chan struct{}, closed <-chan bool) {
+ select {
+ case <-done:
+ case <-closed:
+ cancel()
+ }
+ }(ctx.Done(), cn.CloseNotify())
+ }
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Election_Observe_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Election_Observe_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Election_Resign_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ if cn, ok := w.(http.CloseNotifier); ok {
+ go func(done <-chan struct{}, closed <-chan bool) {
+ select {
+ case <-done:
+ case <-closed:
+ cancel()
+ }
+ }(ctx.Done(), cn.CloseNotify())
+ }
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Election_Resign_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Election_Resign_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Election_Campaign_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "election", "campaign"}, ""))
+
+ pattern_Election_Proclaim_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "election", "proclaim"}, ""))
+
+ pattern_Election_Leader_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "election", "leader"}, ""))
+
+ pattern_Election_Observe_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "election", "observe"}, ""))
+
+ pattern_Election_Resign_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "election", "resign"}, ""))
+)
+
+var (
+ forward_Election_Campaign_0 = runtime.ForwardResponseMessage
+
+ forward_Election_Proclaim_0 = runtime.ForwardResponseMessage
+
+ forward_Election_Leader_0 = runtime.ForwardResponseMessage
+
+ forward_Election_Observe_0 = runtime.ForwardResponseStream
+
+ forward_Election_Resign_0 = runtime.ForwardResponseMessage
+)
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/v3election.pb.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/v3election.pb.go
new file mode 100644
index 000000000000..92acb1469e95
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/v3election.pb.go
@@ -0,0 +1,2098 @@
+// Code generated by protoc-gen-gogo.
+// source: v3election.proto
+// DO NOT EDIT!
+
+/*
+ Package v3electionpb is a generated protocol buffer package.
+
+ It is generated from these files:
+ v3election.proto
+
+ It has these top-level messages:
+ CampaignRequest
+ CampaignResponse
+ LeaderKey
+ LeaderRequest
+ LeaderResponse
+ ResignRequest
+ ResignResponse
+ ProclaimRequest
+ ProclaimResponse
+*/
+package v3electionpb
+
+import (
+ "fmt"
+
+ proto "github.com/golang/protobuf/proto"
+
+ math "math"
+
+ etcdserverpb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
+ mvccpb "github.com/coreos/etcd/mvcc/mvccpb"
+
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+
+ context "golang.org/x/net/context"
+
+ grpc "google.golang.org/grpc"
+
+ io "io"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type CampaignRequest struct {
+ // name is the election's identifier for the campaign.
+ Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // lease is the ID of the lease attached to leadership of the election. If the
+ // lease expires or is revoked before resigning leadership, then the
+ // leadership is transferred to the next campaigner, if any.
+ Lease int64 `protobuf:"varint,2,opt,name=lease,proto3" json:"lease,omitempty"`
+ // value is the initial proclaimed value set when the campaigner wins the
+ // election.
+ Value []byte `protobuf:"bytes,3,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (m *CampaignRequest) Reset() { *m = CampaignRequest{} }
+func (m *CampaignRequest) String() string { return proto.CompactTextString(m) }
+func (*CampaignRequest) ProtoMessage() {}
+func (*CampaignRequest) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{0} }
+
+func (m *CampaignRequest) GetName() []byte {
+ if m != nil {
+ return m.Name
+ }
+ return nil
+}
+
+func (m *CampaignRequest) GetLease() int64 {
+ if m != nil {
+ return m.Lease
+ }
+ return 0
+}
+
+func (m *CampaignRequest) GetValue() []byte {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+type CampaignResponse struct {
+ Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+ // leader describes the resources used for holding leadereship of the election.
+ Leader *LeaderKey `protobuf:"bytes,2,opt,name=leader" json:"leader,omitempty"`
+}
+
+func (m *CampaignResponse) Reset() { *m = CampaignResponse{} }
+func (m *CampaignResponse) String() string { return proto.CompactTextString(m) }
+func (*CampaignResponse) ProtoMessage() {}
+func (*CampaignResponse) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{1} }
+
+func (m *CampaignResponse) GetHeader() *etcdserverpb.ResponseHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func (m *CampaignResponse) GetLeader() *LeaderKey {
+ if m != nil {
+ return m.Leader
+ }
+ return nil
+}
+
+type LeaderKey struct {
+ // name is the election identifier that correponds to the leadership key.
+ Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // key is an opaque key representing the ownership of the election. If the key
+ // is deleted, then leadership is lost.
+ Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
+ // rev is the creation revision of the key. It can be used to test for ownership
+ // of an election during transactions by testing the key's creation revision
+ // matches rev.
+ Rev int64 `protobuf:"varint,3,opt,name=rev,proto3" json:"rev,omitempty"`
+ // lease is the lease ID of the election leader.
+ Lease int64 `protobuf:"varint,4,opt,name=lease,proto3" json:"lease,omitempty"`
+}
+
+func (m *LeaderKey) Reset() { *m = LeaderKey{} }
+func (m *LeaderKey) String() string { return proto.CompactTextString(m) }
+func (*LeaderKey) ProtoMessage() {}
+func (*LeaderKey) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{2} }
+
+func (m *LeaderKey) GetName() []byte {
+ if m != nil {
+ return m.Name
+ }
+ return nil
+}
+
+func (m *LeaderKey) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
+func (m *LeaderKey) GetRev() int64 {
+ if m != nil {
+ return m.Rev
+ }
+ return 0
+}
+
+func (m *LeaderKey) GetLease() int64 {
+ if m != nil {
+ return m.Lease
+ }
+ return 0
+}
+
+type LeaderRequest struct {
+ // name is the election identifier for the leadership information.
+ Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+}
+
+func (m *LeaderRequest) Reset() { *m = LeaderRequest{} }
+func (m *LeaderRequest) String() string { return proto.CompactTextString(m) }
+func (*LeaderRequest) ProtoMessage() {}
+func (*LeaderRequest) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{3} }
+
+func (m *LeaderRequest) GetName() []byte {
+ if m != nil {
+ return m.Name
+ }
+ return nil
+}
+
+type LeaderResponse struct {
+ Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+ // kv is the key-value pair representing the latest leader update.
+ Kv *mvccpb.KeyValue `protobuf:"bytes,2,opt,name=kv" json:"kv,omitempty"`
+}
+
+func (m *LeaderResponse) Reset() { *m = LeaderResponse{} }
+func (m *LeaderResponse) String() string { return proto.CompactTextString(m) }
+func (*LeaderResponse) ProtoMessage() {}
+func (*LeaderResponse) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{4} }
+
+func (m *LeaderResponse) GetHeader() *etcdserverpb.ResponseHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func (m *LeaderResponse) GetKv() *mvccpb.KeyValue {
+ if m != nil {
+ return m.Kv
+ }
+ return nil
+}
+
+type ResignRequest struct {
+ // leader is the leadership to relinquish by resignation.
+ Leader *LeaderKey `protobuf:"bytes,1,opt,name=leader" json:"leader,omitempty"`
+}
+
+func (m *ResignRequest) Reset() { *m = ResignRequest{} }
+func (m *ResignRequest) String() string { return proto.CompactTextString(m) }
+func (*ResignRequest) ProtoMessage() {}
+func (*ResignRequest) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{5} }
+
+func (m *ResignRequest) GetLeader() *LeaderKey {
+ if m != nil {
+ return m.Leader
+ }
+ return nil
+}
+
+type ResignResponse struct {
+ Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+}
+
+func (m *ResignResponse) Reset() { *m = ResignResponse{} }
+func (m *ResignResponse) String() string { return proto.CompactTextString(m) }
+func (*ResignResponse) ProtoMessage() {}
+func (*ResignResponse) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{6} }
+
+func (m *ResignResponse) GetHeader() *etcdserverpb.ResponseHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+type ProclaimRequest struct {
+ // leader is the leadership hold on the election.
+ Leader *LeaderKey `protobuf:"bytes,1,opt,name=leader" json:"leader,omitempty"`
+ // value is an update meant to overwrite the leader's current value.
+ Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"`
+}
+
+func (m *ProclaimRequest) Reset() { *m = ProclaimRequest{} }
+func (m *ProclaimRequest) String() string { return proto.CompactTextString(m) }
+func (*ProclaimRequest) ProtoMessage() {}
+func (*ProclaimRequest) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{7} }
+
+func (m *ProclaimRequest) GetLeader() *LeaderKey {
+ if m != nil {
+ return m.Leader
+ }
+ return nil
+}
+
+func (m *ProclaimRequest) GetValue() []byte {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+type ProclaimResponse struct {
+ Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+}
+
+func (m *ProclaimResponse) Reset() { *m = ProclaimResponse{} }
+func (m *ProclaimResponse) String() string { return proto.CompactTextString(m) }
+func (*ProclaimResponse) ProtoMessage() {}
+func (*ProclaimResponse) Descriptor() ([]byte, []int) { return fileDescriptorV3Election, []int{8} }
+
+func (m *ProclaimResponse) GetHeader() *etcdserverpb.ResponseHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*CampaignRequest)(nil), "v3electionpb.CampaignRequest")
+ proto.RegisterType((*CampaignResponse)(nil), "v3electionpb.CampaignResponse")
+ proto.RegisterType((*LeaderKey)(nil), "v3electionpb.LeaderKey")
+ proto.RegisterType((*LeaderRequest)(nil), "v3electionpb.LeaderRequest")
+ proto.RegisterType((*LeaderResponse)(nil), "v3electionpb.LeaderResponse")
+ proto.RegisterType((*ResignRequest)(nil), "v3electionpb.ResignRequest")
+ proto.RegisterType((*ResignResponse)(nil), "v3electionpb.ResignResponse")
+ proto.RegisterType((*ProclaimRequest)(nil), "v3electionpb.ProclaimRequest")
+ proto.RegisterType((*ProclaimResponse)(nil), "v3electionpb.ProclaimResponse")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for Election service
+
+type ElectionClient interface {
+ // Campaign waits to acquire leadership in an election, returning a LeaderKey
+ // representing the leadership if successful. The LeaderKey can then be used
+ // to issue new values on the election, transactionally guard API requests on
+ // leadership still being held, and resign from the election.
+ Campaign(ctx context.Context, in *CampaignRequest, opts ...grpc.CallOption) (*CampaignResponse, error)
+ // Proclaim updates the leader's posted value with a new value.
+ Proclaim(ctx context.Context, in *ProclaimRequest, opts ...grpc.CallOption) (*ProclaimResponse, error)
+ // Leader returns the current election proclamation, if any.
+ Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error)
+ // Observe streams election proclamations in-order as made by the election's
+ // elected leaders.
+ Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error)
+ // Resign releases election leadership so other campaigners may acquire
+ // leadership on the election.
+ Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error)
+}
+
+type electionClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewElectionClient(cc *grpc.ClientConn) ElectionClient {
+ return &electionClient{cc}
+}
+
+func (c *electionClient) Campaign(ctx context.Context, in *CampaignRequest, opts ...grpc.CallOption) (*CampaignResponse, error) {
+ out := new(CampaignResponse)
+ err := grpc.Invoke(ctx, "/v3electionpb.Election/Campaign", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *electionClient) Proclaim(ctx context.Context, in *ProclaimRequest, opts ...grpc.CallOption) (*ProclaimResponse, error) {
+ out := new(ProclaimResponse)
+ err := grpc.Invoke(ctx, "/v3electionpb.Election/Proclaim", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *electionClient) Leader(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (*LeaderResponse, error) {
+ out := new(LeaderResponse)
+ err := grpc.Invoke(ctx, "/v3electionpb.Election/Leader", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *electionClient) Observe(ctx context.Context, in *LeaderRequest, opts ...grpc.CallOption) (Election_ObserveClient, error) {
+ stream, err := grpc.NewClientStream(ctx, &_Election_serviceDesc.Streams[0], c.cc, "/v3electionpb.Election/Observe", opts...)
+ if err != nil {
+ return nil, err
+ }
+ x := &electionObserveClient{stream}
+ if err := x.ClientStream.SendMsg(in); err != nil {
+ return nil, err
+ }
+ if err := x.ClientStream.CloseSend(); err != nil {
+ return nil, err
+ }
+ return x, nil
+}
+
+type Election_ObserveClient interface {
+ Recv() (*LeaderResponse, error)
+ grpc.ClientStream
+}
+
+type electionObserveClient struct {
+ grpc.ClientStream
+}
+
+func (x *electionObserveClient) Recv() (*LeaderResponse, error) {
+ m := new(LeaderResponse)
+ if err := x.ClientStream.RecvMsg(m); err != nil {
+ return nil, err
+ }
+ return m, nil
+}
+
+func (c *electionClient) Resign(ctx context.Context, in *ResignRequest, opts ...grpc.CallOption) (*ResignResponse, error) {
+ out := new(ResignResponse)
+ err := grpc.Invoke(ctx, "/v3electionpb.Election/Resign", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// Server API for Election service
+
+type ElectionServer interface {
+ // Campaign waits to acquire leadership in an election, returning a LeaderKey
+ // representing the leadership if successful. The LeaderKey can then be used
+ // to issue new values on the election, transactionally guard API requests on
+ // leadership still being held, and resign from the election.
+ Campaign(context.Context, *CampaignRequest) (*CampaignResponse, error)
+ // Proclaim updates the leader's posted value with a new value.
+ Proclaim(context.Context, *ProclaimRequest) (*ProclaimResponse, error)
+ // Leader returns the current election proclamation, if any.
+ Leader(context.Context, *LeaderRequest) (*LeaderResponse, error)
+ // Observe streams election proclamations in-order as made by the election's
+ // elected leaders.
+ Observe(*LeaderRequest, Election_ObserveServer) error
+ // Resign releases election leadership so other campaigners may acquire
+ // leadership on the election.
+ Resign(context.Context, *ResignRequest) (*ResignResponse, error)
+}
+
+func RegisterElectionServer(s *grpc.Server, srv ElectionServer) {
+ s.RegisterService(&_Election_serviceDesc, srv)
+}
+
+func _Election_Campaign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(CampaignRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ElectionServer).Campaign(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/v3electionpb.Election/Campaign",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ElectionServer).Campaign(ctx, req.(*CampaignRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Election_Proclaim_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ProclaimRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ElectionServer).Proclaim(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/v3electionpb.Election/Proclaim",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ElectionServer).Proclaim(ctx, req.(*ProclaimRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Election_Leader_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LeaderRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ElectionServer).Leader(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/v3electionpb.Election/Leader",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ElectionServer).Leader(ctx, req.(*LeaderRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Election_Observe_Handler(srv interface{}, stream grpc.ServerStream) error {
+ m := new(LeaderRequest)
+ if err := stream.RecvMsg(m); err != nil {
+ return err
+ }
+ return srv.(ElectionServer).Observe(m, &electionObserveServer{stream})
+}
+
+type Election_ObserveServer interface {
+ Send(*LeaderResponse) error
+ grpc.ServerStream
+}
+
+type electionObserveServer struct {
+ grpc.ServerStream
+}
+
+func (x *electionObserveServer) Send(m *LeaderResponse) error {
+ return x.ServerStream.SendMsg(m)
+}
+
+func _Election_Resign_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(ResignRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(ElectionServer).Resign(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/v3electionpb.Election/Resign",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(ElectionServer).Resign(ctx, req.(*ResignRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _Election_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "v3electionpb.Election",
+ HandlerType: (*ElectionServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Campaign",
+ Handler: _Election_Campaign_Handler,
+ },
+ {
+ MethodName: "Proclaim",
+ Handler: _Election_Proclaim_Handler,
+ },
+ {
+ MethodName: "Leader",
+ Handler: _Election_Leader_Handler,
+ },
+ {
+ MethodName: "Resign",
+ Handler: _Election_Resign_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{
+ {
+ StreamName: "Observe",
+ Handler: _Election_Observe_Handler,
+ ServerStreams: true,
+ },
+ },
+ Metadata: "v3election.proto",
+}
+
+func (m *CampaignRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CampaignRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Name) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(len(m.Name)))
+ i += copy(dAtA[i:], m.Name)
+ }
+ if m.Lease != 0 {
+ dAtA[i] = 0x10
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Lease))
+ }
+ if len(m.Value) > 0 {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(len(m.Value)))
+ i += copy(dAtA[i:], m.Value)
+ }
+ return i, nil
+}
+
+func (m *CampaignResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *CampaignResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Header != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Header.Size()))
+ n1, err := m.Header.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n1
+ }
+ if m.Leader != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Leader.Size()))
+ n2, err := m.Leader.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n2
+ }
+ return i, nil
+}
+
+func (m *LeaderKey) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LeaderKey) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Name) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(len(m.Name)))
+ i += copy(dAtA[i:], m.Name)
+ }
+ if len(m.Key) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(len(m.Key)))
+ i += copy(dAtA[i:], m.Key)
+ }
+ if m.Rev != 0 {
+ dAtA[i] = 0x18
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Rev))
+ }
+ if m.Lease != 0 {
+ dAtA[i] = 0x20
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Lease))
+ }
+ return i, nil
+}
+
+func (m *LeaderRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LeaderRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Name) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(len(m.Name)))
+ i += copy(dAtA[i:], m.Name)
+ }
+ return i, nil
+}
+
+func (m *LeaderResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LeaderResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Header != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Header.Size()))
+ n3, err := m.Header.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n3
+ }
+ if m.Kv != nil {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Kv.Size()))
+ n4, err := m.Kv.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n4
+ }
+ return i, nil
+}
+
+func (m *ResignRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResignRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Leader != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Leader.Size()))
+ n5, err := m.Leader.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n5
+ }
+ return i, nil
+}
+
+func (m *ResignResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ResignResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Header != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Header.Size()))
+ n6, err := m.Header.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n6
+ }
+ return i, nil
+}
+
+func (m *ProclaimRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ProclaimRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Leader != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Leader.Size()))
+ n7, err := m.Leader.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n7
+ }
+ if len(m.Value) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(len(m.Value)))
+ i += copy(dAtA[i:], m.Value)
+ }
+ return i, nil
+}
+
+func (m *ProclaimResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *ProclaimResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Header != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Election(dAtA, i, uint64(m.Header.Size()))
+ n8, err := m.Header.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n8
+ }
+ return i, nil
+}
+
+func encodeFixed64V3Election(dAtA []byte, offset int, v uint64) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ dAtA[offset+4] = uint8(v >> 32)
+ dAtA[offset+5] = uint8(v >> 40)
+ dAtA[offset+6] = uint8(v >> 48)
+ dAtA[offset+7] = uint8(v >> 56)
+ return offset + 8
+}
+func encodeFixed32V3Election(dAtA []byte, offset int, v uint32) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ return offset + 4
+}
+func encodeVarintV3Election(dAtA []byte, offset int, v uint64) int {
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return offset + 1
+}
+func (m *CampaignRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ if m.Lease != 0 {
+ n += 1 + sovV3Election(uint64(m.Lease))
+ }
+ l = len(m.Value)
+ if l > 0 {
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func (m *CampaignResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Header != nil {
+ l = m.Header.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ if m.Leader != nil {
+ l = m.Leader.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func (m *LeaderKey) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ l = len(m.Key)
+ if l > 0 {
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ if m.Rev != 0 {
+ n += 1 + sovV3Election(uint64(m.Rev))
+ }
+ if m.Lease != 0 {
+ n += 1 + sovV3Election(uint64(m.Lease))
+ }
+ return n
+}
+
+func (m *LeaderRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func (m *LeaderResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Header != nil {
+ l = m.Header.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ if m.Kv != nil {
+ l = m.Kv.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func (m *ResignRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Leader != nil {
+ l = m.Leader.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func (m *ResignResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Header != nil {
+ l = m.Header.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func (m *ProclaimRequest) Size() (n int) {
+ var l int
+ _ = l
+ if m.Leader != nil {
+ l = m.Leader.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ l = len(m.Value)
+ if l > 0 {
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func (m *ProclaimResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Header != nil {
+ l = m.Header.Size()
+ n += 1 + l + sovV3Election(uint64(l))
+ }
+ return n
+}
+
+func sovV3Election(x uint64) (n int) {
+ for {
+ n++
+ x >>= 7
+ if x == 0 {
+ break
+ }
+ }
+ return n
+}
+func sozV3Election(x uint64) (n int) {
+ return sovV3Election(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *CampaignRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CampaignRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CampaignRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...)
+ if m.Name == nil {
+ m.Name = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType)
+ }
+ m.Lease = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Lease |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)
+ if m.Value == nil {
+ m.Value = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *CampaignResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: CampaignResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: CampaignResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Header == nil {
+ m.Header = &etcdserverpb.ResponseHeader{}
+ }
+ if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Leader", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Leader == nil {
+ m.Leader = &LeaderKey{}
+ }
+ if err := m.Leader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LeaderKey) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LeaderKey: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LeaderKey: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...)
+ if m.Name == nil {
+ m.Name = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)
+ if m.Key == nil {
+ m.Key = []byte{}
+ }
+ iNdEx = postIndex
+ case 3:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Rev", wireType)
+ }
+ m.Rev = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Rev |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ case 4:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType)
+ }
+ m.Lease = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Lease |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LeaderRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LeaderRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LeaderRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...)
+ if m.Name == nil {
+ m.Name = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LeaderResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LeaderResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LeaderResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Header == nil {
+ m.Header = &etcdserverpb.ResponseHeader{}
+ }
+ if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Kv", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Kv == nil {
+ m.Kv = &mvccpb.KeyValue{}
+ }
+ if err := m.Kv.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResignRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResignRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResignRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Leader", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Leader == nil {
+ m.Leader = &LeaderKey{}
+ }
+ if err := m.Leader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ResignResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ResignResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ResignResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Header == nil {
+ m.Header = &etcdserverpb.ResponseHeader{}
+ }
+ if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ProclaimRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ProclaimRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ProclaimRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Leader", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Leader == nil {
+ m.Leader = &LeaderKey{}
+ }
+ if err := m.Leader.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Value", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Value = append(m.Value[:0], dAtA[iNdEx:postIndex]...)
+ if m.Value == nil {
+ m.Value = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *ProclaimResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: ProclaimResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: ProclaimResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Header == nil {
+ m.Header = &etcdserverpb.ResponseHeader{}
+ }
+ if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Election(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Election
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipV3Election(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ return iNdEx, nil
+ case 1:
+ iNdEx += 8
+ return iNdEx, nil
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ iNdEx += length
+ if length < 0 {
+ return 0, ErrInvalidLengthV3Election
+ }
+ return iNdEx, nil
+ case 3:
+ for {
+ var innerWire uint64
+ var start int = iNdEx
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Election
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ innerWire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ innerWireType := int(innerWire & 0x7)
+ if innerWireType == 4 {
+ break
+ }
+ next, err := skipV3Election(dAtA[start:])
+ if err != nil {
+ return 0, err
+ }
+ iNdEx = start + next
+ }
+ return iNdEx, nil
+ case 4:
+ return iNdEx, nil
+ case 5:
+ iNdEx += 4
+ return iNdEx, nil
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ }
+ panic("unreachable")
+}
+
+var (
+ ErrInvalidLengthV3Election = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowV3Election = fmt.Errorf("proto: integer overflow")
+)
+
+func init() { proto.RegisterFile("v3election.proto", fileDescriptorV3Election) }
+
+var fileDescriptorV3Election = []byte{
+ // 540 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xa4, 0x54, 0xc1, 0x6e, 0xd3, 0x40,
+ 0x10, 0x65, 0x9d, 0x10, 0xca, 0x90, 0xb6, 0x96, 0x55, 0x89, 0x34, 0xa4, 0x26, 0xda, 0x02, 0xaa,
+ 0x72, 0xf0, 0xa2, 0x86, 0x53, 0x4e, 0x08, 0x04, 0xaa, 0x54, 0x24, 0xc0, 0x07, 0x04, 0xc7, 0x8d,
+ 0x3b, 0x4a, 0xa2, 0x38, 0xde, 0xc5, 0x4e, 0x2d, 0xe5, 0xca, 0x2f, 0x70, 0xe1, 0x33, 0xf8, 0x0c,
+ 0x8e, 0x48, 0xfc, 0x00, 0x0a, 0x7c, 0x08, 0xda, 0x5d, 0x1b, 0x3b, 0x6e, 0x88, 0x50, 0x73, 0xb1,
+ 0xc6, 0x33, 0xcf, 0xf3, 0xe6, 0xbd, 0x9d, 0x35, 0xd8, 0x69, 0x1f, 0x43, 0x0c, 0xe6, 0x13, 0x11,
+ 0x79, 0x32, 0x16, 0x73, 0xe1, 0x34, 0x8b, 0x8c, 0x1c, 0xb6, 0x0f, 0x46, 0x62, 0x24, 0x74, 0x81,
+ 0xa9, 0xc8, 0x60, 0xda, 0x8f, 0x70, 0x1e, 0x5c, 0x30, 0xf5, 0x48, 0x30, 0x4e, 0x31, 0x2e, 0x85,
+ 0x72, 0xc8, 0x62, 0x19, 0x64, 0xb8, 0x43, 0x8d, 0x9b, 0xa5, 0x41, 0xa0, 0x1f, 0x72, 0xc8, 0xa6,
+ 0x69, 0x56, 0xea, 0x8c, 0x84, 0x18, 0x85, 0xc8, 0xb8, 0x9c, 0x30, 0x1e, 0x45, 0x62, 0xce, 0x15,
+ 0x63, 0x62, 0xaa, 0xf4, 0x2d, 0xec, 0x3f, 0xe7, 0x33, 0xc9, 0x27, 0xa3, 0xc8, 0xc7, 0x8f, 0x97,
+ 0x98, 0xcc, 0x1d, 0x07, 0xea, 0x11, 0x9f, 0x61, 0x8b, 0x74, 0xc9, 0x49, 0xd3, 0xd7, 0xb1, 0x73,
+ 0x00, 0x37, 0x43, 0xe4, 0x09, 0xb6, 0xac, 0x2e, 0x39, 0xa9, 0xf9, 0xe6, 0x45, 0x65, 0x53, 0x1e,
+ 0x5e, 0x62, 0xab, 0xa6, 0xa1, 0xe6, 0x85, 0x2e, 0xc0, 0x2e, 0x5a, 0x26, 0x52, 0x44, 0x09, 0x3a,
+ 0x4f, 0xa0, 0x31, 0x46, 0x7e, 0x81, 0xb1, 0xee, 0x7a, 0xe7, 0xb4, 0xe3, 0x95, 0x85, 0x78, 0x39,
+ 0xee, 0x4c, 0x63, 0xfc, 0x0c, 0xeb, 0x30, 0x68, 0x84, 0xe6, 0x2b, 0x4b, 0x7f, 0x75, 0xd7, 0x2b,
+ 0x5b, 0xe6, 0xbd, 0xd2, 0xb5, 0x73, 0x5c, 0xf8, 0x19, 0x8c, 0x7e, 0x80, 0xdb, 0x7f, 0x93, 0x6b,
+ 0x75, 0xd8, 0x50, 0x9b, 0xe2, 0x42, 0xb7, 0x6b, 0xfa, 0x2a, 0x54, 0x99, 0x18, 0x53, 0xad, 0xa0,
+ 0xe6, 0xab, 0xb0, 0xd0, 0x5a, 0x2f, 0x69, 0xa5, 0xc7, 0xb0, 0x6b, 0x5a, 0x6f, 0xb0, 0x89, 0x8e,
+ 0x61, 0x2f, 0x07, 0x6d, 0x25, 0xbc, 0x0b, 0xd6, 0x34, 0xcd, 0x44, 0xdb, 0x9e, 0x39, 0x51, 0xef,
+ 0x1c, 0x17, 0xef, 0x94, 0xc1, 0xbe, 0x35, 0x4d, 0xe9, 0x53, 0xd8, 0xf5, 0x31, 0x29, 0x9d, 0x5a,
+ 0xe1, 0x15, 0xf9, 0x3f, 0xaf, 0x5e, 0xc2, 0x5e, 0xde, 0x61, 0x9b, 0x59, 0xe9, 0x7b, 0xd8, 0x7f,
+ 0x13, 0x8b, 0x20, 0xe4, 0x93, 0xd9, 0x75, 0x67, 0x29, 0x16, 0xc9, 0x2a, 0x2f, 0xd2, 0x19, 0xd8,
+ 0x45, 0xe7, 0x6d, 0x66, 0x3c, 0xfd, 0x5a, 0x87, 0x9d, 0x17, 0xd9, 0x00, 0x8e, 0x84, 0x9d, 0x7c,
+ 0x3f, 0x9d, 0xa3, 0xd5, 0xc9, 0x2a, 0x57, 0xa1, 0xed, 0xfe, 0xab, 0x6c, 0x58, 0xe8, 0xc3, 0x4f,
+ 0x3f, 0x7e, 0x7f, 0xb6, 0xee, 0xd3, 0x36, 0x4b, 0xfb, 0x3c, 0x94, 0x63, 0xce, 0x72, 0x34, 0x0b,
+ 0x32, 0xec, 0x80, 0xf4, 0x14, 0x63, 0x2e, 0xa4, 0xca, 0x58, 0xb1, 0xae, 0xca, 0x58, 0xd5, 0xbf,
+ 0x89, 0x51, 0x66, 0x58, 0xc5, 0x38, 0x86, 0x86, 0x71, 0xd9, 0xb9, 0xb7, 0xce, 0xfb, 0x9c, 0xad,
+ 0xb3, 0xbe, 0x98, 0x71, 0x1d, 0x6b, 0xae, 0x23, 0xda, 0xba, 0xca, 0x65, 0xce, 0x4d, 0x31, 0x85,
+ 0x70, 0xeb, 0xf5, 0x50, 0xfb, 0xbf, 0x0d, 0xd5, 0x03, 0x4d, 0xe5, 0xd2, 0xc3, 0xab, 0x54, 0xc2,
+ 0x74, 0x1f, 0x90, 0xde, 0x63, 0xa2, 0x74, 0x99, 0xa5, 0xad, 0x92, 0xad, 0x5c, 0x86, 0x2a, 0xd9,
+ 0xea, 0x9e, 0x6f, 0xd2, 0x15, 0x6b, 0xe4, 0x80, 0xf4, 0x9e, 0xd9, 0xdf, 0x96, 0x2e, 0xf9, 0xbe,
+ 0x74, 0xc9, 0xcf, 0xa5, 0x4b, 0xbe, 0xfc, 0x72, 0x6f, 0x0c, 0x1b, 0xfa, 0x8f, 0xd9, 0xff, 0x13,
+ 0x00, 0x00, 0xff, 0xff, 0xfc, 0x4d, 0x5a, 0x40, 0xca, 0x05, 0x00, 0x00,
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/v3election.proto b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/v3election.proto
new file mode 100644
index 000000000000..ebf6c88f7fa3
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb/v3election.proto
@@ -0,0 +1,119 @@
+syntax = "proto3";
+package v3electionpb;
+
+import "gogoproto/gogo.proto";
+import "etcd/etcdserver/etcdserverpb/rpc.proto";
+import "etcd/mvcc/mvccpb/kv.proto";
+
+// for grpc-gateway
+import "google/api/annotations.proto";
+
+option (gogoproto.marshaler_all) = true;
+option (gogoproto.unmarshaler_all) = true;
+
+// The election service exposes client-side election facilities as a gRPC interface.
+service Election {
+ // Campaign waits to acquire leadership in an election, returning a LeaderKey
+ // representing the leadership if successful. The LeaderKey can then be used
+ // to issue new values on the election, transactionally guard API requests on
+ // leadership still being held, and resign from the election.
+ rpc Campaign(CampaignRequest) returns (CampaignResponse) {
+ option (google.api.http) = {
+ post: "/v3alpha/election/campaign"
+ body: "*"
+ };
+ }
+ // Proclaim updates the leader's posted value with a new value.
+ rpc Proclaim(ProclaimRequest) returns (ProclaimResponse) {
+ option (google.api.http) = {
+ post: "/v3alpha/election/proclaim"
+ body: "*"
+ };
+ }
+ // Leader returns the current election proclamation, if any.
+ rpc Leader(LeaderRequest) returns (LeaderResponse) {
+ option (google.api.http) = {
+ post: "/v3alpha/election/leader"
+ body: "*"
+ };
+ }
+ // Observe streams election proclamations in-order as made by the election's
+ // elected leaders.
+ rpc Observe(LeaderRequest) returns (stream LeaderResponse) {
+ option (google.api.http) = {
+ post: "/v3alpha/election/observe"
+ body: "*"
+ };
+ }
+ // Resign releases election leadership so other campaigners may acquire
+ // leadership on the election.
+ rpc Resign(ResignRequest) returns (ResignResponse) {
+ option (google.api.http) = {
+ post: "/v3alpha/election/resign"
+ body: "*"
+ };
+ }
+}
+
+message CampaignRequest {
+ // name is the election's identifier for the campaign.
+ bytes name = 1;
+ // lease is the ID of the lease attached to leadership of the election. If the
+ // lease expires or is revoked before resigning leadership, then the
+ // leadership is transferred to the next campaigner, if any.
+ int64 lease = 2;
+ // value is the initial proclaimed value set when the campaigner wins the
+ // election.
+ bytes value = 3;
+}
+
+message CampaignResponse {
+ etcdserverpb.ResponseHeader header = 1;
+ // leader describes the resources used for holding leadereship of the election.
+ LeaderKey leader = 2;
+}
+
+message LeaderKey {
+ // name is the election identifier that correponds to the leadership key.
+ bytes name = 1;
+ // key is an opaque key representing the ownership of the election. If the key
+ // is deleted, then leadership is lost.
+ bytes key = 2;
+ // rev is the creation revision of the key. It can be used to test for ownership
+ // of an election during transactions by testing the key's creation revision
+ // matches rev.
+ int64 rev = 3;
+ // lease is the lease ID of the election leader.
+ int64 lease = 4;
+}
+
+message LeaderRequest {
+ // name is the election identifier for the leadership information.
+ bytes name = 1;
+}
+
+message LeaderResponse {
+ etcdserverpb.ResponseHeader header = 1;
+ // kv is the key-value pair representing the latest leader update.
+ mvccpb.KeyValue kv = 2;
+}
+
+message ResignRequest {
+ // leader is the leadership to relinquish by resignation.
+ LeaderKey leader = 1;
+}
+
+message ResignResponse {
+ etcdserverpb.ResponseHeader header = 1;
+}
+
+message ProclaimRequest {
+ // leader is the leadership hold on the election.
+ LeaderKey leader = 1;
+ // value is an update meant to overwrite the leader's current value.
+ bytes value = 2;
+}
+
+message ProclaimResponse {
+ etcdserverpb.ResponseHeader header = 1;
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/doc.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/doc.go
new file mode 100644
index 000000000000..e0a1008abc9e
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/doc.go
@@ -0,0 +1,16 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 v3lock provides a v3 locking service from an etcdserver.
+package v3lock
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/lock.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/lock.go
new file mode 100644
index 000000000000..66465bf13f62
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/lock.go
@@ -0,0 +1,56 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 v3lock
+
+import (
+ "golang.org/x/net/context"
+
+ "github.com/coreos/etcd/clientv3"
+ "github.com/coreos/etcd/clientv3/concurrency"
+ "github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb"
+)
+
+type lockServer struct {
+ c *clientv3.Client
+}
+
+func NewLockServer(c *clientv3.Client) v3lockpb.LockServer {
+ return &lockServer{c}
+}
+
+func (ls *lockServer) Lock(ctx context.Context, req *v3lockpb.LockRequest) (*v3lockpb.LockResponse, error) {
+ s, err := concurrency.NewSession(
+ ls.c,
+ concurrency.WithLease(clientv3.LeaseID(req.Lease)),
+ concurrency.WithContext(ctx),
+ )
+ if err != nil {
+ return nil, err
+ }
+ s.Orphan()
+ m := concurrency.NewMutex(s, string(req.Name))
+ if err = m.Lock(ctx); err != nil {
+ return nil, err
+ }
+ return &v3lockpb.LockResponse{Header: m.Header(), Key: []byte(m.Key())}, nil
+}
+
+func (ls *lockServer) Unlock(ctx context.Context, req *v3lockpb.UnlockRequest) (*v3lockpb.UnlockResponse, error) {
+ resp, err := ls.c.Delete(ctx, string(req.Key))
+ if err != nil {
+ return nil, err
+ }
+ return &v3lockpb.UnlockResponse{Header: resp.Header}, nil
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go
new file mode 100644
index 000000000000..5aef4756dfe7
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/gw/v3lock.pb.gw.go
@@ -0,0 +1,167 @@
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
+// source: etcdserver/api/v3lock/v3lockpb/v3lock.proto
+
+/*
+Package v3lockpb is a reverse proxy.
+
+It translates gRPC into RESTful JSON APIs.
+*/
+package gw
+
+import (
+ "github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb"
+ "io"
+ "net/http"
+
+ "github.com/golang/protobuf/proto"
+ "github.com/grpc-ecosystem/grpc-gateway/runtime"
+ "github.com/grpc-ecosystem/grpc-gateway/utilities"
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/status"
+)
+
+var _ codes.Code
+var _ io.Reader
+var _ status.Status
+var _ = runtime.String
+var _ = utilities.NewDoubleArray
+
+func request_Lock_Lock_0(ctx context.Context, marshaler runtime.Marshaler, client v3lockpb.LockClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq v3lockpb.LockRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Lock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+func request_Lock_Unlock_0(ctx context.Context, marshaler runtime.Marshaler, client v3lockpb.LockClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq v3lockpb.UnlockRequest
+ var metadata runtime.ServerMetadata
+
+ if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
+ }
+
+ msg, err := client.Unlock(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
+ return msg, metadata, err
+
+}
+
+// RegisterLockHandlerFromEndpoint is same as RegisterLockHandler but
+// automatically dials to "endpoint" and closes the connection when "ctx" gets done.
+func RegisterLockHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, endpoint string, opts []grpc.DialOption) (err error) {
+ conn, err := grpc.Dial(endpoint, opts...)
+ if err != nil {
+ return err
+ }
+ defer func() {
+ if err != nil {
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ return
+ }
+ go func() {
+ <-ctx.Done()
+ if cerr := conn.Close(); cerr != nil {
+ grpclog.Printf("Failed to close conn to %s: %v", endpoint, cerr)
+ }
+ }()
+ }()
+
+ return RegisterLockHandler(ctx, mux, conn)
+}
+
+// RegisterLockHandler registers the http handlers for service Lock to "mux".
+// The handlers forward requests to the grpc endpoint over "conn".
+func RegisterLockHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
+ return RegisterLockHandlerClient(ctx, mux, v3lockpb.NewLockClient(conn))
+}
+
+// RegisterLockHandler registers the http handlers for service Lock to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "LockClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "LockClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "LockClient" to call the correct interceptors.
+func RegisterLockHandlerClient(ctx context.Context, mux *runtime.ServeMux, client v3lockpb.LockClient) error {
+
+ mux.Handle("POST", pattern_Lock_Lock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ if cn, ok := w.(http.CloseNotifier); ok {
+ go func(done <-chan struct{}, closed <-chan bool) {
+ select {
+ case <-done:
+ case <-closed:
+ cancel()
+ }
+ }(ctx.Done(), cn.CloseNotify())
+ }
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Lock_Lock_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Lock_Lock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ mux.Handle("POST", pattern_Lock_Unlock_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
+ ctx, cancel := context.WithCancel(ctx)
+ defer cancel()
+ if cn, ok := w.(http.CloseNotifier); ok {
+ go func(done <-chan struct{}, closed <-chan bool) {
+ select {
+ case <-done:
+ case <-closed:
+ cancel()
+ }
+ }(ctx.Done(), cn.CloseNotify())
+ }
+ inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+ resp, md, err := request_Lock_Unlock_0(rctx, inboundMarshaler, client, req, pathParams)
+ ctx = runtime.NewServerMetadataContext(ctx, md)
+ if err != nil {
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
+ }
+
+ forward_Lock_Unlock_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+
+ })
+
+ return nil
+}
+
+var (
+ pattern_Lock_Lock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 1}, []string{"v3alpha", "lock"}, ""))
+
+ pattern_Lock_Unlock_0 = runtime.MustPattern(runtime.NewPattern(1, []int{2, 0, 2, 1, 2, 2}, []string{"v3alpha", "lock", "unlock"}, ""))
+)
+
+var (
+ forward_Lock_Lock_0 = runtime.ForwardResponseMessage
+
+ forward_Lock_Unlock_0 = runtime.ForwardResponseMessage
+)
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go
new file mode 100644
index 000000000000..dcf2bad4019c
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/v3lock.pb.go
@@ -0,0 +1,978 @@
+// Code generated by protoc-gen-gogo.
+// source: v3lock.proto
+// DO NOT EDIT!
+
+/*
+ Package v3lockpb is a generated protocol buffer package.
+
+ It is generated from these files:
+ v3lock.proto
+
+ It has these top-level messages:
+ LockRequest
+ LockResponse
+ UnlockRequest
+ UnlockResponse
+*/
+package v3lockpb
+
+import (
+ "fmt"
+
+ proto "github.com/golang/protobuf/proto"
+
+ math "math"
+
+ etcdserverpb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+
+ context "golang.org/x/net/context"
+
+ grpc "google.golang.org/grpc"
+
+ io "io"
+)
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type LockRequest struct {
+ // name is the identifier for the distributed shared lock to be acquired.
+ Name []byte `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
+ // lease is the ID of the lease that will be attached to ownership of the
+ // lock. If the lease expires or is revoked and currently holds the lock,
+ // the lock is automatically released. Calls to Lock with the same lease will
+ // be treated as a single acquistion; locking twice with the same lease is a
+ // no-op.
+ Lease int64 `protobuf:"varint,2,opt,name=lease,proto3" json:"lease,omitempty"`
+}
+
+func (m *LockRequest) Reset() { *m = LockRequest{} }
+func (m *LockRequest) String() string { return proto.CompactTextString(m) }
+func (*LockRequest) ProtoMessage() {}
+func (*LockRequest) Descriptor() ([]byte, []int) { return fileDescriptorV3Lock, []int{0} }
+
+func (m *LockRequest) GetName() []byte {
+ if m != nil {
+ return m.Name
+ }
+ return nil
+}
+
+func (m *LockRequest) GetLease() int64 {
+ if m != nil {
+ return m.Lease
+ }
+ return 0
+}
+
+type LockResponse struct {
+ Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+ // key is a key that will exist on etcd for the duration that the Lock caller
+ // owns the lock. Users should not modify this key or the lock may exhibit
+ // undefined behavior.
+ Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"`
+}
+
+func (m *LockResponse) Reset() { *m = LockResponse{} }
+func (m *LockResponse) String() string { return proto.CompactTextString(m) }
+func (*LockResponse) ProtoMessage() {}
+func (*LockResponse) Descriptor() ([]byte, []int) { return fileDescriptorV3Lock, []int{1} }
+
+func (m *LockResponse) GetHeader() *etcdserverpb.ResponseHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func (m *LockResponse) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
+type UnlockRequest struct {
+ // key is the lock ownership key granted by Lock.
+ Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
+}
+
+func (m *UnlockRequest) Reset() { *m = UnlockRequest{} }
+func (m *UnlockRequest) String() string { return proto.CompactTextString(m) }
+func (*UnlockRequest) ProtoMessage() {}
+func (*UnlockRequest) Descriptor() ([]byte, []int) { return fileDescriptorV3Lock, []int{2} }
+
+func (m *UnlockRequest) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
+type UnlockResponse struct {
+ Header *etcdserverpb.ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+}
+
+func (m *UnlockResponse) Reset() { *m = UnlockResponse{} }
+func (m *UnlockResponse) String() string { return proto.CompactTextString(m) }
+func (*UnlockResponse) ProtoMessage() {}
+func (*UnlockResponse) Descriptor() ([]byte, []int) { return fileDescriptorV3Lock, []int{3} }
+
+func (m *UnlockResponse) GetHeader() *etcdserverpb.ResponseHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func init() {
+ proto.RegisterType((*LockRequest)(nil), "v3lockpb.LockRequest")
+ proto.RegisterType((*LockResponse)(nil), "v3lockpb.LockResponse")
+ proto.RegisterType((*UnlockRequest)(nil), "v3lockpb.UnlockRequest")
+ proto.RegisterType((*UnlockResponse)(nil), "v3lockpb.UnlockResponse")
+}
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ context.Context
+var _ grpc.ClientConn
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the grpc package it is being compiled against.
+const _ = grpc.SupportPackageIsVersion4
+
+// Client API for Lock service
+
+type LockClient interface {
+ // Lock acquires a distributed shared lock on a given named lock.
+ // On success, it will return a unique key that exists so long as the
+ // lock is held by the caller. This key can be used in conjunction with
+ // transactions to safely ensure updates to etcd only occur while holding
+ // lock ownership. The lock is held until Unlock is called on the key or the
+ // lease associate with the owner expires.
+ Lock(ctx context.Context, in *LockRequest, opts ...grpc.CallOption) (*LockResponse, error)
+ // Unlock takes a key returned by Lock and releases the hold on lock. The
+ // next Lock caller waiting for the lock will then be woken up and given
+ // ownership of the lock.
+ Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc.CallOption) (*UnlockResponse, error)
+}
+
+type lockClient struct {
+ cc *grpc.ClientConn
+}
+
+func NewLockClient(cc *grpc.ClientConn) LockClient {
+ return &lockClient{cc}
+}
+
+func (c *lockClient) Lock(ctx context.Context, in *LockRequest, opts ...grpc.CallOption) (*LockResponse, error) {
+ out := new(LockResponse)
+ err := grpc.Invoke(ctx, "/v3lockpb.Lock/Lock", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+func (c *lockClient) Unlock(ctx context.Context, in *UnlockRequest, opts ...grpc.CallOption) (*UnlockResponse, error) {
+ out := new(UnlockResponse)
+ err := grpc.Invoke(ctx, "/v3lockpb.Lock/Unlock", in, out, c.cc, opts...)
+ if err != nil {
+ return nil, err
+ }
+ return out, nil
+}
+
+// Server API for Lock service
+
+type LockServer interface {
+ // Lock acquires a distributed shared lock on a given named lock.
+ // On success, it will return a unique key that exists so long as the
+ // lock is held by the caller. This key can be used in conjunction with
+ // transactions to safely ensure updates to etcd only occur while holding
+ // lock ownership. The lock is held until Unlock is called on the key or the
+ // lease associate with the owner expires.
+ Lock(context.Context, *LockRequest) (*LockResponse, error)
+ // Unlock takes a key returned by Lock and releases the hold on lock. The
+ // next Lock caller waiting for the lock will then be woken up and given
+ // ownership of the lock.
+ Unlock(context.Context, *UnlockRequest) (*UnlockResponse, error)
+}
+
+func RegisterLockServer(s *grpc.Server, srv LockServer) {
+ s.RegisterService(&_Lock_serviceDesc, srv)
+}
+
+func _Lock_Lock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(LockRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(LockServer).Lock(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/v3lockpb.Lock/Lock",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(LockServer).Lock(ctx, req.(*LockRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+func _Lock_Unlock_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+ in := new(UnlockRequest)
+ if err := dec(in); err != nil {
+ return nil, err
+ }
+ if interceptor == nil {
+ return srv.(LockServer).Unlock(ctx, in)
+ }
+ info := &grpc.UnaryServerInfo{
+ Server: srv,
+ FullMethod: "/v3lockpb.Lock/Unlock",
+ }
+ handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+ return srv.(LockServer).Unlock(ctx, req.(*UnlockRequest))
+ }
+ return interceptor(ctx, in, info, handler)
+}
+
+var _Lock_serviceDesc = grpc.ServiceDesc{
+ ServiceName: "v3lockpb.Lock",
+ HandlerType: (*LockServer)(nil),
+ Methods: []grpc.MethodDesc{
+ {
+ MethodName: "Lock",
+ Handler: _Lock_Lock_Handler,
+ },
+ {
+ MethodName: "Unlock",
+ Handler: _Lock_Unlock_Handler,
+ },
+ },
+ Streams: []grpc.StreamDesc{},
+ Metadata: "v3lock.proto",
+}
+
+func (m *LockRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LockRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Name) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Lock(dAtA, i, uint64(len(m.Name)))
+ i += copy(dAtA[i:], m.Name)
+ }
+ if m.Lease != 0 {
+ dAtA[i] = 0x10
+ i++
+ i = encodeVarintV3Lock(dAtA, i, uint64(m.Lease))
+ }
+ return i, nil
+}
+
+func (m *LockResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *LockResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Header != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Lock(dAtA, i, uint64(m.Header.Size()))
+ n1, err := m.Header.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n1
+ }
+ if len(m.Key) > 0 {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintV3Lock(dAtA, i, uint64(len(m.Key)))
+ i += copy(dAtA[i:], m.Key)
+ }
+ return i, nil
+}
+
+func (m *UnlockRequest) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UnlockRequest) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if len(m.Key) > 0 {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Lock(dAtA, i, uint64(len(m.Key)))
+ i += copy(dAtA[i:], m.Key)
+ }
+ return i, nil
+}
+
+func (m *UnlockResponse) Marshal() (dAtA []byte, err error) {
+ size := m.Size()
+ dAtA = make([]byte, size)
+ n, err := m.MarshalTo(dAtA)
+ if err != nil {
+ return nil, err
+ }
+ return dAtA[:n], nil
+}
+
+func (m *UnlockResponse) MarshalTo(dAtA []byte) (int, error) {
+ var i int
+ _ = i
+ var l int
+ _ = l
+ if m.Header != nil {
+ dAtA[i] = 0xa
+ i++
+ i = encodeVarintV3Lock(dAtA, i, uint64(m.Header.Size()))
+ n2, err := m.Header.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n2
+ }
+ return i, nil
+}
+
+func encodeFixed64V3Lock(dAtA []byte, offset int, v uint64) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ dAtA[offset+4] = uint8(v >> 32)
+ dAtA[offset+5] = uint8(v >> 40)
+ dAtA[offset+6] = uint8(v >> 48)
+ dAtA[offset+7] = uint8(v >> 56)
+ return offset + 8
+}
+func encodeFixed32V3Lock(dAtA []byte, offset int, v uint32) int {
+ dAtA[offset] = uint8(v)
+ dAtA[offset+1] = uint8(v >> 8)
+ dAtA[offset+2] = uint8(v >> 16)
+ dAtA[offset+3] = uint8(v >> 24)
+ return offset + 4
+}
+func encodeVarintV3Lock(dAtA []byte, offset int, v uint64) int {
+ for v >= 1<<7 {
+ dAtA[offset] = uint8(v&0x7f | 0x80)
+ v >>= 7
+ offset++
+ }
+ dAtA[offset] = uint8(v)
+ return offset + 1
+}
+func (m *LockRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Name)
+ if l > 0 {
+ n += 1 + l + sovV3Lock(uint64(l))
+ }
+ if m.Lease != 0 {
+ n += 1 + sovV3Lock(uint64(m.Lease))
+ }
+ return n
+}
+
+func (m *LockResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Header != nil {
+ l = m.Header.Size()
+ n += 1 + l + sovV3Lock(uint64(l))
+ }
+ l = len(m.Key)
+ if l > 0 {
+ n += 1 + l + sovV3Lock(uint64(l))
+ }
+ return n
+}
+
+func (m *UnlockRequest) Size() (n int) {
+ var l int
+ _ = l
+ l = len(m.Key)
+ if l > 0 {
+ n += 1 + l + sovV3Lock(uint64(l))
+ }
+ return n
+}
+
+func (m *UnlockResponse) Size() (n int) {
+ var l int
+ _ = l
+ if m.Header != nil {
+ l = m.Header.Size()
+ n += 1 + l + sovV3Lock(uint64(l))
+ }
+ return n
+}
+
+func sovV3Lock(x uint64) (n int) {
+ for {
+ n++
+ x >>= 7
+ if x == 0 {
+ break
+ }
+ }
+ return n
+}
+func sozV3Lock(x uint64) (n int) {
+ return sovV3Lock(uint64((x << 1) ^ uint64((int64(x) >> 63))))
+}
+func (m *LockRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LockRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LockRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Name", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Name = append(m.Name[:0], dAtA[iNdEx:postIndex]...)
+ if m.Name == nil {
+ m.Name = []byte{}
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Lease", wireType)
+ }
+ m.Lease = 0
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ m.Lease |= (int64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Lock(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *LockResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: LockResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: LockResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Header == nil {
+ m.Header = &etcdserverpb.ResponseHeader{}
+ }
+ if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)
+ if m.Key == nil {
+ m.Key = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Lock(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UnlockRequest) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UnlockRequest: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UnlockRequest: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Key", wireType)
+ }
+ var byteLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ byteLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if byteLen < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ postIndex := iNdEx + byteLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Key = append(m.Key[:0], dAtA[iNdEx:postIndex]...)
+ if m.Key == nil {
+ m.Key = []byte{}
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Lock(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func (m *UnlockResponse) Unmarshal(dAtA []byte) error {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ preIndex := iNdEx
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ fieldNum := int32(wire >> 3)
+ wireType := int(wire & 0x7)
+ if wireType == 4 {
+ return fmt.Errorf("proto: UnlockResponse: wiretype end group for non-group")
+ }
+ if fieldNum <= 0 {
+ return fmt.Errorf("proto: UnlockResponse: illegal tag %d (wire type %d)", fieldNum, wire)
+ }
+ switch fieldNum {
+ case 1:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Header", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ if m.Header == nil {
+ m.Header = &etcdserverpb.ResponseHeader{}
+ }
+ if err := m.Header.Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
+ default:
+ iNdEx = preIndex
+ skippy, err := skipV3Lock(dAtA[iNdEx:])
+ if err != nil {
+ return err
+ }
+ if skippy < 0 {
+ return ErrInvalidLengthV3Lock
+ }
+ if (iNdEx + skippy) > l {
+ return io.ErrUnexpectedEOF
+ }
+ iNdEx += skippy
+ }
+ }
+
+ if iNdEx > l {
+ return io.ErrUnexpectedEOF
+ }
+ return nil
+}
+func skipV3Lock(dAtA []byte) (n int, err error) {
+ l := len(dAtA)
+ iNdEx := 0
+ for iNdEx < l {
+ var wire uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ wire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ wireType := int(wire & 0x7)
+ switch wireType {
+ case 0:
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ iNdEx++
+ if dAtA[iNdEx-1] < 0x80 {
+ break
+ }
+ }
+ return iNdEx, nil
+ case 1:
+ iNdEx += 8
+ return iNdEx, nil
+ case 2:
+ var length int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ length |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ iNdEx += length
+ if length < 0 {
+ return 0, ErrInvalidLengthV3Lock
+ }
+ return iNdEx, nil
+ case 3:
+ for {
+ var innerWire uint64
+ var start int = iNdEx
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return 0, ErrIntOverflowV3Lock
+ }
+ if iNdEx >= l {
+ return 0, io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ innerWire |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ innerWireType := int(innerWire & 0x7)
+ if innerWireType == 4 {
+ break
+ }
+ next, err := skipV3Lock(dAtA[start:])
+ if err != nil {
+ return 0, err
+ }
+ iNdEx = start + next
+ }
+ return iNdEx, nil
+ case 4:
+ return iNdEx, nil
+ case 5:
+ iNdEx += 4
+ return iNdEx, nil
+ default:
+ return 0, fmt.Errorf("proto: illegal wireType %d", wireType)
+ }
+ }
+ panic("unreachable")
+}
+
+var (
+ ErrInvalidLengthV3Lock = fmt.Errorf("proto: negative length found during unmarshaling")
+ ErrIntOverflowV3Lock = fmt.Errorf("proto: integer overflow")
+)
+
+func init() { proto.RegisterFile("v3lock.proto", fileDescriptorV3Lock) }
+
+var fileDescriptorV3Lock = []byte{
+ // 336 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x33, 0xce, 0xc9,
+ 0x4f, 0xce, 0xd6, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0xe2, 0x80, 0xf0, 0x0a, 0x92, 0xa4, 0x44,
+ 0xd2, 0xf3, 0xd3, 0xf3, 0xc1, 0x82, 0xfa, 0x20, 0x16, 0x44, 0x5e, 0x4a, 0x2d, 0xb5, 0x24, 0x39,
+ 0x45, 0x1f, 0x44, 0x14, 0xa7, 0x16, 0x95, 0xa5, 0x16, 0x21, 0x31, 0x0b, 0x92, 0xf4, 0x8b, 0x0a,
+ 0x92, 0xa1, 0xea, 0x64, 0xd2, 0xf3, 0xf3, 0xd3, 0x73, 0x52, 0xf5, 0x13, 0x0b, 0x32, 0xf5, 0x13,
+ 0xf3, 0xf2, 0xf2, 0x4b, 0x12, 0x4b, 0x32, 0xf3, 0xf3, 0x8a, 0x21, 0xb2, 0x4a, 0xe6, 0x5c, 0xdc,
+ 0x3e, 0xf9, 0xc9, 0xd9, 0x41, 0xa9, 0x85, 0xa5, 0xa9, 0xc5, 0x25, 0x42, 0x42, 0x5c, 0x2c, 0x79,
+ 0x89, 0xb9, 0xa9, 0x12, 0x8c, 0x0a, 0x8c, 0x1a, 0x3c, 0x41, 0x60, 0xb6, 0x90, 0x08, 0x17, 0x6b,
+ 0x4e, 0x6a, 0x62, 0x71, 0xaa, 0x04, 0x93, 0x02, 0xa3, 0x06, 0x73, 0x10, 0x84, 0xa3, 0x14, 0xc6,
+ 0xc5, 0x03, 0xd1, 0x58, 0x5c, 0x90, 0x9f, 0x57, 0x9c, 0x2a, 0x64, 0xc2, 0xc5, 0x96, 0x91, 0x9a,
+ 0x98, 0x92, 0x5a, 0x04, 0xd6, 0xcb, 0x6d, 0x24, 0xa3, 0x87, 0xec, 0x1e, 0x3d, 0x98, 0x3a, 0x0f,
+ 0xb0, 0x9a, 0x20, 0xa8, 0x5a, 0x21, 0x01, 0x2e, 0xe6, 0xec, 0xd4, 0x4a, 0xb0, 0xc9, 0x3c, 0x41,
+ 0x20, 0xa6, 0x92, 0x22, 0x17, 0x6f, 0x68, 0x5e, 0x0e, 0x92, 0x93, 0xa0, 0x4a, 0x18, 0x11, 0x4a,
+ 0xdc, 0xb8, 0xf8, 0x60, 0x4a, 0x28, 0xb1, 0xdc, 0x68, 0x17, 0x23, 0x17, 0x0b, 0xc8, 0x0f, 0x42,
+ 0x21, 0x50, 0x5a, 0x54, 0x0f, 0x16, 0xe6, 0x7a, 0x48, 0x81, 0x22, 0x25, 0x86, 0x2e, 0x0c, 0x31,
+ 0x4d, 0x49, 0xb6, 0xe9, 0xf2, 0x93, 0xc9, 0x4c, 0xe2, 0x4a, 0x42, 0xfa, 0x65, 0xc6, 0x89, 0x39,
+ 0x05, 0x19, 0x89, 0xfa, 0x20, 0x55, 0x60, 0xc2, 0x8a, 0x51, 0x4b, 0x28, 0x86, 0x8b, 0x0d, 0xe2,
+ 0x4c, 0x21, 0x71, 0x84, 0x01, 0x28, 0x7e, 0x93, 0x92, 0xc0, 0x94, 0x80, 0x9a, 0x2d, 0x0f, 0x36,
+ 0x5b, 0x52, 0x49, 0x04, 0xd5, 0xec, 0xd2, 0x3c, 0xa8, 0xe9, 0x4e, 0x02, 0x27, 0x1e, 0xc9, 0x31,
+ 0x5e, 0x78, 0x24, 0xc7, 0xf8, 0xe0, 0x91, 0x1c, 0xe3, 0x8c, 0xc7, 0x72, 0x0c, 0x49, 0x6c, 0xe0,
+ 0x18, 0x35, 0x06, 0x04, 0x00, 0x00, 0xff, 0xff, 0xb6, 0xa0, 0x26, 0x28, 0x47, 0x02, 0x00, 0x00,
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/v3lock.proto b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/v3lock.proto
new file mode 100644
index 000000000000..3e92a6ec277c
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb/v3lock.proto
@@ -0,0 +1,65 @@
+syntax = "proto3";
+package v3lockpb;
+
+import "gogoproto/gogo.proto";
+import "etcd/etcdserver/etcdserverpb/rpc.proto";
+
+// for grpc-gateway
+import "google/api/annotations.proto";
+
+option (gogoproto.marshaler_all) = true;
+option (gogoproto.unmarshaler_all) = true;
+
+// The lock service exposes client-side locking facilities as a gRPC interface.
+service Lock {
+ // Lock acquires a distributed shared lock on a given named lock.
+ // On success, it will return a unique key that exists so long as the
+ // lock is held by the caller. This key can be used in conjunction with
+ // transactions to safely ensure updates to etcd only occur while holding
+ // lock ownership. The lock is held until Unlock is called on the key or the
+ // lease associate with the owner expires.
+ rpc Lock(LockRequest) returns (LockResponse) {
+ option (google.api.http) = {
+ post: "/v3alpha/lock/lock"
+ body: "*"
+ };
+ }
+
+ // Unlock takes a key returned by Lock and releases the hold on lock. The
+ // next Lock caller waiting for the lock will then be woken up and given
+ // ownership of the lock.
+ rpc Unlock(UnlockRequest) returns (UnlockResponse) {
+ option (google.api.http) = {
+ post: "/v3alpha/lock/unlock"
+ body: "*"
+ };
+ }
+}
+
+message LockRequest {
+ // name is the identifier for the distributed shared lock to be acquired.
+ bytes name = 1;
+ // lease is the ID of the lease that will be attached to ownership of the
+ // lock. If the lease expires or is revoked and currently holds the lock,
+ // the lock is automatically released. Calls to Lock with the same lease will
+ // be treated as a single acquistion; locking twice with the same lease is a
+ // no-op.
+ int64 lease = 2;
+}
+
+message LockResponse {
+ etcdserverpb.ResponseHeader header = 1;
+ // key is a key that will exist on etcd for the duration that the Lock caller
+ // owns the lock. Users should not modify this key or the lock may exhibit
+ // undefined behavior.
+ bytes key = 2;
+}
+
+message UnlockRequest {
+ // key is the lock ownership key granted by Lock.
+ bytes key = 1;
+}
+
+message UnlockResponse {
+ etcdserverpb.ResponseHeader header = 1;
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/grpc.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/grpc.go
index 88174e3bac24..5333491a2e25 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/grpc.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/grpc.go
@@ -16,6 +16,10 @@ package v3rpc
import (
"crypto/tls"
+ "io/ioutil"
+ "math"
+ "os"
+ "sync"
"github.com/coreos/etcd/etcdserver"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
@@ -24,11 +28,16 @@ import (
"google.golang.org/grpc/grpclog"
)
-func init() {
- grpclog.SetLogger(plog)
-}
+const (
+ grpcOverheadBytes = 512 * 1024
+ maxStreams = math.MaxUint32
+ maxSendBytes = math.MaxInt32
+)
+
+// integration tests call this multiple times, which is racey in gRPC side
+var grpclogOnce sync.Once
-func Server(s *etcdserver.EtcdServer, tls *tls.Config) *grpc.Server {
+func Server(s *etcdserver.EtcdServer, tls *tls.Config, gopts ...grpc.ServerOption) *grpc.Server {
var opts []grpc.ServerOption
opts = append(opts, grpc.CustomCodec(&codec{}))
if tls != nil {
@@ -36,8 +45,11 @@ func Server(s *etcdserver.EtcdServer, tls *tls.Config) *grpc.Server {
}
opts = append(opts, grpc.UnaryInterceptor(newUnaryInterceptor(s)))
opts = append(opts, grpc.StreamInterceptor(newStreamInterceptor(s)))
+ opts = append(opts, grpc.MaxRecvMsgSize(int(s.Cfg.MaxRequestBytes+grpcOverheadBytes)))
+ opts = append(opts, grpc.MaxSendMsgSize(maxSendBytes))
+ opts = append(opts, grpc.MaxConcurrentStreams(maxStreams))
+ grpcServer := grpc.NewServer(append(opts, gopts...)...)
- grpcServer := grpc.NewServer(opts...)
pb.RegisterKVServer(grpcServer, NewQuotaKVServer(s))
pb.RegisterWatchServer(grpcServer, NewWatchServer(s))
pb.RegisterLeaseServer(grpcServer, NewQuotaLeaseServer(s))
@@ -45,5 +57,15 @@ func Server(s *etcdserver.EtcdServer, tls *tls.Config) *grpc.Server {
pb.RegisterAuthServer(grpcServer, NewAuthServer(s))
pb.RegisterMaintenanceServer(grpcServer, NewMaintenanceServer(s))
+ grpclogOnce.Do(func() {
+ if s.Cfg.Debug {
+ grpc.EnableTracing = true
+ // enable info, warning, error
+ grpclog.SetLoggerV2(grpclog.NewLoggerV2(os.Stderr, os.Stderr, os.Stderr))
+ } else {
+ // only discard info
+ grpclog.SetLoggerV2(grpclog.NewLoggerV2(ioutil.Discard, os.Stderr, os.Stderr))
+ }
+ })
return grpcServer
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/interceptor.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/interceptor.go
index 29aef2914a5b..de9470a8905c 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/interceptor.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/interceptor.go
@@ -45,7 +45,7 @@ func newUnaryInterceptor(s *etcdserver.EtcdServer) grpc.UnaryServerInterceptor {
return nil, rpctypes.ErrGRPCNotCapable
}
- md, ok := metadata.FromContext(ctx)
+ md, ok := metadata.FromIncomingContext(ctx)
if ok {
if ks := md[rpctypes.MetadataRequireLeaderKey]; len(ks) > 0 && ks[0] == rpctypes.MetadataHasLeader {
if s.Leader() == types.ID(raft.None) {
@@ -66,7 +66,7 @@ func newStreamInterceptor(s *etcdserver.EtcdServer) grpc.StreamServerInterceptor
return rpctypes.ErrGRPCNotCapable
}
- md, ok := metadata.FromContext(ss.Context())
+ md, ok := metadata.FromIncomingContext(ss.Context())
if ok {
if ks := md[rpctypes.MetadataRequireLeaderKey]; len(ks) > 0 && ks[0] == rpctypes.MetadataHasLeader {
if s.Leader() == types.ID(raft.None) {
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/key.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/key.go
index 6ea7bbacde0a..d0220e03a26e 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/key.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/key.go
@@ -134,6 +134,12 @@ func checkPutRequest(r *pb.PutRequest) error {
if len(r.Key) == 0 {
return rpctypes.ErrGRPCEmptyKey
}
+ if r.IgnoreValue && len(r.Value) != 0 {
+ return rpctypes.ErrGRPCValueProvided
+ }
+ if r.IgnoreLease && r.Lease != 0 {
+ return rpctypes.ErrGRPCLeaseProvided
+ }
return nil
}
@@ -246,8 +252,8 @@ func checkRequestOp(u *pb.RequestOp) error {
return checkDeleteRequest(uv.RequestDeleteRange)
}
default:
- // empty op
- return nil
+ // empty op / nil entry
+ return rpctypes.ErrGRPCKeyNotFound
}
return nil
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/lease.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/lease.go
index be6e20b97fb6..91618d115fcb 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/lease.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/lease.go
@@ -18,6 +18,7 @@ import (
"io"
"github.com/coreos/etcd/etcdserver"
+ "github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
"github.com/coreos/etcd/lease"
"golang.org/x/net/context"
@@ -53,20 +54,45 @@ func (ls *LeaseServer) LeaseRevoke(ctx context.Context, rr *pb.LeaseRevokeReques
func (ls *LeaseServer) LeaseTimeToLive(ctx context.Context, rr *pb.LeaseTimeToLiveRequest) (*pb.LeaseTimeToLiveResponse, error) {
resp, err := ls.le.LeaseTimeToLive(ctx, rr)
- if err != nil {
+ if err != nil && err != lease.ErrLeaseNotFound {
return nil, togRPCError(err)
}
+ if err == lease.ErrLeaseNotFound {
+ resp = &pb.LeaseTimeToLiveResponse{
+ Header: &pb.ResponseHeader{},
+ ID: rr.ID,
+ TTL: -1,
+ }
+ }
ls.hdr.fill(resp.Header)
return resp, nil
}
-func (ls *LeaseServer) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) error {
+func (ls *LeaseServer) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) (err error) {
+ errc := make(chan error, 1)
+ go func() {
+ errc <- ls.leaseKeepAlive(stream)
+ }()
+ select {
+ case err = <-errc:
+ case <-stream.Context().Done():
+ // the only server-side cancellation is noleader for now.
+ err = stream.Context().Err()
+ if err == context.Canceled {
+ err = rpctypes.ErrGRPCNoLeader
+ }
+ }
+ return err
+}
+
+func (ls *LeaseServer) leaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) error {
for {
req, err := stream.Recv()
if err == io.EOF {
return nil
}
if err != nil {
+ plog.Debugf("failed to receive lease keepalive request from gRPC stream (%q)", err.Error())
return err
}
@@ -92,6 +118,7 @@ func (ls *LeaseServer) LeaseKeepAlive(stream pb.Lease_LeaseKeepAliveServer) erro
resp.TTL = ttl
err = stream.Send(resp)
if err != nil {
+ plog.Debugf("failed to send lease keepalive response to gRPC stream (%q)", err.Error())
return err
}
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/maintenance.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/maintenance.go
index af29ab3b71e7..3657d0360829 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/maintenance.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/maintenance.go
@@ -47,6 +47,7 @@ type RaftStatusGetter interface {
}
type AuthGetter interface {
+ AuthInfoFromCtx(ctx context.Context) (*auth.AuthInfo, error)
AuthStore() auth.AuthStore
}
@@ -152,7 +153,7 @@ type authMaintenanceServer struct {
}
func (ams *authMaintenanceServer) isAuthenticated(ctx context.Context) error {
- authInfo, err := ams.ag.AuthStore().AuthInfoFromCtx(ctx)
+ authInfo, err := ams.ag.AuthInfoFromCtx(ctx)
if err != nil {
return err
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/member.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/member.go
index bcd5dac5183f..91a59389b873 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/member.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/member.go
@@ -48,21 +48,24 @@ func (cs *ClusterServer) MemberAdd(ctx context.Context, r *pb.MemberAddRequest)
now := time.Now()
m := membership.NewMember("", urls, "", &now)
- if err = cs.server.AddMember(ctx, *m); err != nil {
- return nil, togRPCError(err)
+ membs, merr := cs.server.AddMember(ctx, *m)
+ if merr != nil {
+ return nil, togRPCError(merr)
}
return &pb.MemberAddResponse{
- Header: cs.header(),
- Member: &pb.Member{ID: uint64(m.ID), PeerURLs: m.PeerURLs},
+ Header: cs.header(),
+ Member: &pb.Member{ID: uint64(m.ID), PeerURLs: m.PeerURLs},
+ Members: membersToProtoMembers(membs),
}, nil
}
func (cs *ClusterServer) MemberRemove(ctx context.Context, r *pb.MemberRemoveRequest) (*pb.MemberRemoveResponse, error) {
- if err := cs.server.RemoveMember(ctx, r.ID); err != nil {
+ membs, err := cs.server.RemoveMember(ctx, r.ID)
+ if err != nil {
return nil, togRPCError(err)
}
- return &pb.MemberRemoveResponse{Header: cs.header()}, nil
+ return &pb.MemberRemoveResponse{Header: cs.header(), Members: membersToProtoMembers(membs)}, nil
}
func (cs *ClusterServer) MemberUpdate(ctx context.Context, r *pb.MemberUpdateRequest) (*pb.MemberUpdateResponse, error) {
@@ -70,15 +73,23 @@ func (cs *ClusterServer) MemberUpdate(ctx context.Context, r *pb.MemberUpdateReq
ID: types.ID(r.ID),
RaftAttributes: membership.RaftAttributes{PeerURLs: r.PeerURLs},
}
- if err := cs.server.UpdateMember(ctx, m); err != nil {
+ membs, err := cs.server.UpdateMember(ctx, m)
+ if err != nil {
return nil, togRPCError(err)
}
- return &pb.MemberUpdateResponse{Header: cs.header()}, nil
+ return &pb.MemberUpdateResponse{Header: cs.header(), Members: membersToProtoMembers(membs)}, nil
}
func (cs *ClusterServer) MemberList(ctx context.Context, r *pb.MemberListRequest) (*pb.MemberListResponse, error) {
- membs := cs.cluster.Members()
+ membs := membersToProtoMembers(cs.cluster.Members())
+ return &pb.MemberListResponse{Header: cs.header(), Members: membs}, nil
+}
+func (cs *ClusterServer) header() *pb.ResponseHeader {
+ return &pb.ResponseHeader{ClusterId: uint64(cs.cluster.ID()), MemberId: uint64(cs.server.ID()), RaftTerm: cs.raftTimer.Term()}
+}
+
+func membersToProtoMembers(membs []*membership.Member) []*pb.Member {
protoMembs := make([]*pb.Member, len(membs))
for i := range membs {
protoMembs[i] = &pb.Member{
@@ -88,10 +99,5 @@ func (cs *ClusterServer) MemberList(ctx context.Context, r *pb.MemberListRequest
ClientURLs: membs[i].ClientURLs,
}
}
-
- return &pb.MemberListResponse{Header: cs.header(), Members: protoMembs}, nil
-}
-
-func (cs *ClusterServer) header() *pb.ResponseHeader {
- return &pb.ResponseHeader{ClusterId: uint64(cs.cluster.ID()), MemberId: uint64(cs.server.ID()), RaftTerm: cs.raftTimer.Term()}
+ return protoMembs
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes/error.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes/error.go
index 5a3cfc0a0dbf..bd17179e9977 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes/error.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes/error.go
@@ -17,16 +17,20 @@ package rpctypes
import (
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
+ "google.golang.org/grpc/status"
)
var (
// server-side error
- ErrGRPCEmptyKey = grpc.Errorf(codes.InvalidArgument, "etcdserver: key is not provided")
- ErrGRPCTooManyOps = grpc.Errorf(codes.InvalidArgument, "etcdserver: too many operations in txn request")
- ErrGRPCDuplicateKey = grpc.Errorf(codes.InvalidArgument, "etcdserver: duplicate key given in txn request")
- ErrGRPCCompacted = grpc.Errorf(codes.OutOfRange, "etcdserver: mvcc: required revision has been compacted")
- ErrGRPCFutureRev = grpc.Errorf(codes.OutOfRange, "etcdserver: mvcc: required revision is a future revision")
- ErrGRPCNoSpace = grpc.Errorf(codes.ResourceExhausted, "etcdserver: mvcc: database space exceeded")
+ ErrGRPCEmptyKey = grpc.Errorf(codes.InvalidArgument, "etcdserver: key is not provided")
+ ErrGRPCKeyNotFound = grpc.Errorf(codes.InvalidArgument, "etcdserver: key not found")
+ ErrGRPCValueProvided = grpc.Errorf(codes.InvalidArgument, "etcdserver: value is provided")
+ ErrGRPCLeaseProvided = grpc.Errorf(codes.InvalidArgument, "etcdserver: lease is provided")
+ ErrGRPCTooManyOps = grpc.Errorf(codes.InvalidArgument, "etcdserver: too many operations in txn request")
+ ErrGRPCDuplicateKey = grpc.Errorf(codes.InvalidArgument, "etcdserver: duplicate key given in txn request")
+ ErrGRPCCompacted = grpc.Errorf(codes.OutOfRange, "etcdserver: mvcc: required revision has been compacted")
+ ErrGRPCFutureRev = grpc.Errorf(codes.OutOfRange, "etcdserver: mvcc: required revision is a future revision")
+ ErrGRPCNoSpace = grpc.Errorf(codes.ResourceExhausted, "etcdserver: mvcc: database space exceeded")
ErrGRPCLeaseNotFound = grpc.Errorf(codes.NotFound, "etcdserver: requested lease not found")
ErrGRPCLeaseExist = grpc.Errorf(codes.FailedPrecondition, "etcdserver: lease already exists")
@@ -53,6 +57,7 @@ var (
ErrGRPCPermissionNotGranted = grpc.Errorf(codes.FailedPrecondition, "etcdserver: permission is not granted to the role")
ErrGRPCAuthNotEnabled = grpc.Errorf(codes.FailedPrecondition, "etcdserver: authentication is not enabled")
ErrGRPCInvalidAuthToken = grpc.Errorf(codes.Unauthenticated, "etcdserver: invalid auth token")
+ ErrGRPCInvalidAuthMgmt = grpc.Errorf(codes.InvalidArgument, "etcdserver: invalid auth management")
ErrGRPCNoLeader = grpc.Errorf(codes.Unavailable, "etcdserver: no leader")
ErrGRPCNotCapable = grpc.Errorf(codes.Unavailable, "etcdserver: not capable")
@@ -63,7 +68,11 @@ var (
ErrGRPCUnhealthy = grpc.Errorf(codes.Unavailable, "etcdserver: unhealthy cluster")
errStringToError = map[string]error{
- grpc.ErrorDesc(ErrGRPCEmptyKey): ErrGRPCEmptyKey,
+ grpc.ErrorDesc(ErrGRPCEmptyKey): ErrGRPCEmptyKey,
+ grpc.ErrorDesc(ErrGRPCKeyNotFound): ErrGRPCKeyNotFound,
+ grpc.ErrorDesc(ErrGRPCValueProvided): ErrGRPCValueProvided,
+ grpc.ErrorDesc(ErrGRPCLeaseProvided): ErrGRPCLeaseProvided,
+
grpc.ErrorDesc(ErrGRPCTooManyOps): ErrGRPCTooManyOps,
grpc.ErrorDesc(ErrGRPCDuplicateKey): ErrGRPCDuplicateKey,
grpc.ErrorDesc(ErrGRPCCompacted): ErrGRPCCompacted,
@@ -95,6 +104,7 @@ var (
grpc.ErrorDesc(ErrGRPCPermissionNotGranted): ErrGRPCPermissionNotGranted,
grpc.ErrorDesc(ErrGRPCAuthNotEnabled): ErrGRPCAuthNotEnabled,
grpc.ErrorDesc(ErrGRPCInvalidAuthToken): ErrGRPCInvalidAuthToken,
+ grpc.ErrorDesc(ErrGRPCInvalidAuthMgmt): ErrGRPCInvalidAuthMgmt,
grpc.ErrorDesc(ErrGRPCNoLeader): ErrGRPCNoLeader,
grpc.ErrorDesc(ErrGRPCNotCapable): ErrGRPCNotCapable,
@@ -106,12 +116,15 @@ var (
}
// client-side error
- ErrEmptyKey = Error(ErrGRPCEmptyKey)
- ErrTooManyOps = Error(ErrGRPCTooManyOps)
- ErrDuplicateKey = Error(ErrGRPCDuplicateKey)
- ErrCompacted = Error(ErrGRPCCompacted)
- ErrFutureRev = Error(ErrGRPCFutureRev)
- ErrNoSpace = Error(ErrGRPCNoSpace)
+ ErrEmptyKey = Error(ErrGRPCEmptyKey)
+ ErrKeyNotFound = Error(ErrGRPCKeyNotFound)
+ ErrValueProvided = Error(ErrGRPCValueProvided)
+ ErrLeaseProvided = Error(ErrGRPCLeaseProvided)
+ ErrTooManyOps = Error(ErrGRPCTooManyOps)
+ ErrDuplicateKey = Error(ErrGRPCDuplicateKey)
+ ErrCompacted = Error(ErrGRPCCompacted)
+ ErrFutureRev = Error(ErrGRPCFutureRev)
+ ErrNoSpace = Error(ErrGRPCNoSpace)
ErrLeaseNotFound = Error(ErrGRPCLeaseNotFound)
ErrLeaseExist = Error(ErrGRPCLeaseExist)
@@ -138,6 +151,7 @@ var (
ErrPermissionNotGranted = Error(ErrGRPCPermissionNotGranted)
ErrAuthNotEnabled = Error(ErrGRPCAuthNotEnabled)
ErrInvalidAuthToken = Error(ErrGRPCInvalidAuthToken)
+ ErrInvalidAuthMgmt = Error(ErrGRPCInvalidAuthMgmt)
ErrNoLeader = Error(ErrGRPCNoLeader)
ErrNotCapable = Error(ErrGRPCNotCapable)
@@ -175,3 +189,10 @@ func Error(err error) error {
}
return EtcdError{code: grpc.Code(verr), desc: grpc.ErrorDesc(verr)}
}
+
+func ErrorDesc(err error) string {
+ if s, ok := status.FromError(err); ok {
+ return s.Message()
+ }
+ return err.Error()
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/util.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/util.go
index 5a057ed040da..8d38d9bd18fe 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/util.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/util.go
@@ -42,8 +42,6 @@ func togRPCError(err error) error {
return rpctypes.ErrGRPCCompacted
case mvcc.ErrFutureRev:
return rpctypes.ErrGRPCFutureRev
- case lease.ErrLeaseNotFound:
- return rpctypes.ErrGRPCLeaseNotFound
case etcdserver.ErrRequestTooLarge:
return rpctypes.ErrGRPCRequestTooLarge
case etcdserver.ErrNoSpace:
@@ -63,6 +61,8 @@ func togRPCError(err error) error {
return rpctypes.ErrGRPCTimeoutDueToConnectionLost
case etcdserver.ErrUnhealthy:
return rpctypes.ErrGRPCUnhealthy
+ case etcdserver.ErrKeyNotFound:
+ return rpctypes.ErrGRPCKeyNotFound
case lease.ErrLeaseNotFound:
return rpctypes.ErrGRPCLeaseNotFound
@@ -95,6 +95,8 @@ func togRPCError(err error) error {
return rpctypes.ErrGRPCAuthNotEnabled
case auth.ErrInvalidAuthToken:
return rpctypes.ErrGRPCInvalidAuthToken
+ case auth.ErrInvalidAuthMgmt:
+ return rpctypes.ErrGRPCInvalidAuthMgmt
default:
return grpc.Errorf(codes.Unknown, err.Error())
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/watch.go b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/watch.go
index f0215531dee1..cd2adf984538 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/watch.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/api/v3rpc/watch.go
@@ -21,6 +21,7 @@ import (
"golang.org/x/net/context"
+ "github.com/coreos/etcd/auth"
"github.com/coreos/etcd/etcdserver"
"github.com/coreos/etcd/etcdserver/api/v3rpc/rpctypes"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
@@ -33,6 +34,8 @@ type watchServer struct {
memberID int64
raftTimer etcdserver.RaftTimer
watchable mvcc.WatchableKV
+
+ ag AuthGetter
}
func NewWatchServer(s *etcdserver.EtcdServer) pb.WatchServer {
@@ -41,6 +44,7 @@ func NewWatchServer(s *etcdserver.EtcdServer) pb.WatchServer {
memberID: int64(s.ID()),
raftTimer: s,
watchable: s.Watchable(),
+ ag: s,
}
}
@@ -101,6 +105,8 @@ type serverWatchStream struct {
// wg waits for the send loop to complete
wg sync.WaitGroup
+
+ ag AuthGetter
}
func (ws *watchServer) Watch(stream pb.Watch_WatchServer) (err error) {
@@ -118,6 +124,8 @@ func (ws *watchServer) Watch(stream pb.Watch_WatchServer) (err error) {
progress: make(map[mvcc.WatchID]bool),
prevKV: make(map[mvcc.WatchID]bool),
closec: make(chan struct{}),
+
+ ag: ws.ag,
}
sws.wg.Add(1)
@@ -133,6 +141,7 @@ func (ws *watchServer) Watch(stream pb.Watch_WatchServer) (err error) {
// deadlock when calling sws.close().
go func() {
if rerr := sws.recvLoop(); rerr != nil {
+ plog.Debugf("failed to receive watch request from gRPC stream (%q)", rerr.Error())
errc <- rerr
}
}()
@@ -150,6 +159,19 @@ func (ws *watchServer) Watch(stream pb.Watch_WatchServer) (err error) {
return err
}
+func (sws *serverWatchStream) isWatchPermitted(wcr *pb.WatchCreateRequest) bool {
+ authInfo, err := sws.ag.AuthInfoFromCtx(sws.gRPCStream.Context())
+ if err != nil {
+ return false
+ }
+ if authInfo == nil {
+ // if auth is enabled, IsRangePermitted() can cause an error
+ authInfo = &auth.AuthInfo{}
+ }
+
+ return sws.ag.AuthStore().IsRangePermitted(authInfo, wcr.Key, wcr.RangeEnd) == nil
+}
+
func (sws *serverWatchStream) recvLoop() error {
for {
req, err := sws.gRPCStream.Recv()
@@ -171,10 +193,32 @@ func (sws *serverWatchStream) recvLoop() error {
// \x00 is the smallest key
creq.Key = []byte{0}
}
+ if len(creq.RangeEnd) == 0 {
+ // force nil since watchstream.Watch distinguishes
+ // between nil and []byte{} for single key / >=
+ creq.RangeEnd = nil
+ }
if len(creq.RangeEnd) == 1 && creq.RangeEnd[0] == 0 {
// support >= key queries
creq.RangeEnd = []byte{}
}
+
+ if !sws.isWatchPermitted(creq) {
+ wr := &pb.WatchResponse{
+ Header: sws.newResponseHeader(sws.watchStream.Rev()),
+ WatchId: -1,
+ Canceled: true,
+ Created: true,
+ CancelReason: rpctypes.ErrGRPCPermissionDenied.Error(),
+ }
+
+ select {
+ case sws.ctrlStream <- wr:
+ case <-sws.closec:
+ }
+ return nil
+ }
+
filters := FiltersFromRequest(creq)
wsrev := sws.watchStream.Rev()
@@ -294,6 +338,7 @@ func (sws *serverWatchStream) sendLoop() {
mvcc.ReportEventReceived(len(evs))
if err := sws.gRPCStream.Send(wr); err != nil {
+ plog.Debugf("failed to send watch response to gRPC stream (%q)", err.Error())
return
}
@@ -310,6 +355,7 @@ func (sws *serverWatchStream) sendLoop() {
}
if err := sws.gRPCStream.Send(c); err != nil {
+ plog.Debugf("failed to send watch control response to gRPC stream (%q)", err.Error())
return
}
@@ -325,6 +371,7 @@ func (sws *serverWatchStream) sendLoop() {
for _, v := range pending[wid] {
mvcc.ReportEventReceived(len(v.Events))
if err := sws.gRPCStream.Send(v); err != nil {
+ plog.Debugf("failed to send pending watch response to gRPC stream (%q)", err.Error())
return
}
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/apply.go b/vendor/github.com/coreos/etcd/etcdserver/apply.go
index e4bf35bc47e4..0be93c52b6f4 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/apply.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/apply.go
@@ -16,7 +16,6 @@ package etcdserver
import (
"bytes"
- "fmt"
"sort"
"time"
@@ -30,11 +29,6 @@ import (
)
const (
- // noTxn is an invalid txn ID.
- // To apply with independent Range, Put, Delete, you can pass noTxn
- // to apply functions instead of a valid txn ID.
- noTxn = -1
-
warnApplyDuration = 100 * time.Millisecond
)
@@ -51,9 +45,9 @@ type applyResult struct {
type applierV3 interface {
Apply(r *pb.InternalRaftRequest) *applyResult
- Put(txnID int64, p *pb.PutRequest) (*pb.PutResponse, error)
- Range(txnID int64, r *pb.RangeRequest) (*pb.RangeResponse, error)
- DeleteRange(txnID int64, dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error)
+ Put(txn mvcc.TxnWrite, p *pb.PutRequest) (*pb.PutResponse, error)
+ Range(txn mvcc.TxnRead, r *pb.RangeRequest) (*pb.RangeResponse, error)
+ DeleteRange(txn mvcc.TxnWrite, dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error)
Txn(rt *pb.TxnRequest) (*pb.TxnResponse, error)
Compaction(compaction *pb.CompactionRequest) (*pb.CompactionResponse, <-chan struct{}, error)
@@ -99,11 +93,11 @@ func (a *applierV3backend) Apply(r *pb.InternalRaftRequest) *applyResult {
// call into a.s.applyV3.F instead of a.F so upper appliers can check individual calls
switch {
case r.Range != nil:
- ar.resp, ar.err = a.s.applyV3.Range(noTxn, r.Range)
+ ar.resp, ar.err = a.s.applyV3.Range(nil, r.Range)
case r.Put != nil:
- ar.resp, ar.err = a.s.applyV3.Put(noTxn, r.Put)
+ ar.resp, ar.err = a.s.applyV3.Put(nil, r.Put)
case r.DeleteRange != nil:
- ar.resp, ar.err = a.s.applyV3.DeleteRange(noTxn, r.DeleteRange)
+ ar.resp, ar.err = a.s.applyV3.DeleteRange(nil, r.DeleteRange)
case r.Txn != nil:
ar.resp, ar.err = a.s.applyV3.Txn(r.Txn)
case r.Compaction != nil:
@@ -152,106 +146,87 @@ func (a *applierV3backend) Apply(r *pb.InternalRaftRequest) *applyResult {
return ar
}
-func (a *applierV3backend) Put(txnID int64, p *pb.PutRequest) (*pb.PutResponse, error) {
- resp := &pb.PutResponse{}
+func (a *applierV3backend) Put(txn mvcc.TxnWrite, p *pb.PutRequest) (resp *pb.PutResponse, err error) {
+ resp = &pb.PutResponse{}
resp.Header = &pb.ResponseHeader{}
- var (
- rev int64
- err error
- )
- var rr *mvcc.RangeResult
- if p.PrevKv {
- if txnID != noTxn {
- rr, err = a.s.KV().TxnRange(txnID, p.Key, nil, mvcc.RangeOptions{})
- if err != nil {
- return nil, err
- }
- } else {
- rr, err = a.s.KV().Range(p.Key, nil, mvcc.RangeOptions{})
- if err != nil {
- return nil, err
+ val, leaseID := p.Value, lease.LeaseID(p.Lease)
+ if txn == nil {
+ if leaseID != lease.NoLease {
+ if l := a.s.lessor.Lookup(leaseID); l == nil {
+ return nil, lease.ErrLeaseNotFound
}
}
+ txn = a.s.KV().Write()
+ defer txn.End()
}
- if txnID != noTxn {
- rev, err = a.s.KV().TxnPut(txnID, p.Key, p.Value, lease.LeaseID(p.Lease))
+ var rr *mvcc.RangeResult
+ if p.IgnoreValue || p.IgnoreLease || p.PrevKv {
+ rr, err = txn.Range(p.Key, nil, mvcc.RangeOptions{})
if err != nil {
return nil, err
}
- } else {
- leaseID := lease.LeaseID(p.Lease)
- if leaseID != lease.NoLease {
- if l := a.s.lessor.Lookup(leaseID); l == nil {
- return nil, lease.ErrLeaseNotFound
- }
+ }
+ if p.IgnoreValue || p.IgnoreLease {
+ if rr == nil || len(rr.KVs) == 0 {
+ // ignore_{lease,value} flag expects previous key-value pair
+ return nil, ErrKeyNotFound
}
- rev = a.s.KV().Put(p.Key, p.Value, leaseID)
}
- resp.Header.Revision = rev
- if rr != nil && len(rr.KVs) != 0 {
- resp.PrevKv = &rr.KVs[0]
+ if p.IgnoreValue {
+ val = rr.KVs[0].Value
+ }
+ if p.IgnoreLease {
+ leaseID = lease.LeaseID(rr.KVs[0].Lease)
+ }
+ if p.PrevKv {
+ if rr != nil && len(rr.KVs) != 0 {
+ resp.PrevKv = &rr.KVs[0]
+ }
}
+
+ resp.Header.Revision = txn.Put(p.Key, val, leaseID)
return resp, nil
}
-func (a *applierV3backend) DeleteRange(txnID int64, dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
+func (a *applierV3backend) DeleteRange(txn mvcc.TxnWrite, dr *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
resp := &pb.DeleteRangeResponse{}
resp.Header = &pb.ResponseHeader{}
- var (
- n int64
- rev int64
- err error
- )
+ if txn == nil {
+ txn = a.s.kv.Write()
+ defer txn.End()
+ }
if isGteRange(dr.RangeEnd) {
dr.RangeEnd = []byte{}
}
- var rr *mvcc.RangeResult
if dr.PrevKv {
- if txnID != noTxn {
- rr, err = a.s.KV().TxnRange(txnID, dr.Key, dr.RangeEnd, mvcc.RangeOptions{})
- if err != nil {
- return nil, err
- }
- } else {
- rr, err = a.s.KV().Range(dr.Key, dr.RangeEnd, mvcc.RangeOptions{})
- if err != nil {
- return nil, err
- }
- }
- }
-
- if txnID != noTxn {
- n, rev, err = a.s.KV().TxnDeleteRange(txnID, dr.Key, dr.RangeEnd)
+ rr, err := txn.Range(dr.Key, dr.RangeEnd, mvcc.RangeOptions{})
if err != nil {
return nil, err
}
- } else {
- n, rev = a.s.KV().DeleteRange(dr.Key, dr.RangeEnd)
- }
-
- resp.Deleted = n
- if rr != nil {
- for i := range rr.KVs {
- resp.PrevKvs = append(resp.PrevKvs, &rr.KVs[i])
+ if rr != nil {
+ for i := range rr.KVs {
+ resp.PrevKvs = append(resp.PrevKvs, &rr.KVs[i])
+ }
}
}
- resp.Header.Revision = rev
+
+ resp.Deleted, resp.Header.Revision = txn.DeleteRange(dr.Key, dr.RangeEnd)
return resp, nil
}
-func (a *applierV3backend) Range(txnID int64, r *pb.RangeRequest) (*pb.RangeResponse, error) {
+func (a *applierV3backend) Range(txn mvcc.TxnRead, r *pb.RangeRequest) (*pb.RangeResponse, error) {
resp := &pb.RangeResponse{}
resp.Header = &pb.ResponseHeader{}
- var (
- rr *mvcc.RangeResult
- err error
- )
+ if txn == nil {
+ txn = a.s.kv.Read()
+ defer txn.End()
+ }
if isGteRange(r.RangeEnd) {
r.RangeEnd = []byte{}
@@ -275,16 +250,9 @@ func (a *applierV3backend) Range(txnID int64, r *pb.RangeRequest) (*pb.RangeResp
Count: r.CountOnly,
}
- if txnID != noTxn {
- rr, err = a.s.KV().TxnRange(txnID, r.Key, r.RangeEnd, ro)
- if err != nil {
- return nil, err
- }
- } else {
- rr, err = a.s.KV().Range(r.Key, r.RangeEnd, ro)
- if err != nil {
- return nil, err
- }
+ rr, err := txn.Range(r.Key, r.RangeEnd, ro)
+ if err != nil {
+ return nil, err
}
if r.MaxModRevision != 0 {
@@ -350,61 +318,64 @@ func (a *applierV3backend) Range(txnID int64, r *pb.RangeRequest) (*pb.RangeResp
}
func (a *applierV3backend) Txn(rt *pb.TxnRequest) (*pb.TxnResponse, error) {
- ok := true
- for _, c := range rt.Compare {
- if _, ok = a.applyCompare(c); !ok {
- break
- }
- }
+ isWrite := !isTxnReadonly(rt)
+ txn := mvcc.NewReadOnlyTxnWrite(a.s.KV().Read())
- var reqs []*pb.RequestOp
- if ok {
- reqs = rt.Success
- } else {
- reqs = rt.Failure
- }
-
- if err := a.checkRequestLeases(reqs); err != nil {
- return nil, err
+ reqs, ok := a.compareToOps(txn, rt)
+ if isWrite {
+ if err := a.checkRequestPut(txn, reqs); err != nil {
+ txn.End()
+ return nil, err
+ }
}
- if err := a.checkRequestRange(reqs); err != nil {
+ if err := checkRequestRange(txn, reqs); err != nil {
+ txn.End()
return nil, err
}
- // When executing the operations of txn, we need to hold the txn lock.
- // So the reader will not see any intermediate results.
- txnID := a.s.KV().TxnBegin()
-
resps := make([]*pb.ResponseOp, len(reqs))
- for i := range reqs {
- resps[i] = a.applyUnion(txnID, reqs[i])
+ txnResp := &pb.TxnResponse{
+ Responses: resps,
+ Succeeded: ok,
+ Header: &pb.ResponseHeader{},
}
- err := a.s.KV().TxnEnd(txnID)
- if err != nil {
- panic(fmt.Sprint("unexpected error when closing txn", txnID))
+ // When executing mutable txn ops, etcd must hold the txn lock so
+ // readers do not see any intermediate results. Since writes are
+ // serialized on the raft loop, the revision in the read view will
+ // be the revision of the write txn.
+ if isWrite {
+ txn.End()
+ txn = a.s.KV().Write()
}
+ for i := range reqs {
+ resps[i] = a.applyUnion(txn, reqs[i])
+ }
+ rev := txn.Rev()
+ if len(txn.Changes()) != 0 {
+ rev++
+ }
+ txn.End()
- txnResp := &pb.TxnResponse{}
- txnResp.Header = &pb.ResponseHeader{}
- txnResp.Header.Revision = a.s.KV().Rev()
- txnResp.Responses = resps
- txnResp.Succeeded = ok
+ txnResp.Header.Revision = rev
return txnResp, nil
}
-// applyCompare applies the compare request.
-// It returns the revision at which the comparison happens. If the comparison
-// succeeds, the it returns true. Otherwise it returns false.
-func (a *applierV3backend) applyCompare(c *pb.Compare) (int64, bool) {
- rr, err := a.s.KV().Range(c.Key, nil, mvcc.RangeOptions{})
- rev := rr.Rev
+func (a *applierV3backend) compareToOps(rv mvcc.ReadView, rt *pb.TxnRequest) ([]*pb.RequestOp, bool) {
+ for _, c := range rt.Compare {
+ if !applyCompare(rv, c) {
+ return rt.Failure, false
+ }
+ }
+ return rt.Success, true
+}
+// applyCompare applies the compare request.
+// If the comparison succeeds, it returns true. Otherwise, returns false.
+func applyCompare(rv mvcc.ReadView, c *pb.Compare) bool {
+ rr, err := rv.Range(c.Key, nil, mvcc.RangeOptions{})
if err != nil {
- if err == mvcc.ErrTxnIDMismatch {
- panic("unexpected txn ID mismatch error")
- }
- return rev, false
+ return false
}
var ckv mvccpb.KeyValue
if len(rr.KVs) != 0 {
@@ -416,7 +387,7 @@ func (a *applierV3backend) applyCompare(c *pb.Compare) (int64, bool) {
// We can treat non-existence as the empty set explicitly, such that
// even a key with a value of length 0 bytes is still a real key
// that was written that way
- return rev, false
+ return false
}
}
@@ -448,30 +419,22 @@ func (a *applierV3backend) applyCompare(c *pb.Compare) (int64, bool) {
switch c.Result {
case pb.Compare_EQUAL:
- if result != 0 {
- return rev, false
- }
+ return result == 0
case pb.Compare_NOT_EQUAL:
- if result == 0 {
- return rev, false
- }
+ return result != 0
case pb.Compare_GREATER:
- if result != 1 {
- return rev, false
- }
+ return result > 0
case pb.Compare_LESS:
- if result != -1 {
- return rev, false
- }
+ return result < 0
}
- return rev, true
+ return true
}
-func (a *applierV3backend) applyUnion(txnID int64, union *pb.RequestOp) *pb.ResponseOp {
+func (a *applierV3backend) applyUnion(txn mvcc.TxnWrite, union *pb.RequestOp) *pb.ResponseOp {
switch tv := union.Request.(type) {
case *pb.RequestOp_RequestRange:
if tv.RequestRange != nil {
- resp, err := a.Range(txnID, tv.RequestRange)
+ resp, err := a.Range(txn, tv.RequestRange)
if err != nil {
plog.Panicf("unexpected error during txn: %v", err)
}
@@ -479,7 +442,7 @@ func (a *applierV3backend) applyUnion(txnID int64, union *pb.RequestOp) *pb.Resp
}
case *pb.RequestOp_RequestPut:
if tv.RequestPut != nil {
- resp, err := a.Put(txnID, tv.RequestPut)
+ resp, err := a.Put(txn, tv.RequestPut)
if err != nil {
plog.Panicf("unexpected error during txn: %v", err)
}
@@ -487,7 +450,7 @@ func (a *applierV3backend) applyUnion(txnID int64, union *pb.RequestOp) *pb.Resp
}
case *pb.RequestOp_RequestDeleteRange:
if tv.RequestDeleteRange != nil {
- resp, err := a.DeleteRange(txnID, tv.RequestDeleteRange)
+ resp, err := a.DeleteRange(txn, tv.RequestDeleteRange)
if err != nil {
plog.Panicf("unexpected error during txn: %v", err)
}
@@ -588,7 +551,7 @@ type applierV3Capped struct {
// with Puts so that the number of keys in the store is capped.
func newApplierV3Capped(base applierV3) applierV3 { return &applierV3Capped{applierV3: base} }
-func (a *applierV3Capped) Put(txnID int64, p *pb.PutRequest) (*pb.PutResponse, error) {
+func (a *applierV3Capped) Put(txn mvcc.TxnWrite, p *pb.PutRequest) (*pb.PutResponse, error) {
return nil, ErrNoSpace
}
@@ -617,7 +580,7 @@ func (a *applierV3backend) AuthDisable() (*pb.AuthDisableResponse, error) {
}
func (a *applierV3backend) Authenticate(r *pb.InternalAuthenticateRequest) (*pb.AuthenticateResponse, error) {
- ctx := context.WithValue(context.WithValue(context.Background(), "index", a.s.consistIndex.ConsistentIndex()), "simpleToken", r.SimpleToken)
+ ctx := context.WithValue(context.WithValue(a.s.ctx, "index", a.s.consistIndex.ConsistentIndex()), "simpleToken", r.SimpleToken)
resp, err := a.s.AuthStore().Authenticate(ctx, r.Name, r.Password)
if resp != nil {
resp.Header = newHeader(a.s)
@@ -738,9 +701,9 @@ func newQuotaApplierV3(s *EtcdServer, app applierV3) applierV3 {
return "aApplierV3{app, NewBackendQuota(s)}
}
-func (a *quotaApplierV3) Put(txnID int64, p *pb.PutRequest) (*pb.PutResponse, error) {
+func (a *quotaApplierV3) Put(txn mvcc.TxnWrite, p *pb.PutRequest) (*pb.PutResponse, error) {
ok := a.q.Available(p)
- resp, err := a.applierV3.Put(txnID, p)
+ resp, err := a.applierV3.Put(txn, p)
if err == nil && !ok {
err = ErrNoSpace
}
@@ -804,14 +767,27 @@ func (s *kvSortByValue) Less(i, j int) bool {
return bytes.Compare(s.kvs[i].Value, s.kvs[j].Value) < 0
}
-func (a *applierV3backend) checkRequestLeases(reqs []*pb.RequestOp) error {
+func (a *applierV3backend) checkRequestPut(rv mvcc.ReadView, reqs []*pb.RequestOp) error {
for _, requ := range reqs {
tv, ok := requ.Request.(*pb.RequestOp_RequestPut)
if !ok {
continue
}
preq := tv.RequestPut
- if preq == nil || lease.LeaseID(preq.Lease) == lease.NoLease {
+ if preq == nil {
+ continue
+ }
+ if preq.IgnoreValue || preq.IgnoreLease {
+ // expects previous key-value, error if not exist
+ rr, err := rv.Range(preq.Key, nil, mvcc.RangeOptions{})
+ if err != nil {
+ return err
+ }
+ if rr == nil || len(rr.KVs) == 0 {
+ return ErrKeyNotFound
+ }
+ }
+ if lease.LeaseID(preq.Lease) == lease.NoLease {
continue
}
if l := a.s.lessor.Lookup(lease.LeaseID(preq.Lease)); l == nil {
@@ -821,7 +797,7 @@ func (a *applierV3backend) checkRequestLeases(reqs []*pb.RequestOp) error {
return nil
}
-func (a *applierV3backend) checkRequestRange(reqs []*pb.RequestOp) error {
+func checkRequestRange(rv mvcc.ReadView, reqs []*pb.RequestOp) error {
for _, requ := range reqs {
tv, ok := requ.Request.(*pb.RequestOp_RequestRange)
if !ok {
@@ -832,10 +808,10 @@ func (a *applierV3backend) checkRequestRange(reqs []*pb.RequestOp) error {
continue
}
- if greq.Revision > a.s.KV().Rev() {
+ if greq.Revision > rv.Rev() {
return mvcc.ErrFutureRev
}
- if greq.Revision < a.s.KV().FirstRev() {
+ if greq.Revision < rv.FirstRev() {
return mvcc.ErrCompacted
}
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/apply_auth.go b/vendor/github.com/coreos/etcd/etcdserver/apply_auth.go
index 4868e855ca12..7da4ae45df5d 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/apply_auth.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/apply_auth.go
@@ -19,6 +19,7 @@ import (
"github.com/coreos/etcd/auth"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+ "github.com/coreos/etcd/mvcc"
)
type authApplierV3 struct {
@@ -58,7 +59,7 @@ func (aa *authApplierV3) Apply(r *pb.InternalRaftRequest) *applyResult {
return ret
}
-func (aa *authApplierV3) Put(txnID int64, r *pb.PutRequest) (*pb.PutResponse, error) {
+func (aa *authApplierV3) Put(txn mvcc.TxnWrite, r *pb.PutRequest) (*pb.PutResponse, error) {
if err := aa.as.IsPutPermitted(&aa.authInfo, r.Key); err != nil {
return nil, err
}
@@ -68,17 +69,17 @@ func (aa *authApplierV3) Put(txnID int64, r *pb.PutRequest) (*pb.PutResponse, er
return nil, err
}
}
- return aa.applierV3.Put(txnID, r)
+ return aa.applierV3.Put(txn, r)
}
-func (aa *authApplierV3) Range(txnID int64, r *pb.RangeRequest) (*pb.RangeResponse, error) {
+func (aa *authApplierV3) Range(txn mvcc.TxnRead, r *pb.RangeRequest) (*pb.RangeResponse, error) {
if err := aa.as.IsRangePermitted(&aa.authInfo, r.Key, r.RangeEnd); err != nil {
return nil, err
}
- return aa.applierV3.Range(txnID, r)
+ return aa.applierV3.Range(txn, r)
}
-func (aa *authApplierV3) DeleteRange(txnID int64, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
+func (aa *authApplierV3) DeleteRange(txn mvcc.TxnWrite, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
if err := aa.as.IsDeleteRangePermitted(&aa.authInfo, r.Key, r.RangeEnd); err != nil {
return nil, err
}
@@ -89,7 +90,7 @@ func (aa *authApplierV3) DeleteRange(txnID int64, r *pb.DeleteRangeRequest) (*pb
}
}
- return aa.applierV3.DeleteRange(txnID, r)
+ return aa.applierV3.DeleteRange(txn, r)
}
func checkTxnReqsPermission(as auth.AuthStore, ai *auth.AuthInfo, reqs []*pb.RequestOp) error {
diff --git a/vendor/github.com/coreos/etcd/etcdserver/backend.go b/vendor/github.com/coreos/etcd/etcdserver/backend.go
new file mode 100644
index 000000000000..c5e2dabf3e71
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/backend.go
@@ -0,0 +1,81 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 etcdserver
+
+import (
+ "fmt"
+ "os"
+ "time"
+
+ "github.com/coreos/etcd/lease"
+ "github.com/coreos/etcd/mvcc"
+ "github.com/coreos/etcd/mvcc/backend"
+ "github.com/coreos/etcd/raft/raftpb"
+ "github.com/coreos/etcd/snap"
+)
+
+func newBackend(cfg *ServerConfig) backend.Backend {
+ bcfg := backend.DefaultBackendConfig()
+ bcfg.Path = cfg.backendPath()
+ if cfg.QuotaBackendBytes > 0 && cfg.QuotaBackendBytes != DefaultQuotaBytes {
+ // permit 10% excess over quota for disarm
+ bcfg.MmapSize = uint64(cfg.QuotaBackendBytes + cfg.QuotaBackendBytes/10)
+ }
+ return backend.New(bcfg)
+}
+
+// openSnapshotBackend renames a snapshot db to the current etcd db and opens it.
+func openSnapshotBackend(cfg *ServerConfig, ss *snap.Snapshotter, snapshot raftpb.Snapshot) (backend.Backend, error) {
+ snapPath, err := ss.DBFilePath(snapshot.Metadata.Index)
+ if err != nil {
+ return nil, fmt.Errorf("database snapshot file path error: %v", err)
+ }
+ if err := os.Rename(snapPath, cfg.backendPath()); err != nil {
+ return nil, fmt.Errorf("rename snapshot file error: %v", err)
+ }
+ return openBackend(cfg), nil
+}
+
+// openBackend returns a backend using the current etcd db.
+func openBackend(cfg *ServerConfig) backend.Backend {
+ fn := cfg.backendPath()
+ beOpened := make(chan backend.Backend)
+ go func() {
+ beOpened <- newBackend(cfg)
+ }()
+ select {
+ case be := <-beOpened:
+ return be
+ case <-time.After(time.Second):
+ plog.Warningf("another etcd process is using %q and holds the file lock.", fn)
+ plog.Warningf("waiting for it to exit before starting...")
+ }
+ return <-beOpened
+}
+
+// recoverBackendSnapshot recovers the DB from a snapshot in case etcd crashes
+// before updating the backend db after persisting raft snapshot to disk,
+// violating the invariant snapshot.Metadata.Index < db.consistentIndex. In this
+// case, replace the db with the snapshot db sent by the leader.
+func recoverSnapshotBackend(cfg *ServerConfig, oldbe backend.Backend, snapshot raftpb.Snapshot) (backend.Backend, error) {
+ var cIndex consistentIndex
+ kv := mvcc.New(oldbe, &lease.FakeLessor{}, &cIndex)
+ defer kv.Close()
+ if snapshot.Metadata.Index <= kv.ConsistentIndex() {
+ return oldbe, nil
+ }
+ oldbe.Close()
+ return openSnapshotBackend(cfg, snap.New(cfg.SnapDir()), snapshot)
+}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/cluster_util.go b/vendor/github.com/coreos/etcd/etcdserver/cluster_util.go
index fa84ffae6307..f44862a46380 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/cluster_util.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/cluster_util.go
@@ -23,7 +23,6 @@ import (
"time"
"github.com/coreos/etcd/etcdserver/membership"
- "github.com/coreos/etcd/pkg/httputil"
"github.com/coreos/etcd/pkg/types"
"github.com/coreos/etcd/version"
"github.com/coreos/go-semver/semver"
@@ -241,15 +240,6 @@ func getVersion(m *membership.Member, rt http.RoundTripper) (*version.Versions,
plog.Warningf("failed to reach the peerURL(%s) of member %s (%v)", u, m.ID, err)
continue
}
- // etcd 2.0 does not have version endpoint on peer url.
- if resp.StatusCode == http.StatusNotFound {
- httputil.GracefulClose(resp)
- return &version.Versions{
- Server: "2.0.0",
- Cluster: "2.0.0",
- }, nil
- }
-
var b []byte
b, err = ioutil.ReadAll(resp.Body)
resp.Body.Close()
diff --git a/vendor/github.com/coreos/etcd/etcdserver/config.go b/vendor/github.com/coreos/etcd/etcdserver/config.go
index 9bcac0f076b9..ae8a4d08e355 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/config.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/config.go
@@ -55,10 +55,17 @@ type ServerConfig struct {
AutoCompactionRetention int
QuotaBackendBytes int64
+ // MaxRequestBytes is the maximum request size to send over raft.
+ MaxRequestBytes uint
+
StrictReconfigCheck bool
// ClientCertAuthEnabled is true when cert has been signed by the client CA.
ClientCertAuthEnabled bool
+
+ AuthToken string
+
+ Debug bool
}
// VerifyBootstrap sanity-checks the initial config for bootstrap case
@@ -198,3 +205,5 @@ func (c *ServerConfig) bootstrapTimeout() time.Duration {
}
return time.Second
}
+
+func (c *ServerConfig) backendPath() string { return filepath.Join(c.SnapDir(), "db") }
diff --git a/vendor/github.com/coreos/etcd/etcdserver/errors.go b/vendor/github.com/coreos/etcd/etcdserver/errors.go
index 5edc155624bc..ed749dbe8d88 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/errors.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/errors.go
@@ -33,6 +33,7 @@ var (
ErrNoSpace = errors.New("etcdserver: no space")
ErrTooManyRequests = errors.New("etcdserver: too many requests")
ErrUnhealthy = errors.New("etcdserver: unhealthy cluster")
+ ErrKeyNotFound = errors.New("etcdserver: key not found")
)
type DiscoveryError struct {
diff --git a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/etcdserver.pb.go b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/etcdserver.pb.go
index f34bedf3ed3a..aabf90061f6e 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/etcdserver.pb.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/etcdserver.pb.go
@@ -1018,7 +1018,7 @@ func init() { proto.RegisterFile("etcdserver.proto", fileDescriptorEtcdserver) }
var fileDescriptorEtcdserver = []byte{
// 380 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x5c, 0xd2, 0xdd, 0x6e, 0xda, 0x30,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x5c, 0xd2, 0xdd, 0x6e, 0xda, 0x30,
0x14, 0x07, 0x70, 0x0c, 0xe1, 0xcb, 0x63, 0x1b, 0xb3, 0xd0, 0x74, 0x84, 0xa6, 0x2c, 0x42, 0xbb,
0xc8, 0xd5, 0xf6, 0x0e, 0x2c, 0x5c, 0x44, 0x2a, 0x15, 0x0d, 0x15, 0xbd, 0x76, 0xc9, 0x29, 0x58,
0x02, 0x4c, 0x1d, 0x07, 0xf1, 0x06, 0x7d, 0x85, 0x3e, 0x12, 0x97, 0x7d, 0x82, 0xaa, 0xa5, 0x2f,
diff --git a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.gw.go b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/gw/rpc.pb.gw.go
similarity index 69%
rename from vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.gw.go
rename to vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/gw/rpc.pb.gw.go
index 473ad582ef8e..02a23b78c107 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.gw.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/gw/rpc.pb.gw.go
@@ -1,15 +1,15 @@
-// Code generated by protoc-gen-grpc-gateway
+// Code generated by protoc-gen-grpc-gateway. DO NOT EDIT.
// source: etcdserver/etcdserverpb/rpc.proto
-// DO NOT EDIT!
/*
Package etcdserverpb is a reverse proxy.
It translates gRPC into RESTful JSON APIs.
*/
-package etcdserverpb
+package gw
import (
+ "github.com/coreos/etcd/etcdserver/etcdserverpb"
"io"
"net/http"
@@ -20,19 +20,21 @@ import (
"google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/status"
)
var _ codes.Code
var _ io.Reader
+var _ status.Status
var _ = runtime.String
var _ = utilities.NewDoubleArray
-func request_KV_Range_0(ctx context.Context, marshaler runtime.Marshaler, client KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq RangeRequest
+func request_KV_Range_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.RangeRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Range(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -40,12 +42,12 @@ func request_KV_Range_0(ctx context.Context, marshaler runtime.Marshaler, client
}
-func request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, client KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq PutRequest
+func request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.PutRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Put(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -53,12 +55,12 @@ func request_KV_Put_0(ctx context.Context, marshaler runtime.Marshaler, client K
}
-func request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marshaler, client KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DeleteRangeRequest
+func request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.DeleteRangeRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.DeleteRange(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -66,12 +68,12 @@ func request_KV_DeleteRange_0(ctx context.Context, marshaler runtime.Marshaler,
}
-func request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, client KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq TxnRequest
+func request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.TxnRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Txn(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -79,12 +81,12 @@ func request_KV_Txn_0(ctx context.Context, marshaler runtime.Marshaler, client K
}
-func request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler, client KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq CompactionRequest
+func request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.KVClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.CompactionRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Compact(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -92,7 +94,7 @@ func request_KV_Compact_0(ctx context.Context, marshaler runtime.Marshaler, clie
}
-func request_Watch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, client WatchClient, req *http.Request, pathParams map[string]string) (Watch_WatchClient, runtime.ServerMetadata, error) {
+func request_Watch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.WatchClient, req *http.Request, pathParams map[string]string) (etcdserverpb.Watch_WatchClient, runtime.ServerMetadata, error) {
var metadata runtime.ServerMetadata
stream, err := client.Watch(ctx)
if err != nil {
@@ -101,7 +103,7 @@ func request_Watch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, cli
}
dec := marshaler.NewDecoder(req.Body)
handleSend := func() error {
- var protoReq WatchRequest
+ var protoReq etcdserverpb.WatchRequest
err = dec.Decode(&protoReq)
if err == io.EOF {
return err
@@ -144,12 +146,12 @@ func request_Watch_Watch_0(ctx context.Context, marshaler runtime.Marshaler, cli
return stream, metadata, nil
}
-func request_Lease_LeaseGrant_0(ctx context.Context, marshaler runtime.Marshaler, client LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq LeaseGrantRequest
+func request_Lease_LeaseGrant_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.LeaseGrantRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.LeaseGrant(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -157,12 +159,12 @@ func request_Lease_LeaseGrant_0(ctx context.Context, marshaler runtime.Marshaler
}
-func request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Marshaler, client LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq LeaseRevokeRequest
+func request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.LeaseRevokeRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.LeaseRevoke(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -170,7 +172,7 @@ func request_Lease_LeaseRevoke_0(ctx context.Context, marshaler runtime.Marshale
}
-func request_Lease_LeaseKeepAlive_0(ctx context.Context, marshaler runtime.Marshaler, client LeaseClient, req *http.Request, pathParams map[string]string) (Lease_LeaseKeepAliveClient, runtime.ServerMetadata, error) {
+func request_Lease_LeaseKeepAlive_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (etcdserverpb.Lease_LeaseKeepAliveClient, runtime.ServerMetadata, error) {
var metadata runtime.ServerMetadata
stream, err := client.LeaseKeepAlive(ctx)
if err != nil {
@@ -179,7 +181,7 @@ func request_Lease_LeaseKeepAlive_0(ctx context.Context, marshaler runtime.Marsh
}
dec := marshaler.NewDecoder(req.Body)
handleSend := func() error {
- var protoReq LeaseKeepAliveRequest
+ var protoReq etcdserverpb.LeaseKeepAliveRequest
err = dec.Decode(&protoReq)
if err == io.EOF {
return err
@@ -222,12 +224,12 @@ func request_Lease_LeaseKeepAlive_0(ctx context.Context, marshaler runtime.Marsh
return stream, metadata, nil
}
-func request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtime.Marshaler, client LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq LeaseTimeToLiveRequest
+func request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.LeaseClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.LeaseTimeToLiveRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.LeaseTimeToLive(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -235,12 +237,12 @@ func request_Lease_LeaseTimeToLive_0(ctx context.Context, marshaler runtime.Mars
}
-func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq MemberAddRequest
+func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.MemberAddRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.MemberAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -248,12 +250,12 @@ func request_Cluster_MemberAdd_0(ctx context.Context, marshaler runtime.Marshale
}
-func request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq MemberRemoveRequest
+func request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.MemberRemoveRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.MemberRemove(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -261,12 +263,12 @@ func request_Cluster_MemberRemove_0(ctx context.Context, marshaler runtime.Marsh
}
-func request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq MemberUpdateRequest
+func request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.MemberUpdateRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.MemberUpdate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -274,12 +276,12 @@ func request_Cluster_MemberUpdate_0(ctx context.Context, marshaler runtime.Marsh
}
-func request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.Marshaler, client ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq MemberListRequest
+func request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.ClusterClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.MemberListRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.MemberList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -287,12 +289,12 @@ func request_Cluster_MemberList_0(ctx context.Context, marshaler runtime.Marshal
}
-func request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Marshaler, client MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AlarmRequest
+func request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AlarmRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Alarm(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -300,12 +302,12 @@ func request_Maintenance_Alarm_0(ctx context.Context, marshaler runtime.Marshale
}
-func request_Maintenance_Status_0(ctx context.Context, marshaler runtime.Marshaler, client MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq StatusRequest
+func request_Maintenance_Status_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.StatusRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Status(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -313,12 +315,12 @@ func request_Maintenance_Status_0(ctx context.Context, marshaler runtime.Marshal
}
-func request_Maintenance_Defragment_0(ctx context.Context, marshaler runtime.Marshaler, client MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq DefragmentRequest
+func request_Maintenance_Defragment_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.DefragmentRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Defragment(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -326,12 +328,12 @@ func request_Maintenance_Defragment_0(ctx context.Context, marshaler runtime.Mar
}
-func request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Marshaler, client MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq HashRequest
+func request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.HashRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Hash(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -339,12 +341,12 @@ func request_Maintenance_Hash_0(ctx context.Context, marshaler runtime.Marshaler
}
-func request_Maintenance_Snapshot_0(ctx context.Context, marshaler runtime.Marshaler, client MaintenanceClient, req *http.Request, pathParams map[string]string) (Maintenance_SnapshotClient, runtime.ServerMetadata, error) {
- var protoReq SnapshotRequest
+func request_Maintenance_Snapshot_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.MaintenanceClient, req *http.Request, pathParams map[string]string) (etcdserverpb.Maintenance_SnapshotClient, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.SnapshotRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
stream, err := client.Snapshot(ctx, &protoReq)
@@ -360,12 +362,12 @@ func request_Maintenance_Snapshot_0(ctx context.Context, marshaler runtime.Marsh
}
-func request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthEnableRequest
+func request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthEnableRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.AuthEnable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -373,12 +375,12 @@ func request_Auth_AuthEnable_0(ctx context.Context, marshaler runtime.Marshaler,
}
-func request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthDisableRequest
+func request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthDisableRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.AuthDisable(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -386,12 +388,12 @@ func request_Auth_AuthDisable_0(ctx context.Context, marshaler runtime.Marshaler
}
-func request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthenticateRequest
+func request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthenticateRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.Authenticate(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -399,12 +401,12 @@ func request_Auth_Authenticate_0(ctx context.Context, marshaler runtime.Marshale
}
-func request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthUserAddRequest
+func request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthUserAddRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UserAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -412,12 +414,12 @@ func request_Auth_UserAdd_0(ctx context.Context, marshaler runtime.Marshaler, cl
}
-func request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthUserGetRequest
+func request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthUserGetRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UserGet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -425,12 +427,12 @@ func request_Auth_UserGet_0(ctx context.Context, marshaler runtime.Marshaler, cl
}
-func request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthUserListRequest
+func request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthUserListRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UserList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -438,12 +440,12 @@ func request_Auth_UserList_0(ctx context.Context, marshaler runtime.Marshaler, c
}
-func request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthUserDeleteRequest
+func request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthUserDeleteRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UserDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -451,12 +453,12 @@ func request_Auth_UserDelete_0(ctx context.Context, marshaler runtime.Marshaler,
}
-func request_Auth_UserChangePassword_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthUserChangePasswordRequest
+func request_Auth_UserChangePassword_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthUserChangePasswordRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UserChangePassword(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -464,12 +466,12 @@ func request_Auth_UserChangePassword_0(ctx context.Context, marshaler runtime.Ma
}
-func request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthUserGrantRoleRequest
+func request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthUserGrantRoleRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UserGrantRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -477,12 +479,12 @@ func request_Auth_UserGrantRole_0(ctx context.Context, marshaler runtime.Marshal
}
-func request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthUserRevokeRoleRequest
+func request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthUserRevokeRoleRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.UserRevokeRole(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -490,12 +492,12 @@ func request_Auth_UserRevokeRole_0(ctx context.Context, marshaler runtime.Marsha
}
-func request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthRoleAddRequest
+func request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthRoleAddRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.RoleAdd(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -503,12 +505,12 @@ func request_Auth_RoleAdd_0(ctx context.Context, marshaler runtime.Marshaler, cl
}
-func request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthRoleGetRequest
+func request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthRoleGetRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.RoleGet(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -516,12 +518,12 @@ func request_Auth_RoleGet_0(ctx context.Context, marshaler runtime.Marshaler, cl
}
-func request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthRoleListRequest
+func request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthRoleListRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.RoleList(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -529,12 +531,12 @@ func request_Auth_RoleList_0(ctx context.Context, marshaler runtime.Marshaler, c
}
-func request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthRoleDeleteRequest
+func request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthRoleDeleteRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.RoleDelete(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -542,12 +544,12 @@ func request_Auth_RoleDelete_0(ctx context.Context, marshaler runtime.Marshaler,
}
-func request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthRoleGrantPermissionRequest
+func request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthRoleGrantPermissionRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.RoleGrantPermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -555,12 +557,12 @@ func request_Auth_RoleGrantPermission_0(ctx context.Context, marshaler runtime.M
}
-func request_Auth_RoleRevokePermission_0(ctx context.Context, marshaler runtime.Marshaler, client AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
- var protoReq AuthRoleRevokePermissionRequest
+func request_Auth_RoleRevokePermission_0(ctx context.Context, marshaler runtime.Marshaler, client etcdserverpb.AuthClient, req *http.Request, pathParams map[string]string) (proto.Message, runtime.ServerMetadata, error) {
+ var protoReq etcdserverpb.AuthRoleRevokePermissionRequest
var metadata runtime.ServerMetadata
if err := marshaler.NewDecoder(req.Body).Decode(&protoReq); err != nil {
- return nil, metadata, grpc.Errorf(codes.InvalidArgument, "%v", err)
+ return nil, metadata, status.Errorf(codes.InvalidArgument, "%v", err)
}
msg, err := client.RoleRevokePermission(ctx, &protoReq, grpc.Header(&metadata.HeaderMD), grpc.Trailer(&metadata.TrailerMD))
@@ -596,7 +598,15 @@ func RegisterKVHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux, e
// RegisterKVHandler registers the http handlers for service KV to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterKVHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- client := NewKVClient(conn)
+ return RegisterKVHandlerClient(ctx, mux, etcdserverpb.NewKVClient(conn))
+}
+
+// RegisterKVHandler registers the http handlers for service KV to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "KVClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "KVClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "KVClient" to call the correct interceptors.
+func RegisterKVHandlerClient(ctx context.Context, mux *runtime.ServeMux, client etcdserverpb.KVClient) error {
mux.Handle("POST", pattern_KV_Range_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(ctx)
@@ -611,18 +621,19 @@ func RegisterKVHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.Cl
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_KV_Range_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_KV_Range_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_KV_Range_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -639,18 +650,19 @@ func RegisterKVHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.Cl
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_KV_Put_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_KV_Put_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_KV_Put_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -667,18 +679,19 @@ func RegisterKVHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.Cl
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_KV_DeleteRange_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_KV_DeleteRange_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_KV_DeleteRange_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -695,18 +708,19 @@ func RegisterKVHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.Cl
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_KV_Txn_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_KV_Txn_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_KV_Txn_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -723,18 +737,19 @@ func RegisterKVHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.Cl
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_KV_Compact_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_KV_Compact_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_KV_Compact_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -793,7 +808,15 @@ func RegisterWatchHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux
// RegisterWatchHandler registers the http handlers for service Watch to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterWatchHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- client := NewWatchClient(conn)
+ return RegisterWatchHandlerClient(ctx, mux, etcdserverpb.NewWatchClient(conn))
+}
+
+// RegisterWatchHandler registers the http handlers for service Watch to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "WatchClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "WatchClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "WatchClient" to call the correct interceptors.
+func RegisterWatchHandlerClient(ctx context.Context, mux *runtime.ServeMux, client etcdserverpb.WatchClient) error {
mux.Handle("POST", pattern_Watch_Watch_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(ctx)
@@ -808,18 +831,19 @@ func RegisterWatchHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Watch_Watch_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Watch_Watch_0(ctx, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+ forward_Watch_Watch_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
})
@@ -862,7 +886,15 @@ func RegisterLeaseHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux
// RegisterLeaseHandler registers the http handlers for service Lease to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterLeaseHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- client := NewLeaseClient(conn)
+ return RegisterLeaseHandlerClient(ctx, mux, etcdserverpb.NewLeaseClient(conn))
+}
+
+// RegisterLeaseHandler registers the http handlers for service Lease to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "LeaseClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "LeaseClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "LeaseClient" to call the correct interceptors.
+func RegisterLeaseHandlerClient(ctx context.Context, mux *runtime.ServeMux, client etcdserverpb.LeaseClient) error {
mux.Handle("POST", pattern_Lease_LeaseGrant_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(ctx)
@@ -877,18 +909,19 @@ func RegisterLeaseHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Lease_LeaseGrant_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Lease_LeaseGrant_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Lease_LeaseGrant_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -905,18 +938,19 @@ func RegisterLeaseHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Lease_LeaseRevoke_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Lease_LeaseRevoke_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Lease_LeaseRevoke_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -933,18 +967,19 @@ func RegisterLeaseHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Lease_LeaseKeepAlive_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Lease_LeaseKeepAlive_0(ctx, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+ forward_Lease_LeaseKeepAlive_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
})
@@ -961,18 +996,19 @@ func RegisterLeaseHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Lease_LeaseTimeToLive_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Lease_LeaseTimeToLive_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Lease_LeaseTimeToLive_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1027,7 +1063,15 @@ func RegisterClusterHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeM
// RegisterClusterHandler registers the http handlers for service Cluster to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterClusterHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- client := NewClusterClient(conn)
+ return RegisterClusterHandlerClient(ctx, mux, etcdserverpb.NewClusterClient(conn))
+}
+
+// RegisterClusterHandler registers the http handlers for service Cluster to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "ClusterClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "ClusterClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "ClusterClient" to call the correct interceptors.
+func RegisterClusterHandlerClient(ctx context.Context, mux *runtime.ServeMux, client etcdserverpb.ClusterClient) error {
mux.Handle("POST", pattern_Cluster_MemberAdd_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(ctx)
@@ -1042,18 +1086,19 @@ func RegisterClusterHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Cluster_MemberAdd_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Cluster_MemberAdd_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Cluster_MemberAdd_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1070,18 +1115,19 @@ func RegisterClusterHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Cluster_MemberRemove_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Cluster_MemberRemove_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Cluster_MemberRemove_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1098,18 +1144,19 @@ func RegisterClusterHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Cluster_MemberUpdate_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Cluster_MemberUpdate_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Cluster_MemberUpdate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1126,18 +1173,19 @@ func RegisterClusterHandler(ctx context.Context, mux *runtime.ServeMux, conn *gr
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Cluster_MemberList_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Cluster_MemberList_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Cluster_MemberList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1192,7 +1240,15 @@ func RegisterMaintenanceHandlerFromEndpoint(ctx context.Context, mux *runtime.Se
// RegisterMaintenanceHandler registers the http handlers for service Maintenance to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterMaintenanceHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- client := NewMaintenanceClient(conn)
+ return RegisterMaintenanceHandlerClient(ctx, mux, etcdserverpb.NewMaintenanceClient(conn))
+}
+
+// RegisterMaintenanceHandler registers the http handlers for service Maintenance to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "MaintenanceClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "MaintenanceClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "MaintenanceClient" to call the correct interceptors.
+func RegisterMaintenanceHandlerClient(ctx context.Context, mux *runtime.ServeMux, client etcdserverpb.MaintenanceClient) error {
mux.Handle("POST", pattern_Maintenance_Alarm_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(ctx)
@@ -1207,18 +1263,19 @@ func RegisterMaintenanceHandler(ctx context.Context, mux *runtime.ServeMux, conn
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Maintenance_Alarm_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Maintenance_Alarm_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Maintenance_Alarm_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1235,18 +1292,19 @@ func RegisterMaintenanceHandler(ctx context.Context, mux *runtime.ServeMux, conn
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Maintenance_Status_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Maintenance_Status_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Maintenance_Status_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1263,18 +1321,19 @@ func RegisterMaintenanceHandler(ctx context.Context, mux *runtime.ServeMux, conn
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Maintenance_Defragment_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Maintenance_Defragment_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Maintenance_Defragment_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1291,18 +1350,19 @@ func RegisterMaintenanceHandler(ctx context.Context, mux *runtime.ServeMux, conn
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Maintenance_Hash_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Maintenance_Hash_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Maintenance_Hash_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1319,18 +1379,19 @@ func RegisterMaintenanceHandler(ctx context.Context, mux *runtime.ServeMux, conn
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Maintenance_Snapshot_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Maintenance_Snapshot_0(ctx, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
+ forward_Maintenance_Snapshot_0(ctx, mux, outboundMarshaler, w, req, func() (proto.Message, error) { return resp.Recv() }, mux.GetForwardResponseOptions()...)
})
@@ -1389,7 +1450,15 @@ func RegisterAuthHandlerFromEndpoint(ctx context.Context, mux *runtime.ServeMux,
// RegisterAuthHandler registers the http handlers for service Auth to "mux".
// The handlers forward requests to the grpc endpoint over "conn".
func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.ClientConn) error {
- client := NewAuthClient(conn)
+ return RegisterAuthHandlerClient(ctx, mux, etcdserverpb.NewAuthClient(conn))
+}
+
+// RegisterAuthHandler registers the http handlers for service Auth to "mux".
+// The handlers forward requests to the grpc endpoint over the given implementation of "AuthClient".
+// Note: the gRPC framework executes interceptors within the gRPC handler. If the passed in "AuthClient"
+// doesn't go through the normal gRPC flow (creating a gRPC client etc.) then it will be up to the passed in
+// "AuthClient" to call the correct interceptors.
+func RegisterAuthHandlerClient(ctx context.Context, mux *runtime.ServeMux, client etcdserverpb.AuthClient) error {
mux.Handle("POST", pattern_Auth_AuthEnable_0, func(w http.ResponseWriter, req *http.Request, pathParams map[string]string) {
ctx, cancel := context.WithCancel(ctx)
@@ -1404,18 +1473,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_AuthEnable_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_AuthEnable_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_AuthEnable_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1432,18 +1502,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_AuthDisable_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_AuthDisable_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_AuthDisable_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1460,18 +1531,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_Authenticate_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_Authenticate_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_Authenticate_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1488,18 +1560,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_UserAdd_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_UserAdd_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_UserAdd_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1516,18 +1589,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_UserGet_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_UserGet_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_UserGet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1544,18 +1618,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_UserList_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_UserList_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_UserList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1572,18 +1647,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_UserDelete_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_UserDelete_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_UserDelete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1600,18 +1676,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_UserChangePassword_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_UserChangePassword_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_UserChangePassword_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1628,18 +1705,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_UserGrantRole_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_UserGrantRole_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_UserGrantRole_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1656,18 +1734,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_UserRevokeRole_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_UserRevokeRole_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_UserRevokeRole_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1684,18 +1763,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_RoleAdd_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_RoleAdd_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_RoleAdd_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1712,18 +1792,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_RoleGet_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_RoleGet_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_RoleGet_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1740,18 +1821,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_RoleList_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_RoleList_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_RoleList_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1768,18 +1850,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_RoleDelete_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_RoleDelete_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_RoleDelete_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1796,18 +1879,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_RoleGrantPermission_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_RoleGrantPermission_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_RoleGrantPermission_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
@@ -1824,18 +1908,19 @@ func RegisterAuthHandler(ctx context.Context, mux *runtime.ServeMux, conn *grpc.
}(ctx.Done(), cn.CloseNotify())
}
inboundMarshaler, outboundMarshaler := runtime.MarshalerForRequest(mux, req)
- rctx, err := runtime.AnnotateContext(ctx, req)
+ rctx, err := runtime.AnnotateContext(ctx, mux, req)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
+ return
}
resp, md, err := request_Auth_RoleRevokePermission_0(rctx, inboundMarshaler, client, req, pathParams)
ctx = runtime.NewServerMetadataContext(ctx, md)
if err != nil {
- runtime.HTTPError(ctx, outboundMarshaler, w, req, err)
+ runtime.HTTPError(ctx, mux, outboundMarshaler, w, req, err)
return
}
- forward_Auth_RoleRevokePermission_0(ctx, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
+ forward_Auth_RoleRevokePermission_0(ctx, mux, outboundMarshaler, w, req, resp, mux.GetForwardResponseOptions()...)
})
diff --git a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/raft_internal.pb.go b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/raft_internal.pb.go
index 66890c93c440..44a3b6f69eb9 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/raft_internal.pb.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/raft_internal.pb.go
@@ -2038,7 +2038,7 @@ func init() { proto.RegisterFile("raft_internal.proto", fileDescriptorRaftIntern
var fileDescriptorRaftInternal = []byte{
// 837 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x7c, 0x96, 0xdd, 0x52, 0xd3, 0x40,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x7c, 0x96, 0xdd, 0x52, 0xd3, 0x40,
0x14, 0xc7, 0x69, 0xf9, 0xec, 0xb6, 0x54, 0x5c, 0x40, 0xd7, 0x32, 0x53, 0xa1, 0x8c, 0x8a, 0x5f,
0xe8, 0x94, 0x07, 0xd0, 0x4a, 0x19, 0x60, 0x86, 0x61, 0x98, 0x0c, 0xce, 0x38, 0xe3, 0x45, 0x5c,
0x9a, 0x43, 0x1b, 0x49, 0x93, 0xb8, 0xd9, 0x56, 0x7c, 0x13, 0x1f, 0xc3, 0xaf, 0x87, 0xe0, 0xc2,
diff --git a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.go b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.go
index b28f2e50e3c4..894c815f824c 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.pb.go
@@ -15,6 +15,8 @@ import (
authpb "github.com/coreos/etcd/auth/authpb"
+ _ "google.golang.org/genproto/googleapis/api/annotations"
+
context "golang.org/x/net/context"
grpc "google.golang.org/grpc"
@@ -223,16 +225,45 @@ func (m *ResponseHeader) String() string { return proto.CompactTextSt
func (*ResponseHeader) ProtoMessage() {}
func (*ResponseHeader) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{0} }
+func (m *ResponseHeader) GetClusterId() uint64 {
+ if m != nil {
+ return m.ClusterId
+ }
+ return 0
+}
+
+func (m *ResponseHeader) GetMemberId() uint64 {
+ if m != nil {
+ return m.MemberId
+ }
+ return 0
+}
+
+func (m *ResponseHeader) GetRevision() int64 {
+ if m != nil {
+ return m.Revision
+ }
+ return 0
+}
+
+func (m *ResponseHeader) GetRaftTerm() uint64 {
+ if m != nil {
+ return m.RaftTerm
+ }
+ return 0
+}
+
type RangeRequest struct {
// key is the first key for the range. If range_end is not given, the request only looks up key.
Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
// range_end is the upper bound on the requested range [key, range_end).
// If range_end is '\0', the range is all keys >= key.
- // If the range_end is one bit larger than the given key,
- // then the range requests get the all keys with the prefix (the given key).
- // If both key and range_end are '\0', then range requests returns all keys.
+ // If range_end is key plus one (e.g., "aa"+1 == "ab", "a\xff"+1 == "b"),
+ // then the range request gets all keys prefixed with key.
+ // If both key and range_end are '\0', then the range request returns all keys.
RangeEnd []byte `protobuf:"bytes,2,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"`
- // limit is a limit on the number of keys returned for the request.
+ // limit is a limit on the number of keys returned for the request. When limit is set to 0,
+ // it is treated as no limit.
Limit int64 `protobuf:"varint,3,opt,name=limit,proto3" json:"limit,omitempty"`
// revision is the point-in-time of the key-value store to use for the range.
// If revision is less or equal to zero, the range is over the newest key-value store.
@@ -272,6 +303,97 @@ func (m *RangeRequest) String() string { return proto.CompactTextStri
func (*RangeRequest) ProtoMessage() {}
func (*RangeRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{1} }
+func (m *RangeRequest) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
+func (m *RangeRequest) GetRangeEnd() []byte {
+ if m != nil {
+ return m.RangeEnd
+ }
+ return nil
+}
+
+func (m *RangeRequest) GetLimit() int64 {
+ if m != nil {
+ return m.Limit
+ }
+ return 0
+}
+
+func (m *RangeRequest) GetRevision() int64 {
+ if m != nil {
+ return m.Revision
+ }
+ return 0
+}
+
+func (m *RangeRequest) GetSortOrder() RangeRequest_SortOrder {
+ if m != nil {
+ return m.SortOrder
+ }
+ return RangeRequest_NONE
+}
+
+func (m *RangeRequest) GetSortTarget() RangeRequest_SortTarget {
+ if m != nil {
+ return m.SortTarget
+ }
+ return RangeRequest_KEY
+}
+
+func (m *RangeRequest) GetSerializable() bool {
+ if m != nil {
+ return m.Serializable
+ }
+ return false
+}
+
+func (m *RangeRequest) GetKeysOnly() bool {
+ if m != nil {
+ return m.KeysOnly
+ }
+ return false
+}
+
+func (m *RangeRequest) GetCountOnly() bool {
+ if m != nil {
+ return m.CountOnly
+ }
+ return false
+}
+
+func (m *RangeRequest) GetMinModRevision() int64 {
+ if m != nil {
+ return m.MinModRevision
+ }
+ return 0
+}
+
+func (m *RangeRequest) GetMaxModRevision() int64 {
+ if m != nil {
+ return m.MaxModRevision
+ }
+ return 0
+}
+
+func (m *RangeRequest) GetMinCreateRevision() int64 {
+ if m != nil {
+ return m.MinCreateRevision
+ }
+ return 0
+}
+
+func (m *RangeRequest) GetMaxCreateRevision() int64 {
+ if m != nil {
+ return m.MaxCreateRevision
+ }
+ return 0
+}
+
type RangeResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// kvs is the list of key-value pairs matched by the range request.
@@ -302,6 +424,20 @@ func (m *RangeResponse) GetKvs() []*mvccpb.KeyValue {
return nil
}
+func (m *RangeResponse) GetMore() bool {
+ if m != nil {
+ return m.More
+ }
+ return false
+}
+
+func (m *RangeResponse) GetCount() int64 {
+ if m != nil {
+ return m.Count
+ }
+ return 0
+}
+
type PutRequest struct {
// key is the key, in bytes, to put into the key-value store.
Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
@@ -313,6 +449,12 @@ type PutRequest struct {
// If prev_kv is set, etcd gets the previous key-value pair before changing it.
// The previous key-value pair will be returned in the put response.
PrevKv bool `protobuf:"varint,4,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"`
+ // If ignore_value is set, etcd updates the key using its current value.
+ // Returns an error if the key does not exist.
+ IgnoreValue bool `protobuf:"varint,5,opt,name=ignore_value,json=ignoreValue,proto3" json:"ignore_value,omitempty"`
+ // If ignore_lease is set, etcd updates the key using its current lease.
+ // Returns an error if the key does not exist.
+ IgnoreLease bool `protobuf:"varint,6,opt,name=ignore_lease,json=ignoreLease,proto3" json:"ignore_lease,omitempty"`
}
func (m *PutRequest) Reset() { *m = PutRequest{} }
@@ -320,6 +462,48 @@ func (m *PutRequest) String() string { return proto.CompactTextString
func (*PutRequest) ProtoMessage() {}
func (*PutRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{3} }
+func (m *PutRequest) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
+func (m *PutRequest) GetValue() []byte {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+func (m *PutRequest) GetLease() int64 {
+ if m != nil {
+ return m.Lease
+ }
+ return 0
+}
+
+func (m *PutRequest) GetPrevKv() bool {
+ if m != nil {
+ return m.PrevKv
+ }
+ return false
+}
+
+func (m *PutRequest) GetIgnoreValue() bool {
+ if m != nil {
+ return m.IgnoreValue
+ }
+ return false
+}
+
+func (m *PutRequest) GetIgnoreLease() bool {
+ if m != nil {
+ return m.IgnoreLease
+ }
+ return false
+}
+
type PutResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// if prev_kv is set in the request, the previous key-value pair will be returned.
@@ -350,12 +534,12 @@ type DeleteRangeRequest struct {
Key []byte `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"`
// range_end is the key following the last key to delete for the range [key, range_end).
// If range_end is not given, the range is defined to contain only the key argument.
- // If range_end is one bit larger than the given key, then the range is all
- // the all keys with the prefix (the given key).
+ // If range_end is one bit larger than the given key, then the range is all the keys
+ // with the prefix (the given key).
// If range_end is '\0', the range is all keys greater than or equal to the key argument.
RangeEnd []byte `protobuf:"bytes,2,opt,name=range_end,json=rangeEnd,proto3" json:"range_end,omitempty"`
// If prev_kv is set, etcd gets the previous key-value pairs before deleting it.
- // The previous key-value pairs will be returned in the delte response.
+ // The previous key-value pairs will be returned in the delete response.
PrevKv bool `protobuf:"varint,3,opt,name=prev_kv,json=prevKv,proto3" json:"prev_kv,omitempty"`
}
@@ -364,6 +548,27 @@ func (m *DeleteRangeRequest) String() string { return proto.CompactTe
func (*DeleteRangeRequest) ProtoMessage() {}
func (*DeleteRangeRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{5} }
+func (m *DeleteRangeRequest) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
+func (m *DeleteRangeRequest) GetRangeEnd() []byte {
+ if m != nil {
+ return m.RangeEnd
+ }
+ return nil
+}
+
+func (m *DeleteRangeRequest) GetPrevKv() bool {
+ if m != nil {
+ return m.PrevKv
+ }
+ return false
+}
+
type DeleteRangeResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// deleted is the number of keys deleted by the delete range request.
@@ -384,6 +589,13 @@ func (m *DeleteRangeResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *DeleteRangeResponse) GetDeleted() int64 {
+ if m != nil {
+ return m.Deleted
+ }
+ return 0
+}
+
func (m *DeleteRangeResponse) GetPrevKvs() []*mvccpb.KeyValue {
if m != nil {
return m.PrevKvs
@@ -754,6 +966,27 @@ func (m *Compare) GetTargetUnion() isCompare_TargetUnion {
return nil
}
+func (m *Compare) GetResult() Compare_CompareResult {
+ if m != nil {
+ return m.Result
+ }
+ return Compare_EQUAL
+}
+
+func (m *Compare) GetTarget() Compare_CompareTarget {
+ if m != nil {
+ return m.Target
+ }
+ return Compare_VERSION
+}
+
+func (m *Compare) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
func (m *Compare) GetVersion() int64 {
if x, ok := m.GetTargetUnion().(*Compare_Version); ok {
return x.Version
@@ -950,6 +1183,13 @@ func (m *TxnResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *TxnResponse) GetSucceeded() bool {
+ if m != nil {
+ return m.Succeeded
+ }
+ return false
+}
+
func (m *TxnResponse) GetResponses() []*ResponseOp {
if m != nil {
return m.Responses
@@ -973,6 +1213,20 @@ func (m *CompactionRequest) String() string { return proto.CompactTex
func (*CompactionRequest) ProtoMessage() {}
func (*CompactionRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{12} }
+func (m *CompactionRequest) GetRevision() int64 {
+ if m != nil {
+ return m.Revision
+ }
+ return 0
+}
+
+func (m *CompactionRequest) GetPhysical() bool {
+ if m != nil {
+ return m.Physical
+ }
+ return false
+}
+
type CompactionResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
@@ -1015,6 +1269,13 @@ func (m *HashResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *HashResponse) GetHash() uint32 {
+ if m != nil {
+ return m.Hash
+ }
+ return 0
+}
+
type SnapshotRequest struct {
}
@@ -1045,6 +1306,20 @@ func (m *SnapshotResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *SnapshotResponse) GetRemainingBytes() uint64 {
+ if m != nil {
+ return m.RemainingBytes
+ }
+ return 0
+}
+
+func (m *SnapshotResponse) GetBlob() []byte {
+ if m != nil {
+ return m.Blob
+ }
+ return nil
+}
+
type WatchRequest struct {
// request_union is a request to either create a new watcher or cancel an existing watcher.
//
@@ -1198,6 +1473,48 @@ func (m *WatchCreateRequest) String() string { return proto.CompactTe
func (*WatchCreateRequest) ProtoMessage() {}
func (*WatchCreateRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{19} }
+func (m *WatchCreateRequest) GetKey() []byte {
+ if m != nil {
+ return m.Key
+ }
+ return nil
+}
+
+func (m *WatchCreateRequest) GetRangeEnd() []byte {
+ if m != nil {
+ return m.RangeEnd
+ }
+ return nil
+}
+
+func (m *WatchCreateRequest) GetStartRevision() int64 {
+ if m != nil {
+ return m.StartRevision
+ }
+ return 0
+}
+
+func (m *WatchCreateRequest) GetProgressNotify() bool {
+ if m != nil {
+ return m.ProgressNotify
+ }
+ return false
+}
+
+func (m *WatchCreateRequest) GetFilters() []WatchCreateRequest_FilterType {
+ if m != nil {
+ return m.Filters
+ }
+ return nil
+}
+
+func (m *WatchCreateRequest) GetPrevKv() bool {
+ if m != nil {
+ return m.PrevKv
+ }
+ return false
+}
+
type WatchCancelRequest struct {
// watch_id is the watcher id to cancel so that no more events are transmitted.
WatchId int64 `protobuf:"varint,1,opt,name=watch_id,json=watchId,proto3" json:"watch_id,omitempty"`
@@ -1208,6 +1525,13 @@ func (m *WatchCancelRequest) String() string { return proto.CompactTe
func (*WatchCancelRequest) ProtoMessage() {}
func (*WatchCancelRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{20} }
+func (m *WatchCancelRequest) GetWatchId() int64 {
+ if m != nil {
+ return m.WatchId
+ }
+ return 0
+}
+
type WatchResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// watch_id is the ID of the watcher that corresponds to the response.
@@ -1228,8 +1552,10 @@ type WatchResponse struct {
//
// The client should treat the watcher as canceled and should not try to create any
// watcher with the same start_revision again.
- CompactRevision int64 `protobuf:"varint,5,opt,name=compact_revision,json=compactRevision,proto3" json:"compact_revision,omitempty"`
- Events []*mvccpb.Event `protobuf:"bytes,11,rep,name=events" json:"events,omitempty"`
+ CompactRevision int64 `protobuf:"varint,5,opt,name=compact_revision,json=compactRevision,proto3" json:"compact_revision,omitempty"`
+ // cancel_reason indicates the reason for canceling the watcher.
+ CancelReason string `protobuf:"bytes,6,opt,name=cancel_reason,json=cancelReason,proto3" json:"cancel_reason,omitempty"`
+ Events []*mvccpb.Event `protobuf:"bytes,11,rep,name=events" json:"events,omitempty"`
}
func (m *WatchResponse) Reset() { *m = WatchResponse{} }
@@ -1244,6 +1570,41 @@ func (m *WatchResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *WatchResponse) GetWatchId() int64 {
+ if m != nil {
+ return m.WatchId
+ }
+ return 0
+}
+
+func (m *WatchResponse) GetCreated() bool {
+ if m != nil {
+ return m.Created
+ }
+ return false
+}
+
+func (m *WatchResponse) GetCanceled() bool {
+ if m != nil {
+ return m.Canceled
+ }
+ return false
+}
+
+func (m *WatchResponse) GetCompactRevision() int64 {
+ if m != nil {
+ return m.CompactRevision
+ }
+ return 0
+}
+
+func (m *WatchResponse) GetCancelReason() string {
+ if m != nil {
+ return m.CancelReason
+ }
+ return ""
+}
+
func (m *WatchResponse) GetEvents() []*mvccpb.Event {
if m != nil {
return m.Events
@@ -1263,6 +1624,20 @@ func (m *LeaseGrantRequest) String() string { return proto.CompactTex
func (*LeaseGrantRequest) ProtoMessage() {}
func (*LeaseGrantRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{22} }
+func (m *LeaseGrantRequest) GetTTL() int64 {
+ if m != nil {
+ return m.TTL
+ }
+ return 0
+}
+
+func (m *LeaseGrantRequest) GetID() int64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
type LeaseGrantResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// ID is the lease ID for the granted lease.
@@ -1284,6 +1659,27 @@ func (m *LeaseGrantResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *LeaseGrantResponse) GetID() int64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
+func (m *LeaseGrantResponse) GetTTL() int64 {
+ if m != nil {
+ return m.TTL
+ }
+ return 0
+}
+
+func (m *LeaseGrantResponse) GetError() string {
+ if m != nil {
+ return m.Error
+ }
+ return ""
+}
+
type LeaseRevokeRequest struct {
// ID is the lease ID to revoke. When the ID is revoked, all associated keys will be deleted.
ID int64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
@@ -1294,6 +1690,13 @@ func (m *LeaseRevokeRequest) String() string { return proto.CompactTe
func (*LeaseRevokeRequest) ProtoMessage() {}
func (*LeaseRevokeRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{24} }
+func (m *LeaseRevokeRequest) GetID() int64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
type LeaseRevokeResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
@@ -1320,6 +1723,13 @@ func (m *LeaseKeepAliveRequest) String() string { return proto.Compac
func (*LeaseKeepAliveRequest) ProtoMessage() {}
func (*LeaseKeepAliveRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{26} }
+func (m *LeaseKeepAliveRequest) GetID() int64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
type LeaseKeepAliveResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// ID is the lease ID from the keep alive request.
@@ -1333,11 +1743,25 @@ func (m *LeaseKeepAliveResponse) String() string { return proto.Compa
func (*LeaseKeepAliveResponse) ProtoMessage() {}
func (*LeaseKeepAliveResponse) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{27} }
-func (m *LeaseKeepAliveResponse) GetHeader() *ResponseHeader {
+func (m *LeaseKeepAliveResponse) GetHeader() *ResponseHeader {
+ if m != nil {
+ return m.Header
+ }
+ return nil
+}
+
+func (m *LeaseKeepAliveResponse) GetID() int64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
+func (m *LeaseKeepAliveResponse) GetTTL() int64 {
if m != nil {
- return m.Header
+ return m.TTL
}
- return nil
+ return 0
}
type LeaseTimeToLiveRequest struct {
@@ -1352,6 +1776,20 @@ func (m *LeaseTimeToLiveRequest) String() string { return proto.Compa
func (*LeaseTimeToLiveRequest) ProtoMessage() {}
func (*LeaseTimeToLiveRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{28} }
+func (m *LeaseTimeToLiveRequest) GetID() int64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
+func (m *LeaseTimeToLiveRequest) GetKeys() bool {
+ if m != nil {
+ return m.Keys
+ }
+ return false
+}
+
type LeaseTimeToLiveResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// ID is the lease ID from the keep alive request.
@@ -1376,6 +1814,34 @@ func (m *LeaseTimeToLiveResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *LeaseTimeToLiveResponse) GetID() int64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
+func (m *LeaseTimeToLiveResponse) GetTTL() int64 {
+ if m != nil {
+ return m.TTL
+ }
+ return 0
+}
+
+func (m *LeaseTimeToLiveResponse) GetGrantedTTL() int64 {
+ if m != nil {
+ return m.GrantedTTL
+ }
+ return 0
+}
+
+func (m *LeaseTimeToLiveResponse) GetKeys() [][]byte {
+ if m != nil {
+ return m.Keys
+ }
+ return nil
+}
+
type Member struct {
// ID is the member ID for this member.
ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
@@ -1392,6 +1858,34 @@ func (m *Member) String() string { return proto.CompactTextString(m)
func (*Member) ProtoMessage() {}
func (*Member) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{30} }
+func (m *Member) GetID() uint64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
+func (m *Member) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *Member) GetPeerURLs() []string {
+ if m != nil {
+ return m.PeerURLs
+ }
+ return nil
+}
+
+func (m *Member) GetClientURLs() []string {
+ if m != nil {
+ return m.ClientURLs
+ }
+ return nil
+}
+
type MemberAddRequest struct {
// peerURLs is the list of URLs the added member will use to communicate with the cluster.
PeerURLs []string `protobuf:"bytes,1,rep,name=peerURLs" json:"peerURLs,omitempty"`
@@ -1402,10 +1896,19 @@ func (m *MemberAddRequest) String() string { return proto.CompactText
func (*MemberAddRequest) ProtoMessage() {}
func (*MemberAddRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{31} }
+func (m *MemberAddRequest) GetPeerURLs() []string {
+ if m != nil {
+ return m.PeerURLs
+ }
+ return nil
+}
+
type MemberAddResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// member is the member information for the added member.
Member *Member `protobuf:"bytes,2,opt,name=member" json:"member,omitempty"`
+ // members is a list of all members after adding the new member.
+ Members []*Member `protobuf:"bytes,3,rep,name=members" json:"members,omitempty"`
}
func (m *MemberAddResponse) Reset() { *m = MemberAddResponse{} }
@@ -1427,6 +1930,13 @@ func (m *MemberAddResponse) GetMember() *Member {
return nil
}
+func (m *MemberAddResponse) GetMembers() []*Member {
+ if m != nil {
+ return m.Members
+ }
+ return nil
+}
+
type MemberRemoveRequest struct {
// ID is the member ID of the member to remove.
ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
@@ -1437,8 +1947,17 @@ func (m *MemberRemoveRequest) String() string { return proto.CompactT
func (*MemberRemoveRequest) ProtoMessage() {}
func (*MemberRemoveRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{33} }
+func (m *MemberRemoveRequest) GetID() uint64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
type MemberRemoveResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+ // members is a list of all members after removing the member.
+ Members []*Member `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"`
}
func (m *MemberRemoveResponse) Reset() { *m = MemberRemoveResponse{} }
@@ -1453,6 +1972,13 @@ func (m *MemberRemoveResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *MemberRemoveResponse) GetMembers() []*Member {
+ if m != nil {
+ return m.Members
+ }
+ return nil
+}
+
type MemberUpdateRequest struct {
// ID is the member ID of the member to update.
ID uint64 `protobuf:"varint,1,opt,name=ID,proto3" json:"ID,omitempty"`
@@ -1465,8 +1991,24 @@ func (m *MemberUpdateRequest) String() string { return proto.CompactT
func (*MemberUpdateRequest) ProtoMessage() {}
func (*MemberUpdateRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{35} }
+func (m *MemberUpdateRequest) GetID() uint64 {
+ if m != nil {
+ return m.ID
+ }
+ return 0
+}
+
+func (m *MemberUpdateRequest) GetPeerURLs() []string {
+ if m != nil {
+ return m.PeerURLs
+ }
+ return nil
+}
+
type MemberUpdateResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
+ // members is a list of all members after updating the member.
+ Members []*Member `protobuf:"bytes,2,rep,name=members" json:"members,omitempty"`
}
func (m *MemberUpdateResponse) Reset() { *m = MemberUpdateResponse{} }
@@ -1481,6 +2023,13 @@ func (m *MemberUpdateResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *MemberUpdateResponse) GetMembers() []*Member {
+ if m != nil {
+ return m.Members
+ }
+ return nil
+}
+
type MemberListRequest struct {
}
@@ -1555,6 +2104,27 @@ func (m *AlarmRequest) String() string { return proto.CompactTextStri
func (*AlarmRequest) ProtoMessage() {}
func (*AlarmRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{41} }
+func (m *AlarmRequest) GetAction() AlarmRequest_AlarmAction {
+ if m != nil {
+ return m.Action
+ }
+ return AlarmRequest_GET
+}
+
+func (m *AlarmRequest) GetMemberID() uint64 {
+ if m != nil {
+ return m.MemberID
+ }
+ return 0
+}
+
+func (m *AlarmRequest) GetAlarm() AlarmType {
+ if m != nil {
+ return m.Alarm
+ }
+ return AlarmType_NONE
+}
+
type AlarmMember struct {
// memberID is the ID of the member associated with the raised alarm.
MemberID uint64 `protobuf:"varint,1,opt,name=memberID,proto3" json:"memberID,omitempty"`
@@ -1567,6 +2137,20 @@ func (m *AlarmMember) String() string { return proto.CompactTextStrin
func (*AlarmMember) ProtoMessage() {}
func (*AlarmMember) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{42} }
+func (m *AlarmMember) GetMemberID() uint64 {
+ if m != nil {
+ return m.MemberID
+ }
+ return 0
+}
+
+func (m *AlarmMember) GetAlarm() AlarmType {
+ if m != nil {
+ return m.Alarm
+ }
+ return AlarmType_NONE
+}
+
type AlarmResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
// alarms is a list of alarms associated with the alarm request.
@@ -1626,6 +2210,41 @@ func (m *StatusResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *StatusResponse) GetVersion() string {
+ if m != nil {
+ return m.Version
+ }
+ return ""
+}
+
+func (m *StatusResponse) GetDbSize() int64 {
+ if m != nil {
+ return m.DbSize
+ }
+ return 0
+}
+
+func (m *StatusResponse) GetLeader() uint64 {
+ if m != nil {
+ return m.Leader
+ }
+ return 0
+}
+
+func (m *StatusResponse) GetRaftIndex() uint64 {
+ if m != nil {
+ return m.RaftIndex
+ }
+ return 0
+}
+
+func (m *StatusResponse) GetRaftTerm() uint64 {
+ if m != nil {
+ return m.RaftTerm
+ }
+ return 0
+}
+
type AuthEnableRequest struct {
}
@@ -1652,6 +2271,20 @@ func (m *AuthenticateRequest) String() string { return proto.CompactT
func (*AuthenticateRequest) ProtoMessage() {}
func (*AuthenticateRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{48} }
+func (m *AuthenticateRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *AuthenticateRequest) GetPassword() string {
+ if m != nil {
+ return m.Password
+ }
+ return ""
+}
+
type AuthUserAddRequest struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"`
@@ -1662,6 +2295,20 @@ func (m *AuthUserAddRequest) String() string { return proto.CompactTe
func (*AuthUserAddRequest) ProtoMessage() {}
func (*AuthUserAddRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{49} }
+func (m *AuthUserAddRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *AuthUserAddRequest) GetPassword() string {
+ if m != nil {
+ return m.Password
+ }
+ return ""
+}
+
type AuthUserGetRequest struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
}
@@ -1671,6 +2318,13 @@ func (m *AuthUserGetRequest) String() string { return proto.CompactTe
func (*AuthUserGetRequest) ProtoMessage() {}
func (*AuthUserGetRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{50} }
+func (m *AuthUserGetRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
type AuthUserDeleteRequest struct {
// name is the name of the user to delete.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -1681,6 +2335,13 @@ func (m *AuthUserDeleteRequest) String() string { return proto.Compac
func (*AuthUserDeleteRequest) ProtoMessage() {}
func (*AuthUserDeleteRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{51} }
+func (m *AuthUserDeleteRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
type AuthUserChangePasswordRequest struct {
// name is the name of the user whose password is being changed.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -1695,6 +2356,20 @@ func (*AuthUserChangePasswordRequest) Descriptor() ([]byte, []int) {
return fileDescriptorRpc, []int{52}
}
+func (m *AuthUserChangePasswordRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *AuthUserChangePasswordRequest) GetPassword() string {
+ if m != nil {
+ return m.Password
+ }
+ return ""
+}
+
type AuthUserGrantRoleRequest struct {
// user is the name of the user which should be granted a given role.
User string `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"`
@@ -1707,6 +2382,20 @@ func (m *AuthUserGrantRoleRequest) String() string { return proto.Com
func (*AuthUserGrantRoleRequest) ProtoMessage() {}
func (*AuthUserGrantRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{53} }
+func (m *AuthUserGrantRoleRequest) GetUser() string {
+ if m != nil {
+ return m.User
+ }
+ return ""
+}
+
+func (m *AuthUserGrantRoleRequest) GetRole() string {
+ if m != nil {
+ return m.Role
+ }
+ return ""
+}
+
type AuthUserRevokeRoleRequest struct {
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
Role string `protobuf:"bytes,2,opt,name=role,proto3" json:"role,omitempty"`
@@ -1717,6 +2406,20 @@ func (m *AuthUserRevokeRoleRequest) String() string { return proto.Co
func (*AuthUserRevokeRoleRequest) ProtoMessage() {}
func (*AuthUserRevokeRoleRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{54} }
+func (m *AuthUserRevokeRoleRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
+func (m *AuthUserRevokeRoleRequest) GetRole() string {
+ if m != nil {
+ return m.Role
+ }
+ return ""
+}
+
type AuthRoleAddRequest struct {
// name is the name of the role to add to the authentication system.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -1727,6 +2430,13 @@ func (m *AuthRoleAddRequest) String() string { return proto.CompactTe
func (*AuthRoleAddRequest) ProtoMessage() {}
func (*AuthRoleAddRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{55} }
+func (m *AuthRoleAddRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
type AuthRoleGetRequest struct {
Role string `protobuf:"bytes,1,opt,name=role,proto3" json:"role,omitempty"`
}
@@ -1736,6 +2446,13 @@ func (m *AuthRoleGetRequest) String() string { return proto.CompactTe
func (*AuthRoleGetRequest) ProtoMessage() {}
func (*AuthRoleGetRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{56} }
+func (m *AuthRoleGetRequest) GetRole() string {
+ if m != nil {
+ return m.Role
+ }
+ return ""
+}
+
type AuthUserListRequest struct {
}
@@ -1761,6 +2478,13 @@ func (m *AuthRoleDeleteRequest) String() string { return proto.Compac
func (*AuthRoleDeleteRequest) ProtoMessage() {}
func (*AuthRoleDeleteRequest) Descriptor() ([]byte, []int) { return fileDescriptorRpc, []int{59} }
+func (m *AuthRoleDeleteRequest) GetRole() string {
+ if m != nil {
+ return m.Role
+ }
+ return ""
+}
+
type AuthRoleGrantPermissionRequest struct {
// name is the name of the role which will be granted the permission.
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
@@ -1775,6 +2499,13 @@ func (*AuthRoleGrantPermissionRequest) Descriptor() ([]byte, []int) {
return fileDescriptorRpc, []int{60}
}
+func (m *AuthRoleGrantPermissionRequest) GetName() string {
+ if m != nil {
+ return m.Name
+ }
+ return ""
+}
+
func (m *AuthRoleGrantPermissionRequest) GetPerm() *authpb.Permission {
if m != nil {
return m.Perm
@@ -1795,6 +2526,27 @@ func (*AuthRoleRevokePermissionRequest) Descriptor() ([]byte, []int) {
return fileDescriptorRpc, []int{61}
}
+func (m *AuthRoleRevokePermissionRequest) GetRole() string {
+ if m != nil {
+ return m.Role
+ }
+ return ""
+}
+
+func (m *AuthRoleRevokePermissionRequest) GetKey() string {
+ if m != nil {
+ return m.Key
+ }
+ return ""
+}
+
+func (m *AuthRoleRevokePermissionRequest) GetRangeEnd() string {
+ if m != nil {
+ return m.RangeEnd
+ }
+ return ""
+}
+
type AuthEnableResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
@@ -1845,6 +2597,13 @@ func (m *AuthenticateResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *AuthenticateResponse) GetToken() string {
+ if m != nil {
+ return m.Token
+ }
+ return ""
+}
+
type AuthUserAddResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
@@ -1878,6 +2637,13 @@ func (m *AuthUserGetResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *AuthUserGetResponse) GetRoles() []string {
+ if m != nil {
+ return m.Roles
+ }
+ return nil
+}
+
type AuthUserDeleteResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
@@ -2001,6 +2767,13 @@ func (m *AuthRoleListResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *AuthRoleListResponse) GetRoles() []string {
+ if m != nil {
+ return m.Roles
+ }
+ return nil
+}
+
type AuthUserListResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
Users []string `protobuf:"bytes,2,rep,name=users" json:"users,omitempty"`
@@ -2018,6 +2791,13 @@ func (m *AuthUserListResponse) GetHeader() *ResponseHeader {
return nil
}
+func (m *AuthUserListResponse) GetUsers() []string {
+ if m != nil {
+ return m.Users
+ }
+ return nil
+}
+
type AuthRoleDeleteResponse struct {
Header *ResponseHeader `protobuf:"bytes,1,opt,name=header" json:"header,omitempty"`
}
@@ -3929,12 +4709,32 @@ func (m *PutRequest) MarshalTo(dAtA []byte) (int, error) {
if m.Lease != 0 {
dAtA[i] = 0x18
i++
- i = encodeVarintRpc(dAtA, i, uint64(m.Lease))
+ i = encodeVarintRpc(dAtA, i, uint64(m.Lease))
+ }
+ if m.PrevKv {
+ dAtA[i] = 0x20
+ i++
+ if m.PrevKv {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
+ }
+ if m.IgnoreValue {
+ dAtA[i] = 0x28
+ i++
+ if m.IgnoreValue {
+ dAtA[i] = 1
+ } else {
+ dAtA[i] = 0
+ }
+ i++
}
- if m.PrevKv {
- dAtA[i] = 0x20
+ if m.IgnoreLease {
+ dAtA[i] = 0x30
i++
- if m.PrevKv {
+ if m.IgnoreLease {
dAtA[i] = 1
} else {
dAtA[i] = 0
@@ -4749,6 +5549,12 @@ func (m *WatchResponse) MarshalTo(dAtA []byte) (int, error) {
i++
i = encodeVarintRpc(dAtA, i, uint64(m.CompactRevision))
}
+ if len(m.CancelReason) > 0 {
+ dAtA[i] = 0x32
+ i++
+ i = encodeVarintRpc(dAtA, i, uint64(len(m.CancelReason)))
+ i += copy(dAtA[i:], m.CancelReason)
+ }
if len(m.Events) > 0 {
for _, msg := range m.Events {
dAtA[i] = 0x5a
@@ -5159,6 +5965,18 @@ func (m *MemberAddResponse) MarshalTo(dAtA []byte) (int, error) {
}
i += n29
}
+ if len(m.Members) > 0 {
+ for _, msg := range m.Members {
+ dAtA[i] = 0x1a
+ i++
+ i = encodeVarintRpc(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
return i, nil
}
@@ -5210,6 +6028,18 @@ func (m *MemberRemoveResponse) MarshalTo(dAtA []byte) (int, error) {
}
i += n30
}
+ if len(m.Members) > 0 {
+ for _, msg := range m.Members {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintRpc(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
return i, nil
}
@@ -5276,6 +6106,18 @@ func (m *MemberUpdateResponse) MarshalTo(dAtA []byte) (int, error) {
}
i += n31
}
+ if len(m.Members) > 0 {
+ for _, msg := range m.Members {
+ dAtA[i] = 0x12
+ i++
+ i = encodeVarintRpc(dAtA, i, uint64(msg.Size()))
+ n, err := msg.MarshalTo(dAtA[i:])
+ if err != nil {
+ return 0, err
+ }
+ i += n
+ }
+ }
return i, nil
}
@@ -6610,6 +7452,12 @@ func (m *PutRequest) Size() (n int) {
if m.PrevKv {
n += 2
}
+ if m.IgnoreValue {
+ n += 2
+ }
+ if m.IgnoreLease {
+ n += 2
+ }
return n
}
@@ -6973,6 +7821,10 @@ func (m *WatchResponse) Size() (n int) {
if m.CompactRevision != 0 {
n += 1 + sovRpc(uint64(m.CompactRevision))
}
+ l = len(m.CancelReason)
+ if l > 0 {
+ n += 1 + l + sovRpc(uint64(l))
+ }
if len(m.Events) > 0 {
for _, e := range m.Events {
l = e.Size()
@@ -7143,6 +7995,12 @@ func (m *MemberAddResponse) Size() (n int) {
l = m.Member.Size()
n += 1 + l + sovRpc(uint64(l))
}
+ if len(m.Members) > 0 {
+ for _, e := range m.Members {
+ l = e.Size()
+ n += 1 + l + sovRpc(uint64(l))
+ }
+ }
return n
}
@@ -7162,6 +8020,12 @@ func (m *MemberRemoveResponse) Size() (n int) {
l = m.Header.Size()
n += 1 + l + sovRpc(uint64(l))
}
+ if len(m.Members) > 0 {
+ for _, e := range m.Members {
+ l = e.Size()
+ n += 1 + l + sovRpc(uint64(l))
+ }
+ }
return n
}
@@ -7187,6 +8051,12 @@ func (m *MemberUpdateResponse) Size() (n int) {
l = m.Header.Size()
n += 1 + l + sovRpc(uint64(l))
}
+ if len(m.Members) > 0 {
+ for _, e := range m.Members {
+ l = e.Size()
+ n += 1 + l + sovRpc(uint64(l))
+ }
+ }
return n
}
@@ -8413,6 +9283,46 @@ func (m *PutRequest) Unmarshal(dAtA []byte) error {
}
}
m.PrevKv = bool(v != 0)
+ case 5:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IgnoreValue", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IgnoreValue = bool(v != 0)
+ case 6:
+ if wireType != 0 {
+ return fmt.Errorf("proto: wrong wireType = %d for field IgnoreLease", wireType)
+ }
+ var v int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.IgnoreLease = bool(v != 0)
default:
iNdEx = preIndex
skippy, err := skipRpc(dAtA[iNdEx:])
@@ -10345,7 +11255,24 @@ func (m *WatchCreateRequest) Unmarshal(dAtA []byte) error {
}
m.ProgressNotify = bool(v != 0)
case 5:
- if wireType == 2 {
+ if wireType == 0 {
+ var v WatchCreateRequest_FilterType
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (WatchCreateRequest_FilterType(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Filters = append(m.Filters, v)
+ } else if wireType == 2 {
var packedLen int
for shift := uint(0); ; shift += 7 {
if shift >= 64 {
@@ -10386,23 +11313,6 @@ func (m *WatchCreateRequest) Unmarshal(dAtA []byte) error {
}
m.Filters = append(m.Filters, v)
}
- } else if wireType == 0 {
- var v WatchCreateRequest_FilterType
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowRpc
- }
- if iNdEx >= l {
- return io.ErrUnexpectedEOF
- }
- b := dAtA[iNdEx]
- iNdEx++
- v |= (WatchCreateRequest_FilterType(b) & 0x7F) << shift
- if b < 0x80 {
- break
- }
- }
- m.Filters = append(m.Filters, v)
} else {
return fmt.Errorf("proto: wrong wireType = %d for field Filters", wireType)
}
@@ -10656,6 +11566,35 @@ func (m *WatchResponse) Unmarshal(dAtA []byte) error {
break
}
}
+ case 6:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field CancelReason", wireType)
+ }
+ var stringLen uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ stringLen |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ intStringLen := int(stringLen)
+ if intStringLen < 0 {
+ return ErrInvalidLengthRpc
+ }
+ postIndex := iNdEx + intStringLen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.CancelReason = string(dAtA[iNdEx:postIndex])
+ iNdEx = postIndex
case 11:
if wireType != 2 {
return fmt.Errorf("proto: wrong wireType = %d for field Events", wireType)
@@ -11876,6 +12815,37 @@ func (m *MemberAddResponse) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 3:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthRpc
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Members = append(m.Members, &Member{})
+ if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipRpc(dAtA[iNdEx:])
@@ -12028,6 +12998,37 @@ func (m *MemberRemoveResponse) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthRpc
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Members = append(m.Members, &Member{})
+ if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipRpc(dAtA[iNdEx:])
@@ -12209,6 +13210,37 @@ func (m *MemberUpdateResponse) Unmarshal(dAtA []byte) error {
return err
}
iNdEx = postIndex
+ case 2:
+ if wireType != 2 {
+ return fmt.Errorf("proto: wrong wireType = %d for field Members", wireType)
+ }
+ var msglen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRpc
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ msglen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if msglen < 0 {
+ return ErrInvalidLengthRpc
+ }
+ postIndex := iNdEx + msglen
+ if postIndex > l {
+ return io.ErrUnexpectedEOF
+ }
+ m.Members = append(m.Members, &Member{})
+ if err := m.Members[len(m.Members)-1].Unmarshal(dAtA[iNdEx:postIndex]); err != nil {
+ return err
+ }
+ iNdEx = postIndex
default:
iNdEx = preIndex
skippy, err := skipRpc(dAtA[iNdEx:])
@@ -16041,218 +17073,221 @@ var (
func init() { proto.RegisterFile("rpc.proto", fileDescriptorRpc) }
var fileDescriptorRpc = []byte{
- // 3401 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xb4, 0x5b, 0xcb, 0x73, 0x1b, 0xc7,
- 0xd1, 0xe7, 0x02, 0x24, 0x40, 0x34, 0x1e, 0x84, 0x86, 0x94, 0x04, 0xae, 0x24, 0x8a, 0x1a, 0xbd,
- 0x28, 0xc9, 0x26, 0x6d, 0xda, 0xdf, 0x77, 0xd0, 0xe7, 0x72, 0x7d, 0x14, 0x09, 0x8b, 0x0c, 0x29,
- 0x52, 0x5e, 0x52, 0xb2, 0x53, 0xe5, 0x0a, 0x6a, 0x09, 0x8c, 0xc8, 0x2d, 0x02, 0xbb, 0xf0, 0xee,
- 0x02, 0x22, 0x9d, 0xa4, 0x2a, 0xe5, 0xd8, 0x95, 0x4a, 0x8e, 0xf1, 0x21, 0xaf, 0x63, 0x2a, 0x87,
- 0xfc, 0x01, 0xb9, 0xe5, 0x0f, 0x48, 0xe5, 0x92, 0x54, 0xe5, 0x1f, 0x48, 0x39, 0x39, 0xe4, 0x90,
- 0x7b, 0x4e, 0xa9, 0xa4, 0xe6, 0xb5, 0x3b, 0xbb, 0xd8, 0x05, 0xe5, 0x6c, 0x7c, 0x11, 0x77, 0x66,
- 0x7a, 0xfa, 0xd7, 0xdd, 0x33, 0xdd, 0xd3, 0xd3, 0x03, 0x41, 0xc9, 0xed, 0xb7, 0x97, 0xfb, 0xae,
- 0xe3, 0x3b, 0xa8, 0x42, 0xfc, 0x76, 0xc7, 0x23, 0xee, 0x90, 0xb8, 0xfd, 0x43, 0x7d, 0xee, 0xc8,
- 0x39, 0x72, 0xd8, 0xc0, 0x0a, 0xfd, 0xe2, 0x34, 0xfa, 0x3c, 0xa5, 0x59, 0xe9, 0x0d, 0xdb, 0x6d,
- 0xf6, 0x4f, 0xff, 0x70, 0xe5, 0x64, 0x28, 0x86, 0xae, 0xb0, 0x21, 0x73, 0xe0, 0x1f, 0xb3, 0x7f,
- 0xfa, 0x87, 0xec, 0x8f, 0x18, 0xbc, 0x7a, 0xe4, 0x38, 0x47, 0x5d, 0xb2, 0x62, 0xf6, 0xad, 0x15,
- 0xd3, 0xb6, 0x1d, 0xdf, 0xf4, 0x2d, 0xc7, 0xf6, 0xf8, 0x28, 0xfe, 0x5c, 0x83, 0x9a, 0x41, 0xbc,
- 0xbe, 0x63, 0x7b, 0x64, 0x93, 0x98, 0x1d, 0xe2, 0xa2, 0x6b, 0x00, 0xed, 0xee, 0xc0, 0xf3, 0x89,
- 0xdb, 0xb2, 0x3a, 0x0d, 0x6d, 0x51, 0x5b, 0x9a, 0x34, 0x4a, 0xa2, 0x67, 0xab, 0x83, 0xae, 0x40,
- 0xa9, 0x47, 0x7a, 0x87, 0x7c, 0x34, 0xc7, 0x46, 0xa7, 0x79, 0xc7, 0x56, 0x07, 0xe9, 0x30, 0xed,
- 0x92, 0xa1, 0xe5, 0x59, 0x8e, 0xdd, 0xc8, 0x2f, 0x6a, 0x4b, 0x79, 0x23, 0x68, 0xd3, 0x89, 0xae,
- 0xf9, 0xc2, 0x6f, 0xf9, 0xc4, 0xed, 0x35, 0x26, 0xf9, 0x44, 0xda, 0x71, 0x40, 0xdc, 0x1e, 0xfe,
- 0x6c, 0x0a, 0x2a, 0x86, 0x69, 0x1f, 0x11, 0x83, 0x7c, 0x3c, 0x20, 0x9e, 0x8f, 0xea, 0x90, 0x3f,
- 0x21, 0x67, 0x0c, 0xbe, 0x62, 0xd0, 0x4f, 0x3e, 0xdf, 0x3e, 0x22, 0x2d, 0x62, 0x73, 0xe0, 0x0a,
- 0x9d, 0x6f, 0x1f, 0x91, 0xa6, 0xdd, 0x41, 0x73, 0x30, 0xd5, 0xb5, 0x7a, 0x96, 0x2f, 0x50, 0x79,
- 0x23, 0x22, 0xce, 0x64, 0x4c, 0x9c, 0x75, 0x00, 0xcf, 0x71, 0xfd, 0x96, 0xe3, 0x76, 0x88, 0xdb,
- 0x98, 0x5a, 0xd4, 0x96, 0x6a, 0xab, 0xb7, 0x96, 0xd5, 0x85, 0x58, 0x56, 0x05, 0x5a, 0xde, 0x77,
- 0x5c, 0x7f, 0x8f, 0xd2, 0x1a, 0x25, 0x4f, 0x7e, 0xa2, 0xf7, 0xa0, 0xcc, 0x98, 0xf8, 0xa6, 0x7b,
- 0x44, 0xfc, 0x46, 0x81, 0x71, 0xb9, 0x7d, 0x0e, 0x97, 0x03, 0x46, 0x6c, 0x30, 0x78, 0xfe, 0x8d,
- 0x30, 0x54, 0x3c, 0xe2, 0x5a, 0x66, 0xd7, 0xfa, 0xc4, 0x3c, 0xec, 0x92, 0x46, 0x71, 0x51, 0x5b,
- 0x9a, 0x36, 0x22, 0x7d, 0x54, 0xff, 0x13, 0x72, 0xe6, 0xb5, 0x1c, 0xbb, 0x7b, 0xd6, 0x98, 0x66,
- 0x04, 0xd3, 0xb4, 0x63, 0xcf, 0xee, 0x9e, 0xb1, 0x45, 0x73, 0x06, 0xb6, 0xcf, 0x47, 0x4b, 0x6c,
- 0xb4, 0xc4, 0x7a, 0xd8, 0xf0, 0x12, 0xd4, 0x7b, 0x96, 0xdd, 0xea, 0x39, 0x9d, 0x56, 0x60, 0x10,
- 0x60, 0x06, 0xa9, 0xf5, 0x2c, 0xfb, 0x89, 0xd3, 0x31, 0xa4, 0x59, 0x28, 0xa5, 0x79, 0x1a, 0xa5,
- 0x2c, 0x0b, 0x4a, 0xf3, 0x54, 0xa5, 0x5c, 0x86, 0x59, 0xca, 0xb3, 0xed, 0x12, 0xd3, 0x27, 0x21,
- 0x71, 0x85, 0x11, 0x5f, 0xe8, 0x59, 0xf6, 0x3a, 0x1b, 0x89, 0xd0, 0x9b, 0xa7, 0x23, 0xf4, 0x55,
- 0x41, 0x6f, 0x9e, 0x46, 0xe9, 0xf1, 0x32, 0x94, 0x02, 0x9b, 0xa3, 0x69, 0x98, 0xdc, 0xdd, 0xdb,
- 0x6d, 0xd6, 0x27, 0x10, 0x40, 0x61, 0x6d, 0x7f, 0xbd, 0xb9, 0xbb, 0x51, 0xd7, 0x50, 0x19, 0x8a,
- 0x1b, 0x4d, 0xde, 0xc8, 0xe1, 0x47, 0x00, 0xa1, 0x75, 0x51, 0x11, 0xf2, 0xdb, 0xcd, 0x6f, 0xd6,
- 0x27, 0x28, 0xcd, 0xf3, 0xa6, 0xb1, 0xbf, 0xb5, 0xb7, 0x5b, 0xd7, 0xe8, 0xe4, 0x75, 0xa3, 0xb9,
- 0x76, 0xd0, 0xac, 0xe7, 0x28, 0xc5, 0x93, 0xbd, 0x8d, 0x7a, 0x1e, 0x95, 0x60, 0xea, 0xf9, 0xda,
- 0xce, 0xb3, 0x66, 0x7d, 0x12, 0x7f, 0xa1, 0x41, 0x55, 0xac, 0x17, 0xf7, 0x09, 0xf4, 0x36, 0x14,
- 0x8e, 0x99, 0x5f, 0xb0, 0xad, 0x58, 0x5e, 0xbd, 0x1a, 0x5b, 0xdc, 0x88, 0xef, 0x18, 0x82, 0x16,
- 0x61, 0xc8, 0x9f, 0x0c, 0xbd, 0x46, 0x6e, 0x31, 0xbf, 0x54, 0x5e, 0xad, 0x2f, 0x73, 0x87, 0x5d,
- 0xde, 0x26, 0x67, 0xcf, 0xcd, 0xee, 0x80, 0x18, 0x74, 0x10, 0x21, 0x98, 0xec, 0x39, 0x2e, 0x61,
- 0x3b, 0x76, 0xda, 0x60, 0xdf, 0x74, 0x1b, 0xb3, 0x45, 0x13, 0xbb, 0x95, 0x37, 0x70, 0x1b, 0xe0,
- 0xe9, 0xc0, 0x4f, 0xf7, 0x8c, 0x39, 0x98, 0x1a, 0x52, 0xbe, 0xc2, 0x2b, 0x78, 0x83, 0xb9, 0x04,
- 0x31, 0x3d, 0x12, 0xb8, 0x04, 0x6d, 0xa0, 0xcb, 0x50, 0xec, 0xbb, 0x64, 0xd8, 0x3a, 0x19, 0x32,
- 0x8c, 0x69, 0xa3, 0x40, 0x9b, 0xdb, 0x43, 0x6c, 0x43, 0x99, 0x81, 0x64, 0xd2, 0xfb, 0x5e, 0xc8,
- 0x3d, 0xc7, 0xa6, 0x8d, 0xea, 0x2e, 0xf1, 0x3e, 0x02, 0xb4, 0x41, 0xba, 0xc4, 0x27, 0x59, 0xdc,
- 0x5e, 0xd1, 0x26, 0x1f, 0xd1, 0xe6, 0xc7, 0x1a, 0xcc, 0x46, 0xd8, 0x67, 0x52, 0xab, 0x01, 0xc5,
- 0x0e, 0x63, 0xc6, 0x25, 0xc8, 0x1b, 0xb2, 0x89, 0x1e, 0xc0, 0xb4, 0x10, 0xc0, 0x6b, 0xe4, 0x53,
- 0x56, 0xbb, 0xc8, 0x65, 0xf2, 0xf0, 0xdf, 0x35, 0x28, 0x09, 0x45, 0xf7, 0xfa, 0x68, 0x0d, 0xaa,
- 0x2e, 0x6f, 0xb4, 0x98, 0x3e, 0x42, 0x22, 0x3d, 0x3d, 0x7a, 0x6c, 0x4e, 0x18, 0x15, 0x31, 0x85,
- 0x75, 0xa3, 0xff, 0x83, 0xb2, 0x64, 0xd1, 0x1f, 0xf8, 0xc2, 0xe4, 0x8d, 0x28, 0x83, 0x70, 0xe7,
- 0x6c, 0x4e, 0x18, 0x20, 0xc8, 0x9f, 0x0e, 0x7c, 0x74, 0x00, 0x73, 0x72, 0x32, 0xd7, 0x46, 0x88,
- 0x91, 0x67, 0x5c, 0x16, 0xa3, 0x5c, 0x46, 0x97, 0x6a, 0x73, 0xc2, 0x40, 0x62, 0xbe, 0x32, 0xf8,
- 0xa8, 0x04, 0x45, 0xd1, 0x8b, 0xff, 0xa1, 0x01, 0x48, 0x83, 0xee, 0xf5, 0xd1, 0x06, 0xd4, 0x5c,
- 0xd1, 0x8a, 0x28, 0x7c, 0x25, 0x51, 0x61, 0xb1, 0x0e, 0x13, 0x46, 0x55, 0x4e, 0xe2, 0x2a, 0xbf,
- 0x0b, 0x95, 0x80, 0x4b, 0xa8, 0xf3, 0x7c, 0x82, 0xce, 0x01, 0x87, 0xb2, 0x9c, 0x40, 0xb5, 0xfe,
- 0x00, 0x2e, 0x06, 0xf3, 0x13, 0xd4, 0xbe, 0x31, 0x46, 0xed, 0x80, 0xe1, 0xac, 0xe4, 0xa0, 0x2a,
- 0x0e, 0xf4, 0xac, 0xe1, 0xdd, 0xf8, 0xd7, 0x79, 0x28, 0xae, 0x3b, 0xbd, 0xbe, 0xe9, 0xd2, 0x35,
- 0x2a, 0xb8, 0xc4, 0x1b, 0x74, 0x7d, 0xa6, 0x6e, 0x6d, 0xf5, 0x66, 0x14, 0x41, 0x90, 0xc9, 0xbf,
- 0x06, 0x23, 0x35, 0xc4, 0x14, 0x3a, 0x59, 0x1c, 0x2d, 0xb9, 0x57, 0x98, 0x2c, 0x0e, 0x16, 0x31,
- 0x45, 0xfa, 0x52, 0x3e, 0xf4, 0x25, 0x1d, 0x8a, 0x43, 0xe2, 0x86, 0xc7, 0xe1, 0xe6, 0x84, 0x21,
- 0x3b, 0xd0, 0x3d, 0x98, 0x89, 0x87, 0xe6, 0x29, 0x41, 0x53, 0x6b, 0x47, 0x23, 0xf9, 0x4d, 0xa8,
- 0x44, 0xce, 0x87, 0x82, 0xa0, 0x2b, 0xf7, 0x94, 0xe3, 0xe1, 0x92, 0x0c, 0x4a, 0xf4, 0x2c, 0xab,
- 0x6c, 0x4e, 0x88, 0xb0, 0x84, 0xff, 0x1f, 0xaa, 0x11, 0x5d, 0x69, 0xf8, 0x6d, 0xbe, 0xff, 0x6c,
- 0x6d, 0x87, 0xc7, 0xea, 0xc7, 0x2c, 0x3c, 0x1b, 0x75, 0x8d, 0x86, 0xfc, 0x9d, 0xe6, 0xfe, 0x7e,
- 0x3d, 0x87, 0xaa, 0x50, 0xda, 0xdd, 0x3b, 0x68, 0x71, 0xaa, 0x3c, 0x7e, 0x27, 0xe0, 0x20, 0x62,
- 0xbd, 0x12, 0xe2, 0x27, 0x94, 0x10, 0xaf, 0xc9, 0x10, 0x9f, 0x0b, 0x43, 0x7c, 0xfe, 0x51, 0x0d,
- 0x2a, 0xdc, 0x3e, 0xad, 0x81, 0x4d, 0x8f, 0x99, 0x5f, 0x6a, 0x00, 0x07, 0xa7, 0xb6, 0x0c, 0x40,
- 0x2b, 0x50, 0x6c, 0x73, 0xe6, 0x0d, 0x8d, 0xf9, 0xf3, 0xc5, 0x44, 0x93, 0x1b, 0x92, 0x0a, 0xbd,
- 0x09, 0x45, 0x6f, 0xd0, 0x6e, 0x13, 0x4f, 0x86, 0xfb, 0xcb, 0xf1, 0x90, 0x22, 0x1c, 0xde, 0x90,
- 0x74, 0x74, 0xca, 0x0b, 0xd3, 0xea, 0x0e, 0x58, 0xf0, 0x1f, 0x3f, 0x45, 0xd0, 0xe1, 0x9f, 0x69,
- 0x50, 0x66, 0x52, 0x66, 0x8a, 0x63, 0x57, 0xa1, 0xc4, 0x64, 0x20, 0x1d, 0x11, 0xc9, 0xa6, 0x8d,
- 0xb0, 0x03, 0xfd, 0x2f, 0x94, 0xe4, 0x0e, 0x96, 0xc1, 0xac, 0x91, 0xcc, 0x76, 0xaf, 0x6f, 0x84,
- 0xa4, 0x78, 0x1b, 0x2e, 0x30, 0xab, 0xb4, 0x69, 0x62, 0x29, 0xed, 0xa8, 0xa6, 0x5e, 0x5a, 0x2c,
- 0xf5, 0xd2, 0x61, 0xba, 0x7f, 0x7c, 0xe6, 0x59, 0x6d, 0xb3, 0x2b, 0xa4, 0x08, 0xda, 0xf8, 0x1b,
- 0x80, 0x54, 0x66, 0x59, 0xd4, 0xc5, 0x55, 0x28, 0x6f, 0x9a, 0xde, 0xb1, 0x10, 0x09, 0x7f, 0x08,
- 0x15, 0xde, 0xcc, 0x64, 0x43, 0x04, 0x93, 0xc7, 0xa6, 0x77, 0xcc, 0x04, 0xaf, 0x1a, 0xec, 0x1b,
- 0x5f, 0x80, 0x99, 0x7d, 0xdb, 0xec, 0x7b, 0xc7, 0x8e, 0x8c, 0xb5, 0x34, 0xb1, 0xae, 0x87, 0x7d,
- 0x99, 0x10, 0xef, 0xc2, 0x8c, 0x4b, 0x7a, 0xa6, 0x65, 0x5b, 0xf6, 0x51, 0xeb, 0xf0, 0xcc, 0x27,
- 0x9e, 0xc8, 0xbb, 0x6b, 0x41, 0xf7, 0x23, 0xda, 0x4b, 0x45, 0x3b, 0xec, 0x3a, 0x87, 0xc2, 0xe3,
- 0xd9, 0x37, 0xfe, 0x8d, 0x06, 0x95, 0x0f, 0x4c, 0xbf, 0x2d, 0xad, 0x80, 0xb6, 0xa0, 0x16, 0xf8,
- 0x39, 0xeb, 0x11, 0xb2, 0xc4, 0x02, 0x3e, 0x9b, 0x23, 0x33, 0x32, 0x19, 0xf0, 0xab, 0x6d, 0xb5,
- 0x83, 0xb1, 0x32, 0xed, 0x36, 0xe9, 0x06, 0xac, 0x72, 0xe9, 0xac, 0x18, 0xa1, 0xca, 0x4a, 0xed,
- 0x78, 0x34, 0x13, 0x1e, 0x86, 0xdc, 0x2d, 0x7f, 0x9e, 0x03, 0x34, 0x2a, 0xc3, 0x57, 0xcd, 0x0f,
- 0x6e, 0x43, 0xcd, 0xf3, 0x4d, 0xd7, 0x6f, 0xc5, 0x6e, 0x25, 0x55, 0xd6, 0x1b, 0xc4, 0xaa, 0xbb,
- 0x30, 0xd3, 0x77, 0x9d, 0x23, 0x97, 0x78, 0x5e, 0xcb, 0x76, 0x7c, 0xeb, 0xc5, 0x99, 0x48, 0x8e,
- 0x6a, 0xb2, 0x7b, 0x97, 0xf5, 0xa2, 0x26, 0x14, 0x5f, 0x58, 0x5d, 0x9f, 0xb8, 0x5e, 0x63, 0x6a,
- 0x31, 0xbf, 0x54, 0x5b, 0x7d, 0x70, 0x9e, 0xd5, 0x96, 0xdf, 0x63, 0xf4, 0x07, 0x67, 0x7d, 0x62,
- 0xc8, 0xb9, 0x6a, 0xda, 0x52, 0x88, 0xa4, 0x2d, 0xb7, 0x01, 0x42, 0x7a, 0x1a, 0xb5, 0x76, 0xf7,
- 0x9e, 0x3e, 0x3b, 0xa8, 0x4f, 0xa0, 0x0a, 0x4c, 0xef, 0xee, 0x6d, 0x34, 0x77, 0x9a, 0x34, 0xae,
- 0xe1, 0x15, 0x69, 0x1b, 0xd5, 0x86, 0x68, 0x1e, 0xa6, 0x5f, 0xd2, 0x5e, 0x79, 0x6d, 0xcb, 0x1b,
- 0x45, 0xd6, 0xde, 0xea, 0xe0, 0xbf, 0x69, 0x50, 0x15, 0xbb, 0x20, 0xd3, 0x56, 0x54, 0x21, 0x72,
- 0x11, 0x08, 0x9a, 0x23, 0xf1, 0xdd, 0xd1, 0x11, 0xa9, 0x98, 0x6c, 0x52, 0x77, 0xe7, 0x8b, 0x4d,
- 0x3a, 0xc2, 0xac, 0x41, 0x1b, 0xdd, 0x83, 0x7a, 0x9b, 0xbb, 0x7b, 0xec, 0xd8, 0x31, 0x66, 0x44,
- 0x7f, 0xb0, 0x48, 0xb7, 0xa1, 0x40, 0x86, 0xc4, 0xf6, 0xbd, 0x46, 0x99, 0xc5, 0xa6, 0xaa, 0x4c,
- 0xb4, 0x9a, 0xb4, 0xd7, 0x10, 0x83, 0xf8, 0x7f, 0xe0, 0xc2, 0x0e, 0xcd, 0x74, 0x1f, 0xbb, 0xa6,
- 0xad, 0xe6, 0xcc, 0x07, 0x07, 0x3b, 0xc2, 0x2a, 0xf4, 0x13, 0xd5, 0x20, 0xb7, 0xb5, 0x21, 0x74,
- 0xc8, 0x6d, 0x6d, 0xe0, 0x4f, 0x35, 0x40, 0xea, 0xbc, 0x4c, 0x66, 0x8a, 0x31, 0x97, 0xf0, 0xf9,
- 0x10, 0x7e, 0x0e, 0xa6, 0x88, 0xeb, 0x3a, 0x2e, 0x33, 0x48, 0xc9, 0xe0, 0x0d, 0x7c, 0x4b, 0xc8,
- 0x60, 0x90, 0xa1, 0x73, 0x12, 0xec, 0x79, 0xce, 0x4d, 0x0b, 0x44, 0xdd, 0x86, 0xd9, 0x08, 0x55,
- 0xa6, 0x18, 0x79, 0x17, 0x2e, 0x32, 0x66, 0xdb, 0x84, 0xf4, 0xd7, 0xba, 0xd6, 0x30, 0x15, 0xb5,
- 0x0f, 0x97, 0xe2, 0x84, 0x5f, 0xaf, 0x8d, 0xf0, 0x3b, 0x02, 0xf1, 0xc0, 0xea, 0x91, 0x03, 0x67,
- 0x27, 0x5d, 0x36, 0x1a, 0xf8, 0xe8, 0x4d, 0x58, 0x1c, 0x26, 0xec, 0x1b, 0xff, 0x4a, 0x83, 0xcb,
- 0x23, 0xd3, 0xbf, 0xe6, 0x55, 0x5d, 0x00, 0x38, 0xa2, 0xdb, 0x87, 0x74, 0xe8, 0x00, 0xbf, 0xc3,
- 0x29, 0x3d, 0x81, 0x9c, 0x34, 0x76, 0x54, 0x84, 0x9c, 0xc7, 0x50, 0x78, 0xc2, 0xca, 0x27, 0x8a,
- 0x56, 0x93, 0x52, 0x2b, 0xdb, 0xec, 0xf1, 0x5b, 0x5d, 0xc9, 0x60, 0xdf, 0xec, 0xe8, 0x24, 0xc4,
- 0x7d, 0x66, 0xec, 0xf0, 0x23, 0xba, 0x64, 0x04, 0x6d, 0x8a, 0xde, 0xee, 0x5a, 0xc4, 0xf6, 0xd9,
- 0xe8, 0x24, 0x1b, 0x55, 0x7a, 0xf0, 0x32, 0xd4, 0x39, 0xd2, 0x5a, 0xa7, 0xa3, 0x1c, 0xd3, 0x01,
- 0x3f, 0x2d, 0xca, 0x0f, 0xbf, 0x84, 0x0b, 0x0a, 0x7d, 0x26, 0xd3, 0xbd, 0x06, 0x05, 0x5e, 0x23,
- 0x12, 0x27, 0xc4, 0x5c, 0x74, 0x16, 0x87, 0x31, 0x04, 0x0d, 0xbe, 0x0d, 0xb3, 0xa2, 0x87, 0xf4,
- 0x9c, 0xa4, 0x55, 0x67, 0xf6, 0xc1, 0x3b, 0x30, 0x17, 0x25, 0xcb, 0xe4, 0x08, 0x6b, 0x12, 0xf4,
- 0x59, 0xbf, 0xa3, 0x1c, 0x38, 0xf1, 0x45, 0x51, 0x0d, 0x96, 0x8b, 0x19, 0x2c, 0x10, 0x48, 0xb2,
- 0xc8, 0x24, 0xd0, 0xac, 0x34, 0xff, 0x8e, 0xe5, 0x05, 0x69, 0xc5, 0x27, 0x80, 0xd4, 0xce, 0x4c,
- 0x8b, 0xb2, 0x0c, 0x45, 0x6e, 0x70, 0x99, 0xb9, 0x26, 0xaf, 0x8a, 0x24, 0xa2, 0x02, 0x6d, 0x90,
- 0x17, 0xae, 0x79, 0xd4, 0x23, 0x41, 0x64, 0xa5, 0xf9, 0x9a, 0xda, 0x99, 0x49, 0xe3, 0x3f, 0x68,
- 0x50, 0x59, 0xeb, 0x9a, 0x6e, 0x4f, 0x1a, 0xff, 0x5d, 0x28, 0xf0, 0x44, 0x50, 0xdc, 0x9d, 0xee,
- 0x44, 0xd9, 0xa8, 0xb4, 0xbc, 0xb1, 0xc6, 0xd3, 0x46, 0x31, 0x8b, 0x2e, 0x96, 0x28, 0x4d, 0x6e,
- 0xc4, 0x4a, 0x95, 0x1b, 0xe8, 0x75, 0x98, 0x32, 0xe9, 0x14, 0xe6, 0xbf, 0xb5, 0x78, 0x0a, 0xce,
- 0xb8, 0xb1, 0x43, 0x9b, 0x53, 0xe1, 0xb7, 0xa1, 0xac, 0x20, 0xd0, 0x9b, 0xc5, 0xe3, 0xa6, 0x38,
- 0x98, 0xd7, 0xd6, 0x0f, 0xb6, 0x9e, 0xf3, 0x0b, 0x47, 0x0d, 0x60, 0xa3, 0x19, 0xb4, 0x73, 0xf8,
- 0x43, 0x31, 0x4b, 0x78, 0xb8, 0x2a, 0x8f, 0x96, 0x26, 0x4f, 0xee, 0x95, 0xe4, 0x39, 0x85, 0xaa,
- 0x50, 0x3f, 0xd3, 0x1e, 0x78, 0x13, 0x0a, 0x8c, 0x9f, 0xdc, 0x02, 0xf3, 0x09, 0xb0, 0xd2, 0x3b,
- 0x39, 0x21, 0x9e, 0x81, 0xea, 0xbe, 0x6f, 0xfa, 0x03, 0x4f, 0x6e, 0x81, 0xdf, 0x6b, 0x50, 0x93,
- 0x3d, 0x59, 0xcb, 0x2c, 0xf2, 0x7a, 0xca, 0x63, 0x5e, 0x70, 0x39, 0xbd, 0x04, 0x85, 0xce, 0xe1,
- 0xbe, 0xf5, 0x89, 0x2c, 0x66, 0x89, 0x16, 0xed, 0xef, 0x72, 0x1c, 0x5e, 0x50, 0x16, 0x2d, 0x7a,
- 0xd1, 0x71, 0xcd, 0x17, 0xfe, 0x96, 0xdd, 0x21, 0xa7, 0x2c, 0x9f, 0x98, 0x34, 0xc2, 0x0e, 0x76,
- 0x37, 0x11, 0x85, 0x67, 0x96, 0x7f, 0xa9, 0x85, 0xe8, 0x59, 0xb8, 0xb0, 0x36, 0xf0, 0x8f, 0x9b,
- 0xb6, 0x79, 0xd8, 0x95, 0x41, 0x00, 0xcf, 0x01, 0xa2, 0x9d, 0x1b, 0x96, 0xa7, 0xf6, 0x36, 0x61,
- 0x96, 0xf6, 0x12, 0xdb, 0xb7, 0xda, 0x4a, 0xc4, 0x90, 0x61, 0x5b, 0x8b, 0x85, 0x6d, 0xd3, 0xf3,
- 0x5e, 0x3a, 0x6e, 0x47, 0xa8, 0x16, 0xb4, 0xf1, 0x06, 0x67, 0xfe, 0xcc, 0x8b, 0x04, 0xe6, 0xaf,
- 0xca, 0x65, 0x29, 0xe4, 0xf2, 0x98, 0xf8, 0x63, 0xb8, 0xe0, 0x07, 0x70, 0x51, 0x52, 0x8a, 0xfa,
- 0xc5, 0x18, 0xe2, 0x3d, 0xb8, 0x26, 0x89, 0xd7, 0x8f, 0x69, 0x56, 0xfd, 0x54, 0x00, 0xfe, 0xa7,
- 0x72, 0x3e, 0x82, 0x46, 0x20, 0x27, 0xcb, 0xb4, 0x9c, 0xae, 0x2a, 0xc0, 0xc0, 0x13, 0x7b, 0xa6,
- 0x64, 0xb0, 0x6f, 0xda, 0xe7, 0x3a, 0xdd, 0xe0, 0x10, 0xa4, 0xdf, 0x78, 0x1d, 0xe6, 0x25, 0x0f,
- 0x91, 0x03, 0x45, 0x99, 0x8c, 0x08, 0x94, 0xc4, 0x44, 0x18, 0x8c, 0x4e, 0x1d, 0x6f, 0x76, 0x95,
- 0x32, 0x6a, 0x5a, 0xc6, 0x53, 0x53, 0x78, 0x5e, 0xe4, 0x3b, 0x82, 0x0a, 0xa6, 0x06, 0x6d, 0xd1,
- 0x4d, 0x19, 0xa8, 0xdd, 0x62, 0x21, 0x68, 0xf7, 0xc8, 0x42, 0x8c, 0xb0, 0xfe, 0x08, 0x16, 0x02,
- 0x21, 0xa8, 0xdd, 0x9e, 0x12, 0xb7, 0x67, 0x79, 0x9e, 0x72, 0xe3, 0x4e, 0x52, 0xfc, 0x0e, 0x4c,
- 0xf6, 0x89, 0x88, 0x29, 0xe5, 0x55, 0xb4, 0xcc, 0x9f, 0x87, 0x96, 0x95, 0xc9, 0x6c, 0x1c, 0x77,
- 0xe0, 0xba, 0xe4, 0xce, 0x2d, 0x9a, 0xc8, 0x3e, 0x2e, 0x94, 0xbc, 0x8d, 0x71, 0xb3, 0x8e, 0xde,
- 0xc6, 0xf2, 0x7c, 0xed, 0xe5, 0x6d, 0x8c, 0x9e, 0x15, 0xaa, 0x6f, 0x65, 0x3a, 0x2b, 0xb6, 0xb9,
- 0x4d, 0x03, 0x97, 0xcc, 0xc4, 0xec, 0x10, 0xe6, 0xa2, 0x9e, 0x9c, 0x29, 0x8c, 0xcd, 0xc1, 0x94,
- 0xef, 0x9c, 0x10, 0x19, 0xc4, 0x78, 0x43, 0x0a, 0x1c, 0xb8, 0x79, 0x26, 0x81, 0xcd, 0x90, 0x19,
- 0xdb, 0x92, 0x59, 0xe5, 0xa5, 0xab, 0x29, 0xf3, 0x19, 0xde, 0xc0, 0xbb, 0x70, 0x29, 0x1e, 0x26,
- 0x32, 0x89, 0xfc, 0x9c, 0x6f, 0xe0, 0xa4, 0x48, 0x92, 0x89, 0xef, 0xfb, 0x61, 0x30, 0x50, 0x02,
- 0x4a, 0x26, 0x96, 0x06, 0xe8, 0x49, 0xf1, 0xe5, 0xbf, 0xb1, 0x5f, 0x83, 0x70, 0x93, 0x89, 0x99,
- 0x17, 0x32, 0xcb, 0xbe, 0xfc, 0x61, 0x8c, 0xc8, 0x8f, 0x8d, 0x11, 0xc2, 0x49, 0xc2, 0x28, 0xf6,
- 0x35, 0x6c, 0x3a, 0x81, 0x11, 0x06, 0xd0, 0xac, 0x18, 0xf4, 0x0c, 0x09, 0x30, 0x58, 0x43, 0x6e,
- 0x6c, 0x35, 0xec, 0x66, 0x5a, 0x8c, 0x0f, 0xc2, 0xd8, 0x39, 0x12, 0x99, 0x33, 0x31, 0xfe, 0x10,
- 0x16, 0xd3, 0x83, 0x72, 0x16, 0xce, 0xf7, 0x31, 0x94, 0x82, 0x84, 0x52, 0x79, 0x5a, 0x2d, 0x43,
- 0x71, 0x77, 0x6f, 0xff, 0xe9, 0xda, 0x7a, 0xb3, 0xae, 0xad, 0xfe, 0x33, 0x0f, 0xb9, 0xed, 0xe7,
- 0xe8, 0x5b, 0x30, 0xc5, 0x1f, 0x5e, 0xc6, 0xbc, 0x4b, 0xe9, 0xe3, 0x9e, 0x70, 0xf0, 0xd5, 0x4f,
- 0xff, 0xf4, 0xd7, 0x2f, 0x72, 0x97, 0xf0, 0x85, 0x95, 0xe1, 0x5b, 0x66, 0xb7, 0x7f, 0x6c, 0xae,
- 0x9c, 0x0c, 0x57, 0xd8, 0x99, 0xf0, 0x50, 0xbb, 0x8f, 0x9e, 0x43, 0xfe, 0xe9, 0xc0, 0x47, 0xa9,
- 0x8f, 0x56, 0x7a, 0xfa, 0xd3, 0x0e, 0xd6, 0x19, 0xe7, 0x39, 0x3c, 0xa3, 0x72, 0xee, 0x0f, 0x7c,
- 0xca, 0x77, 0x08, 0x65, 0xe5, 0x75, 0x06, 0x9d, 0xfb, 0x9c, 0xa5, 0x9f, 0xff, 0xf2, 0x83, 0x31,
- 0xc3, 0xbb, 0x8a, 0x2f, 0xab, 0x78, 0xfc, 0x11, 0x49, 0xd5, 0xe7, 0xe0, 0xd4, 0x8e, 0xeb, 0x13,
- 0x3e, 0x30, 0xc4, 0xf5, 0x51, 0x8a, 0xfa, 0xc9, 0xfa, 0xf8, 0xa7, 0x36, 0xe5, 0xeb, 0x88, 0x17,
- 0xa5, 0xb6, 0x8f, 0xae, 0x27, 0xbc, 0x48, 0xa8, 0xb5, 0x77, 0x7d, 0x31, 0x9d, 0x40, 0x20, 0xdd,
- 0x60, 0x48, 0x57, 0xf0, 0x25, 0x15, 0xa9, 0x1d, 0xd0, 0x3d, 0xd4, 0xee, 0xaf, 0x1e, 0xc3, 0x14,
- 0xab, 0x18, 0xa2, 0x96, 0xfc, 0xd0, 0x13, 0x6a, 0x9d, 0x29, 0x3b, 0x20, 0x52, 0x6b, 0xc4, 0xf3,
- 0x0c, 0x6d, 0x16, 0xd7, 0x02, 0x34, 0x56, 0x34, 0x7c, 0xa8, 0xdd, 0x5f, 0xd2, 0xde, 0xd0, 0x56,
- 0xbf, 0x3f, 0x09, 0x53, 0xac, 0x52, 0x83, 0xfa, 0x00, 0x61, 0x0d, 0x2e, 0xae, 0xe7, 0x48, 0x55,
- 0x2f, 0xae, 0xe7, 0x68, 0xf9, 0x0e, 0x5f, 0x67, 0xc8, 0xf3, 0x78, 0x2e, 0x40, 0x66, 0xaf, 0xe0,
- 0x2b, 0xac, 0x26, 0x43, 0xcd, 0xfa, 0x12, 0xca, 0x4a, 0x2d, 0x0d, 0x25, 0x71, 0x8c, 0x14, 0xe3,
- 0xe2, 0xdb, 0x24, 0xa1, 0x10, 0x87, 0x6f, 0x32, 0xd0, 0x6b, 0xb8, 0xa1, 0x1a, 0x97, 0xe3, 0xba,
- 0x8c, 0x92, 0x02, 0x7f, 0xa6, 0x41, 0x2d, 0x5a, 0x4f, 0x43, 0x37, 0x13, 0x58, 0xc7, 0xcb, 0x72,
- 0xfa, 0xad, 0xf1, 0x44, 0xa9, 0x22, 0x70, 0xfc, 0x13, 0x42, 0xfa, 0x26, 0xa5, 0x14, 0xb6, 0x47,
- 0x3f, 0xd0, 0x60, 0x26, 0x56, 0x25, 0x43, 0x49, 0x10, 0x23, 0x35, 0x38, 0xfd, 0xf6, 0x39, 0x54,
- 0x42, 0x92, 0xbb, 0x4c, 0x92, 0x1b, 0xf8, 0xea, 0xa8, 0x31, 0x7c, 0xab, 0x47, 0x7c, 0x47, 0x48,
- 0xb3, 0xfa, 0xaf, 0x3c, 0x14, 0xd7, 0xf9, 0xaf, 0x8c, 0x90, 0x0f, 0xa5, 0xa0, 0xf2, 0x84, 0x16,
- 0x92, 0xaa, 0x12, 0x61, 0xca, 0xae, 0x5f, 0x4f, 0x1d, 0x17, 0x22, 0xdc, 0x61, 0x22, 0x2c, 0xe2,
- 0x2b, 0x81, 0x08, 0xe2, 0xd7, 0x4c, 0x2b, 0xfc, 0xf2, 0xbd, 0x62, 0x76, 0x3a, 0x74, 0x49, 0xbe,
- 0xa7, 0x41, 0x45, 0x2d, 0x28, 0xa1, 0x1b, 0x89, 0xf5, 0x10, 0xb5, 0x26, 0xa5, 0xe3, 0x71, 0x24,
- 0x02, 0xff, 0x1e, 0xc3, 0xbf, 0x89, 0x17, 0xd2, 0xf0, 0x5d, 0x46, 0x1f, 0x15, 0x81, 0x97, 0x90,
- 0x92, 0x45, 0x88, 0x54, 0xa8, 0x92, 0x45, 0x88, 0x56, 0xa0, 0xce, 0x17, 0x61, 0xc0, 0xe8, 0xa9,
- 0x08, 0xa7, 0x00, 0x61, 0x85, 0x09, 0x25, 0x1a, 0x57, 0xb9, 0xc4, 0xc4, 0x7d, 0x70, 0xb4, 0x38,
- 0x95, 0xb0, 0x03, 0x62, 0xd8, 0x5d, 0xcb, 0xa3, 0xbe, 0xb8, 0xfa, 0xdb, 0x49, 0x28, 0x3f, 0x31,
- 0x2d, 0xdb, 0x27, 0xb6, 0x69, 0xb7, 0x09, 0x3a, 0x82, 0x29, 0x76, 0x4a, 0xc5, 0x03, 0x8f, 0x5a,
- 0xf6, 0x89, 0x07, 0x9e, 0x48, 0x4d, 0x04, 0xdf, 0x66, 0xd0, 0xd7, 0xb1, 0x1e, 0x40, 0xf7, 0x42,
- 0xfe, 0x2b, 0xac, 0x9e, 0x41, 0x55, 0x3e, 0x81, 0x02, 0xaf, 0x5f, 0xa0, 0x18, 0xb7, 0x48, 0x9d,
- 0x43, 0xbf, 0x9a, 0x3c, 0x98, 0xba, 0xcb, 0x54, 0x2c, 0x8f, 0x11, 0x53, 0xb0, 0x6f, 0x03, 0x84,
- 0x05, 0xb3, 0xb8, 0x7d, 0x47, 0xea, 0x6b, 0xfa, 0x62, 0x3a, 0x81, 0x00, 0xbe, 0xcf, 0x80, 0x6f,
- 0xe1, 0xeb, 0x89, 0xc0, 0x9d, 0x60, 0x02, 0x05, 0x6f, 0xc3, 0xe4, 0xa6, 0xe9, 0x1d, 0xa3, 0xd8,
- 0x21, 0xa4, 0xbc, 0x92, 0xea, 0x7a, 0xd2, 0x90, 0x80, 0xba, 0xc5, 0xa0, 0x16, 0xf0, 0x7c, 0x22,
- 0xd4, 0xb1, 0xe9, 0xd1, 0x98, 0x8e, 0x06, 0x30, 0x2d, 0x5f, 0x3e, 0xd1, 0xb5, 0x98, 0xcd, 0xa2,
- 0xaf, 0xa4, 0xfa, 0x42, 0xda, 0xb0, 0x00, 0x5c, 0x62, 0x80, 0x18, 0x5f, 0x4b, 0x36, 0xaa, 0x20,
- 0x7f, 0xa8, 0xdd, 0x7f, 0x43, 0x5b, 0xfd, 0x51, 0x1d, 0x26, 0x69, 0xbe, 0x44, 0x4f, 0x91, 0xf0,
- 0x9a, 0x19, 0xb7, 0xf0, 0x48, 0x71, 0x27, 0x6e, 0xe1, 0xd1, 0x1b, 0x6a, 0xc2, 0x29, 0xc2, 0x7e,
- 0x6b, 0x49, 0x18, 0x15, 0xd5, 0xd8, 0x87, 0xb2, 0x72, 0x19, 0x45, 0x09, 0x1c, 0xa3, 0xa5, 0xa3,
- 0xf8, 0x29, 0x92, 0x70, 0x93, 0xc5, 0x8b, 0x0c, 0x54, 0xc7, 0x17, 0xa3, 0xa0, 0x1d, 0x4e, 0x46,
- 0x51, 0xbf, 0x03, 0x15, 0xf5, 0xd6, 0x8a, 0x12, 0x98, 0xc6, 0x6a, 0x53, 0xf1, 0x58, 0x91, 0x74,
- 0xe9, 0x4d, 0x70, 0x9a, 0xe0, 0x97, 0xa5, 0x92, 0x96, 0xa2, 0x7f, 0x0c, 0x45, 0x71, 0x97, 0x4d,
- 0xd2, 0x37, 0x5a, 0xcd, 0x4a, 0xd2, 0x37, 0x76, 0x11, 0x4e, 0x48, 0x49, 0x18, 0x2c, 0xcd, 0xd9,
- 0x65, 0x80, 0x16, 0x90, 0x8f, 0x89, 0x9f, 0x06, 0x19, 0xd6, 0x67, 0xd2, 0x20, 0x95, 0xfb, 0xd2,
- 0x58, 0xc8, 0x23, 0xe2, 0x8b, 0xbd, 0x2c, 0x2f, 0x23, 0x28, 0x85, 0xa3, 0x1a, 0x0d, 0xf1, 0x38,
- 0x92, 0xd4, 0x2c, 0x32, 0x44, 0x15, 0xa1, 0x10, 0x7d, 0x17, 0x20, 0xbc, 0x78, 0xc7, 0x13, 0x83,
- 0xc4, 0xea, 0x5d, 0x3c, 0x31, 0x48, 0xbe, 0xbb, 0x27, 0x78, 0x70, 0x08, 0xce, 0x33, 0x59, 0x0a,
- 0xff, 0x13, 0x0d, 0xd0, 0xe8, 0x45, 0x1d, 0x3d, 0x48, 0x86, 0x48, 0x2c, 0x0c, 0xea, 0xaf, 0xbd,
- 0x1a, 0x71, 0x6a, 0xf4, 0x0c, 0xe5, 0x6a, 0xb3, 0x29, 0xfd, 0x97, 0x54, 0xb2, 0xcf, 0x35, 0xa8,
- 0x46, 0xae, 0xfa, 0xe8, 0x4e, 0xca, 0x3a, 0xc7, 0x8a, 0x8b, 0xfa, 0xdd, 0x73, 0xe9, 0x52, 0x73,
- 0x27, 0x65, 0x57, 0xc8, 0xbc, 0xf1, 0x87, 0x1a, 0xd4, 0xa2, 0xf5, 0x01, 0x94, 0x02, 0x30, 0x52,
- 0xa1, 0xd4, 0x97, 0xce, 0x27, 0x7c, 0x85, 0xd5, 0x0a, 0x53, 0xc9, 0x8f, 0xa1, 0x28, 0xca, 0x0a,
- 0x49, 0x6e, 0x11, 0x2d, 0x70, 0x26, 0xb9, 0x45, 0xac, 0x26, 0x91, 0xe6, 0x16, 0xf4, 0x86, 0xae,
- 0x78, 0xa2, 0x28, 0x3e, 0xa4, 0x41, 0x8e, 0xf7, 0xc4, 0x58, 0xe5, 0x62, 0x2c, 0x64, 0xe8, 0x89,
- 0xb2, 0xf4, 0x80, 0x52, 0x38, 0x9e, 0xe3, 0x89, 0xf1, 0xca, 0x45, 0x9a, 0x27, 0x32, 0x54, 0xc5,
- 0x13, 0xc3, 0x4a, 0x41, 0x92, 0x27, 0x8e, 0x94, 0x6f, 0x93, 0x3c, 0x71, 0xb4, 0xd8, 0x90, 0xb6,
- 0xb6, 0x0c, 0x3c, 0xe2, 0x89, 0xb3, 0x09, 0x95, 0x05, 0xf4, 0x5a, 0x8a, 0x4d, 0x13, 0x4b, 0xc3,
- 0xfa, 0xeb, 0xaf, 0x48, 0x3d, 0xde, 0x03, 0xf8, 0x6a, 0x48, 0x0f, 0xf8, 0x85, 0x06, 0x73, 0x49,
- 0xa5, 0x09, 0x94, 0x02, 0x96, 0x52, 0x57, 0xd6, 0x97, 0x5f, 0x95, 0xfc, 0x15, 0xec, 0x16, 0xf8,
- 0xc4, 0xa3, 0xfa, 0xef, 0xbe, 0x5c, 0xd0, 0xfe, 0xf8, 0xe5, 0x82, 0xf6, 0xe7, 0x2f, 0x17, 0xb4,
- 0x9f, 0xfe, 0x65, 0x61, 0xe2, 0xb0, 0xc0, 0xfe, 0xc3, 0xc3, 0x5b, 0xff, 0x0e, 0x00, 0x00, 0xff,
- 0xff, 0x73, 0x7e, 0xb4, 0xb4, 0x77, 0x31, 0x00, 0x00,
+ // 3450 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xbc, 0x3b, 0x5b, 0x6f, 0x1b, 0xc7,
+ 0xb9, 0x5a, 0x5e, 0xc5, 0x8f, 0x17, 0xd1, 0x23, 0xd9, 0xa6, 0x68, 0x5b, 0x96, 0xc7, 0x37, 0xd9,
+ 0x4e, 0xa4, 0x44, 0xc9, 0x39, 0x0f, 0x3e, 0x41, 0x70, 0x64, 0x89, 0xb1, 0x74, 0x24, 0x4b, 0xce,
+ 0x4a, 0x76, 0x72, 0x80, 0xa0, 0xc4, 0x8a, 0x1c, 0x53, 0x0b, 0x91, 0xbb, 0xcc, 0xee, 0x92, 0x96,
+ 0xd2, 0x14, 0x28, 0xd2, 0x04, 0x45, 0x0b, 0xf4, 0xa5, 0x79, 0xe8, 0xed, 0xb1, 0x28, 0x8a, 0xfc,
+ 0x80, 0xbe, 0xf5, 0x07, 0x14, 0x7d, 0x69, 0x81, 0xfe, 0x81, 0x22, 0xed, 0x63, 0xdf, 0xfb, 0x54,
+ 0xb4, 0x98, 0xdb, 0xee, 0xec, 0x72, 0x97, 0x52, 0xca, 0x26, 0x2f, 0xd6, 0xce, 0x37, 0xdf, 0x7c,
+ 0xb7, 0x99, 0xef, 0x32, 0xdf, 0xd0, 0x50, 0x70, 0xfa, 0xad, 0xe5, 0xbe, 0x63, 0x7b, 0x36, 0x2a,
+ 0x11, 0xaf, 0xd5, 0x76, 0x89, 0x33, 0x24, 0x4e, 0xff, 0xb0, 0x3e, 0xd7, 0xb1, 0x3b, 0x36, 0x9b,
+ 0x58, 0xa1, 0x5f, 0x1c, 0xa7, 0x3e, 0x4f, 0x71, 0x56, 0x7a, 0xc3, 0x56, 0x8b, 0xfd, 0xd3, 0x3f,
+ 0x5c, 0x39, 0x1e, 0x8a, 0xa9, 0x2b, 0x6c, 0xca, 0x18, 0x78, 0x47, 0xec, 0x9f, 0xfe, 0x21, 0xfb,
+ 0x23, 0x26, 0xaf, 0x76, 0x6c, 0xbb, 0xd3, 0x25, 0x2b, 0x46, 0xdf, 0x5c, 0x31, 0x2c, 0xcb, 0xf6,
+ 0x0c, 0xcf, 0xb4, 0x2d, 0x97, 0xcf, 0xe2, 0xcf, 0x34, 0xa8, 0xe8, 0xc4, 0xed, 0xdb, 0x96, 0x4b,
+ 0x36, 0x89, 0xd1, 0x26, 0x0e, 0xba, 0x06, 0xd0, 0xea, 0x0e, 0x5c, 0x8f, 0x38, 0x4d, 0xb3, 0x5d,
+ 0xd3, 0x16, 0xb5, 0xa5, 0x8c, 0x5e, 0x10, 0x90, 0xad, 0x36, 0xba, 0x02, 0x85, 0x1e, 0xe9, 0x1d,
+ 0xf2, 0xd9, 0x14, 0x9b, 0x9d, 0xe6, 0x80, 0xad, 0x36, 0xaa, 0xc3, 0xb4, 0x43, 0x86, 0xa6, 0x6b,
+ 0xda, 0x56, 0x2d, 0xbd, 0xa8, 0x2d, 0xa5, 0x75, 0x7f, 0x4c, 0x17, 0x3a, 0xc6, 0x0b, 0xaf, 0xe9,
+ 0x11, 0xa7, 0x57, 0xcb, 0xf0, 0x85, 0x14, 0x70, 0x40, 0x9c, 0x1e, 0xfe, 0x34, 0x0b, 0x25, 0xdd,
+ 0xb0, 0x3a, 0x44, 0x27, 0x1f, 0x0e, 0x88, 0xeb, 0xa1, 0x2a, 0xa4, 0x8f, 0xc9, 0x29, 0x63, 0x5f,
+ 0xd2, 0xe9, 0x27, 0x5f, 0x6f, 0x75, 0x48, 0x93, 0x58, 0x9c, 0x71, 0x89, 0xae, 0xb7, 0x3a, 0xa4,
+ 0x61, 0xb5, 0xd1, 0x1c, 0x64, 0xbb, 0x66, 0xcf, 0xf4, 0x04, 0x57, 0x3e, 0x08, 0x89, 0x93, 0x89,
+ 0x88, 0xb3, 0x0e, 0xe0, 0xda, 0x8e, 0xd7, 0xb4, 0x9d, 0x36, 0x71, 0x6a, 0xd9, 0x45, 0x6d, 0xa9,
+ 0xb2, 0x7a, 0x6b, 0x59, 0xdd, 0x88, 0x65, 0x55, 0xa0, 0xe5, 0x7d, 0xdb, 0xf1, 0xf6, 0x28, 0xae,
+ 0x5e, 0x70, 0xe5, 0x27, 0x7a, 0x07, 0x8a, 0x8c, 0x88, 0x67, 0x38, 0x1d, 0xe2, 0xd5, 0x72, 0x8c,
+ 0xca, 0xed, 0x33, 0xa8, 0x1c, 0x30, 0x64, 0x9d, 0xb1, 0xe7, 0xdf, 0x08, 0x43, 0xc9, 0x25, 0x8e,
+ 0x69, 0x74, 0xcd, 0x8f, 0x8c, 0xc3, 0x2e, 0xa9, 0xe5, 0x17, 0xb5, 0xa5, 0x69, 0x3d, 0x04, 0xa3,
+ 0xfa, 0x1f, 0x93, 0x53, 0xb7, 0x69, 0x5b, 0xdd, 0xd3, 0xda, 0x34, 0x43, 0x98, 0xa6, 0x80, 0x3d,
+ 0xab, 0x7b, 0xca, 0x36, 0xcd, 0x1e, 0x58, 0x1e, 0x9f, 0x2d, 0xb0, 0xd9, 0x02, 0x83, 0xb0, 0xe9,
+ 0x25, 0xa8, 0xf6, 0x4c, 0xab, 0xd9, 0xb3, 0xdb, 0x4d, 0xdf, 0x20, 0xc0, 0x0c, 0x52, 0xe9, 0x99,
+ 0xd6, 0x13, 0xbb, 0xad, 0x4b, 0xb3, 0x50, 0x4c, 0xe3, 0x24, 0x8c, 0x59, 0x14, 0x98, 0xc6, 0x89,
+ 0x8a, 0xb9, 0x0c, 0xb3, 0x94, 0x66, 0xcb, 0x21, 0x86, 0x47, 0x02, 0xe4, 0x12, 0x43, 0xbe, 0xd0,
+ 0x33, 0xad, 0x75, 0x36, 0x13, 0xc2, 0x37, 0x4e, 0x46, 0xf0, 0xcb, 0x02, 0xdf, 0x38, 0x09, 0xe3,
+ 0xe3, 0x65, 0x28, 0xf8, 0x36, 0x47, 0xd3, 0x90, 0xd9, 0xdd, 0xdb, 0x6d, 0x54, 0xa7, 0x10, 0x40,
+ 0x6e, 0x6d, 0x7f, 0xbd, 0xb1, 0xbb, 0x51, 0xd5, 0x50, 0x11, 0xf2, 0x1b, 0x0d, 0x3e, 0x48, 0xe1,
+ 0x47, 0x00, 0x81, 0x75, 0x51, 0x1e, 0xd2, 0xdb, 0x8d, 0xff, 0xaf, 0x4e, 0x51, 0x9c, 0xe7, 0x0d,
+ 0x7d, 0x7f, 0x6b, 0x6f, 0xb7, 0xaa, 0xd1, 0xc5, 0xeb, 0x7a, 0x63, 0xed, 0xa0, 0x51, 0x4d, 0x51,
+ 0x8c, 0x27, 0x7b, 0x1b, 0xd5, 0x34, 0x2a, 0x40, 0xf6, 0xf9, 0xda, 0xce, 0xb3, 0x46, 0x35, 0x83,
+ 0x3f, 0xd7, 0xa0, 0x2c, 0xf6, 0x8b, 0xfb, 0x04, 0x7a, 0x13, 0x72, 0x47, 0xcc, 0x2f, 0xd8, 0x51,
+ 0x2c, 0xae, 0x5e, 0x8d, 0x6c, 0x6e, 0xc8, 0x77, 0x74, 0x81, 0x8b, 0x30, 0xa4, 0x8f, 0x87, 0x6e,
+ 0x2d, 0xb5, 0x98, 0x5e, 0x2a, 0xae, 0x56, 0x97, 0xb9, 0xc3, 0x2e, 0x6f, 0x93, 0xd3, 0xe7, 0x46,
+ 0x77, 0x40, 0x74, 0x3a, 0x89, 0x10, 0x64, 0x7a, 0xb6, 0x43, 0xd8, 0x89, 0x9d, 0xd6, 0xd9, 0x37,
+ 0x3d, 0xc6, 0x6c, 0xd3, 0xc4, 0x69, 0xe5, 0x03, 0xfc, 0x85, 0x06, 0xf0, 0x74, 0xe0, 0x25, 0xbb,
+ 0xc6, 0x1c, 0x64, 0x87, 0x94, 0xb0, 0x70, 0x0b, 0x3e, 0x60, 0x3e, 0x41, 0x0c, 0x97, 0xf8, 0x3e,
+ 0x41, 0x07, 0xe8, 0x32, 0xe4, 0xfb, 0x0e, 0x19, 0x36, 0x8f, 0x87, 0x8c, 0xc9, 0xb4, 0x9e, 0xa3,
+ 0xc3, 0xed, 0x21, 0xba, 0x01, 0x25, 0xb3, 0x63, 0xd9, 0x0e, 0x69, 0x72, 0x5a, 0x59, 0x36, 0x5b,
+ 0xe4, 0x30, 0x26, 0xb7, 0x82, 0xc2, 0x09, 0xe7, 0x54, 0x94, 0x1d, 0x0a, 0xc2, 0x16, 0x14, 0x99,
+ 0xa8, 0x13, 0x99, 0xef, 0x5e, 0x20, 0x63, 0x8a, 0x2d, 0x1b, 0x35, 0xa1, 0x90, 0x1a, 0x7f, 0x00,
+ 0x68, 0x83, 0x74, 0x89, 0x47, 0x26, 0x89, 0x1e, 0x8a, 0x4d, 0xd2, 0xaa, 0x4d, 0xf0, 0x8f, 0x35,
+ 0x98, 0x0d, 0x91, 0x9f, 0x48, 0xad, 0x1a, 0xe4, 0xdb, 0x8c, 0x18, 0x97, 0x20, 0xad, 0xcb, 0x21,
+ 0x7a, 0x00, 0xd3, 0x42, 0x00, 0xb7, 0x96, 0x4e, 0x38, 0x34, 0x79, 0x2e, 0x93, 0x8b, 0xff, 0xa6,
+ 0x41, 0x41, 0x28, 0xba, 0xd7, 0x47, 0x6b, 0x50, 0x76, 0xf8, 0xa0, 0xc9, 0xf4, 0x11, 0x12, 0xd5,
+ 0x93, 0x83, 0xd0, 0xe6, 0x94, 0x5e, 0x12, 0x4b, 0x18, 0x18, 0xfd, 0x0f, 0x14, 0x25, 0x89, 0xfe,
+ 0xc0, 0x13, 0x26, 0xaf, 0x85, 0x09, 0x04, 0xe7, 0x6f, 0x73, 0x4a, 0x07, 0x81, 0xfe, 0x74, 0xe0,
+ 0xa1, 0x03, 0x98, 0x93, 0x8b, 0xb9, 0x36, 0x42, 0x8c, 0x34, 0xa3, 0xb2, 0x18, 0xa6, 0x32, 0xba,
+ 0x55, 0x9b, 0x53, 0x3a, 0x12, 0xeb, 0x95, 0xc9, 0x47, 0x05, 0xc8, 0x0b, 0x28, 0xfe, 0xbb, 0x06,
+ 0x20, 0x0d, 0xba, 0xd7, 0x47, 0x1b, 0x50, 0x71, 0xc4, 0x28, 0xa4, 0xf0, 0x95, 0x58, 0x85, 0xc5,
+ 0x3e, 0x4c, 0xe9, 0x65, 0xb9, 0x88, 0xab, 0xfc, 0x36, 0x94, 0x7c, 0x2a, 0x81, 0xce, 0xf3, 0x31,
+ 0x3a, 0xfb, 0x14, 0x8a, 0x72, 0x01, 0xd5, 0xfa, 0x3d, 0xb8, 0xe8, 0xaf, 0x8f, 0x51, 0xfb, 0xc6,
+ 0x18, 0xb5, 0x7d, 0x82, 0xb3, 0x92, 0x82, 0xaa, 0x38, 0xd0, 0x94, 0xc5, 0xc1, 0xf8, 0x8b, 0x34,
+ 0xe4, 0xd7, 0xed, 0x5e, 0xdf, 0x70, 0xe8, 0x1e, 0xe5, 0x1c, 0xe2, 0x0e, 0xba, 0x1e, 0x53, 0xb7,
+ 0xb2, 0x7a, 0x33, 0xcc, 0x41, 0xa0, 0xc9, 0xbf, 0x3a, 0x43, 0xd5, 0xc5, 0x12, 0xba, 0x58, 0x64,
+ 0xa8, 0xd4, 0x39, 0x16, 0x8b, 0xfc, 0x24, 0x96, 0x48, 0x5f, 0x4a, 0x07, 0xbe, 0x54, 0x87, 0xfc,
+ 0x90, 0x38, 0x41, 0x56, 0xdd, 0x9c, 0xd2, 0x25, 0x00, 0xdd, 0x83, 0x99, 0x68, 0x84, 0xcf, 0x0a,
+ 0x9c, 0x4a, 0x2b, 0x9c, 0x10, 0x6e, 0x42, 0x29, 0x94, 0x66, 0x72, 0x02, 0xaf, 0xd8, 0x53, 0xb2,
+ 0xcc, 0x25, 0x19, 0xda, 0x68, 0x4a, 0x2c, 0x6d, 0x4e, 0x89, 0xe0, 0x86, 0xff, 0x17, 0xca, 0x21,
+ 0x5d, 0x69, 0x14, 0x6f, 0xbc, 0xfb, 0x6c, 0x6d, 0x87, 0x87, 0xfc, 0xc7, 0x2c, 0xca, 0xeb, 0x55,
+ 0x8d, 0x66, 0x8e, 0x9d, 0xc6, 0xfe, 0x7e, 0x35, 0x85, 0xca, 0x50, 0xd8, 0xdd, 0x3b, 0x68, 0x72,
+ 0xac, 0x34, 0x7e, 0xcb, 0xa7, 0x20, 0x52, 0x86, 0x92, 0x29, 0xa6, 0x94, 0x4c, 0xa1, 0xc9, 0x4c,
+ 0x91, 0x0a, 0x32, 0x45, 0xfa, 0x51, 0x05, 0x4a, 0xdc, 0x3e, 0xcd, 0x81, 0x45, 0xb3, 0xd5, 0x2f,
+ 0x35, 0x80, 0x83, 0x13, 0x4b, 0x06, 0xa0, 0x15, 0xc8, 0xb7, 0x38, 0xf1, 0x9a, 0xc6, 0xfc, 0xf9,
+ 0x62, 0xac, 0xc9, 0x75, 0x89, 0x85, 0x5e, 0x87, 0xbc, 0x3b, 0x68, 0xb5, 0x88, 0x2b, 0xb3, 0xc6,
+ 0xe5, 0x68, 0x48, 0x11, 0x0e, 0xaf, 0x4b, 0x3c, 0xba, 0xe4, 0x85, 0x61, 0x76, 0x07, 0x2c, 0x87,
+ 0x8c, 0x5f, 0x22, 0xf0, 0xf0, 0xcf, 0x34, 0x28, 0x32, 0x29, 0x27, 0x8a, 0x63, 0x57, 0xa1, 0xc0,
+ 0x64, 0x20, 0x6d, 0x11, 0xc9, 0xa6, 0xf5, 0x00, 0x80, 0xfe, 0x1b, 0x0a, 0xf2, 0x04, 0xcb, 0x60,
+ 0x56, 0x8b, 0x27, 0xbb, 0xd7, 0xd7, 0x03, 0x54, 0xbc, 0x0d, 0x17, 0x98, 0x55, 0x5a, 0xb4, 0x3e,
+ 0x95, 0x76, 0x54, 0x2b, 0x38, 0x2d, 0x52, 0xc1, 0xd5, 0x61, 0xba, 0x7f, 0x74, 0xea, 0x9a, 0x2d,
+ 0xa3, 0x2b, 0xa4, 0xf0, 0xc7, 0xf8, 0xff, 0x00, 0xa9, 0xc4, 0x26, 0x51, 0x17, 0x97, 0xa1, 0xb8,
+ 0x69, 0xb8, 0x47, 0x42, 0x24, 0xfc, 0x3e, 0x94, 0xf8, 0x70, 0x22, 0x1b, 0x22, 0xc8, 0x1c, 0x19,
+ 0xee, 0x11, 0x13, 0xbc, 0xac, 0xb3, 0x6f, 0x7c, 0x01, 0x66, 0xf6, 0x2d, 0xa3, 0xef, 0x1e, 0xd9,
+ 0x32, 0xd6, 0xd2, 0xfa, 0xbc, 0x1a, 0xc0, 0x26, 0xe2, 0x78, 0x17, 0x66, 0x1c, 0xd2, 0x33, 0x4c,
+ 0xcb, 0xb4, 0x3a, 0xcd, 0xc3, 0x53, 0x8f, 0xb8, 0xa2, 0x7c, 0xaf, 0xf8, 0xe0, 0x47, 0x14, 0x4a,
+ 0x45, 0x3b, 0xec, 0xda, 0x87, 0xc2, 0xe3, 0xd9, 0x37, 0xfe, 0x8d, 0x06, 0xa5, 0xf7, 0x0c, 0xaf,
+ 0x25, 0xad, 0x80, 0xb6, 0xa0, 0xe2, 0xfb, 0x39, 0x83, 0x08, 0x59, 0x22, 0x01, 0x9f, 0xad, 0x91,
+ 0x85, 0x9d, 0x0c, 0xf8, 0xe5, 0x96, 0x0a, 0x60, 0xa4, 0x0c, 0xab, 0x45, 0xba, 0x3e, 0xa9, 0x54,
+ 0x32, 0x29, 0x86, 0xa8, 0x92, 0x52, 0x01, 0x8f, 0x66, 0x82, 0x64, 0xc8, 0xdd, 0xf2, 0xe7, 0x29,
+ 0x40, 0xa3, 0x32, 0x7c, 0xd5, 0xfa, 0xe0, 0x36, 0x54, 0x5c, 0xcf, 0x70, 0xbc, 0x66, 0xe4, 0x72,
+ 0x53, 0x66, 0x50, 0x3f, 0x56, 0xdd, 0x85, 0x99, 0xbe, 0x63, 0x77, 0x1c, 0xe2, 0xba, 0x4d, 0xcb,
+ 0xf6, 0xcc, 0x17, 0xa7, 0xa2, 0xc4, 0xaa, 0x48, 0xf0, 0x2e, 0x83, 0xa2, 0x06, 0xe4, 0x5f, 0x98,
+ 0x5d, 0x8f, 0x38, 0x6e, 0x2d, 0xbb, 0x98, 0x5e, 0xaa, 0xac, 0x3e, 0x38, 0xcb, 0x6a, 0xcb, 0xef,
+ 0x30, 0xfc, 0x83, 0xd3, 0x3e, 0xd1, 0xe5, 0x5a, 0xb5, 0x6c, 0xc9, 0x85, 0xca, 0x96, 0xdb, 0x00,
+ 0x01, 0x3e, 0x8d, 0x5a, 0xbb, 0x7b, 0x4f, 0x9f, 0x1d, 0x54, 0xa7, 0x50, 0x09, 0xa6, 0x77, 0xf7,
+ 0x36, 0x1a, 0x3b, 0x0d, 0x1a, 0xd7, 0xf0, 0x8a, 0xb4, 0x8d, 0x6a, 0x43, 0x34, 0x0f, 0xd3, 0x2f,
+ 0x29, 0x54, 0xde, 0xfe, 0xd2, 0x7a, 0x9e, 0x8d, 0xb7, 0xda, 0xf8, 0x47, 0x29, 0x28, 0x8b, 0x53,
+ 0x30, 0xd1, 0x51, 0x54, 0x59, 0xa4, 0x42, 0x2c, 0x68, 0x8d, 0xc4, 0x4f, 0x47, 0x5b, 0x94, 0x62,
+ 0x72, 0x48, 0xdd, 0x9d, 0x6f, 0x36, 0x69, 0x0b, 0xb3, 0xfa, 0x63, 0x74, 0x0f, 0xaa, 0x2d, 0xee,
+ 0xee, 0x91, 0xb4, 0xa3, 0xcf, 0x08, 0xb8, 0x92, 0x75, 0xca, 0xfe, 0x69, 0x33, 0x5c, 0x91, 0x76,
+ 0x0a, 0x7a, 0x49, 0x1e, 0x24, 0x0a, 0x43, 0xb7, 0x21, 0x47, 0x86, 0xc4, 0xf2, 0xdc, 0x5a, 0x91,
+ 0x05, 0xb0, 0xb2, 0xac, 0xc6, 0x1a, 0x14, 0xaa, 0x8b, 0x49, 0xfc, 0x5f, 0x70, 0x81, 0x55, 0xbd,
+ 0x8f, 0x1d, 0xc3, 0x52, 0xcb, 0xf3, 0x83, 0x83, 0x1d, 0x61, 0x3a, 0xfa, 0x89, 0x2a, 0x90, 0xda,
+ 0xda, 0x10, 0x8a, 0xa6, 0xb6, 0x36, 0xf0, 0x27, 0x1a, 0x20, 0x75, 0xdd, 0x44, 0xb6, 0x8c, 0x10,
+ 0x97, 0xec, 0xd3, 0x01, 0xfb, 0x39, 0xc8, 0x12, 0xc7, 0xb1, 0x1d, 0x66, 0xb5, 0x82, 0xce, 0x07,
+ 0xf8, 0x96, 0x90, 0x41, 0x27, 0x43, 0xfb, 0xd8, 0x77, 0x0c, 0x4e, 0x4d, 0xf3, 0x45, 0xdd, 0x86,
+ 0xd9, 0x10, 0xd6, 0x44, 0x81, 0xf4, 0x2e, 0x5c, 0x64, 0xc4, 0xb6, 0x09, 0xe9, 0xaf, 0x75, 0xcd,
+ 0x61, 0x22, 0xd7, 0x3e, 0x5c, 0x8a, 0x22, 0x7e, 0xbd, 0x36, 0xc2, 0x6f, 0x09, 0x8e, 0x07, 0x66,
+ 0x8f, 0x1c, 0xd8, 0x3b, 0xc9, 0xb2, 0xd1, 0xe8, 0x48, 0x6f, 0xdd, 0x22, 0xe3, 0xb0, 0x6f, 0xfc,
+ 0x2b, 0x0d, 0x2e, 0x8f, 0x2c, 0xff, 0x9a, 0x77, 0x75, 0x01, 0xa0, 0x43, 0x8f, 0x0f, 0x69, 0xd3,
+ 0x09, 0x7e, 0x5f, 0x54, 0x20, 0xbe, 0x9c, 0x34, 0xc0, 0x94, 0x84, 0x9c, 0x47, 0x90, 0x7b, 0xc2,
+ 0x5a, 0x35, 0x8a, 0x56, 0x19, 0xa9, 0x95, 0x65, 0xf4, 0xf8, 0x05, 0xb2, 0xa0, 0xb3, 0x6f, 0x96,
+ 0x5f, 0x09, 0x71, 0x9e, 0xe9, 0x3b, 0x3c, 0x8f, 0x17, 0x74, 0x7f, 0x4c, 0xb9, 0xb7, 0xba, 0x26,
+ 0xb1, 0x3c, 0x36, 0x9b, 0x61, 0xb3, 0x0a, 0x04, 0x2f, 0x43, 0x95, 0x73, 0x5a, 0x6b, 0xb7, 0x95,
+ 0x5c, 0xee, 0xd3, 0xd3, 0xc2, 0xf4, 0xf0, 0xaf, 0x35, 0xb8, 0xa0, 0x2c, 0x98, 0xc8, 0x76, 0xaf,
+ 0x40, 0x8e, 0x37, 0xa4, 0x44, 0x1e, 0x99, 0x0b, 0xaf, 0xe2, 0x6c, 0x74, 0x81, 0x83, 0x96, 0x21,
+ 0xcf, 0xbf, 0x64, 0xb1, 0x12, 0x8f, 0x2e, 0x91, 0xf0, 0x6d, 0x98, 0x15, 0x20, 0xd2, 0xb3, 0xe3,
+ 0x8e, 0x09, 0x33, 0x28, 0xfe, 0x18, 0xe6, 0xc2, 0x68, 0x13, 0xa9, 0xa4, 0x08, 0x99, 0x3a, 0x8f,
+ 0x90, 0x6b, 0x52, 0xc8, 0x67, 0xfd, 0xb6, 0x92, 0xf6, 0xa2, 0xbb, 0xae, 0xee, 0x48, 0x2a, 0xb2,
+ 0x23, 0xbe, 0x02, 0x92, 0xc4, 0x37, 0xaa, 0xc0, 0xac, 0x3c, 0x0e, 0x3b, 0xa6, 0xeb, 0x17, 0x43,
+ 0x1f, 0x01, 0x52, 0x81, 0xdf, 0xb4, 0x40, 0x1b, 0xe4, 0x85, 0x63, 0x74, 0x7a, 0xc4, 0x0f, 0xf5,
+ 0xb4, 0xca, 0x54, 0x81, 0x13, 0x05, 0xc7, 0x3f, 0x68, 0x50, 0x5a, 0xeb, 0x1a, 0x4e, 0x4f, 0x6e,
+ 0xd6, 0xdb, 0x90, 0xe3, 0xe5, 0xab, 0xb8, 0xf1, 0xdd, 0x09, 0x93, 0x51, 0x71, 0xf9, 0x60, 0x8d,
+ 0x17, 0xbb, 0x62, 0x15, 0xdd, 0x5c, 0xd1, 0x97, 0xdd, 0x88, 0xf4, 0x69, 0x37, 0xd0, 0xab, 0x90,
+ 0x35, 0xe8, 0x12, 0x16, 0x50, 0x2a, 0xd1, 0x8b, 0x03, 0xa3, 0xc6, 0x4a, 0x0d, 0x8e, 0x85, 0xdf,
+ 0x84, 0xa2, 0xc2, 0x81, 0xde, 0x87, 0x1e, 0x37, 0x44, 0x39, 0xb1, 0xb6, 0x7e, 0xb0, 0xf5, 0x9c,
+ 0x5f, 0x93, 0x2a, 0x00, 0x1b, 0x0d, 0x7f, 0x9c, 0xc2, 0xef, 0x8b, 0x55, 0x22, 0xe4, 0xa8, 0xf2,
+ 0x68, 0x49, 0xf2, 0xa4, 0xce, 0x25, 0xcf, 0x09, 0x94, 0x85, 0xfa, 0x13, 0x9d, 0x81, 0xd7, 0x21,
+ 0xc7, 0xe8, 0xc9, 0x23, 0x30, 0x1f, 0xc3, 0x56, 0x46, 0x0b, 0x8e, 0x88, 0x67, 0xa0, 0xbc, 0xef,
+ 0x19, 0xde, 0xc0, 0x95, 0x47, 0xe0, 0xf7, 0x1a, 0x54, 0x24, 0x64, 0xd2, 0xe6, 0x90, 0xbc, 0x54,
+ 0xf3, 0x20, 0xec, 0x5f, 0xa9, 0x2f, 0x41, 0xae, 0x7d, 0xb8, 0x6f, 0x7e, 0x24, 0x1b, 0x79, 0x62,
+ 0x44, 0xe1, 0x5d, 0xce, 0x87, 0x77, 0xd3, 0xc5, 0x88, 0x5e, 0xcf, 0x1c, 0xe3, 0x85, 0xb7, 0x65,
+ 0xb5, 0xc9, 0x09, 0xab, 0x82, 0x32, 0x7a, 0x00, 0x60, 0x37, 0x2a, 0xd1, 0x75, 0x67, 0xa5, 0x8f,
+ 0xda, 0x85, 0x9f, 0x85, 0x0b, 0x6b, 0x03, 0xef, 0xa8, 0x61, 0x19, 0x87, 0x5d, 0x19, 0x34, 0xf0,
+ 0x1c, 0x20, 0x0a, 0xdc, 0x30, 0x5d, 0x15, 0xda, 0x80, 0x59, 0x0a, 0x25, 0x96, 0x67, 0xb6, 0x94,
+ 0x08, 0x23, 0xf3, 0x88, 0x16, 0xc9, 0x23, 0x86, 0xeb, 0xbe, 0xb4, 0x9d, 0xb6, 0x50, 0xcd, 0x1f,
+ 0xe3, 0x0d, 0x4e, 0xfc, 0x99, 0x1b, 0xca, 0x14, 0x5f, 0x95, 0xca, 0x52, 0x40, 0xe5, 0x31, 0xf1,
+ 0xc6, 0x50, 0xc1, 0x0f, 0xe0, 0xa2, 0xc4, 0x14, 0x5d, 0x97, 0x31, 0xc8, 0x7b, 0x70, 0x4d, 0x22,
+ 0xaf, 0x1f, 0xd1, 0xbb, 0xc0, 0x53, 0xc1, 0xf0, 0xdf, 0x95, 0xf3, 0x11, 0xd4, 0x7c, 0x39, 0x59,
+ 0xe9, 0x67, 0x77, 0x55, 0x01, 0x06, 0xae, 0x38, 0x33, 0x05, 0x9d, 0x7d, 0x53, 0x98, 0x63, 0x77,
+ 0xfd, 0xac, 0x4c, 0xbf, 0xf1, 0x3a, 0xcc, 0x4b, 0x1a, 0xa2, 0x28, 0x0b, 0x13, 0x19, 0x11, 0x28,
+ 0x8e, 0x88, 0x30, 0x18, 0x5d, 0x3a, 0xde, 0xec, 0x2a, 0x66, 0xd8, 0xb4, 0x8c, 0xa6, 0xa6, 0xd0,
+ 0xbc, 0xc8, 0x4f, 0x04, 0x15, 0x4c, 0x0d, 0xda, 0x02, 0x4c, 0x09, 0xa8, 0x60, 0xb1, 0x11, 0x14,
+ 0x3c, 0xb2, 0x11, 0x23, 0xa4, 0x3f, 0x80, 0x05, 0x5f, 0x08, 0x6a, 0xb7, 0xa7, 0xc4, 0xe9, 0x99,
+ 0xae, 0xab, 0xf4, 0x09, 0xe2, 0x14, 0xbf, 0x03, 0x99, 0x3e, 0x11, 0x31, 0xa5, 0xb8, 0x8a, 0x96,
+ 0xf9, 0xdb, 0xd8, 0xb2, 0xb2, 0x98, 0xcd, 0xe3, 0x36, 0x5c, 0x97, 0xd4, 0xb9, 0x45, 0x63, 0xc9,
+ 0x47, 0x85, 0x92, 0x77, 0x48, 0x6e, 0xd6, 0xd1, 0x3b, 0x64, 0x9a, 0xef, 0xbd, 0xbc, 0x43, 0xd2,
+ 0x5c, 0xa1, 0xfa, 0xd6, 0x44, 0xb9, 0x62, 0x9b, 0xdb, 0xd4, 0x77, 0xc9, 0x89, 0x88, 0x1d, 0xc2,
+ 0x5c, 0xd8, 0x93, 0x27, 0x0a, 0x63, 0x73, 0x90, 0xf5, 0xec, 0x63, 0x22, 0x83, 0x18, 0x1f, 0x48,
+ 0x81, 0x7d, 0x37, 0x9f, 0x48, 0x60, 0x23, 0x20, 0xc6, 0x8e, 0xe4, 0xa4, 0xf2, 0xd2, 0xdd, 0x94,
+ 0xf5, 0x0f, 0x1f, 0xe0, 0x5d, 0xb8, 0x14, 0x0d, 0x13, 0x13, 0x89, 0xfc, 0x9c, 0x1f, 0xe0, 0xb8,
+ 0x48, 0x32, 0x11, 0xdd, 0x77, 0x83, 0x60, 0xa0, 0x04, 0x94, 0x89, 0x48, 0xea, 0x50, 0x8f, 0x8b,
+ 0x2f, 0xff, 0x89, 0xf3, 0xea, 0x87, 0x9b, 0x89, 0x88, 0xb9, 0x01, 0xb1, 0xc9, 0xb7, 0x3f, 0x88,
+ 0x11, 0xe9, 0xb1, 0x31, 0x42, 0x38, 0x49, 0x10, 0xc5, 0xbe, 0x86, 0x43, 0x27, 0x78, 0x04, 0x01,
+ 0x74, 0x52, 0x1e, 0x34, 0x87, 0xf8, 0x3c, 0xd8, 0x40, 0x1e, 0x6c, 0x35, 0xec, 0x4e, 0xb4, 0x19,
+ 0xef, 0x05, 0xb1, 0x73, 0x24, 0x32, 0x4f, 0x44, 0xf8, 0x7d, 0x58, 0x4c, 0x0e, 0xca, 0x93, 0x50,
+ 0xbe, 0x8f, 0xa1, 0xe0, 0x17, 0x94, 0xca, 0xbb, 0x72, 0x11, 0xf2, 0xbb, 0x7b, 0xfb, 0x4f, 0xd7,
+ 0xd6, 0x1b, 0x55, 0x6d, 0xf5, 0x1f, 0x69, 0x48, 0x6d, 0x3f, 0x47, 0xdf, 0x82, 0x2c, 0x7f, 0x2e,
+ 0x1a, 0xf3, 0x9a, 0x56, 0x1f, 0xf7, 0xf0, 0x84, 0xaf, 0x7e, 0xf2, 0xa7, 0xbf, 0x7e, 0x9e, 0xba,
+ 0x84, 0x2f, 0xac, 0x0c, 0xdf, 0x30, 0xba, 0xfd, 0x23, 0x63, 0xe5, 0x78, 0xb8, 0xc2, 0x72, 0xc2,
+ 0x43, 0xed, 0x3e, 0x7a, 0x0e, 0xe9, 0xa7, 0x03, 0x0f, 0x25, 0x3e, 0xb5, 0xd5, 0x93, 0x1f, 0xa4,
+ 0x70, 0x9d, 0x51, 0x9e, 0xc3, 0x33, 0x2a, 0xe5, 0xfe, 0xc0, 0xa3, 0x74, 0x87, 0x50, 0x54, 0xde,
+ 0x94, 0xd0, 0x99, 0x8f, 0x70, 0xf5, 0xb3, 0xdf, 0xab, 0x30, 0x66, 0xfc, 0xae, 0xe2, 0xcb, 0x2a,
+ 0x3f, 0xfe, 0xf4, 0xa5, 0xea, 0x73, 0x70, 0x62, 0x45, 0xf5, 0x09, 0x9e, 0x45, 0xa2, 0xfa, 0x28,
+ 0x4f, 0x11, 0xf1, 0xfa, 0x78, 0x27, 0x16, 0xa5, 0x6b, 0x8b, 0x77, 0xb0, 0x96, 0x87, 0xae, 0xc7,
+ 0xbc, 0xa3, 0xa8, 0x2f, 0x06, 0xf5, 0xc5, 0x64, 0x04, 0xc1, 0xe9, 0x06, 0xe3, 0x74, 0x05, 0x5f,
+ 0x52, 0x39, 0xb5, 0x7c, 0xbc, 0x87, 0xda, 0xfd, 0xd5, 0x23, 0xc8, 0xb2, 0x3e, 0x27, 0x6a, 0xca,
+ 0x8f, 0x7a, 0x4c, 0x87, 0x36, 0xe1, 0x04, 0x84, 0x3a, 0xa4, 0x78, 0x9e, 0x71, 0x9b, 0xc5, 0x15,
+ 0x9f, 0x1b, 0x6b, 0x75, 0x3e, 0xd4, 0xee, 0x2f, 0x69, 0xaf, 0x69, 0xab, 0xdf, 0xcb, 0x40, 0x96,
+ 0xb5, 0x8e, 0x50, 0x1f, 0x20, 0x68, 0x0a, 0x46, 0xf5, 0x1c, 0x69, 0x33, 0x46, 0xf5, 0x1c, 0xed,
+ 0x27, 0xe2, 0xeb, 0x8c, 0xf3, 0x3c, 0x9e, 0xf3, 0x39, 0xb3, 0x57, 0xfb, 0x15, 0xd6, 0x24, 0xa2,
+ 0x66, 0x7d, 0x09, 0x45, 0xa5, 0xb9, 0x87, 0xe2, 0x28, 0x86, 0xba, 0x83, 0xd1, 0x63, 0x12, 0xd3,
+ 0x19, 0xc4, 0x37, 0x19, 0xd3, 0x6b, 0xb8, 0xa6, 0x1a, 0x97, 0xf3, 0x75, 0x18, 0x26, 0x65, 0xfc,
+ 0xa9, 0x06, 0x95, 0x70, 0x83, 0x0f, 0xdd, 0x8c, 0x21, 0x1d, 0xed, 0x13, 0xd6, 0x6f, 0x8d, 0x47,
+ 0x4a, 0x14, 0x81, 0xf3, 0x3f, 0x26, 0xa4, 0x6f, 0x50, 0x4c, 0x61, 0x7b, 0xf4, 0x7d, 0x0d, 0x66,
+ 0x22, 0x6d, 0x3b, 0x14, 0xc7, 0x62, 0xa4, 0x29, 0x58, 0xbf, 0x7d, 0x06, 0x96, 0x90, 0xe4, 0x2e,
+ 0x93, 0xe4, 0x06, 0xbe, 0x3a, 0x6a, 0x0c, 0xcf, 0xec, 0x11, 0xcf, 0x16, 0xd2, 0xac, 0xfe, 0x33,
+ 0x0d, 0xf9, 0x75, 0xfe, 0x13, 0x2b, 0xe4, 0x41, 0xc1, 0xef, 0x84, 0xa1, 0x85, 0xb8, 0xae, 0x44,
+ 0x50, 0xb2, 0xd7, 0xaf, 0x27, 0xce, 0x0b, 0x11, 0xee, 0x30, 0x11, 0x16, 0xf1, 0x15, 0x5f, 0x04,
+ 0xf1, 0x53, 0xae, 0x15, 0x7e, 0xf9, 0x5e, 0x31, 0xda, 0x6d, 0xba, 0x25, 0xdf, 0xd5, 0xa0, 0xa4,
+ 0x36, 0xac, 0xd0, 0x8d, 0xd8, 0x7e, 0x88, 0xda, 0xf3, 0xaa, 0xe3, 0x71, 0x28, 0x82, 0xff, 0x3d,
+ 0xc6, 0xff, 0x26, 0x5e, 0x48, 0xe2, 0xef, 0x30, 0xfc, 0xb0, 0x08, 0xbc, 0xe5, 0x14, 0x2f, 0x42,
+ 0xa8, 0xa3, 0x15, 0x2f, 0x42, 0xb8, 0x63, 0x75, 0xb6, 0x08, 0x03, 0x86, 0x4f, 0x45, 0x38, 0x01,
+ 0x08, 0x3a, 0x4c, 0x28, 0xd6, 0xb8, 0xca, 0x25, 0x26, 0xea, 0x83, 0xa3, 0xcd, 0xa9, 0x98, 0x13,
+ 0x10, 0xe1, 0xdd, 0x35, 0x5d, 0xea, 0x8b, 0xab, 0xbf, 0xcd, 0x40, 0xf1, 0x89, 0x61, 0x5a, 0x1e,
+ 0xb1, 0x0c, 0xab, 0x45, 0x50, 0x07, 0xb2, 0x2c, 0x4b, 0x45, 0x03, 0x8f, 0xda, 0xf6, 0x89, 0x06,
+ 0x9e, 0x50, 0x4f, 0x04, 0xdf, 0x66, 0xac, 0xaf, 0xe3, 0xba, 0xcf, 0xba, 0x17, 0xd0, 0x5f, 0x61,
+ 0xfd, 0x0c, 0xaa, 0xf2, 0x31, 0xe4, 0x78, 0xff, 0x02, 0x45, 0xa8, 0x85, 0xfa, 0x1c, 0xf5, 0xab,
+ 0xf1, 0x93, 0x89, 0xa7, 0x4c, 0xe5, 0xe5, 0x32, 0x64, 0xca, 0xec, 0xdb, 0x00, 0x41, 0xc3, 0x2c,
+ 0x6a, 0xdf, 0x91, 0xfe, 0x5a, 0x7d, 0x31, 0x19, 0x41, 0x30, 0xbe, 0xcf, 0x18, 0xdf, 0xc2, 0xd7,
+ 0x63, 0x19, 0xb7, 0xfd, 0x05, 0x94, 0x79, 0x0b, 0x32, 0x9b, 0x86, 0x7b, 0x84, 0x22, 0x49, 0x48,
+ 0x79, 0xdb, 0xad, 0xd7, 0xe3, 0xa6, 0x04, 0xab, 0x5b, 0x8c, 0xd5, 0x02, 0x9e, 0x8f, 0x65, 0x75,
+ 0x64, 0xb8, 0x34, 0xa6, 0xa3, 0x01, 0x4c, 0xcb, 0xf7, 0x5a, 0x74, 0x2d, 0x62, 0xb3, 0xf0, 0xdb,
+ 0x6e, 0x7d, 0x21, 0x69, 0x5a, 0x30, 0x5c, 0x62, 0x0c, 0x31, 0xbe, 0x16, 0x6f, 0x54, 0x81, 0xfe,
+ 0x50, 0xbb, 0xff, 0x9a, 0xb6, 0xfa, 0xc3, 0x2a, 0x64, 0x68, 0xbd, 0x44, 0xb3, 0x48, 0x70, 0xcd,
+ 0x8c, 0x5a, 0x78, 0xa4, 0xb9, 0x13, 0xb5, 0xf0, 0xe8, 0x0d, 0x35, 0x26, 0x8b, 0xb0, 0x1f, 0x9a,
+ 0x12, 0x86, 0x45, 0x35, 0xf6, 0xa0, 0xa8, 0x5c, 0x46, 0x51, 0x0c, 0xc5, 0x70, 0xeb, 0x28, 0x9a,
+ 0x45, 0x62, 0x6e, 0xb2, 0x78, 0x91, 0x31, 0xad, 0xe3, 0x8b, 0x61, 0xa6, 0x6d, 0x8e, 0x46, 0xb9,
+ 0x7e, 0x0c, 0x25, 0xf5, 0xd6, 0x8a, 0x62, 0x88, 0x46, 0x7a, 0x53, 0xd1, 0x58, 0x11, 0x77, 0xe9,
+ 0x8d, 0x71, 0x1a, 0xff, 0x67, 0xb5, 0x12, 0x97, 0x72, 0xff, 0x10, 0xf2, 0xe2, 0x2e, 0x1b, 0xa7,
+ 0x6f, 0xb8, 0x9b, 0x15, 0xa7, 0x6f, 0xe4, 0x22, 0x1c, 0x53, 0x92, 0x30, 0xb6, 0xb4, 0x66, 0x97,
+ 0x01, 0x5a, 0xb0, 0x7c, 0x4c, 0xbc, 0x24, 0x96, 0x41, 0x7f, 0x26, 0x89, 0xa5, 0x72, 0x5f, 0x1a,
+ 0xcb, 0xb2, 0x43, 0x3c, 0x71, 0x96, 0xe5, 0x65, 0x04, 0x25, 0x50, 0x54, 0xa3, 0x21, 0x1e, 0x87,
+ 0x92, 0x58, 0x45, 0x06, 0x5c, 0x45, 0x28, 0x44, 0xdf, 0x01, 0x08, 0x2e, 0xde, 0xd1, 0xc2, 0x20,
+ 0xb6, 0x7b, 0x17, 0x2d, 0x0c, 0xe2, 0xef, 0xee, 0x31, 0x1e, 0x1c, 0x30, 0xe7, 0x95, 0x2c, 0x65,
+ 0xff, 0x13, 0x0d, 0xd0, 0xe8, 0x45, 0x1d, 0x3d, 0x88, 0x67, 0x11, 0xdb, 0x18, 0xac, 0xbf, 0x72,
+ 0x3e, 0xe4, 0xc4, 0xe8, 0x19, 0xc8, 0xd5, 0x62, 0x4b, 0xfa, 0x2f, 0xa9, 0x64, 0x9f, 0x69, 0x50,
+ 0x0e, 0x5d, 0xf5, 0xd1, 0x9d, 0x84, 0x7d, 0x8e, 0x34, 0x17, 0xeb, 0x77, 0xcf, 0xc4, 0x4b, 0xac,
+ 0x9d, 0x94, 0x53, 0x21, 0xeb, 0xc6, 0x1f, 0x68, 0x50, 0x09, 0xf7, 0x07, 0x50, 0x02, 0x83, 0x91,
+ 0x0e, 0x65, 0x7d, 0xe9, 0x6c, 0xc4, 0x73, 0xec, 0x56, 0x50, 0x4a, 0x7e, 0x08, 0x79, 0xd1, 0x56,
+ 0x88, 0x73, 0x8b, 0x70, 0x83, 0x33, 0xce, 0x2d, 0x22, 0x3d, 0x89, 0x24, 0xb7, 0xa0, 0x37, 0x74,
+ 0xc5, 0x13, 0x45, 0xf3, 0x21, 0x89, 0xe5, 0x78, 0x4f, 0x8c, 0x74, 0x2e, 0xc6, 0xb2, 0x0c, 0x3c,
+ 0x51, 0xb6, 0x1e, 0x50, 0x02, 0xc5, 0x33, 0x3c, 0x31, 0xda, 0xb9, 0x48, 0xf2, 0x44, 0xc6, 0x55,
+ 0xf1, 0xc4, 0xa0, 0x53, 0x10, 0xe7, 0x89, 0x23, 0xed, 0xdb, 0x38, 0x4f, 0x1c, 0x6d, 0x36, 0x24,
+ 0xed, 0x2d, 0x63, 0x1e, 0xf2, 0xc4, 0xd9, 0x98, 0xce, 0x02, 0x7a, 0x25, 0xc1, 0xa6, 0xb1, 0xad,
+ 0xe1, 0xfa, 0xab, 0xe7, 0xc4, 0x1e, 0xef, 0x01, 0x7c, 0x37, 0xa4, 0x07, 0xfc, 0x42, 0x83, 0xb9,
+ 0xb8, 0xd6, 0x04, 0x4a, 0x60, 0x96, 0xd0, 0x57, 0xae, 0x2f, 0x9f, 0x17, 0xfd, 0x1c, 0x76, 0xf3,
+ 0x7d, 0xe2, 0x51, 0xf5, 0x77, 0x5f, 0x2e, 0x68, 0x7f, 0xfc, 0x72, 0x41, 0xfb, 0xf3, 0x97, 0x0b,
+ 0xda, 0x4f, 0xff, 0xb2, 0x30, 0x75, 0x98, 0x63, 0xff, 0xdb, 0xe3, 0x8d, 0x7f, 0x05, 0x00, 0x00,
+ 0xff, 0xff, 0x63, 0x1c, 0x78, 0x24, 0x74, 0x32, 0x00, 0x00,
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.proto b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.proto
index ddf1ad233299..a6cd00ab7c3e 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.proto
+++ b/vendor/github.com/coreos/etcd/etcdserver/etcdserverpb/rpc.proto
@@ -352,11 +352,12 @@ message RangeRequest {
bytes key = 1;
// range_end is the upper bound on the requested range [key, range_end).
// If range_end is '\0', the range is all keys >= key.
- // If the range_end is one bit larger than the given key,
- // then the range requests get the all keys with the prefix (the given key).
- // If both key and range_end are '\0', then range requests returns all keys.
+ // If range_end is key plus one (e.g., "aa"+1 == "ab", "a\xff"+1 == "b"),
+ // then the range request gets all keys prefixed with key.
+ // If both key and range_end are '\0', then the range request returns all keys.
bytes range_end = 2;
- // limit is a limit on the number of keys returned for the request.
+ // limit is a limit on the number of keys returned for the request. When limit is set to 0,
+ // it is treated as no limit.
int64 limit = 3;
// revision is the point-in-time of the key-value store to use for the range.
// If revision is less or equal to zero, the range is over the newest key-value store.
@@ -423,6 +424,14 @@ message PutRequest {
// If prev_kv is set, etcd gets the previous key-value pair before changing it.
// The previous key-value pair will be returned in the put response.
bool prev_kv = 4;
+
+ // If ignore_value is set, etcd updates the key using its current value.
+ // Returns an error if the key does not exist.
+ bool ignore_value = 5;
+
+ // If ignore_lease is set, etcd updates the key using its current lease.
+ // Returns an error if the key does not exist.
+ bool ignore_lease = 6;
}
message PutResponse {
@@ -436,13 +445,13 @@ message DeleteRangeRequest {
bytes key = 1;
// range_end is the key following the last key to delete for the range [key, range_end).
// If range_end is not given, the range is defined to contain only the key argument.
- // If range_end is one bit larger than the given key, then the range is all
- // the all keys with the prefix (the given key).
+ // If range_end is one bit larger than the given key, then the range is all the keys
+ // with the prefix (the given key).
// If range_end is '\0', the range is all keys greater than or equal to the key argument.
bytes range_end = 2;
// If prev_kv is set, etcd gets the previous key-value pairs before deleting it.
- // The previous key-value pairs will be returned in the delte response.
+ // The previous key-value pairs will be returned in the delete response.
bool prev_kv = 3;
}
@@ -645,6 +654,9 @@ message WatchResponse {
// watcher with the same start_revision again.
int64 compact_revision = 5;
+ // cancel_reason indicates the reason for canceling the watcher.
+ string cancel_reason = 6;
+
repeated mvccpb.Event events = 11;
}
@@ -725,6 +737,8 @@ message MemberAddResponse {
ResponseHeader header = 1;
// member is the member information for the added member.
Member member = 2;
+ // members is a list of all members after adding the new member.
+ repeated Member members = 3;
}
message MemberRemoveRequest {
@@ -734,6 +748,8 @@ message MemberRemoveRequest {
message MemberRemoveResponse {
ResponseHeader header = 1;
+ // members is a list of all members after removing the member.
+ repeated Member members = 2;
}
message MemberUpdateRequest {
@@ -745,6 +761,8 @@ message MemberUpdateRequest {
message MemberUpdateResponse{
ResponseHeader header = 1;
+ // members is a list of all members after updating the member.
+ repeated Member members = 2;
}
message MemberListRequest {
diff --git a/vendor/github.com/coreos/etcd/etcdserver/membership/cluster.go b/vendor/github.com/coreos/etcd/etcdserver/membership/cluster.go
index 25c45dfce126..2330219f18ae 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/membership/cluster.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/membership/cluster.go
@@ -178,7 +178,7 @@ func (c *RaftCluster) String() string {
fmt.Fprintf(b, "Members:[%s] ", strings.Join(ms, " "))
var ids []string
for id := range c.removed {
- ids = append(ids, fmt.Sprintf("%s", id))
+ ids = append(ids, id.String())
}
fmt.Fprintf(b, "RemovedMemberIDs:[%s]}", strings.Join(ids, " "))
return b.String()
diff --git a/vendor/github.com/coreos/etcd/etcdserver/membership/doc.go b/vendor/github.com/coreos/etcd/etcdserver/membership/doc.go
new file mode 100644
index 000000000000..b07fb2d92859
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/etcdserver/membership/doc.go
@@ -0,0 +1,16 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 membership describes individual etcd members and clusters of members.
+package membership
diff --git a/vendor/github.com/coreos/etcd/etcdserver/membership/store.go b/vendor/github.com/coreos/etcd/etcdserver/membership/store.go
index f2ea0120d74b..d3f8f2474a42 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/membership/store.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/membership/store.go
@@ -36,7 +36,7 @@ const (
var (
membersBucketName = []byte("members")
- membersRemovedBuckedName = []byte("members_removed")
+ membersRemovedBucketName = []byte("members_removed")
clusterBucketName = []byte("cluster")
StoreMembersPrefix = path.Join(storePrefix, "members")
@@ -62,7 +62,7 @@ func mustDeleteMemberFromBackend(be backend.Backend, id types.ID) {
tx := be.BatchTx()
tx.Lock()
tx.UnsafeDelete(membersBucketName, mkey)
- tx.UnsafePut(membersRemovedBuckedName, mkey, []byte("removed"))
+ tx.UnsafePut(membersRemovedBucketName, mkey, []byte("removed"))
tx.Unlock()
}
@@ -164,7 +164,7 @@ func mustCreateBackendBuckets(be backend.Backend) {
tx.Lock()
defer tx.Unlock()
tx.UnsafeCreateBucket(membersBucketName)
- tx.UnsafeCreateBucket(membersRemovedBuckedName)
+ tx.UnsafeCreateBucket(membersRemovedBucketName)
tx.UnsafeCreateBucket(clusterBucketName)
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/metrics.go b/vendor/github.com/coreos/etcd/etcdserver/metrics.go
index 2b549f738f7b..90bbd3632a6e 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/metrics.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/metrics.go
@@ -58,6 +58,12 @@ var (
Name: "proposals_failed_total",
Help: "The total number of failed proposals seen.",
})
+ leaseExpired = prometheus.NewCounter(prometheus.CounterOpts{
+ Namespace: "etcd_debugging",
+ Subsystem: "server",
+ Name: "lease_expired_total",
+ Help: "The total number of expired leases.",
+ })
)
func init() {
@@ -67,6 +73,7 @@ func init() {
prometheus.MustRegister(proposalsApplied)
prometheus.MustRegister(proposalsPending)
prometheus.MustRegister(proposalsFailed)
+ prometheus.MustRegister(leaseExpired)
}
func monitorFileDescriptor(done <-chan struct{}) {
diff --git a/vendor/github.com/coreos/etcd/etcdserver/quota.go b/vendor/github.com/coreos/etcd/etcdserver/quota.go
index 088a4696253d..87126f1564c1 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/quota.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/quota.go
@@ -16,7 +16,15 @@ package etcdserver
import (
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
- "github.com/coreos/etcd/mvcc/backend"
+)
+
+const (
+ // DefaultQuotaBytes is the number of bytes the backend Size may
+ // consume before exceeding the space quota.
+ DefaultQuotaBytes = int64(2 * 1024 * 1024 * 1024) // 2GB
+ // MaxQuotaBytes is the maximum number of bytes suggested for a backend
+ // quota. A larger quota may lead to degraded performance.
+ MaxQuotaBytes = int64(8 * 1024 * 1024 * 1024) // 8GB
)
// Quota represents an arbitrary quota against arbitrary requests. Each request
@@ -57,11 +65,10 @@ func NewBackendQuota(s *EtcdServer) Quota {
}
if s.Cfg.QuotaBackendBytes == 0 {
// use default size if no quota size given
- return &backendQuota{s, backend.DefaultQuotaBytes}
+ return &backendQuota{s, DefaultQuotaBytes}
}
- if s.Cfg.QuotaBackendBytes > backend.MaxQuotaBytes {
- plog.Warningf("backend quota %v exceeds maximum quota %v; using maximum", s.Cfg.QuotaBackendBytes, backend.MaxQuotaBytes)
- return &backendQuota{s, backend.MaxQuotaBytes}
+ if s.Cfg.QuotaBackendBytes > MaxQuotaBytes {
+ plog.Warningf("backend quota %v exceeds maximum recommended quota %v", s.Cfg.QuotaBackendBytes, MaxQuotaBytes)
}
return &backendQuota{s, s.Cfg.QuotaBackendBytes}
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/raft.go b/vendor/github.com/coreos/etcd/etcdserver/raft.go
index d7ec176eb3a7..dcb894f82fb1 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/raft.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/raft.go
@@ -83,7 +83,8 @@ type RaftTimer interface {
type apply struct {
entries []raftpb.Entry
snapshot raftpb.Snapshot
- raftDone <-chan struct{} // rx {} after raft has persisted messages
+ // notifyc synchronizes etcd server applies with the raft node
+ notifyc chan struct{}
}
type raftNode struct {
@@ -94,14 +95,7 @@ type raftNode struct {
term uint64
lead uint64
- mu sync.Mutex
- // last lead elected time
- lt time.Time
-
- // to check if msg receiver is removed from cluster
- isIDRemoved func(id uint64) bool
-
- raft.Node
+ raftNodeConfig
// a chan to send/receive snapshot
msgSnapC chan raftpb.Message
@@ -113,28 +107,51 @@ type raftNode struct {
readStateC chan raft.ReadState
// utility
- ticker <-chan time.Time
+ ticker *time.Ticker
// contention detectors for raft heartbeat message
- td *contention.TimeoutDetector
- heartbeat time.Duration // for logging
+ td *contention.TimeoutDetector
+
+ stopped chan struct{}
+ done chan struct{}
+}
+
+type raftNodeConfig struct {
+ // to check if msg receiver is removed from cluster
+ isIDRemoved func(id uint64) bool
+ raft.Node
raftStorage *raft.MemoryStorage
storage Storage
+ heartbeat time.Duration // for logging
// transport specifies the transport to send and receive msgs to members.
// Sending messages MUST NOT block. It is okay to drop messages, since
// clients should timeout and reissue their messages.
// If transport is nil, server will panic.
transport rafthttp.Transporter
+}
- stopped chan struct{}
- done chan struct{}
+func newRaftNode(cfg raftNodeConfig) *raftNode {
+ r := &raftNode{
+ raftNodeConfig: cfg,
+ // set up contention detectors for raft heartbeat message.
+ // expect to send a heartbeat within 2 heartbeat intervals.
+ td: contention.NewTimeoutDetector(2 * cfg.heartbeat),
+ readStateC: make(chan raft.ReadState, 1),
+ msgSnapC: make(chan raftpb.Message, maxInFlightMsgSnap),
+ applyc: make(chan apply),
+ stopped: make(chan struct{}),
+ done: make(chan struct{}),
+ }
+ if r.heartbeat == 0 {
+ r.ticker = &time.Ticker{}
+ } else {
+ r.ticker = time.NewTicker(r.heartbeat)
+ }
+ return r
}
// start prepares and starts raftNode in a new goroutine. It is no longer safe
// to modify the fields after it has been started.
func (r *raftNode) start(rh *raftReadyHandler) {
- r.applyc = make(chan apply)
- r.stopped = make(chan struct{})
- r.done = make(chan struct{})
internalTimeout := time.Second
go func() {
@@ -143,14 +160,12 @@ func (r *raftNode) start(rh *raftReadyHandler) {
for {
select {
- case <-r.ticker:
+ case <-r.ticker.C:
r.Tick()
case rd := <-r.Ready():
if rd.SoftState != nil {
- if lead := atomic.LoadUint64(&r.lead); rd.SoftState.Lead != raft.None && lead != rd.SoftState.Lead {
- r.mu.Lock()
- r.lt = time.Now()
- r.mu.Unlock()
+ newLeader := rd.SoftState.Lead != raft.None && atomic.LoadUint64(&r.lead) != rd.SoftState.Lead
+ if newLeader {
leaderChanges.Inc()
}
@@ -162,7 +177,8 @@ func (r *raftNode) start(rh *raftReadyHandler) {
atomic.StoreUint64(&r.lead, rd.SoftState.Lead)
islead = rd.RaftState == raft.StateLeader
- rh.updateLeadership()
+ rh.updateLeadership(newLeader)
+ r.td.Reset()
}
if len(rd.ReadStates) != 0 {
@@ -175,11 +191,11 @@ func (r *raftNode) start(rh *raftReadyHandler) {
}
}
- raftDone := make(chan struct{}, 1)
+ notifyc := make(chan struct{}, 1)
ap := apply{
entries: rd.CommittedEntries,
snapshot: rd.Snapshot,
- raftDone: raftDone,
+ notifyc: notifyc,
}
updateCommittedIndex(&ap, rh)
@@ -195,7 +211,7 @@ func (r *raftNode) start(rh *raftReadyHandler) {
// For more details, check raft thesis 10.2.1
if islead {
// gofail: var raftBeforeLeaderSend struct{}
- r.sendMessages(rd.Messages)
+ r.transport.Send(r.processMessages(rd.Messages))
}
// gofail: var raftBeforeSave struct{}
@@ -212,6 +228,9 @@ func (r *raftNode) start(rh *raftReadyHandler) {
if err := r.storage.SaveSnap(rd.Snapshot); err != nil {
plog.Fatalf("raft save snapshot error: %v", err)
}
+ // etcdserver now claim the snapshot has been persisted onto the disk
+ notifyc <- struct{}{}
+
// gofail: var raftAfterSaveSnap struct{}
r.raftStorage.ApplySnapshot(rd.Snapshot)
plog.Infof("raft applied incoming snapshot at index %d", rd.Snapshot.Metadata.Index)
@@ -221,10 +240,44 @@ func (r *raftNode) start(rh *raftReadyHandler) {
r.raftStorage.Append(rd.Entries)
if !islead {
+ // finish processing incoming messages before we signal raftdone chan
+ msgs := r.processMessages(rd.Messages)
+
+ // now unblocks 'applyAll' that waits on Raft log disk writes before triggering snapshots
+ notifyc <- struct{}{}
+
+ // Candidate or follower needs to wait for all pending configuration
+ // changes to be applied before sending messages.
+ // Otherwise we might incorrectly count votes (e.g. votes from removed members).
+ // Also slow machine's follower raft-layer could proceed to become the leader
+ // on its own single-node cluster, before apply-layer applies the config change.
+ // We simply wait for ALL pending entries to be applied for now.
+ // We might improve this later on if it causes unnecessary long blocking issues.
+ waitApply := false
+ for _, ent := range rd.CommittedEntries {
+ if ent.Type == raftpb.EntryConfChange {
+ waitApply = true
+ break
+ }
+ }
+ if waitApply {
+ // blocks until 'applyAll' calls 'applyWait.Trigger'
+ // to be in sync with scheduled config-change job
+ // (assume notifyc has cap of 1)
+ select {
+ case notifyc <- struct{}{}:
+ case <-r.stopped:
+ return
+ }
+ }
+
// gofail: var raftBeforeFollowerSend struct{}
- r.sendMessages(rd.Messages)
+ r.transport.Send(msgs)
+ } else {
+ // leader already processed 'MsgSnap' and signaled
+ notifyc <- struct{}{}
}
- raftDone <- struct{}{}
+
r.Advance()
case <-r.stopped:
return
@@ -246,7 +299,7 @@ func updateCommittedIndex(ap *apply, rh *raftReadyHandler) {
}
}
-func (r *raftNode) sendMessages(ms []raftpb.Message) {
+func (r *raftNode) processMessages(ms []raftpb.Message) []raftpb.Message {
sentAppResp := false
for i := len(ms) - 1; i >= 0; i-- {
if r.isIDRemoved(ms[i].To) {
@@ -282,20 +335,13 @@ func (r *raftNode) sendMessages(ms []raftpb.Message) {
}
}
}
-
- r.transport.Send(ms)
+ return ms
}
func (r *raftNode) apply() chan apply {
return r.applyc
}
-func (r *raftNode) leadElectedTime() time.Time {
- r.mu.Lock()
- defer r.mu.Unlock()
- return r.lt
-}
-
func (r *raftNode) stop() {
r.stopped <- struct{}{}
<-r.done
@@ -303,6 +349,7 @@ func (r *raftNode) stop() {
func (r *raftNode) onStop() {
r.Stop()
+ r.ticker.Stop()
r.transport.Stop()
if err := r.storage.Close(); err != nil {
plog.Panicf("raft close storage error: %v", err)
diff --git a/vendor/github.com/coreos/etcd/etcdserver/server.go b/vendor/github.com/coreos/etcd/etcdserver/server.go
index 0734f8c59249..271c5e773137 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/server.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/server.go
@@ -23,7 +23,6 @@ import (
"net/http"
"os"
"path"
- "path/filepath"
"regexp"
"sync"
"sync/atomic"
@@ -41,7 +40,6 @@ import (
"github.com/coreos/etcd/lease"
"github.com/coreos/etcd/mvcc"
"github.com/coreos/etcd/mvcc/backend"
- "github.com/coreos/etcd/pkg/contention"
"github.com/coreos/etcd/pkg/fileutil"
"github.com/coreos/etcd/pkg/idutil"
"github.com/coreos/etcd/pkg/pbutil"
@@ -62,7 +60,7 @@ import (
)
const (
- DefaultSnapCount = 10000
+ DefaultSnapCount = 100000
StoreClusterPrefix = "/0"
StoreKeysPrefix = "/1"
@@ -77,7 +75,6 @@ const (
// (since it will timeout).
monitorVersionInterval = rafthttp.ConnWriteTimeout - time.Second
- databaseFilename = "db"
// max number of in-flight snapshot messages etcdserver allows to have
// This number is more than enough for most clusters with 5 machines.
maxInFlightMsgSnap = 16
@@ -85,7 +82,8 @@ const (
releaseDelayAfterSnapshot = 30 * time.Second
// maxPendingRevokes is the maximum number of outstanding expired lease revocations.
- maxPendingRevokes = 16
+ maxPendingRevokes = 16
+ recommendedMaxRequestBytes = 10 * 1024 * 1024
)
var (
@@ -135,15 +133,15 @@ type Server interface {
// AddMember attempts to add a member into the cluster. It will return
// ErrIDRemoved if member ID is removed from the cluster, or return
// ErrIDExists if member ID exists in the cluster.
- AddMember(ctx context.Context, memb membership.Member) error
+ AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error)
// RemoveMember attempts to remove a member from the cluster. It will
// return ErrIDRemoved if member ID is removed from the cluster, or return
// ErrIDNotFound if member ID is not in the cluster.
- RemoveMember(ctx context.Context, id uint64) error
+ RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error)
// UpdateMember attempts to update an existing member in the cluster. It will
// return ErrIDNotFound if the member ID does not exist.
- UpdateMember(ctx context.Context, updateMemb membership.Member) error
+ UpdateMember(ctx context.Context, updateMemb membership.Member) ([]*membership.Member, error)
// ClusterVersion is the cluster-wide minimum major.minor version.
// Cluster version is set to the min version that an etcd member is
@@ -201,7 +199,8 @@ type EtcdServer struct {
cluster *membership.RaftCluster
- store store.Store
+ store store.Store
+ snapshotter *snap.Snapshotter
applyV2 ApplierV2
@@ -221,7 +220,7 @@ type EtcdServer struct {
stats *stats.ServerStats
lstats *stats.LeaderStats
- SyncTicker <-chan time.Time
+ SyncTicker *time.Ticker
// compactor is used to auto-compact the KV.
compactor *compactor.Periodic
@@ -238,6 +237,14 @@ type EtcdServer struct {
// wg is used to wait for the go routines that depends on the server state
// to exit when stopping the server.
wg sync.WaitGroup
+
+ // ctx is used for etcd-initiated requests that may need to be canceled
+ // on etcd server shutdown.
+ ctx context.Context
+ cancel context.CancelFunc
+
+ leadTimeMu sync.RWMutex
+ leadElectedTime time.Time
}
// NewServer creates a new EtcdServer from the supplied configuration. The
@@ -253,6 +260,10 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) {
cl *membership.RaftCluster
)
+ if cfg.MaxRequestBytes > recommendedMaxRequestBytes {
+ plog.Warningf("MaxRequestBytes %v exceeds maximum recommended size %v", cfg.MaxRequestBytes, recommendedMaxRequestBytes)
+ }
+
if terr := fileutil.TouchDirAll(cfg.DataDir); terr != nil {
return nil, fmt.Errorf("cannot access data directory: %v", terr)
}
@@ -264,23 +275,9 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) {
}
ss := snap.New(cfg.SnapDir())
- bepath := filepath.Join(cfg.SnapDir(), databaseFilename)
+ bepath := cfg.backendPath()
beExist := fileutil.Exist(bepath)
-
- var be backend.Backend
- beOpened := make(chan struct{})
- go func() {
- be = backend.NewDefaultBackend(bepath)
- beOpened <- struct{}{}
- }()
-
- select {
- case <-beOpened:
- case <-time.After(time.Second):
- plog.Warningf("another etcd process is running with the same data dir and holding the file lock.")
- plog.Warningf("waiting for it to exit before starting...")
- <-beOpened
- }
+ be := openBackend(cfg)
defer func() {
if err != nil {
@@ -378,6 +375,9 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) {
plog.Panicf("recovered store from snapshot error: %v", err)
}
plog.Infof("recovered store from snapshot at index %d", snapshot.Metadata.Index)
+ if be, err = recoverSnapshotBackend(cfg, be, *snapshot); err != nil {
+ plog.Panicf("recovering backend from snapshot error: %v", err)
+ }
}
cfg.Print()
if !cfg.ForceNewCluster {
@@ -400,39 +400,32 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) {
return nil, fmt.Errorf("cannot access member directory: %v", terr)
}
- sstats := &stats.ServerStats{
- Name: cfg.Name,
- ID: id.String(),
- }
- sstats.Initialize()
+ sstats := stats.NewServerStats(cfg.Name, id.String())
lstats := stats.NewLeaderStats(id.String())
heartbeat := time.Duration(cfg.TickMs) * time.Millisecond
srv = &EtcdServer{
- readych: make(chan struct{}),
- Cfg: cfg,
- snapCount: cfg.SnapCount,
- errorc: make(chan error, 1),
- store: st,
- r: raftNode{
- isIDRemoved: func(id uint64) bool { return cl.IsIDRemoved(types.ID(id)) },
- Node: n,
- ticker: time.Tick(heartbeat),
- // set up contention detectors for raft heartbeat message.
- // expect to send a heartbeat within 2 heartbeat intervals.
- td: contention.NewTimeoutDetector(2 * heartbeat),
- heartbeat: heartbeat,
- raftStorage: s,
- storage: NewStorage(w, ss),
- msgSnapC: make(chan raftpb.Message, maxInFlightMsgSnap),
- readStateC: make(chan raft.ReadState, 1),
- },
+ readych: make(chan struct{}),
+ Cfg: cfg,
+ snapCount: cfg.SnapCount,
+ errorc: make(chan error, 1),
+ store: st,
+ snapshotter: ss,
+ r: *newRaftNode(
+ raftNodeConfig{
+ isIDRemoved: func(id uint64) bool { return cl.IsIDRemoved(types.ID(id)) },
+ Node: n,
+ heartbeat: heartbeat,
+ raftStorage: s,
+ storage: NewStorage(w, ss),
+ },
+ ),
id: id,
attributes: membership.Attributes{Name: cfg.Name, ClientURLs: cfg.ClientURLs.StringSlice()},
cluster: cl,
stats: sstats,
lstats: lstats,
- SyncTicker: time.Tick(500 * time.Millisecond),
+ SyncTicker: time.NewTicker(500 * time.Millisecond),
peerRt: prt,
reqIDGen: idutil.NewGenerator(uint16(id), time.Now()),
forceVersionC: make(chan struct{}),
@@ -458,12 +451,26 @@ func NewServer(cfg *ServerConfig) (srv *EtcdServer, err error) {
plog.Warningf("consistent index never saved (snapshot index=%d)", snapshot.Metadata.Index)
}
}
- srv.consistIndex.setConsistentIndex(srv.kv.ConsistentIndex())
+ newSrv := srv // since srv == nil in defer if srv is returned as nil
+ defer func() {
+ // closing backend without first closing kv can cause
+ // resumed compactions to fail with closed tx errors
+ if err != nil {
+ newSrv.kv.Close()
+ }
+ }()
- srv.authStore = auth.NewAuthStore(srv.be,
+ srv.consistIndex.setConsistentIndex(srv.kv.ConsistentIndex())
+ tp, err := auth.NewTokenProvider(cfg.AuthToken,
func(index uint64) <-chan struct{} {
return srv.applyWait.Wait(index)
- })
+ },
+ )
+ if err != nil {
+ plog.Errorf("failed to create token provider: %s", err)
+ return nil, err
+ }
+ srv.authStore = auth.NewAuthStore(srv.be, tp)
if h := cfg.AutoCompactionRetention; h != 0 {
srv.compactor = compactor.NewPeriodic(h, srv.kv, srv)
srv.compactor.Run()
@@ -531,6 +538,7 @@ func (s *EtcdServer) start() {
s.done = make(chan struct{})
s.stop = make(chan struct{})
s.stopping = make(chan struct{})
+ s.ctx, s.cancel = context.WithCancel(context.Background())
s.readwaitc = make(chan struct{}, 1)
s.readNotifier = newNotifier()
if s.ClusterVersion() != nil {
@@ -603,16 +611,19 @@ type etcdProgress struct {
// and helps decouple state machine logic from Raft algorithms.
// TODO: add a state machine interface to apply the commit entries and do snapshot/recover
type raftReadyHandler struct {
- updateLeadership func()
+ updateLeadership func(newLeader bool)
updateCommittedIndex func(uint64)
}
func (s *EtcdServer) run() {
- snapshot, err := s.r.raftStorage.Snapshot()
+ sn, err := s.r.raftStorage.Snapshot()
if err != nil {
plog.Panicf("get snapshot from raft storage error: %v", err)
}
+ // asynchronously accept apply packets, dispatch progress in-order
+ sched := schedule.NewFIFOScheduler()
+
var (
smu sync.RWMutex
syncC <-chan time.Time
@@ -629,7 +640,7 @@ func (s *EtcdServer) run() {
return
}
rh := &raftReadyHandler{
- updateLeadership: func() {
+ updateLeadership: func(newLeader bool) {
if !s.isLeader() {
if s.lessor != nil {
s.lessor.Demote()
@@ -639,7 +650,13 @@ func (s *EtcdServer) run() {
}
setSyncC(nil)
} else {
- setSyncC(s.SyncTicker)
+ if newLeader {
+ t := time.Now()
+ s.leadTimeMu.Lock()
+ s.leadElectedTime = t
+ s.leadTimeMu.Unlock()
+ }
+ setSyncC(s.SyncTicker.C)
if s.compactor != nil {
s.compactor.Resume()
}
@@ -650,9 +667,6 @@ func (s *EtcdServer) run() {
if s.stats != nil {
s.stats.BecomeLeader()
}
- if s.r.td != nil {
- s.r.td.Reset()
- }
},
updateCommittedIndex: func(ci uint64) {
cci := s.getCommittedIndex()
@@ -663,25 +677,26 @@ func (s *EtcdServer) run() {
}
s.r.start(rh)
- // asynchronously accept apply packets, dispatch progress in-order
- sched := schedule.NewFIFOScheduler()
ep := etcdProgress{
- confState: snapshot.Metadata.ConfState,
- snapi: snapshot.Metadata.Index,
- appliedt: snapshot.Metadata.Term,
- appliedi: snapshot.Metadata.Index,
+ confState: sn.Metadata.ConfState,
+ snapi: sn.Metadata.Index,
+ appliedt: sn.Metadata.Term,
+ appliedi: sn.Metadata.Index,
}
defer func() {
s.wgMu.Lock() // block concurrent waitgroup adds in goAttach while stopping
close(s.stopping)
s.wgMu.Unlock()
+ s.cancel()
sched.Stop()
// wait for gouroutines before closing raft so wal stays open
s.wg.Wait()
+ s.SyncTicker.Stop()
+
// must stop raft after scheduler-- etcdserver can leak rafthttp pipelines
// by adding a peer after raft stops the transport
s.r.stop()
@@ -728,7 +743,8 @@ func (s *EtcdServer) run() {
}
lid := lease.ID
s.goAttach(func() {
- s.LeaseRevoke(context.TODO(), &pb.LeaseRevokeRequest{ID: int64(lid)})
+ s.LeaseRevoke(s.ctx, &pb.LeaseRevokeRequest{ID: int64(lid)})
+ leaseExpired.Inc()
<-c
})
}
@@ -762,7 +778,7 @@ func (s *EtcdServer) applyAll(ep *etcdProgress, apply *apply) {
// wait for the raft routine to finish the disk writes before triggering a
// snapshot. or applied index might be greater than the last index in raft
// storage, since the raft routine might be slower than apply routine.
- <-apply.raftDone
+ <-apply.notifyc
s.triggerSnapshot(ep)
select {
@@ -787,23 +803,19 @@ func (s *EtcdServer) applySnapshot(ep *etcdProgress, apply *apply) {
apply.snapshot.Metadata.Index, ep.appliedi)
}
- snapfn, err := s.r.storage.DBFilePath(apply.snapshot.Metadata.Index)
- if err != nil {
- plog.Panicf("get database snapshot file path error: %v", err)
- }
+ // wait for raftNode to persist snapshot onto the disk
+ <-apply.notifyc
- fn := filepath.Join(s.Cfg.SnapDir(), databaseFilename)
- if err := os.Rename(snapfn, fn); err != nil {
- plog.Panicf("rename snapshot file error: %v", err)
+ newbe, err := openSnapshotBackend(s.Cfg, s.snapshotter, apply.snapshot)
+ if err != nil {
+ plog.Panic(err)
}
- newbe := backend.NewDefaultBackend(fn)
-
// always recover lessor before kv. When we recover the mvcc.KV it will reattach keys to its leases.
// If we recover mvcc.KV first, it will attach the keys to the wrong lessor before it recovers.
if s.lessor != nil {
plog.Info("recovering lessor...")
- s.lessor.Recover(newbe, s.kv)
+ s.lessor.Recover(newbe, func() lease.TxnDelete { return s.kv.Write() })
plog.Info("finished recovering lessor")
}
@@ -955,7 +967,7 @@ func (s *EtcdServer) TransferLeadership() error {
}
tm := s.Cfg.ReqTimeout()
- ctx, cancel := context.WithTimeout(context.TODO(), tm)
+ ctx, cancel := context.WithTimeout(s.ctx, tm)
err := s.transferLeadership(ctx, s.Lead(), uint64(transferee))
cancel()
return err
@@ -1015,7 +1027,7 @@ func (s *EtcdServer) StoreStats() []byte { return s.store.JsonStats() }
func (s *EtcdServer) checkMembershipOperationPermission(ctx context.Context) error {
if s.authStore == nil {
- // In the context of ordinal etcd process, s.authStore will never be nil.
+ // In the context of ordinary etcd process, s.authStore will never be nil.
// This branch is for handling cases in server_test.go
return nil
}
@@ -1026,7 +1038,7 @@ func (s *EtcdServer) checkMembershipOperationPermission(ctx context.Context) err
// in the state machine layer
// However, both of membership change and role management requires the root privilege.
// So careful operation by admins can prevent the problem.
- authInfo, err := s.AuthStore().AuthInfoFromCtx(ctx)
+ authInfo, err := s.AuthInfoFromCtx(ctx)
if err != nil {
return err
}
@@ -1034,27 +1046,27 @@ func (s *EtcdServer) checkMembershipOperationPermission(ctx context.Context) err
return s.AuthStore().IsAdminPermitted(authInfo)
}
-func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) error {
+func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error) {
if err := s.checkMembershipOperationPermission(ctx); err != nil {
- return err
+ return nil, err
}
if s.Cfg.StrictReconfigCheck {
// by default StrictReconfigCheck is enabled; reject new members if unhealthy
if !s.cluster.IsReadyToAddNewMember() {
plog.Warningf("not enough started members, rejecting member add %+v", memb)
- return ErrNotEnoughStartedMembers
+ return nil, ErrNotEnoughStartedMembers
}
if !isConnectedFullySince(s.r.transport, time.Now().Add(-HealthInterval), s.ID(), s.cluster.Members()) {
plog.Warningf("not healthy for reconfigure, rejecting member add %+v", memb)
- return ErrUnhealthy
+ return nil, ErrUnhealthy
}
}
// TODO: move Member to protobuf type
b, err := json.Marshal(memb)
if err != nil {
- return err
+ return nil, err
}
cc := raftpb.ConfChange{
Type: raftpb.ConfChangeAddNode,
@@ -1064,14 +1076,14 @@ func (s *EtcdServer) AddMember(ctx context.Context, memb membership.Member) erro
return s.configure(ctx, cc)
}
-func (s *EtcdServer) RemoveMember(ctx context.Context, id uint64) error {
+func (s *EtcdServer) RemoveMember(ctx context.Context, id uint64) ([]*membership.Member, error) {
if err := s.checkMembershipOperationPermission(ctx); err != nil {
- return err
+ return nil, err
}
// by default StrictReconfigCheck is enabled; reject removal if leads to quorum loss
if err := s.mayRemoveMember(types.ID(id)); err != nil {
- return err
+ return nil, err
}
cc := raftpb.ConfChange{
@@ -1107,14 +1119,14 @@ func (s *EtcdServer) mayRemoveMember(id types.ID) error {
return nil
}
-func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) error {
+func (s *EtcdServer) UpdateMember(ctx context.Context, memb membership.Member) ([]*membership.Member, error) {
b, merr := json.Marshal(memb)
if merr != nil {
- return merr
+ return nil, merr
}
if err := s.checkMembershipOperationPermission(ctx); err != nil {
- return err
+ return nil, err
}
cc := raftpb.ConfChange{
Type: raftpb.ConfChangeUpdateNode,
@@ -1137,31 +1149,34 @@ func (s *EtcdServer) Lead() uint64 { return atomic.LoadUint64(&s.r.lead) }
func (s *EtcdServer) Leader() types.ID { return types.ID(s.Lead()) }
+type confChangeResponse struct {
+ membs []*membership.Member
+ err error
+}
+
// configure sends a configuration change through consensus and
// then waits for it to be applied to the server. It
// will block until the change is performed or there is an error.
-func (s *EtcdServer) configure(ctx context.Context, cc raftpb.ConfChange) error {
+func (s *EtcdServer) configure(ctx context.Context, cc raftpb.ConfChange) ([]*membership.Member, error) {
cc.ID = s.reqIDGen.Next()
ch := s.w.Register(cc.ID)
start := time.Now()
if err := s.r.ProposeConfChange(ctx, cc); err != nil {
s.w.Trigger(cc.ID, nil)
- return err
+ return nil, err
}
select {
case x := <-ch:
- if err, ok := x.(error); ok {
- return err
- }
- if x != nil {
- plog.Panicf("return type should always be error")
+ if x == nil {
+ plog.Panicf("configure trigger value should never be nil")
}
- return nil
+ resp := x.(*confChangeResponse)
+ return resp.membs, resp.err
case <-ctx.Done():
s.w.Trigger(cc.ID, nil) // GC wait
- return s.parseProposeCtxErr(ctx.Err(), start)
+ return nil, s.parseProposeCtxErr(ctx.Err(), start)
case <-s.stopping:
- return ErrStopped
+ return nil, ErrStopped
}
}
@@ -1169,7 +1184,6 @@ func (s *EtcdServer) configure(ctx context.Context, cc raftpb.ConfChange) error
// This makes no guarantee that the request will be proposed or performed.
// The request will be canceled after the given timeout.
func (s *EtcdServer) sync(timeout time.Duration) {
- ctx, cancel := context.WithTimeout(context.Background(), timeout)
req := pb.Request{
Method: "SYNC",
ID: s.reqIDGen.Next(),
@@ -1178,6 +1192,7 @@ func (s *EtcdServer) sync(timeout time.Duration) {
data := pbutil.MustMarshal(&req)
// There is no promise that node has leader when do SYNC request,
// so it uses goroutine to propose.
+ ctx, cancel := context.WithTimeout(s.ctx, timeout)
s.goAttach(func() {
s.r.Propose(ctx, data)
cancel()
@@ -1202,7 +1217,7 @@ func (s *EtcdServer) publish(timeout time.Duration) {
}
for {
- ctx, cancel := context.WithTimeout(context.Background(), timeout)
+ ctx, cancel := context.WithTimeout(s.ctx, timeout)
_, err := s.Do(ctx, req)
cancel()
switch err {
@@ -1262,7 +1277,7 @@ func (s *EtcdServer) apply(es []raftpb.Entry, confState *raftpb.ConfState) (appl
removedSelf, err := s.applyConfChange(cc, confState)
s.setAppliedIndex(e.Index)
shouldStop = shouldStop || removedSelf
- s.w.Trigger(cc.ID, err)
+ s.w.Trigger(cc.ID, &confChangeResponse{s.cluster.Members(), err})
default:
plog.Panicf("entry type should be either EntryNormal or EntryConfChange")
}
@@ -1347,8 +1362,7 @@ func (s *EtcdServer) applyEntryNormal(e *raftpb.Entry) {
Action: pb.AlarmRequest_ACTIVATE,
Alarm: pb.AlarmType_NOSPACE,
}
- r := pb.InternalRaftRequest{Alarm: a}
- s.processInternalRaftRequest(context.TODO(), r)
+ s.raftRequest(s.ctx, pb.InternalRaftRequest{Alarm: a})
s.w.Trigger(id, ar)
})
}
@@ -1544,7 +1558,7 @@ func (s *EtcdServer) updateClusterVersion(ver string) {
Path: membership.StoreClusterVersionKey(),
Val: ver,
}
- ctx, cancel := context.WithTimeout(context.Background(), s.Cfg.ReqTimeout())
+ ctx, cancel := context.WithTimeout(s.ctx, s.Cfg.ReqTimeout())
_, err := s.Do(ctx, req)
cancel()
switch err {
@@ -1563,7 +1577,9 @@ func (s *EtcdServer) parseProposeCtxErr(err error, start time.Time) error {
case context.Canceled:
return ErrCanceled
case context.DeadlineExceeded:
- curLeadElected := s.r.leadElectedTime()
+ s.leadTimeMu.RLock()
+ curLeadElected := s.leadElectedTime
+ s.leadTimeMu.RUnlock()
prevLeadLost := curLeadElected.Add(-2 * time.Duration(s.Cfg.ElectionTicks) * time.Duration(s.Cfg.TickMs) * time.Millisecond)
if start.After(prevLeadLost) && start.Before(curLeadElected) {
return ErrTimeoutDueToLeaderFail
diff --git a/vendor/github.com/coreos/etcd/etcdserver/snapshot_merge.go b/vendor/github.com/coreos/etcd/etcdserver/snapshot_merge.go
index 9cfc852168bd..928aa95b6b16 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/snapshot_merge.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/snapshot_merge.go
@@ -60,9 +60,14 @@ func newSnapshotReaderCloser(snapshot backend.Snapshot) io.ReadCloser {
n, err := snapshot.WriteTo(pw)
if err == nil {
plog.Infof("wrote database snapshot out [total bytes: %d]", n)
+ } else {
+ plog.Warningf("failed to write database snapshot out [written bytes: %d]: %v", n, err)
}
pw.CloseWithError(err)
- snapshot.Close()
+ err = snapshot.Close()
+ if err != nil {
+ plog.Panicf("failed to close database snapshot: %v", err)
+ }
}()
return pr
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/stats/leader.go b/vendor/github.com/coreos/etcd/etcdserver/stats/leader.go
index 1bed85474e32..8f6a54ff751a 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/stats/leader.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/stats/leader.go
@@ -24,25 +24,30 @@ import (
// LeaderStats is used by the leader in an etcd cluster, and encapsulates
// statistics about communication with its followers
type LeaderStats struct {
+ leaderStats
+ sync.Mutex
+}
+
+type leaderStats struct {
// Leader is the ID of the leader in the etcd cluster.
// TODO(jonboulle): clarify that these are IDs, not names
Leader string `json:"leader"`
Followers map[string]*FollowerStats `json:"followers"`
-
- sync.Mutex
}
// NewLeaderStats generates a new LeaderStats with the given id as leader
func NewLeaderStats(id string) *LeaderStats {
return &LeaderStats{
- Leader: id,
- Followers: make(map[string]*FollowerStats),
+ leaderStats: leaderStats{
+ Leader: id,
+ Followers: make(map[string]*FollowerStats),
+ },
}
}
func (ls *LeaderStats) JSON() []byte {
ls.Lock()
- stats := *ls
+ stats := ls.leaderStats
ls.Unlock()
b, err := json.Marshal(stats)
// TODO(jonboulle): appropriate error handling?
diff --git a/vendor/github.com/coreos/etcd/etcdserver/stats/server.go b/vendor/github.com/coreos/etcd/etcdserver/stats/server.go
index cd450e2d1999..0278e885cf99 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/stats/server.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/stats/server.go
@@ -26,6 +26,26 @@ import (
// ServerStats encapsulates various statistics about an EtcdServer and its
// communication with other members of the cluster
type ServerStats struct {
+ serverStats
+ sync.Mutex
+}
+
+func NewServerStats(name, id string) *ServerStats {
+ ss := &ServerStats{
+ serverStats: serverStats{
+ Name: name,
+ ID: id,
+ },
+ }
+ now := time.Now()
+ ss.StartTime = now
+ ss.LeaderInfo.StartTime = now
+ ss.sendRateQueue = &statsQueue{back: -1}
+ ss.recvRateQueue = &statsQueue{back: -1}
+ return ss
+}
+
+type serverStats struct {
Name string `json:"name"`
// ID is the raft ID of the node.
// TODO(jonboulle): use ID instead of name?
@@ -49,17 +69,15 @@ type ServerStats struct {
sendRateQueue *statsQueue
recvRateQueue *statsQueue
-
- sync.Mutex
}
func (ss *ServerStats) JSON() []byte {
ss.Lock()
- stats := *ss
+ stats := ss.serverStats
ss.Unlock()
stats.LeaderInfo.Uptime = time.Since(stats.LeaderInfo.StartTime).String()
- stats.SendingPkgRate, stats.SendingBandwidthRate = stats.SendRates()
- stats.RecvingPkgRate, stats.RecvingBandwidthRate = stats.RecvRates()
+ stats.SendingPkgRate, stats.SendingBandwidthRate = stats.sendRateQueue.Rate()
+ stats.RecvingPkgRate, stats.RecvingBandwidthRate = stats.recvRateQueue.Rate()
b, err := json.Marshal(stats)
// TODO(jonboulle): appropriate error handling?
if err != nil {
@@ -68,32 +86,6 @@ func (ss *ServerStats) JSON() []byte {
return b
}
-// Initialize clears the statistics of ServerStats and resets its start time
-func (ss *ServerStats) Initialize() {
- if ss == nil {
- return
- }
- now := time.Now()
- ss.StartTime = now
- ss.LeaderInfo.StartTime = now
- ss.sendRateQueue = &statsQueue{
- back: -1,
- }
- ss.recvRateQueue = &statsQueue{
- back: -1,
- }
-}
-
-// RecvRates calculates and returns the rate of received append requests
-func (ss *ServerStats) RecvRates() (float64, float64) {
- return ss.recvRateQueue.Rate()
-}
-
-// SendRates calculates and returns the rate of sent append requests
-func (ss *ServerStats) SendRates() (float64, float64) {
- return ss.sendRateQueue.Rate()
-}
-
// RecvAppendReq updates the ServerStats in response to an AppendRequest
// from the given leader being received
func (ss *ServerStats) RecvAppendReq(leader string, reqSize int) {
diff --git a/vendor/github.com/coreos/etcd/etcdserver/storage.go b/vendor/github.com/coreos/etcd/etcdserver/storage.go
index 693618fbd51c..aa8f87569dbe 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/storage.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/storage.go
@@ -32,9 +32,6 @@ type Storage interface {
Save(st raftpb.HardState, ents []raftpb.Entry) error
// SaveSnap function saves snapshot to the underlying stable storage.
SaveSnap(snap raftpb.Snapshot) error
- // DBFilePath returns the file path of database snapshot saved with given
- // id.
- DBFilePath(id uint64) (string, error)
// Close closes the Storage and performs finalization.
Close() error
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/util.go b/vendor/github.com/coreos/etcd/etcdserver/util.go
index 66084ae12446..e3896ffc2d3d 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/util.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/util.go
@@ -87,7 +87,7 @@ type notifier struct {
func newNotifier() *notifier {
return ¬ifier{
- c: make(chan struct{}, 0),
+ c: make(chan struct{}),
}
}
diff --git a/vendor/github.com/coreos/etcd/etcdserver/v3_server.go b/vendor/github.com/coreos/etcd/etcdserver/v3_server.go
index 60653cb6dff4..ae449bbf22ff 100644
--- a/vendor/github.com/coreos/etcd/etcdserver/v3_server.go
+++ b/vendor/github.com/coreos/etcd/etcdserver/v3_server.go
@@ -19,6 +19,8 @@ import (
"encoding/binary"
"time"
+ "github.com/gogo/protobuf/proto"
+
"github.com/coreos/etcd/auth"
pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
"github.com/coreos/etcd/etcdserver/membership"
@@ -27,17 +29,10 @@ import (
"github.com/coreos/etcd/mvcc"
"github.com/coreos/etcd/raft"
- "github.com/coreos/go-semver/semver"
"golang.org/x/net/context"
)
const (
- // the max request size that raft accepts.
- // TODO: make this a flag? But we probably do not want to
- // accept large request which might block raft stream. User
- // specify a large value might end up with shooting in the foot.
- maxRequestBytes = 1.5 * 1024 * 1024
-
// In the health case, there might be a small gap (10s of entries) between
// the applied index and committed index.
// However, if the committed entries are very heavy to apply, the gap might grow.
@@ -45,10 +40,6 @@ const (
maxGapBetweenApplyAndCommitIndex = 5000
)
-var (
- newRangeClusterVersion = *semver.Must(semver.NewVersion("3.1.0"))
-)
-
type RaftKV interface {
Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error)
Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error)
@@ -91,11 +82,6 @@ type Authenticator interface {
}
func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) {
- // TODO: remove this checking when we release etcd 3.2
- if s.ClusterVersion() == nil || s.ClusterVersion().LessThan(newRangeClusterVersion) {
- return s.legacyRange(ctx, r)
- }
-
if !r.Serializable {
err := s.linearizableReadNotify(ctx)
if err != nil {
@@ -107,65 +93,30 @@ func (s *EtcdServer) Range(ctx context.Context, r *pb.RangeRequest) (*pb.RangeRe
chk := func(ai *auth.AuthInfo) error {
return s.authStore.IsRangePermitted(ai, r.Key, r.RangeEnd)
}
- get := func() { resp, err = s.applyV3Base.Range(noTxn, r) }
+ get := func() { resp, err = s.applyV3Base.Range(nil, r) }
if serr := s.doSerialize(ctx, chk, get); serr != nil {
return nil, serr
}
return resp, err
}
-// TODO: remove this func when we release etcd 3.2
-func (s *EtcdServer) legacyRange(ctx context.Context, r *pb.RangeRequest) (*pb.RangeResponse, error) {
- if r.Serializable {
- var resp *pb.RangeResponse
- var err error
- chk := func(ai *auth.AuthInfo) error {
- return s.authStore.IsRangePermitted(ai, r.Key, r.RangeEnd)
- }
- get := func() { resp, err = s.applyV3Base.Range(noTxn, r) }
- if serr := s.doSerialize(ctx, chk, get); serr != nil {
- return nil, serr
- }
- return resp, err
- }
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{Range: r})
- if err != nil {
- return nil, err
- }
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.RangeResponse), nil
-}
-
func (s *EtcdServer) Put(ctx context.Context, r *pb.PutRequest) (*pb.PutResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{Put: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Put: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.PutResponse), nil
+ return resp.(*pb.PutResponse), nil
}
func (s *EtcdServer) DeleteRange(ctx context.Context, r *pb.DeleteRangeRequest) (*pb.DeleteRangeResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{DeleteRange: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{DeleteRange: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.DeleteRangeResponse), nil
+ return resp.(*pb.DeleteRangeResponse), nil
}
func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) {
- // TODO: remove this checking when we release etcd 3.2
- if s.ClusterVersion() == nil || s.ClusterVersion().LessThan(newRangeClusterVersion) {
- return s.legacyTxn(ctx, r)
- }
-
if isTxnReadonly(r) {
if !isTxnSerializable(r) {
err := s.linearizableReadNotify(ctx)
@@ -184,38 +135,11 @@ func (s *EtcdServer) Txn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse
}
return resp, err
}
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{Txn: r})
- if err != nil {
- return nil, err
- }
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.TxnResponse), nil
-}
-
-// TODO: remove this func when we release etcd 3.2
-func (s *EtcdServer) legacyTxn(ctx context.Context, r *pb.TxnRequest) (*pb.TxnResponse, error) {
- if isTxnSerializable(r) {
- var resp *pb.TxnResponse
- var err error
- chk := func(ai *auth.AuthInfo) error {
- return checkTxnAuth(s.authStore, ai, r)
- }
- get := func() { resp, err = s.applyV3Base.Txn(r) }
- if serr := s.doSerialize(ctx, chk, get); serr != nil {
- return nil, serr
- }
- return resp, err
- }
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{Txn: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{Txn: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.TxnResponse), nil
+ return resp.(*pb.TxnResponse), nil
}
func isTxnSerializable(r *pb.TxnRequest) bool {
@@ -280,25 +204,19 @@ func (s *EtcdServer) LeaseGrant(ctx context.Context, r *pb.LeaseGrantRequest) (*
// only use positive int64 id's
r.ID = int64(s.reqIDGen.Next() & ((1 << 63) - 1))
}
- result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{LeaseGrant: r})
+ resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{LeaseGrant: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.LeaseGrantResponse), nil
+ return resp.(*pb.LeaseGrantResponse), nil
}
func (s *EtcdServer) LeaseRevoke(ctx context.Context, r *pb.LeaseRevokeRequest) (*pb.LeaseRevokeResponse, error) {
- result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{LeaseRevoke: r})
+ resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{LeaseRevoke: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.LeaseRevokeResponse), nil
+ return resp.(*pb.LeaseRevokeResponse), nil
}
func (s *EtcdServer) LeaseRenew(ctx context.Context, id lease.LeaseID) (int64, error) {
@@ -394,54 +312,45 @@ func (s *EtcdServer) waitLeader(ctx context.Context) (*membership.Member, error)
}
func (s *EtcdServer) Alarm(ctx context.Context, r *pb.AlarmRequest) (*pb.AlarmResponse, error) {
- result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{Alarm: r})
+ resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{Alarm: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AlarmResponse), nil
+ return resp.(*pb.AlarmResponse), nil
}
func (s *EtcdServer) AuthEnable(ctx context.Context, r *pb.AuthEnableRequest) (*pb.AuthEnableResponse, error) {
- result, err := s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{AuthEnable: r})
+ resp, err := s.raftRequestOnce(ctx, pb.InternalRaftRequest{AuthEnable: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthEnableResponse), nil
+ return resp.(*pb.AuthEnableResponse), nil
}
func (s *EtcdServer) AuthDisable(ctx context.Context, r *pb.AuthDisableRequest) (*pb.AuthDisableResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthDisable: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthDisable: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthDisableResponse), nil
+ return resp.(*pb.AuthDisableResponse), nil
}
func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest) (*pb.AuthenticateResponse, error) {
- var result *applyResult
-
- err := s.linearizableReadNotify(ctx)
- if err != nil {
+ if err := s.linearizableReadNotify(ctx); err != nil {
return nil, err
}
+ var resp proto.Message
for {
checkedRevision, err := s.AuthStore().CheckPassword(r.Name, r.Password)
if err != nil {
- plog.Errorf("invalid authentication request to user %s was issued", r.Name)
+ if err != auth.ErrAuthNotEnabled {
+ plog.Errorf("invalid authentication request to user %s was issued", r.Name)
+ }
return nil, err
}
- st, err := s.AuthStore().GenSimpleToken()
+ st, err := s.AuthStore().GenTokenPrefix()
if err != nil {
return nil, err
}
@@ -452,172 +361,147 @@ func (s *EtcdServer) Authenticate(ctx context.Context, r *pb.AuthenticateRequest
SimpleToken: st,
}
- result, err = s.processInternalRaftRequestOnce(ctx, pb.InternalRaftRequest{Authenticate: internalReq})
+ resp, err = s.raftRequestOnce(ctx, pb.InternalRaftRequest{Authenticate: internalReq})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
-
- if checkedRevision != s.AuthStore().Revision() {
- plog.Infof("revision when password checked is obsolete, retrying")
- continue
+ if checkedRevision == s.AuthStore().Revision() {
+ break
}
-
- break
+ plog.Infof("revision when password checked is obsolete, retrying")
}
- return result.resp.(*pb.AuthenticateResponse), nil
+ return resp.(*pb.AuthenticateResponse), nil
}
func (s *EtcdServer) UserAdd(ctx context.Context, r *pb.AuthUserAddRequest) (*pb.AuthUserAddResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserAdd: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserAdd: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthUserAddResponse), nil
+ return resp.(*pb.AuthUserAddResponse), nil
}
func (s *EtcdServer) UserDelete(ctx context.Context, r *pb.AuthUserDeleteRequest) (*pb.AuthUserDeleteResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserDelete: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserDelete: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthUserDeleteResponse), nil
+ return resp.(*pb.AuthUserDeleteResponse), nil
}
func (s *EtcdServer) UserChangePassword(ctx context.Context, r *pb.AuthUserChangePasswordRequest) (*pb.AuthUserChangePasswordResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserChangePassword: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserChangePassword: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthUserChangePasswordResponse), nil
+ return resp.(*pb.AuthUserChangePasswordResponse), nil
}
func (s *EtcdServer) UserGrantRole(ctx context.Context, r *pb.AuthUserGrantRoleRequest) (*pb.AuthUserGrantRoleResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserGrantRole: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserGrantRole: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthUserGrantRoleResponse), nil
+ return resp.(*pb.AuthUserGrantRoleResponse), nil
}
func (s *EtcdServer) UserGet(ctx context.Context, r *pb.AuthUserGetRequest) (*pb.AuthUserGetResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserGet: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserGet: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthUserGetResponse), nil
+ return resp.(*pb.AuthUserGetResponse), nil
}
func (s *EtcdServer) UserList(ctx context.Context, r *pb.AuthUserListRequest) (*pb.AuthUserListResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserList: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserList: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthUserListResponse), nil
+ return resp.(*pb.AuthUserListResponse), nil
}
func (s *EtcdServer) UserRevokeRole(ctx context.Context, r *pb.AuthUserRevokeRoleRequest) (*pb.AuthUserRevokeRoleResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthUserRevokeRole: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthUserRevokeRole: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthUserRevokeRoleResponse), nil
+ return resp.(*pb.AuthUserRevokeRoleResponse), nil
}
func (s *EtcdServer) RoleAdd(ctx context.Context, r *pb.AuthRoleAddRequest) (*pb.AuthRoleAddResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleAdd: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleAdd: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthRoleAddResponse), nil
+ return resp.(*pb.AuthRoleAddResponse), nil
}
func (s *EtcdServer) RoleGrantPermission(ctx context.Context, r *pb.AuthRoleGrantPermissionRequest) (*pb.AuthRoleGrantPermissionResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleGrantPermission: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleGrantPermission: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthRoleGrantPermissionResponse), nil
+ return resp.(*pb.AuthRoleGrantPermissionResponse), nil
}
func (s *EtcdServer) RoleGet(ctx context.Context, r *pb.AuthRoleGetRequest) (*pb.AuthRoleGetResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleGet: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleGet: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthRoleGetResponse), nil
+ return resp.(*pb.AuthRoleGetResponse), nil
}
func (s *EtcdServer) RoleList(ctx context.Context, r *pb.AuthRoleListRequest) (*pb.AuthRoleListResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleList: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleList: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthRoleListResponse), nil
+ return resp.(*pb.AuthRoleListResponse), nil
}
func (s *EtcdServer) RoleRevokePermission(ctx context.Context, r *pb.AuthRoleRevokePermissionRequest) (*pb.AuthRoleRevokePermissionResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleRevokePermission: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleRevokePermission: r})
if err != nil {
return nil, err
}
- if result.err != nil {
- return nil, result.err
- }
- return result.resp.(*pb.AuthRoleRevokePermissionResponse), nil
+ return resp.(*pb.AuthRoleRevokePermissionResponse), nil
}
func (s *EtcdServer) RoleDelete(ctx context.Context, r *pb.AuthRoleDeleteRequest) (*pb.AuthRoleDeleteResponse, error) {
- result, err := s.processInternalRaftRequest(ctx, pb.InternalRaftRequest{AuthRoleDelete: r})
+ resp, err := s.raftRequest(ctx, pb.InternalRaftRequest{AuthRoleDelete: r})
+ if err != nil {
+ return nil, err
+ }
+ return resp.(*pb.AuthRoleDeleteResponse), nil
+}
+
+func (s *EtcdServer) raftRequestOnce(ctx context.Context, r pb.InternalRaftRequest) (proto.Message, error) {
+ result, err := s.processInternalRaftRequestOnce(ctx, r)
if err != nil {
return nil, err
}
if result.err != nil {
return nil, result.err
}
- return result.resp.(*pb.AuthRoleDeleteResponse), nil
+ return result.resp, nil
+}
+
+func (s *EtcdServer) raftRequest(ctx context.Context, r pb.InternalRaftRequest) (proto.Message, error) {
+ for {
+ resp, err := s.raftRequestOnce(ctx, r)
+ if err != auth.ErrAuthOldRevision {
+ return resp, err
+ }
+ }
}
// doSerialize handles the auth logic, with permissions checked by "chk", for a serialized request "get". Returns a non-nil error on authentication failure.
func (s *EtcdServer) doSerialize(ctx context.Context, chk func(*auth.AuthInfo) error, get func()) error {
for {
- ai, err := s.AuthStore().AuthInfoFromCtx(ctx)
+ ai, err := s.AuthInfoFromCtx(ctx)
if err != nil {
return err
}
@@ -652,7 +536,7 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In
ID: s.reqIDGen.Next(),
}
- authInfo, err := s.AuthStore().AuthInfoFromCtx(ctx)
+ authInfo, err := s.AuthInfoFromCtx(ctx)
if err != nil {
return nil, err
}
@@ -666,7 +550,7 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In
return nil, err
}
- if len(data) > maxRequestBytes {
+ if len(data) > int(s.Cfg.MaxRequestBytes) {
return nil, ErrRequestTooLarge
}
@@ -696,19 +580,6 @@ func (s *EtcdServer) processInternalRaftRequestOnce(ctx context.Context, r pb.In
}
}
-func (s *EtcdServer) processInternalRaftRequest(ctx context.Context, r pb.InternalRaftRequest) (*applyResult, error) {
- var result *applyResult
- var err error
- for {
- result, err = s.processInternalRaftRequestOnce(ctx, r)
- if err != auth.ErrAuthOldRevision {
- break
- }
- }
-
- return result, err
-}
-
// Watchable returns a watchable interface attached to the etcdserver.
func (s *EtcdServer) Watchable() mvcc.WatchableKV { return s.KV() }
@@ -802,3 +673,14 @@ func (s *EtcdServer) linearizableReadNotify(ctx context.Context) error {
return ErrStopped
}
}
+
+func (s *EtcdServer) AuthInfoFromCtx(ctx context.Context) (*auth.AuthInfo, error) {
+ if s.Cfg.ClientCertAuthEnabled {
+ authInfo := s.AuthStore().AuthInfoFromTLS(ctx)
+ if authInfo != nil {
+ return authInfo, nil
+ }
+ }
+
+ return s.AuthStore().AuthInfoFromCtx(ctx)
+}
diff --git a/vendor/github.com/coreos/etcd/lease/leasehttp/http.go b/vendor/github.com/coreos/etcd/lease/leasehttp/http.go
index 256051efc8dd..c3175cbbb0f0 100644
--- a/vendor/github.com/coreos/etcd/lease/leasehttp/http.go
+++ b/vendor/github.com/coreos/etcd/lease/leasehttp/http.go
@@ -16,6 +16,7 @@ package leasehttp
import (
"bytes"
+ "context"
"errors"
"fmt"
"io/ioutil"
@@ -26,7 +27,6 @@ import (
"github.com/coreos/etcd/lease"
"github.com/coreos/etcd/lease/leasepb"
"github.com/coreos/etcd/pkg/httputil"
- "golang.org/x/net/context"
)
var (
@@ -202,45 +202,27 @@ func TimeToLiveHTTP(ctx context.Context, id lease.LeaseID, keys bool, url string
}
req.Header.Set("Content-Type", "application/protobuf")
- cancel := httputil.RequestCanceler(req)
+ req = req.WithContext(ctx)
cc := &http.Client{Transport: rt}
var b []byte
// buffer errc channel so that errc don't block inside the go routinue
- errc := make(chan error, 2)
- go func() {
- resp, err := cc.Do(req)
- if err != nil {
- errc <- err
- return
- }
- b, err = readResponse(resp)
- if err != nil {
- errc <- err
- return
- }
- if resp.StatusCode == http.StatusRequestTimeout {
- errc <- ErrLeaseHTTPTimeout
- return
- }
- if resp.StatusCode == http.StatusNotFound {
- errc <- lease.ErrLeaseNotFound
- return
- }
- if resp.StatusCode != http.StatusOK {
- errc <- fmt.Errorf("lease: unknown error(%s)", string(b))
- return
- }
- errc <- nil
- }()
- select {
- case derr := <-errc:
- if derr != nil {
- return nil, derr
- }
- case <-ctx.Done():
- cancel()
- return nil, ctx.Err()
+ resp, err := cc.Do(req)
+ if err != nil {
+ return nil, err
+ }
+ b, err = readResponse(resp)
+ if err != nil {
+ return nil, err
+ }
+ if resp.StatusCode == http.StatusRequestTimeout {
+ return nil, ErrLeaseHTTPTimeout
+ }
+ if resp.StatusCode == http.StatusNotFound {
+ return nil, lease.ErrLeaseNotFound
+ }
+ if resp.StatusCode != http.StatusOK {
+ return nil, fmt.Errorf("lease: unknown error(%s)", string(b))
}
lresp := &leasepb.LeaseInternalResponse{}
diff --git a/vendor/github.com/coreos/etcd/lease/leasepb/lease.pb.go b/vendor/github.com/coreos/etcd/lease/leasepb/lease.pb.go
index fb3a9bab0c32..ec8db732be57 100644
--- a/vendor/github.com/coreos/etcd/lease/leasepb/lease.pb.go
+++ b/vendor/github.com/coreos/etcd/lease/leasepb/lease.pb.go
@@ -590,7 +590,7 @@ func init() { proto.RegisterFile("lease.proto", fileDescriptorLease) }
var fileDescriptorLease = []byte{
// 233 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0xce, 0x49, 0x4d, 0x2c,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0xce, 0x49, 0x4d, 0x2c,
0x4e, 0xd5, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x07, 0x73, 0x0a, 0x92, 0xa4, 0x44, 0xd2,
0xf3, 0xd3, 0xf3, 0xc1, 0x62, 0xfa, 0x20, 0x16, 0x44, 0x5a, 0x4a, 0x2d, 0xb5, 0x24, 0x39, 0x45,
0x1f, 0x44, 0x14, 0xa7, 0x16, 0x95, 0xa5, 0x16, 0x21, 0x31, 0x0b, 0x92, 0xf4, 0x8b, 0x0a, 0x92,
diff --git a/vendor/github.com/coreos/etcd/lease/lessor.go b/vendor/github.com/coreos/etcd/lease/lessor.go
index 385bd76d73c7..3418cf565edb 100644
--- a/vendor/github.com/coreos/etcd/lease/lessor.go
+++ b/vendor/github.com/coreos/etcd/lease/lessor.go
@@ -31,40 +31,39 @@ import (
const (
// NoLease is a special LeaseID representing the absence of a lease.
NoLease = LeaseID(0)
+
+ forever = monotime.Time(math.MaxInt64)
)
var (
leaseBucketName = []byte("lease")
- forever = monotime.Time(math.MaxInt64)
+ // maximum number of leases to revoke per second; configurable for tests
+ leaseRevokeRate = 1000
ErrNotPrimary = errors.New("not a primary lessor")
ErrLeaseNotFound = errors.New("lease not found")
ErrLeaseExists = errors.New("lease already exists")
)
-type LeaseID int64
-
-// RangeDeleter defines an interface with Txn and DeleteRange method.
-// We define this interface only for lessor to limit the number
-// of methods of mvcc.KV to what lessor actually needs.
-//
-// Having a minimum interface makes testing easy.
-type RangeDeleter interface {
- // TxnBegin see comments on mvcc.KV
- TxnBegin() int64
- // TxnEnd see comments on mvcc.KV
- TxnEnd(txnID int64) error
- // TxnDeleteRange see comments on mvcc.KV
- TxnDeleteRange(txnID int64, key, end []byte) (n, rev int64, err error)
+// TxnDelete is a TxnWrite that only permits deletes. Defined here
+// to avoid circular dependency with mvcc.
+type TxnDelete interface {
+ DeleteRange(key, end []byte) (n, rev int64)
+ End()
}
+// RangeDeleter is a TxnDelete constructor.
+type RangeDeleter func() TxnDelete
+
+type LeaseID int64
+
// Lessor owns leases. It can grant, revoke, renew and modify leases for lessee.
type Lessor interface {
- // SetRangeDeleter sets the RangeDeleter to the Lessor.
- // Lessor deletes the items in the revoked or expired lease from the
- // the set RangeDeleter.
- SetRangeDeleter(dr RangeDeleter)
+ // SetRangeDeleter lets the lessor create TxnDeletes to the store.
+ // Lessor deletes the items in the revoked or expired lease by creating
+ // new TxnDeletes.
+ SetRangeDeleter(rd RangeDeleter)
// Grant grants a lease that expires at least after TTL seconds.
Grant(id LeaseID, ttl int64) (*Lease, error)
@@ -248,17 +247,14 @@ func (le *lessor) Revoke(id LeaseID) error {
return nil
}
- tid := le.rd.TxnBegin()
+ txn := le.rd()
// sort keys so deletes are in same order among all members,
// otherwise the backened hashes will be different
keys := l.Keys()
sort.StringSlice(keys).Sort()
for _, key := range keys {
- _, _, err := le.rd.TxnDeleteRange(tid, []byte(key), nil)
- if err != nil {
- panic(err)
- }
+ txn.DeleteRange([]byte(key), nil)
}
le.mu.Lock()
@@ -269,11 +265,7 @@ func (le *lessor) Revoke(id LeaseID) error {
// deleting the keys if etcdserver fails in between.
le.b.BatchTx().UnsafeDelete(leaseBucketName, int64ToBytes(int64(l.ID)))
- err := le.rd.TxnEnd(tid)
- if err != nil {
- panic(err)
- }
-
+ txn.End()
return nil
}
@@ -335,8 +327,53 @@ func (le *lessor) Promote(extend time.Duration) {
for _, l := range le.leaseMap {
l.refresh(extend)
}
+
+ if len(le.leaseMap) < leaseRevokeRate {
+ // no possibility of lease pile-up
+ return
+ }
+
+ // adjust expiries in case of overlap
+ leases := make([]*Lease, 0, len(le.leaseMap))
+ for _, l := range le.leaseMap {
+ leases = append(leases, l)
+ }
+ sort.Sort(leasesByExpiry(leases))
+
+ baseWindow := leases[0].Remaining()
+ nextWindow := baseWindow + time.Second
+ expires := 0
+ // have fewer expires than the total revoke rate so piled up leases
+ // don't consume the entire revoke limit
+ targetExpiresPerSecond := (3 * leaseRevokeRate) / 4
+ for _, l := range leases {
+ remaining := l.Remaining()
+ if remaining > nextWindow {
+ baseWindow = remaining
+ nextWindow = baseWindow + time.Second
+ expires = 1
+ continue
+ }
+ expires++
+ if expires <= targetExpiresPerSecond {
+ continue
+ }
+ rateDelay := float64(time.Second) * (float64(expires) / float64(targetExpiresPerSecond))
+ // If leases are extended by n seconds, leases n seconds ahead of the
+ // base window should be extended by only one second.
+ rateDelay -= float64(remaining - baseWindow)
+ delay := time.Duration(rateDelay)
+ nextWindow = baseWindow + delay
+ l.refresh(delay + extend)
+ }
}
+type leasesByExpiry []*Lease
+
+func (le leasesByExpiry) Len() int { return len(le) }
+func (le leasesByExpiry) Less(i, j int) bool { return le[i].Remaining() < le[j].Remaining() }
+func (le leasesByExpiry) Swap(i, j int) { le[i], le[j] = le[j], le[i] }
+
func (le *lessor) Demote() {
le.mu.Lock()
defer le.mu.Unlock()
@@ -433,6 +470,10 @@ func (le *lessor) runLoop() {
le.mu.Unlock()
if len(ls) != 0 {
+ // rate limit
+ if len(ls) > leaseRevokeRate/2 {
+ ls = ls[:leaseRevokeRate/2]
+ }
select {
case <-le.stopC:
return
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/backend.go b/vendor/github.com/coreos/etcd/mvcc/backend/backend.go
index 2f0ee3d205a3..87edd25f427c 100644
--- a/vendor/github.com/coreos/etcd/mvcc/backend/backend.go
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/backend.go
@@ -35,25 +35,21 @@ var (
defragLimit = 10000
- // InitialMmapSize is the initial size of the mmapped region. Setting this larger than
+ // initialMmapSize is the initial size of the mmapped region. Setting this larger than
// the potential max db size can prevent writer from blocking reader.
// This only works for linux.
- InitialMmapSize = int64(10 * 1024 * 1024 * 1024)
+ initialMmapSize = uint64(10 * 1024 * 1024 * 1024)
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "mvcc/backend")
-)
-const (
- // DefaultQuotaBytes is the number of bytes the backend Size may
- // consume before exceeding the space quota.
- DefaultQuotaBytes = int64(2 * 1024 * 1024 * 1024) // 2GB
- // MaxQuotaBytes is the maximum number of bytes suggested for a backend
- // quota. A larger quota may lead to degraded performance.
- MaxQuotaBytes = int64(8 * 1024 * 1024 * 1024) // 8GB
+ // minSnapshotWarningTimeout is the minimum threshold to trigger a long running snapshot warning.
+ minSnapshotWarningTimeout = time.Duration(30 * time.Second)
)
type Backend interface {
+ ReadTx() ReadTx
BatchTx() BatchTx
+
Snapshot() Snapshot
Hash(ignores map[IgnoreKey]struct{}) (uint32, error)
// Size returns the current size of the backend.
@@ -86,36 +82,71 @@ type backend struct {
batchInterval time.Duration
batchLimit int
- batchTx *batchTx
+ batchTx *batchTxBuffered
+
+ readTx *readTx
stopc chan struct{}
donec chan struct{}
}
-func New(path string, d time.Duration, limit int) Backend {
- return newBackend(path, d, limit)
+type BackendConfig struct {
+ // Path is the file path to the backend file.
+ Path string
+ // BatchInterval is the maximum time before flushing the BatchTx.
+ BatchInterval time.Duration
+ // BatchLimit is the maximum puts before flushing the BatchTx.
+ BatchLimit int
+ // MmapSize is the number of bytes to mmap for the backend.
+ MmapSize uint64
+}
+
+func DefaultBackendConfig() BackendConfig {
+ return BackendConfig{
+ BatchInterval: defaultBatchInterval,
+ BatchLimit: defaultBatchLimit,
+ MmapSize: initialMmapSize,
+ }
+}
+
+func New(bcfg BackendConfig) Backend {
+ return newBackend(bcfg)
}
func NewDefaultBackend(path string) Backend {
- return newBackend(path, defaultBatchInterval, defaultBatchLimit)
+ bcfg := DefaultBackendConfig()
+ bcfg.Path = path
+ return newBackend(bcfg)
}
-func newBackend(path string, d time.Duration, limit int) *backend {
- db, err := bolt.Open(path, 0600, boltOpenOptions)
+func newBackend(bcfg BackendConfig) *backend {
+ bopts := &bolt.Options{}
+ if boltOpenOptions != nil {
+ *bopts = *boltOpenOptions
+ }
+ bopts.InitialMmapSize = bcfg.mmapSize()
+
+ db, err := bolt.Open(bcfg.Path, 0600, bopts)
if err != nil {
- plog.Panicf("cannot open database at %s (%v)", path, err)
+ plog.Panicf("cannot open database at %s (%v)", bcfg.Path, err)
}
+ // In future, may want to make buffering optional for low-concurrency systems
+ // or dynamically swap between buffered/non-buffered depending on workload.
b := &backend{
db: db,
- batchInterval: d,
- batchLimit: limit,
+ batchInterval: bcfg.BatchInterval,
+ batchLimit: bcfg.BatchLimit,
+
+ readTx: &readTx{buf: txReadBuffer{
+ txBuffer: txBuffer{make(map[string]*bucketBuffer)}},
+ },
stopc: make(chan struct{}),
donec: make(chan struct{}),
}
- b.batchTx = newBatchTx(b)
+ b.batchTx = newBatchTxBuffered(b)
go b.run()
return b
}
@@ -127,6 +158,8 @@ func (b *backend) BatchTx() BatchTx {
return b.batchTx
}
+func (b *backend) ReadTx() ReadTx { return b.readTx }
+
// ForceCommit forces the current batching tx to commit.
func (b *backend) ForceCommit() {
b.batchTx.Commit()
@@ -141,7 +174,33 @@ func (b *backend) Snapshot() Snapshot {
if err != nil {
plog.Fatalf("cannot begin tx (%s)", err)
}
- return &snapshot{tx}
+
+ stopc, donec := make(chan struct{}), make(chan struct{})
+ dbBytes := tx.Size()
+ go func() {
+ defer close(donec)
+ // sendRateBytes is based on transferring snapshot data over a 1 gigabit/s connection
+ // assuming a min tcp throughput of 100MB/s.
+ var sendRateBytes int64 = 100 * 1024 * 1014
+ warningTimeout := time.Duration(int64((float64(dbBytes) / float64(sendRateBytes)) * float64(time.Second)))
+ if warningTimeout < minSnapshotWarningTimeout {
+ warningTimeout = minSnapshotWarningTimeout
+ }
+ start := time.Now()
+ ticker := time.NewTicker(warningTimeout)
+ defer ticker.Stop()
+ for {
+ select {
+ case <-ticker.C:
+ plog.Warningf("snapshotting is taking more than %v seconds to finish transferring %v MB [started at %v]", time.Since(start).Seconds(), float64(dbBytes)/float64(1024*1014), start)
+ case <-stopc:
+ snapshotDurations.Observe(time.Since(start).Seconds())
+ return
+ }
+ }
+ }()
+
+ return &snapshot{tx, stopc, donec}
}
type IgnoreKey struct {
@@ -235,7 +294,11 @@ func (b *backend) defrag() error {
b.mu.Lock()
defer b.mu.Unlock()
- b.batchTx.commit(true)
+ // block concurrent read requests while resetting tx
+ b.readTx.mu.Lock()
+ defer b.readTx.mu.Unlock()
+
+ b.batchTx.unsafeCommit(true)
b.batchTx.tx = nil
tmpdb, err := bolt.Open(b.db.Path()+".tmp", 0600, boltOpenOptions)
@@ -276,6 +339,10 @@ func (b *backend) defrag() error {
plog.Fatalf("cannot begin tx (%s)", err)
}
+ b.readTx.buf.reset()
+ b.readTx.tx = b.unsafeBegin(false)
+ atomic.StoreInt64(&b.size, b.readTx.tx.Size())
+
return nil
}
@@ -331,6 +398,22 @@ func defragdb(odb, tmpdb *bolt.DB, limit int) error {
return tmptx.Commit()
}
+func (b *backend) begin(write bool) *bolt.Tx {
+ b.mu.RLock()
+ tx := b.unsafeBegin(write)
+ b.mu.RUnlock()
+ atomic.StoreInt64(&b.size, tx.Size())
+ return tx
+}
+
+func (b *backend) unsafeBegin(write bool) *bolt.Tx {
+ tx, err := b.db.Begin(write)
+ if err != nil {
+ plog.Fatalf("cannot begin tx (%s)", err)
+ }
+ return tx
+}
+
// NewTmpBackend creates a backend implementation for testing.
func NewTmpBackend(batchInterval time.Duration, batchLimit int) (*backend, string) {
dir, err := ioutil.TempDir(os.TempDir(), "etcd_backend_test")
@@ -338,7 +421,9 @@ func NewTmpBackend(batchInterval time.Duration, batchLimit int) (*backend, strin
plog.Fatal(err)
}
tmpPath := filepath.Join(dir, "database")
- return newBackend(tmpPath, batchInterval, batchLimit), tmpPath
+ bcfg := DefaultBackendConfig()
+ bcfg.Path, bcfg.BatchInterval, bcfg.BatchLimit = tmpPath, batchInterval, batchLimit
+ return newBackend(bcfg), tmpPath
}
func NewDefaultTmpBackend() (*backend, string) {
@@ -347,6 +432,12 @@ func NewDefaultTmpBackend() (*backend, string) {
type snapshot struct {
*bolt.Tx
+ stopc chan struct{}
+ donec chan struct{}
}
-func (s *snapshot) Close() error { return s.Tx.Rollback() }
+func (s *snapshot) Close() error {
+ close(s.stopc)
+ <-s.donec
+ return s.Tx.Rollback()
+}
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/batch_tx.go b/vendor/github.com/coreos/etcd/mvcc/backend/batch_tx.go
index a2f9f4ae75e7..e5fb84740899 100644
--- a/vendor/github.com/coreos/etcd/mvcc/backend/batch_tx.go
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/batch_tx.go
@@ -16,6 +16,8 @@ package backend
import (
"bytes"
+ "fmt"
+ "math"
"sync"
"sync/atomic"
"time"
@@ -24,15 +26,14 @@ import (
)
type BatchTx interface {
- Lock()
- Unlock()
+ ReadTx
UnsafeCreateBucket(name []byte)
UnsafePut(bucketName []byte, key []byte, value []byte)
UnsafeSeqPut(bucketName []byte, key []byte, value []byte)
- UnsafeRange(bucketName []byte, key, endKey []byte, limit int64) (keys [][]byte, vals [][]byte)
UnsafeDelete(bucketName []byte, key []byte)
- UnsafeForEach(bucketName []byte, visitor func(k, v []byte) error) error
+ // Commit commits a previous tx and begins a new writable one.
Commit()
+ // CommitAndStop commits the previous tx and does not create a new one.
CommitAndStop()
}
@@ -40,13 +41,8 @@ type batchTx struct {
sync.Mutex
tx *bolt.Tx
backend *backend
- pending int
-}
-func newBatchTx(backend *backend) *batchTx {
- tx := &batchTx{backend: backend}
- tx.Commit()
- return tx
+ pending int
}
func (t *batchTx) UnsafeCreateBucket(name []byte) {
@@ -84,30 +80,37 @@ func (t *batchTx) unsafePut(bucketName []byte, key []byte, value []byte, seq boo
}
// UnsafeRange must be called holding the lock on the tx.
-func (t *batchTx) UnsafeRange(bucketName []byte, key, endKey []byte, limit int64) (keys [][]byte, vs [][]byte) {
- bucket := t.tx.Bucket(bucketName)
- if bucket == nil {
- plog.Fatalf("bucket %s does not exist", bucketName)
+func (t *batchTx) UnsafeRange(bucketName, key, endKey []byte, limit int64) ([][]byte, [][]byte) {
+ k, v, err := unsafeRange(t.tx, bucketName, key, endKey, limit)
+ if err != nil {
+ plog.Fatal(err)
}
+ return k, v
+}
+func unsafeRange(tx *bolt.Tx, bucketName, key, endKey []byte, limit int64) (keys [][]byte, vs [][]byte, err error) {
+ bucket := tx.Bucket(bucketName)
+ if bucket == nil {
+ return nil, nil, fmt.Errorf("bucket %s does not exist", bucketName)
+ }
if len(endKey) == 0 {
- if v := bucket.Get(key); v == nil {
- return keys, vs
- } else {
- return append(keys, key), append(vs, v)
+ if v := bucket.Get(key); v != nil {
+ return append(keys, key), append(vs, v), nil
}
+ return nil, nil, nil
+ }
+ if limit <= 0 {
+ limit = math.MaxInt64
}
-
c := bucket.Cursor()
for ck, cv := c.Seek(key); ck != nil && bytes.Compare(ck, endKey) < 0; ck, cv = c.Next() {
vs = append(vs, cv)
keys = append(keys, ck)
- if limit > 0 && limit == int64(len(keys)) {
+ if limit == int64(len(keys)) {
break
}
}
-
- return keys, vs
+ return keys, vs, nil
}
// UnsafeDelete must be called holding the lock on the tx.
@@ -125,12 +128,14 @@ func (t *batchTx) UnsafeDelete(bucketName []byte, key []byte) {
// UnsafeForEach must be called holding the lock on the tx.
func (t *batchTx) UnsafeForEach(bucketName []byte, visitor func(k, v []byte) error) error {
- b := t.tx.Bucket(bucketName)
- if b == nil {
- // bucket does not exist
- return nil
+ return unsafeForEach(t.tx, bucketName, visitor)
+}
+
+func unsafeForEach(tx *bolt.Tx, bucket []byte, visitor func(k, v []byte) error) error {
+ if b := tx.Bucket(bucket); b != nil {
+ return b.ForEach(visitor)
}
- return b.ForEach(visitor)
+ return nil
}
// Commit commits a previous tx and begins a new writable one.
@@ -140,7 +145,7 @@ func (t *batchTx) Commit() {
t.commit(false)
}
-// CommitAndStop commits the previous tx and do not create a new one.
+// CommitAndStop commits the previous tx and does not create a new one.
func (t *batchTx) CommitAndStop() {
t.Lock()
defer t.Unlock()
@@ -150,37 +155,28 @@ func (t *batchTx) CommitAndStop() {
func (t *batchTx) Unlock() {
if t.pending >= t.backend.batchLimit {
t.commit(false)
- t.pending = 0
}
t.Mutex.Unlock()
}
func (t *batchTx) commit(stop bool) {
- var err error
// commit the last tx
if t.tx != nil {
if t.pending == 0 && !stop {
t.backend.mu.RLock()
defer t.backend.mu.RUnlock()
- // batchTx.commit(true) calls *bolt.Tx.Commit, which
- // initializes *bolt.Tx.db and *bolt.Tx.meta as nil,
- // and subsequent *bolt.Tx.Size() call panics.
- //
- // This nil pointer reference panic happens when:
- // 1. batchTx.commit(false) from newBatchTx
- // 2. batchTx.commit(true) from stopping backend
- // 3. batchTx.commit(false) from inflight mvcc Hash call
- //
- // Check if db is nil to prevent this panic
- if t.tx.DB() != nil {
- atomic.StoreInt64(&t.backend.size, t.tx.Size())
- }
+ // t.tx.DB()==nil if 'CommitAndStop' calls 'batchTx.commit(true)',
+ // which initializes *bolt.Tx.db and *bolt.Tx.meta as nil; panics t.tx.Size().
+ // Server must make sure 'batchTx.commit(false)' does not follow
+ // 'batchTx.commit(true)' (e.g. stopping backend, and inflight Hash call).
+ atomic.StoreInt64(&t.backend.size, t.tx.Size())
return
}
+
start := time.Now()
// gofail: var beforeCommit struct{}
- err = t.tx.Commit()
+ err := t.tx.Commit()
// gofail: var afterCommit struct{}
commitDurations.Observe(time.Since(start).Seconds())
atomic.AddInt64(&t.backend.commits, 1)
@@ -190,17 +186,81 @@ func (t *batchTx) commit(stop bool) {
plog.Fatalf("cannot commit tx (%s)", err)
}
}
+ if !stop {
+ t.tx = t.backend.begin(true)
+ }
+}
+
+type batchTxBuffered struct {
+ batchTx
+ buf txWriteBuffer
+}
- if stop {
- return
+func newBatchTxBuffered(backend *backend) *batchTxBuffered {
+ tx := &batchTxBuffered{
+ batchTx: batchTx{backend: backend},
+ buf: txWriteBuffer{
+ txBuffer: txBuffer{make(map[string]*bucketBuffer)},
+ seq: true,
+ },
}
+ tx.Commit()
+ return tx
+}
- t.backend.mu.RLock()
- defer t.backend.mu.RUnlock()
- // begin a new tx
- t.tx, err = t.backend.db.Begin(true)
- if err != nil {
- plog.Fatalf("cannot begin tx (%s)", err)
+func (t *batchTxBuffered) Unlock() {
+ if t.pending != 0 {
+ t.backend.readTx.mu.Lock()
+ t.buf.writeback(&t.backend.readTx.buf)
+ t.backend.readTx.mu.Unlock()
+ if t.pending >= t.backend.batchLimit {
+ t.commit(false)
+ }
}
- atomic.StoreInt64(&t.backend.size, t.tx.Size())
+ t.batchTx.Unlock()
+}
+
+func (t *batchTxBuffered) Commit() {
+ t.Lock()
+ defer t.Unlock()
+ t.commit(false)
+}
+
+func (t *batchTxBuffered) CommitAndStop() {
+ t.Lock()
+ defer t.Unlock()
+ t.commit(true)
+}
+
+func (t *batchTxBuffered) commit(stop bool) {
+ // all read txs must be closed to acquire boltdb commit rwlock
+ t.backend.readTx.mu.Lock()
+ defer t.backend.readTx.mu.Unlock()
+ t.unsafeCommit(stop)
+}
+
+func (t *batchTxBuffered) unsafeCommit(stop bool) {
+ if t.backend.readTx.tx != nil {
+ if err := t.backend.readTx.tx.Rollback(); err != nil {
+ plog.Fatalf("cannot rollback tx (%s)", err)
+ }
+ t.backend.readTx.buf.reset()
+ t.backend.readTx.tx = nil
+ }
+
+ t.batchTx.commit(stop)
+
+ if !stop {
+ t.backend.readTx.tx = t.backend.begin(false)
+ }
+}
+
+func (t *batchTxBuffered) UnsafePut(bucketName []byte, key []byte, value []byte) {
+ t.batchTx.UnsafePut(bucketName, key, value)
+ t.buf.put(bucketName, key, value)
+}
+
+func (t *batchTxBuffered) UnsafeSeqPut(bucketName []byte, key []byte, value []byte) {
+ t.batchTx.UnsafeSeqPut(bucketName, key, value)
+ t.buf.putSeq(bucketName, key, value)
}
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/boltoption_default.go b/vendor/github.com/coreos/etcd/mvcc/backend/config_default.go
similarity index 87%
rename from vendor/github.com/coreos/etcd/mvcc/backend/boltoption_default.go
rename to vendor/github.com/coreos/etcd/mvcc/backend/config_default.go
index ceb367f6d813..edfed0025c6c 100644
--- a/vendor/github.com/coreos/etcd/mvcc/backend/boltoption_default.go
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/config_default.go
@@ -12,10 +12,12 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-// +build !linux
+// +build !linux,!windows
package backend
import bolt "github.com/coreos/bbolt"
var boltOpenOptions *bolt.Options = nil
+
+func (bcfg *BackendConfig) mmapSize() int { return int(bcfg.MmapSize) }
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/boltoption_linux.go b/vendor/github.com/coreos/etcd/mvcc/backend/config_linux.go
similarity index 91%
rename from vendor/github.com/coreos/etcd/mvcc/backend/boltoption_linux.go
rename to vendor/github.com/coreos/etcd/mvcc/backend/config_linux.go
index 1abc8a628937..a8f6abeba63e 100644
--- a/vendor/github.com/coreos/etcd/mvcc/backend/boltoption_linux.go
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/config_linux.go
@@ -27,6 +27,7 @@ import (
// (https://github.com/torvalds/linux/releases/tag/v2.6.23), mmap might
// silently ignore this flag. Please update your kernel to prevent this.
var boltOpenOptions = &bolt.Options{
- MmapFlags: syscall.MAP_POPULATE,
- InitialMmapSize: int(InitialMmapSize),
+ MmapFlags: syscall.MAP_POPULATE,
}
+
+func (bcfg *BackendConfig) mmapSize() int { return int(bcfg.MmapSize) }
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/config_windows.go b/vendor/github.com/coreos/etcd/mvcc/backend/config_windows.go
new file mode 100644
index 000000000000..71d02700bcdc
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/config_windows.go
@@ -0,0 +1,26 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 windows
+
+package backend
+
+import bolt "github.com/coreos/bbolt"
+
+var boltOpenOptions *bolt.Options = nil
+
+// setting mmap size != 0 on windows will allocate the entire
+// mmap size for the file, instead of growing it. So, force 0.
+
+func (bcfg *BackendConfig) mmapSize() int { return 0 }
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/metrics.go b/vendor/github.com/coreos/etcd/mvcc/backend/metrics.go
index 34a56a91956f..30a388014766 100644
--- a/vendor/github.com/coreos/etcd/mvcc/backend/metrics.go
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/metrics.go
@@ -24,8 +24,18 @@ var (
Help: "The latency distributions of commit called by backend.",
Buckets: prometheus.ExponentialBuckets(0.001, 2, 14),
})
+
+ snapshotDurations = prometheus.NewHistogram(prometheus.HistogramOpts{
+ Namespace: "etcd",
+ Subsystem: "disk",
+ Name: "backend_snapshot_duration_seconds",
+ Help: "The latency distribution of backend snapshots.",
+ // 10 ms -> 655 seconds
+ Buckets: prometheus.ExponentialBuckets(.01, 2, 17),
+ })
)
func init() {
prometheus.MustRegister(commitDurations)
+ prometheus.MustRegister(snapshotDurations)
}
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/read_tx.go b/vendor/github.com/coreos/etcd/mvcc/backend/read_tx.go
new file mode 100644
index 000000000000..9fc6b7906206
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/read_tx.go
@@ -0,0 +1,92 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 backend
+
+import (
+ "bytes"
+ "math"
+ "sync"
+
+ bolt "github.com/coreos/bbolt"
+)
+
+// safeRangeBucket is a hack to avoid inadvertently reading duplicate keys;
+// overwrites on a bucket should only fetch with limit=1, but safeRangeBucket
+// is known to never overwrite any key so range is safe.
+var safeRangeBucket = []byte("key")
+
+type ReadTx interface {
+ Lock()
+ Unlock()
+
+ UnsafeRange(bucketName []byte, key, endKey []byte, limit int64) (keys [][]byte, vals [][]byte)
+ UnsafeForEach(bucketName []byte, visitor func(k, v []byte) error) error
+}
+
+type readTx struct {
+ // mu protects accesses to the txReadBuffer
+ mu sync.RWMutex
+ buf txReadBuffer
+
+ // txmu protects accesses to the Tx on Range requests
+ txmu sync.Mutex
+ tx *bolt.Tx
+}
+
+func (rt *readTx) Lock() { rt.mu.RLock() }
+func (rt *readTx) Unlock() { rt.mu.RUnlock() }
+
+func (rt *readTx) UnsafeRange(bucketName, key, endKey []byte, limit int64) ([][]byte, [][]byte) {
+ if endKey == nil {
+ // forbid duplicates for single keys
+ limit = 1
+ }
+ if limit <= 0 {
+ limit = math.MaxInt64
+ }
+ if limit > 1 && !bytes.Equal(bucketName, safeRangeBucket) {
+ panic("do not use unsafeRange on non-keys bucket")
+ }
+ keys, vals := rt.buf.Range(bucketName, key, endKey, limit)
+ if int64(len(keys)) == limit {
+ return keys, vals
+ }
+ rt.txmu.Lock()
+ // ignore error since bucket may have been created in this batch
+ k2, v2, _ := unsafeRange(rt.tx, bucketName, key, endKey, limit-int64(len(keys)))
+ rt.txmu.Unlock()
+ return append(k2, keys...), append(v2, vals...)
+}
+
+func (rt *readTx) UnsafeForEach(bucketName []byte, visitor func(k, v []byte) error) error {
+ dups := make(map[string]struct{})
+ f1 := func(k, v []byte) error {
+ dups[string(k)] = struct{}{}
+ return visitor(k, v)
+ }
+ f2 := func(k, v []byte) error {
+ if _, ok := dups[string(k)]; ok {
+ return nil
+ }
+ return visitor(k, v)
+ }
+ if err := rt.buf.ForEach(bucketName, f1); err != nil {
+ return err
+ }
+ rt.txmu.Lock()
+ err := unsafeForEach(rt.tx, bucketName, f2)
+ rt.txmu.Unlock()
+ return err
+}
diff --git a/vendor/github.com/coreos/etcd/mvcc/backend/tx_buffer.go b/vendor/github.com/coreos/etcd/mvcc/backend/tx_buffer.go
new file mode 100644
index 000000000000..56e885dbfbc3
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/mvcc/backend/tx_buffer.go
@@ -0,0 +1,181 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 backend
+
+import (
+ "bytes"
+ "sort"
+)
+
+// txBuffer handles functionality shared between txWriteBuffer and txReadBuffer.
+type txBuffer struct {
+ buckets map[string]*bucketBuffer
+}
+
+func (txb *txBuffer) reset() {
+ for k, v := range txb.buckets {
+ if v.used == 0 {
+ // demote
+ delete(txb.buckets, k)
+ }
+ v.used = 0
+ }
+}
+
+// txWriteBuffer buffers writes of pending updates that have not yet committed.
+type txWriteBuffer struct {
+ txBuffer
+ seq bool
+}
+
+func (txw *txWriteBuffer) put(bucket, k, v []byte) {
+ txw.seq = false
+ txw.putSeq(bucket, k, v)
+}
+
+func (txw *txWriteBuffer) putSeq(bucket, k, v []byte) {
+ b, ok := txw.buckets[string(bucket)]
+ if !ok {
+ b = newBucketBuffer()
+ txw.buckets[string(bucket)] = b
+ }
+ b.add(k, v)
+}
+
+func (txw *txWriteBuffer) writeback(txr *txReadBuffer) {
+ for k, wb := range txw.buckets {
+ rb, ok := txr.buckets[k]
+ if !ok {
+ delete(txw.buckets, k)
+ txr.buckets[k] = wb
+ continue
+ }
+ if !txw.seq && wb.used > 1 {
+ // assume no duplicate keys
+ sort.Sort(wb)
+ }
+ rb.merge(wb)
+ }
+ txw.reset()
+}
+
+// txReadBuffer accesses buffered updates.
+type txReadBuffer struct{ txBuffer }
+
+func (txr *txReadBuffer) Range(bucketName, key, endKey []byte, limit int64) ([][]byte, [][]byte) {
+ if b := txr.buckets[string(bucketName)]; b != nil {
+ return b.Range(key, endKey, limit)
+ }
+ return nil, nil
+}
+
+func (txr *txReadBuffer) ForEach(bucketName []byte, visitor func(k, v []byte) error) error {
+ if b := txr.buckets[string(bucketName)]; b != nil {
+ return b.ForEach(visitor)
+ }
+ return nil
+}
+
+type kv struct {
+ key []byte
+ val []byte
+}
+
+// bucketBuffer buffers key-value pairs that are pending commit.
+type bucketBuffer struct {
+ buf []kv
+ // used tracks number of elements in use so buf can be reused without reallocation.
+ used int
+}
+
+func newBucketBuffer() *bucketBuffer {
+ return &bucketBuffer{buf: make([]kv, 512), used: 0}
+}
+
+func (bb *bucketBuffer) Range(key, endKey []byte, limit int64) (keys [][]byte, vals [][]byte) {
+ f := func(i int) bool { return bytes.Compare(bb.buf[i].key, key) >= 0 }
+ idx := sort.Search(bb.used, f)
+ if idx < 0 {
+ return nil, nil
+ }
+ if len(endKey) == 0 {
+ if bytes.Equal(key, bb.buf[idx].key) {
+ keys = append(keys, bb.buf[idx].key)
+ vals = append(vals, bb.buf[idx].val)
+ }
+ return keys, vals
+ }
+ if bytes.Compare(endKey, bb.buf[idx].key) <= 0 {
+ return nil, nil
+ }
+ for i := idx; i < bb.used && int64(len(keys)) < limit; i++ {
+ if bytes.Compare(endKey, bb.buf[i].key) <= 0 {
+ break
+ }
+ keys = append(keys, bb.buf[i].key)
+ vals = append(vals, bb.buf[i].val)
+ }
+ return keys, vals
+}
+
+func (bb *bucketBuffer) ForEach(visitor func(k, v []byte) error) error {
+ for i := 0; i < bb.used; i++ {
+ if err := visitor(bb.buf[i].key, bb.buf[i].val); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+func (bb *bucketBuffer) add(k, v []byte) {
+ bb.buf[bb.used].key, bb.buf[bb.used].val = k, v
+ bb.used++
+ if bb.used == len(bb.buf) {
+ buf := make([]kv, (3*len(bb.buf))/2)
+ copy(buf, bb.buf)
+ bb.buf = buf
+ }
+}
+
+// merge merges data from bb into bbsrc.
+func (bb *bucketBuffer) merge(bbsrc *bucketBuffer) {
+ for i := 0; i < bbsrc.used; i++ {
+ bb.add(bbsrc.buf[i].key, bbsrc.buf[i].val)
+ }
+ if bb.used == bbsrc.used {
+ return
+ }
+ if bytes.Compare(bb.buf[(bb.used-bbsrc.used)-1].key, bbsrc.buf[0].key) < 0 {
+ return
+ }
+
+ sort.Stable(bb)
+
+ // remove duplicates, using only newest update
+ widx := 0
+ for ridx := 1; ridx < bb.used; ridx++ {
+ if !bytes.Equal(bb.buf[ridx].key, bb.buf[widx].key) {
+ widx++
+ }
+ bb.buf[widx] = bb.buf[ridx]
+ }
+ bb.used = widx + 1
+}
+
+func (bb *bucketBuffer) Len() int { return bb.used }
+func (bb *bucketBuffer) Less(i, j int) bool {
+ return bytes.Compare(bb.buf[i].key, bb.buf[j].key) < 0
+}
+func (bb *bucketBuffer) Swap(i, j int) { bb.buf[i], bb.buf[j] = bb.buf[j], bb.buf[i] }
diff --git a/vendor/github.com/coreos/etcd/mvcc/index.go b/vendor/github.com/coreos/etcd/mvcc/index.go
index 397098a7ba75..991289cdd5c4 100644
--- a/vendor/github.com/coreos/etcd/mvcc/index.go
+++ b/vendor/github.com/coreos/etcd/mvcc/index.go
@@ -29,7 +29,9 @@ type index interface {
RangeSince(key, end []byte, rev int64) []revision
Compact(rev int64) map[revision]struct{}
Equal(b index) bool
+
Insert(ki *keyIndex)
+ KeyIndex(ki *keyIndex) *keyIndex
}
type treeIndex struct {
@@ -60,18 +62,27 @@ func (ti *treeIndex) Put(key []byte, rev revision) {
func (ti *treeIndex) Get(key []byte, atRev int64) (modified, created revision, ver int64, err error) {
keyi := &keyIndex{key: key}
-
ti.RLock()
defer ti.RUnlock()
- item := ti.tree.Get(keyi)
- if item == nil {
+ if keyi = ti.keyIndex(keyi); keyi == nil {
return revision{}, revision{}, 0, ErrRevisionNotFound
}
-
- keyi = item.(*keyIndex)
return keyi.get(atRev)
}
+func (ti *treeIndex) KeyIndex(keyi *keyIndex) *keyIndex {
+ ti.RLock()
+ defer ti.RUnlock()
+ return ti.keyIndex(keyi)
+}
+
+func (ti *treeIndex) keyIndex(keyi *keyIndex) *keyIndex {
+ if item := ti.tree.Get(keyi); item != nil {
+ return item.(*keyIndex)
+ }
+ return nil
+}
+
func (ti *treeIndex) Range(key, end []byte, atRev int64) (keys [][]byte, revs []revision) {
if end == nil {
rev, _, _, err := ti.Get(key, atRev)
diff --git a/vendor/github.com/coreos/etcd/mvcc/key_index.go b/vendor/github.com/coreos/etcd/mvcc/key_index.go
index 983c64e2f6bf..9104f9b2d36a 100644
--- a/vendor/github.com/coreos/etcd/mvcc/key_index.go
+++ b/vendor/github.com/coreos/etcd/mvcc/key_index.go
@@ -222,7 +222,6 @@ func (ki *keyIndex) compact(atRev int64, available map[revision]struct{}) {
}
// remove the previous generations.
ki.generations = ki.generations[i:]
- return
}
func (ki *keyIndex) isEmpty() bool {
diff --git a/vendor/github.com/coreos/etcd/mvcc/kv.go b/vendor/github.com/coreos/etcd/mvcc/kv.go
index c851c8725e88..6636347aa431 100644
--- a/vendor/github.com/coreos/etcd/mvcc/kv.go
+++ b/vendor/github.com/coreos/etcd/mvcc/kv.go
@@ -32,15 +32,15 @@ type RangeResult struct {
Count int
}
-type KV interface {
- // Rev returns the current revision of the KV.
- Rev() int64
-
- // FirstRev returns the first revision of the KV.
+type ReadView interface {
+ // FirstRev returns the first KV revision at the time of opening the txn.
// After a compaction, the first revision increases to the compaction
// revision.
FirstRev() int64
+ // Rev returns the revision of the KV at the time of opening the txn.
+ Rev() int64
+
// Range gets the keys in the range at rangeRev.
// The returned rev is the current revision of the KV when the operation is executed.
// If rangeRev <=0, range gets the keys at currentRev.
@@ -50,14 +50,17 @@ type KV interface {
// Limit limits the number of keys returned.
// If the required rev is compacted, ErrCompacted will be returned.
Range(key, end []byte, ro RangeOptions) (r *RangeResult, err error)
+}
- // Put puts the given key, value into the store. Put also takes additional argument lease to
- // attach a lease to a key-value pair as meta-data. KV implementation does not validate the lease
- // id.
- // A put also increases the rev of the store, and generates one event in the event history.
- // The returned rev is the current revision of the KV when the operation is executed.
- Put(key, value []byte, lease lease.LeaseID) (rev int64)
+// TxnRead represents a read-only transaction with operations that will not
+// block other read transactions.
+type TxnRead interface {
+ ReadView
+ // End marks the transaction is complete and ready to commit.
+ End()
+}
+type WriteView interface {
// DeleteRange deletes the given range from the store.
// A deleteRange increases the rev of the store if any key in the range exists.
// The number of key deleted will be returned.
@@ -67,26 +70,51 @@ type KV interface {
// if the `end` is not nil, deleteRange deletes the keys in range [key, range_end).
DeleteRange(key, end []byte) (n, rev int64)
- // TxnBegin begins a txn. Only Txn prefixed operation can be executed, others will be blocked
- // until txn ends. Only one on-going txn is allowed.
- // TxnBegin returns an int64 txn ID.
- // All txn prefixed operations with same txn ID will be done with the same rev.
- TxnBegin() int64
- // TxnEnd ends the on-going txn with txn ID. If the on-going txn ID is not matched, error is returned.
- TxnEnd(txnID int64) error
- // TxnRange returns the current revision of the KV when the operation is executed.
- TxnRange(txnID int64, key, end []byte, ro RangeOptions) (r *RangeResult, err error)
- TxnPut(txnID int64, key, value []byte, lease lease.LeaseID) (rev int64, err error)
- TxnDeleteRange(txnID int64, key, end []byte) (n, rev int64, err error)
+ // Put puts the given key, value into the store. Put also takes additional argument lease to
+ // attach a lease to a key-value pair as meta-data. KV implementation does not validate the lease
+ // id.
+ // A put also increases the rev of the store, and generates one event in the event history.
+ // The returned rev is the current revision of the KV when the operation is executed.
+ Put(key, value []byte, lease lease.LeaseID) (rev int64)
+}
+
+// TxnWrite represents a transaction that can modify the store.
+type TxnWrite interface {
+ TxnRead
+ WriteView
+ // Changes gets the changes made since opening the write txn.
+ Changes() []mvccpb.KeyValue
+}
- // Compact frees all superseded keys with revisions less than rev.
- Compact(rev int64) (<-chan struct{}, error)
+// txnReadWrite coerces a read txn to a write, panicking on any write operation.
+type txnReadWrite struct{ TxnRead }
+
+func (trw *txnReadWrite) DeleteRange(key, end []byte) (n, rev int64) { panic("unexpected DeleteRange") }
+func (trw *txnReadWrite) Put(key, value []byte, lease lease.LeaseID) (rev int64) {
+ panic("unexpected Put")
+}
+func (trw *txnReadWrite) Changes() []mvccpb.KeyValue { return nil }
+
+func NewReadOnlyTxnWrite(txn TxnRead) TxnWrite { return &txnReadWrite{txn} }
+
+type KV interface {
+ ReadView
+ WriteView
+
+ // Read creates a read transaction.
+ Read() TxnRead
+
+ // Write creates a write transaction.
+ Write() TxnWrite
// Hash retrieves the hash of KV state and revision.
- // This method is designed for consistency checking purpose.
+ // This method is designed for consistency checking purposes.
Hash() (hash uint32, revision int64, err error)
- // Commit commits txns into the underlying backend.
+ // Compact frees all superseded keys with revisions less than rev.
+ Compact(rev int64) (<-chan struct{}, error)
+
+ // Commit commits outstanding txns into the underlying backend.
Commit()
// Restore restores the KV store from a backend.
diff --git a/vendor/github.com/coreos/etcd/mvcc/kv_view.go b/vendor/github.com/coreos/etcd/mvcc/kv_view.go
new file mode 100644
index 000000000000..f40ba8edc22b
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/mvcc/kv_view.go
@@ -0,0 +1,53 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 mvcc
+
+import (
+ "github.com/coreos/etcd/lease"
+)
+
+type readView struct{ kv KV }
+
+func (rv *readView) FirstRev() int64 {
+ tr := rv.kv.Read()
+ defer tr.End()
+ return tr.FirstRev()
+}
+
+func (rv *readView) Rev() int64 {
+ tr := rv.kv.Read()
+ defer tr.End()
+ return tr.Rev()
+}
+
+func (rv *readView) Range(key, end []byte, ro RangeOptions) (r *RangeResult, err error) {
+ tr := rv.kv.Read()
+ defer tr.End()
+ return tr.Range(key, end, ro)
+}
+
+type writeView struct{ kv KV }
+
+func (wv *writeView) DeleteRange(key, end []byte) (n, rev int64) {
+ tw := wv.kv.Write()
+ defer tw.End()
+ return tw.DeleteRange(key, end)
+}
+
+func (wv *writeView) Put(key, value []byte, lease lease.LeaseID) (rev int64) {
+ tw := wv.kv.Write()
+ defer tw.End()
+ return tw.Put(key, value, lease)
+}
diff --git a/vendor/github.com/coreos/etcd/mvcc/kvstore.go b/vendor/github.com/coreos/etcd/mvcc/kvstore.go
index 28a18a06597a..28a508ccb959 100644
--- a/vendor/github.com/coreos/etcd/mvcc/kvstore.go
+++ b/vendor/github.com/coreos/etcd/mvcc/kvstore.go
@@ -18,7 +18,6 @@ import (
"encoding/binary"
"errors"
"math"
- "math/rand"
"sync"
"time"
@@ -34,25 +33,29 @@ var (
keyBucketName = []byte("key")
metaBucketName = []byte("meta")
- // markedRevBytesLen is the byte length of marked revision.
- // The first `revBytesLen` bytes represents a normal revision. The last
- // one byte is the mark.
- markedRevBytesLen = revBytesLen + 1
- markBytePosition = markedRevBytesLen - 1
- markTombstone byte = 't'
-
consistentIndexKeyName = []byte("consistent_index")
scheduledCompactKeyName = []byte("scheduledCompactRev")
finishedCompactKeyName = []byte("finishedCompactRev")
- ErrTxnIDMismatch = errors.New("mvcc: txn id mismatch")
- ErrCompacted = errors.New("mvcc: required revision has been compacted")
- ErrFutureRev = errors.New("mvcc: required revision is a future revision")
- ErrCanceled = errors.New("mvcc: watcher is canceled")
+ ErrCompacted = errors.New("mvcc: required revision has been compacted")
+ ErrFutureRev = errors.New("mvcc: required revision is a future revision")
+ ErrCanceled = errors.New("mvcc: watcher is canceled")
+ ErrClosed = errors.New("mvcc: closed")
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "mvcc")
)
+const (
+ // markedRevBytesLen is the byte length of marked revision.
+ // The first `revBytesLen` bytes represents a normal revision. The last
+ // one byte is the mark.
+ markedRevBytesLen = revBytesLen + 1
+ markBytePosition = markedRevBytesLen - 1
+ markTombstone byte = 't'
+)
+
+var restoreChunkKeys = 10000 // non-const for testing
+
// ConsistentIndexGetter is an interface that wraps the Get method.
// Consistent index is the offset of an entry in a consistent replicated log.
type ConsistentIndexGetter interface {
@@ -61,7 +64,11 @@ type ConsistentIndexGetter interface {
}
type store struct {
- mu sync.Mutex // guards the following
+ ReadView
+ WriteView
+
+ // mu read locks for txns and write locks for non-txn store changes.
+ mu sync.RWMutex
ig ConsistentIndexGetter
@@ -70,19 +77,19 @@ type store struct {
le lease.Lessor
- currentRev revision
- // the main revision of the last compaction
+ // revMuLock protects currentRev and compactMainRev.
+ // Locked at end of write txn and released after write txn unlock lock.
+ // Locked before locking read txn and released after locking.
+ revMu sync.RWMutex
+ // currentRev is the revision of the last completed transaction.
+ currentRev int64
+ // compactMainRev is the main revision of the last compaction.
compactMainRev int64
- tx backend.BatchTx
- txnID int64 // tracks the current txnID to verify txn operations
- txnModify bool
-
// bytesBuf8 is a byte slice of length 8
// to avoid a repetitive allocation in saveIndex.
bytesBuf8 []byte
- changes []mvccpb.KeyValue
fifoSched schedule.Scheduler
stopc chan struct{}
@@ -98,17 +105,18 @@ func NewStore(b backend.Backend, le lease.Lessor, ig ConsistentIndexGetter) *sto
le: le,
- currentRev: revision{main: 1},
+ currentRev: 1,
compactMainRev: -1,
- bytesBuf8: make([]byte, 8, 8),
+ bytesBuf8: make([]byte, 8),
fifoSched: schedule.NewFIFOScheduler(),
stopc: make(chan struct{}),
}
-
+ s.ReadView = &readView{s}
+ s.WriteView = &writeView{s}
if s.le != nil {
- s.le.SetRangeDeleter(s)
+ s.le.SetRangeDeleter(func() lease.TxnDelete { return s.Write() })
}
tx := s.b.BatchTx()
@@ -126,140 +134,6 @@ func NewStore(b backend.Backend, le lease.Lessor, ig ConsistentIndexGetter) *sto
return s
}
-func (s *store) Rev() int64 {
- s.mu.Lock()
- defer s.mu.Unlock()
-
- return s.currentRev.main
-}
-
-func (s *store) FirstRev() int64 {
- s.mu.Lock()
- defer s.mu.Unlock()
-
- return s.compactMainRev
-}
-
-func (s *store) Put(key, value []byte, lease lease.LeaseID) int64 {
- id := s.TxnBegin()
- s.put(key, value, lease)
- s.txnEnd(id)
-
- putCounter.Inc()
-
- return int64(s.currentRev.main)
-}
-
-func (s *store) Range(key, end []byte, ro RangeOptions) (r *RangeResult, err error) {
- id := s.TxnBegin()
- kvs, count, rev, err := s.rangeKeys(key, end, ro.Limit, ro.Rev, ro.Count)
- s.txnEnd(id)
-
- rangeCounter.Inc()
-
- r = &RangeResult{
- KVs: kvs,
- Count: count,
- Rev: rev,
- }
-
- return r, err
-}
-
-func (s *store) DeleteRange(key, end []byte) (n, rev int64) {
- id := s.TxnBegin()
- n = s.deleteRange(key, end)
- s.txnEnd(id)
-
- deleteCounter.Inc()
-
- return n, int64(s.currentRev.main)
-}
-
-func (s *store) TxnBegin() int64 {
- s.mu.Lock()
- s.currentRev.sub = 0
- s.tx = s.b.BatchTx()
- s.tx.Lock()
-
- s.txnID = rand.Int63()
- return s.txnID
-}
-
-func (s *store) TxnEnd(txnID int64) error {
- err := s.txnEnd(txnID)
- if err != nil {
- return err
- }
-
- txnCounter.Inc()
- return nil
-}
-
-// txnEnd is used for unlocking an internal txn. It does
-// not increase the txnCounter.
-func (s *store) txnEnd(txnID int64) error {
- if txnID != s.txnID {
- return ErrTxnIDMismatch
- }
-
- // only update index if the txn modifies the mvcc state.
- // read only txn might execute with one write txn concurrently,
- // it should not write its index to mvcc.
- if s.txnModify {
- s.saveIndex()
- }
- s.txnModify = false
-
- s.tx.Unlock()
- if s.currentRev.sub != 0 {
- s.currentRev.main += 1
- }
- s.currentRev.sub = 0
-
- dbTotalSize.Set(float64(s.b.Size()))
- s.mu.Unlock()
- return nil
-}
-
-func (s *store) TxnRange(txnID int64, key, end []byte, ro RangeOptions) (r *RangeResult, err error) {
- if txnID != s.txnID {
- return nil, ErrTxnIDMismatch
- }
-
- kvs, count, rev, err := s.rangeKeys(key, end, ro.Limit, ro.Rev, ro.Count)
-
- r = &RangeResult{
- KVs: kvs,
- Count: count,
- Rev: rev,
- }
- return r, err
-}
-
-func (s *store) TxnPut(txnID int64, key, value []byte, lease lease.LeaseID) (rev int64, err error) {
- if txnID != s.txnID {
- return 0, ErrTxnIDMismatch
- }
-
- s.put(key, value, lease)
- return int64(s.currentRev.main + 1), nil
-}
-
-func (s *store) TxnDeleteRange(txnID int64, key, end []byte) (n, rev int64, err error) {
- if txnID != s.txnID {
- return 0, 0, ErrTxnIDMismatch
- }
-
- n = s.deleteRange(key, end)
- if n != 0 || s.currentRev.sub != 0 {
- rev = int64(s.currentRev.main + 1)
- } else {
- rev = int64(s.currentRev.main)
- }
- return n, rev, nil
-}
-
func (s *store) compactBarrier(ctx context.Context, ch chan struct{}) {
if ctx == nil || ctx.Err() != nil {
s.mu.Lock()
@@ -275,16 +149,25 @@ func (s *store) compactBarrier(ctx context.Context, ch chan struct{}) {
close(ch)
}
+func (s *store) Hash() (hash uint32, revision int64, err error) {
+ s.b.ForceCommit()
+ h, err := s.b.Hash(DefaultIgnores)
+ return h, s.currentRev, err
+}
+
func (s *store) Compact(rev int64) (<-chan struct{}, error) {
s.mu.Lock()
defer s.mu.Unlock()
+ s.revMu.Lock()
+ defer s.revMu.Unlock()
+
if rev <= s.compactMainRev {
ch := make(chan struct{})
f := func(ctx context.Context) { s.compactBarrier(ctx, ch) }
s.fifoSched.Schedule(f)
return ch, ErrCompacted
}
- if rev > s.currentRev.main {
+ if rev > s.currentRev {
return nil, ErrFutureRev
}
@@ -333,24 +216,14 @@ func init() {
}
}
-func (s *store) Hash() (uint32, int64, error) {
- s.mu.Lock()
- defer s.mu.Unlock()
- s.b.ForceCommit()
-
- h, err := s.b.Hash(DefaultIgnores)
- rev := s.currentRev.main
- return h, rev, err
-}
-
func (s *store) Commit() {
s.mu.Lock()
defer s.mu.Unlock()
- s.tx = s.b.BatchTx()
- s.tx.Lock()
- s.saveIndex()
- s.tx.Unlock()
+ tx := s.b.BatchTx()
+ tx.Lock()
+ s.saveIndex(tx)
+ tx.Unlock()
s.b.ForceCommit()
}
@@ -363,10 +236,8 @@ func (s *store) Restore(b backend.Backend) error {
s.b = b
s.kvindex = newTreeIndex()
- s.currentRev = revision{main: 1}
+ s.currentRev = 1
s.compactMainRev = -1
- s.tx = b.BatchTx()
- s.txnID = -1
s.fifoSched = schedule.NewFIFOScheduler()
s.stopc = make(chan struct{})
@@ -374,75 +245,63 @@ func (s *store) Restore(b backend.Backend) error {
}
func (s *store) restore() error {
+ reportDbTotalSizeInBytesMu.Lock()
+ b := s.b
+ reportDbTotalSizeInBytes = func() float64 { return float64(b.Size()) }
+ reportDbTotalSizeInBytesMu.Unlock()
+
min, max := newRevBytes(), newRevBytes()
revToBytes(revision{main: 1}, min)
revToBytes(revision{main: math.MaxInt64, sub: math.MaxInt64}, max)
keyToLease := make(map[string]lease.LeaseID)
- // use an unordered map to hold the temp index data to speed up
- // the initial key index recovery.
- // we will convert this unordered map into the tree index later.
- unordered := make(map[string]*keyIndex, 100000)
-
// restore index
tx := s.b.BatchTx()
tx.Lock()
+
_, finishedCompactBytes := tx.UnsafeRange(metaBucketName, finishedCompactKeyName, nil, 0)
if len(finishedCompactBytes) != 0 {
s.compactMainRev = bytesToRev(finishedCompactBytes[0]).main
plog.Printf("restore compact to %d", s.compactMainRev)
}
+ _, scheduledCompactBytes := tx.UnsafeRange(metaBucketName, scheduledCompactKeyName, nil, 0)
+ scheduledCompact := int64(0)
+ if len(scheduledCompactBytes) != 0 {
+ scheduledCompact = bytesToRev(scheduledCompactBytes[0]).main
+ }
- // TODO: limit N to reduce max memory usage
- keys, vals := tx.UnsafeRange(keyBucketName, min, max, 0)
- for i, key := range keys {
- var kv mvccpb.KeyValue
- if err := kv.Unmarshal(vals[i]); err != nil {
- plog.Fatalf("cannot unmarshal event: %v", err)
+ // index keys concurrently as they're loaded in from tx
+ keysGauge.Set(0)
+ rkvc, revc := restoreIntoIndex(s.kvindex)
+ for {
+ keys, vals := tx.UnsafeRange(keyBucketName, min, max, int64(restoreChunkKeys))
+ if len(keys) == 0 {
+ break
}
-
- rev := bytesToRev(key[:revBytesLen])
-
- // restore index
- switch {
- case isTombstone(key):
- if ki, ok := unordered[string(kv.Key)]; ok {
- ki.tombstone(rev.main, rev.sub)
- }
- delete(keyToLease, string(kv.Key))
-
- default:
- ki, ok := unordered[string(kv.Key)]
- if ok {
- ki.put(rev.main, rev.sub)
- } else {
- ki = &keyIndex{key: kv.Key}
- ki.restore(revision{kv.CreateRevision, 0}, rev, kv.Version)
- unordered[string(kv.Key)] = ki
- }
-
- if lid := lease.LeaseID(kv.Lease); lid != lease.NoLease {
- keyToLease[string(kv.Key)] = lid
- } else {
- delete(keyToLease, string(kv.Key))
- }
+ // rkvc blocks if the total pending keys exceeds the restore
+ // chunk size to keep keys from consuming too much memory.
+ restoreChunk(rkvc, keys, vals, keyToLease)
+ if len(keys) < restoreChunkKeys {
+ // partial set implies final set
+ break
}
-
- // update revision
- s.currentRev = rev
- }
-
- // restore the tree index from the unordered index.
- for _, v := range unordered {
- s.kvindex.Insert(v)
+ // next set begins after where this one ended
+ newMin := bytesToRev(keys[len(keys)-1][:revBytesLen])
+ newMin.sub++
+ revToBytes(newMin, min)
}
+ close(rkvc)
+ s.currentRev = <-revc
// keys in the range [compacted revision -N, compaction] might all be deleted due to compaction.
// the correct revision should be set to compaction revision in the case, not the largest revision
// we have seen.
- if s.currentRev.main < s.compactMainRev {
- s.currentRev.main = s.compactMainRev
+ if s.currentRev < s.compactMainRev {
+ s.currentRev = s.compactMainRev
+ }
+ if scheduledCompact <= s.compactMainRev {
+ scheduledCompact = 0
}
for key, lid := range keyToLease {
@@ -455,15 +314,6 @@ func (s *store) restore() error {
}
}
- _, scheduledCompactBytes := tx.UnsafeRange(metaBucketName, scheduledCompactKeyName, nil, 0)
- scheduledCompact := int64(0)
- if len(scheduledCompactBytes) != 0 {
- scheduledCompact = bytesToRev(scheduledCompactBytes[0]).main
- if scheduledCompact <= s.compactMainRev {
- scheduledCompact = 0
- }
- }
-
tx.Unlock()
if scheduledCompact != 0 {
@@ -474,6 +324,75 @@ func (s *store) restore() error {
return nil
}
+type revKeyValue struct {
+ key []byte
+ kv mvccpb.KeyValue
+ kstr string
+}
+
+func restoreIntoIndex(idx index) (chan<- revKeyValue, <-chan int64) {
+ rkvc, revc := make(chan revKeyValue, restoreChunkKeys), make(chan int64, 1)
+ go func() {
+ currentRev := int64(1)
+ defer func() { revc <- currentRev }()
+ // restore the tree index from streaming the unordered index.
+ kiCache := make(map[string]*keyIndex, restoreChunkKeys)
+ for rkv := range rkvc {
+ ki, ok := kiCache[rkv.kstr]
+ // purge kiCache if many keys but still missing in the cache
+ if !ok && len(kiCache) >= restoreChunkKeys {
+ i := 10
+ for k := range kiCache {
+ delete(kiCache, k)
+ if i--; i == 0 {
+ break
+ }
+ }
+ }
+ // cache miss, fetch from tree index if there
+ if !ok {
+ ki = &keyIndex{key: rkv.kv.Key}
+ if idxKey := idx.KeyIndex(ki); idxKey != nil {
+ kiCache[rkv.kstr], ki = idxKey, idxKey
+ ok = true
+ }
+ }
+ rev := bytesToRev(rkv.key)
+ currentRev = rev.main
+ if ok {
+ if isTombstone(rkv.key) {
+ ki.tombstone(rev.main, rev.sub)
+ continue
+ }
+ ki.put(rev.main, rev.sub)
+ } else if !isTombstone(rkv.key) {
+ ki.restore(revision{rkv.kv.CreateRevision, 0}, rev, rkv.kv.Version)
+ idx.Insert(ki)
+ kiCache[rkv.kstr] = ki
+ }
+ }
+ }()
+ return rkvc, revc
+}
+
+func restoreChunk(kvc chan<- revKeyValue, keys, vals [][]byte, keyToLease map[string]lease.LeaseID) {
+ for i, key := range keys {
+ rkv := revKeyValue{key: key}
+ if err := rkv.kv.Unmarshal(vals[i]); err != nil {
+ plog.Fatalf("cannot unmarshal event: %v", err)
+ }
+ rkv.kstr = string(rkv.kv.Key)
+ if isTombstone(key) {
+ delete(keyToLease, rkv.kstr)
+ } else if lid := lease.LeaseID(rkv.kv.Lease); lid != lease.NoLease {
+ keyToLease[rkv.kstr] = lid
+ } else {
+ delete(keyToLease, rkv.kstr)
+ }
+ kvc <- rkv
+ }
+}
+
func (s *store) Close() error {
close(s.stopc)
s.fifoSched.Stop()
@@ -490,180 +409,10 @@ func (a *store) Equal(b *store) bool {
return a.kvindex.Equal(b.kvindex)
}
-// range is a keyword in Go, add Keys suffix.
-func (s *store) rangeKeys(key, end []byte, limit, rangeRev int64, countOnly bool) (kvs []mvccpb.KeyValue, count int, curRev int64, err error) {
- curRev = int64(s.currentRev.main)
- if s.currentRev.sub > 0 {
- curRev += 1
- }
-
- if rangeRev > curRev {
- return nil, -1, s.currentRev.main, ErrFutureRev
- }
- var rev int64
- if rangeRev <= 0 {
- rev = curRev
- } else {
- rev = rangeRev
- }
- if rev < s.compactMainRev {
- return nil, -1, 0, ErrCompacted
- }
-
- _, revpairs := s.kvindex.Range(key, end, int64(rev))
- if len(revpairs) == 0 {
- return nil, 0, curRev, nil
- }
- if countOnly {
- return nil, len(revpairs), curRev, nil
- }
-
- for _, revpair := range revpairs {
- start, end := revBytesRange(revpair)
-
- _, vs := s.tx.UnsafeRange(keyBucketName, start, end, 0)
- if len(vs) != 1 {
- plog.Fatalf("range cannot find rev (%d,%d)", revpair.main, revpair.sub)
- }
-
- var kv mvccpb.KeyValue
- if err := kv.Unmarshal(vs[0]); err != nil {
- plog.Fatalf("cannot unmarshal event: %v", err)
- }
- kvs = append(kvs, kv)
- if limit > 0 && len(kvs) >= int(limit) {
- break
- }
- }
- return kvs, len(revpairs), curRev, nil
-}
-
-func (s *store) put(key, value []byte, leaseID lease.LeaseID) {
- s.txnModify = true
-
- rev := s.currentRev.main + 1
- c := rev
- oldLease := lease.NoLease
-
- // if the key exists before, use its previous created and
- // get its previous leaseID
- _, created, ver, err := s.kvindex.Get(key, rev)
- if err == nil {
- c = created.main
- oldLease = s.le.GetLease(lease.LeaseItem{Key: string(key)})
- }
-
- ibytes := newRevBytes()
- revToBytes(revision{main: rev, sub: s.currentRev.sub}, ibytes)
-
- ver = ver + 1
- kv := mvccpb.KeyValue{
- Key: key,
- Value: value,
- CreateRevision: c,
- ModRevision: rev,
- Version: ver,
- Lease: int64(leaseID),
- }
-
- d, err := kv.Marshal()
- if err != nil {
- plog.Fatalf("cannot marshal event: %v", err)
- }
-
- s.tx.UnsafeSeqPut(keyBucketName, ibytes, d)
- s.kvindex.Put(key, revision{main: rev, sub: s.currentRev.sub})
- s.changes = append(s.changes, kv)
- s.currentRev.sub += 1
-
- if oldLease != lease.NoLease {
- if s.le == nil {
- panic("no lessor to detach lease")
- }
-
- err = s.le.Detach(oldLease, []lease.LeaseItem{{Key: string(key)}})
- if err != nil {
- plog.Errorf("unexpected error from lease detach: %v", err)
- }
- }
-
- if leaseID != lease.NoLease {
- if s.le == nil {
- panic("no lessor to attach lease")
- }
-
- err = s.le.Attach(leaseID, []lease.LeaseItem{{Key: string(key)}})
- if err != nil {
- panic("unexpected error from lease Attach")
- }
- }
-}
-
-func (s *store) deleteRange(key, end []byte) int64 {
- s.txnModify = true
-
- rrev := s.currentRev.main
- if s.currentRev.sub > 0 {
- rrev += 1
- }
- keys, revs := s.kvindex.Range(key, end, rrev)
-
- if len(keys) == 0 {
- return 0
- }
-
- for i, key := range keys {
- s.delete(key, revs[i])
- }
- return int64(len(keys))
-}
-
-func (s *store) delete(key []byte, rev revision) {
- mainrev := s.currentRev.main + 1
-
- ibytes := newRevBytes()
- revToBytes(revision{main: mainrev, sub: s.currentRev.sub}, ibytes)
- ibytes = appendMarkTombstone(ibytes)
-
- kv := mvccpb.KeyValue{
- Key: key,
- }
-
- d, err := kv.Marshal()
- if err != nil {
- plog.Fatalf("cannot marshal event: %v", err)
- }
-
- s.tx.UnsafeSeqPut(keyBucketName, ibytes, d)
- err = s.kvindex.Tombstone(key, revision{main: mainrev, sub: s.currentRev.sub})
- if err != nil {
- plog.Fatalf("cannot tombstone an existing key (%s): %v", string(key), err)
- }
- s.changes = append(s.changes, kv)
- s.currentRev.sub += 1
-
- item := lease.LeaseItem{Key: string(key)}
- leaseID := s.le.GetLease(item)
-
- if leaseID != lease.NoLease {
- err = s.le.Detach(leaseID, []lease.LeaseItem{item})
- if err != nil {
- plog.Errorf("cannot detach %v", err)
- }
- }
-}
-
-func (s *store) getChanges() []mvccpb.KeyValue {
- changes := s.changes
- s.changes = make([]mvccpb.KeyValue, 0, 4)
- return changes
-}
-
-func (s *store) saveIndex() {
+func (s *store) saveIndex(tx backend.BatchTx) {
if s.ig == nil {
return
}
- tx := s.tx
bs := s.bytesBuf8
binary.BigEndian.PutUint64(bs, s.ig.ConsistentIndex())
// put the index into the underlying backend
diff --git a/vendor/github.com/coreos/etcd/mvcc/kvstore_txn.go b/vendor/github.com/coreos/etcd/mvcc/kvstore_txn.go
new file mode 100644
index 000000000000..13d4d530d0ae
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/mvcc/kvstore_txn.go
@@ -0,0 +1,253 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 mvcc
+
+import (
+ "github.com/coreos/etcd/lease"
+ "github.com/coreos/etcd/mvcc/backend"
+ "github.com/coreos/etcd/mvcc/mvccpb"
+)
+
+type storeTxnRead struct {
+ s *store
+ tx backend.ReadTx
+
+ firstRev int64
+ rev int64
+}
+
+func (s *store) Read() TxnRead {
+ s.mu.RLock()
+ tx := s.b.ReadTx()
+ s.revMu.RLock()
+ tx.Lock()
+ firstRev, rev := s.compactMainRev, s.currentRev
+ s.revMu.RUnlock()
+ return newMetricsTxnRead(&storeTxnRead{s, tx, firstRev, rev})
+}
+
+func (tr *storeTxnRead) FirstRev() int64 { return tr.firstRev }
+func (tr *storeTxnRead) Rev() int64 { return tr.rev }
+
+func (tr *storeTxnRead) Range(key, end []byte, ro RangeOptions) (r *RangeResult, err error) {
+ return tr.rangeKeys(key, end, tr.Rev(), ro)
+}
+
+func (tr *storeTxnRead) End() {
+ tr.tx.Unlock()
+ tr.s.mu.RUnlock()
+}
+
+type storeTxnWrite struct {
+ *storeTxnRead
+ tx backend.BatchTx
+ // beginRev is the revision where the txn begins; it will write to the next revision.
+ beginRev int64
+ changes []mvccpb.KeyValue
+}
+
+func (s *store) Write() TxnWrite {
+ s.mu.RLock()
+ tx := s.b.BatchTx()
+ tx.Lock()
+ tw := &storeTxnWrite{
+ storeTxnRead: &storeTxnRead{s, tx, 0, 0},
+ tx: tx,
+ beginRev: s.currentRev,
+ changes: make([]mvccpb.KeyValue, 0, 4),
+ }
+ return newMetricsTxnWrite(tw)
+}
+
+func (tw *storeTxnWrite) Rev() int64 { return tw.beginRev }
+
+func (tw *storeTxnWrite) Range(key, end []byte, ro RangeOptions) (r *RangeResult, err error) {
+ rev := tw.beginRev
+ if len(tw.changes) > 0 {
+ rev++
+ }
+ return tw.rangeKeys(key, end, rev, ro)
+}
+
+func (tw *storeTxnWrite) DeleteRange(key, end []byte) (int64, int64) {
+ if n := tw.deleteRange(key, end); n != 0 || len(tw.changes) > 0 {
+ return n, int64(tw.beginRev + 1)
+ }
+ return 0, int64(tw.beginRev)
+}
+
+func (tw *storeTxnWrite) Put(key, value []byte, lease lease.LeaseID) int64 {
+ tw.put(key, value, lease)
+ return int64(tw.beginRev + 1)
+}
+
+func (tw *storeTxnWrite) End() {
+ // only update index if the txn modifies the mvcc state.
+ if len(tw.changes) != 0 {
+ tw.s.saveIndex(tw.tx)
+ // hold revMu lock to prevent new read txns from opening until writeback.
+ tw.s.revMu.Lock()
+ tw.s.currentRev++
+ }
+ tw.tx.Unlock()
+ if len(tw.changes) != 0 {
+ tw.s.revMu.Unlock()
+ }
+ tw.s.mu.RUnlock()
+}
+
+func (tr *storeTxnRead) rangeKeys(key, end []byte, curRev int64, ro RangeOptions) (*RangeResult, error) {
+ rev := ro.Rev
+ if rev > curRev {
+ return &RangeResult{KVs: nil, Count: -1, Rev: curRev}, ErrFutureRev
+ }
+ if rev <= 0 {
+ rev = curRev
+ }
+ if rev < tr.s.compactMainRev {
+ return &RangeResult{KVs: nil, Count: -1, Rev: 0}, ErrCompacted
+ }
+
+ _, revpairs := tr.s.kvindex.Range(key, end, int64(rev))
+ if len(revpairs) == 0 {
+ return &RangeResult{KVs: nil, Count: 0, Rev: curRev}, nil
+ }
+ if ro.Count {
+ return &RangeResult{KVs: nil, Count: len(revpairs), Rev: curRev}, nil
+ }
+
+ var kvs []mvccpb.KeyValue
+ for _, revpair := range revpairs {
+ start, end := revBytesRange(revpair)
+ _, vs := tr.tx.UnsafeRange(keyBucketName, start, end, 0)
+ if len(vs) != 1 {
+ plog.Fatalf("range cannot find rev (%d,%d)", revpair.main, revpair.sub)
+ }
+
+ var kv mvccpb.KeyValue
+ if err := kv.Unmarshal(vs[0]); err != nil {
+ plog.Fatalf("cannot unmarshal event: %v", err)
+ }
+ kvs = append(kvs, kv)
+ if ro.Limit > 0 && len(kvs) >= int(ro.Limit) {
+ break
+ }
+ }
+ return &RangeResult{KVs: kvs, Count: len(revpairs), Rev: curRev}, nil
+}
+
+func (tw *storeTxnWrite) put(key, value []byte, leaseID lease.LeaseID) {
+ rev := tw.beginRev + 1
+ c := rev
+ oldLease := lease.NoLease
+
+ // if the key exists before, use its previous created and
+ // get its previous leaseID
+ _, created, ver, err := tw.s.kvindex.Get(key, rev)
+ if err == nil {
+ c = created.main
+ oldLease = tw.s.le.GetLease(lease.LeaseItem{Key: string(key)})
+ }
+
+ ibytes := newRevBytes()
+ idxRev := revision{main: rev, sub: int64(len(tw.changes))}
+ revToBytes(idxRev, ibytes)
+
+ ver = ver + 1
+ kv := mvccpb.KeyValue{
+ Key: key,
+ Value: value,
+ CreateRevision: c,
+ ModRevision: rev,
+ Version: ver,
+ Lease: int64(leaseID),
+ }
+
+ d, err := kv.Marshal()
+ if err != nil {
+ plog.Fatalf("cannot marshal event: %v", err)
+ }
+
+ tw.tx.UnsafeSeqPut(keyBucketName, ibytes, d)
+ tw.s.kvindex.Put(key, idxRev)
+ tw.changes = append(tw.changes, kv)
+
+ if oldLease != lease.NoLease {
+ if tw.s.le == nil {
+ panic("no lessor to detach lease")
+ }
+ err = tw.s.le.Detach(oldLease, []lease.LeaseItem{{Key: string(key)}})
+ if err != nil {
+ plog.Errorf("unexpected error from lease detach: %v", err)
+ }
+ }
+ if leaseID != lease.NoLease {
+ if tw.s.le == nil {
+ panic("no lessor to attach lease")
+ }
+ err = tw.s.le.Attach(leaseID, []lease.LeaseItem{{Key: string(key)}})
+ if err != nil {
+ panic("unexpected error from lease Attach")
+ }
+ }
+}
+
+func (tw *storeTxnWrite) deleteRange(key, end []byte) int64 {
+ rrev := tw.beginRev
+ if len(tw.changes) > 0 {
+ rrev += 1
+ }
+ keys, revs := tw.s.kvindex.Range(key, end, rrev)
+ if len(keys) == 0 {
+ return 0
+ }
+ for i, key := range keys {
+ tw.delete(key, revs[i])
+ }
+ return int64(len(keys))
+}
+
+func (tw *storeTxnWrite) delete(key []byte, rev revision) {
+ ibytes := newRevBytes()
+ idxRev := revision{main: tw.beginRev + 1, sub: int64(len(tw.changes))}
+ revToBytes(idxRev, ibytes)
+ ibytes = appendMarkTombstone(ibytes)
+
+ kv := mvccpb.KeyValue{Key: key}
+
+ d, err := kv.Marshal()
+ if err != nil {
+ plog.Fatalf("cannot marshal event: %v", err)
+ }
+
+ tw.tx.UnsafeSeqPut(keyBucketName, ibytes, d)
+ err = tw.s.kvindex.Tombstone(key, idxRev)
+ if err != nil {
+ plog.Fatalf("cannot tombstone an existing key (%s): %v", string(key), err)
+ }
+ tw.changes = append(tw.changes, kv)
+
+ item := lease.LeaseItem{Key: string(key)}
+ leaseID := tw.s.le.GetLease(item)
+
+ if leaseID != lease.NoLease {
+ err = tw.s.le.Detach(leaseID, []lease.LeaseItem{item})
+ if err != nil {
+ plog.Errorf("cannot detach %v", err)
+ }
+ }
+}
+
+func (tw *storeTxnWrite) Changes() []mvccpb.KeyValue { return tw.changes }
diff --git a/vendor/github.com/coreos/etcd/mvcc/metrics.go b/vendor/github.com/coreos/etcd/mvcc/metrics.go
index aa8af6aa5525..a65fe59b996d 100644
--- a/vendor/github.com/coreos/etcd/mvcc/metrics.go
+++ b/vendor/github.com/coreos/etcd/mvcc/metrics.go
@@ -15,6 +15,8 @@
package mvcc
import (
+ "sync"
+
"github.com/prometheus/client_golang/prometheus"
)
@@ -129,12 +131,21 @@ var (
Buckets: prometheus.ExponentialBuckets(100, 2, 14),
})
- dbTotalSize = prometheus.NewGauge(prometheus.GaugeOpts{
+ dbTotalSize = prometheus.NewGaugeFunc(prometheus.GaugeOpts{
Namespace: "etcd_debugging",
Subsystem: "mvcc",
Name: "db_total_size_in_bytes",
Help: "Total size of the underlying database in bytes.",
- })
+ },
+ func() float64 {
+ reportDbTotalSizeInBytesMu.RLock()
+ defer reportDbTotalSizeInBytesMu.RUnlock()
+ return reportDbTotalSizeInBytes()
+ },
+ )
+ // overridden by mvcc initialization
+ reportDbTotalSizeInBytesMu sync.RWMutex
+ reportDbTotalSizeInBytes func() float64 = func() float64 { return 0 }
)
func init() {
diff --git a/vendor/github.com/coreos/etcd/mvcc/metrics_txn.go b/vendor/github.com/coreos/etcd/mvcc/metrics_txn.go
new file mode 100644
index 000000000000..fd2144279aea
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/mvcc/metrics_txn.go
@@ -0,0 +1,67 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 mvcc
+
+import (
+ "github.com/coreos/etcd/lease"
+)
+
+type metricsTxnWrite struct {
+ TxnWrite
+ ranges uint
+ puts uint
+ deletes uint
+}
+
+func newMetricsTxnRead(tr TxnRead) TxnRead {
+ return &metricsTxnWrite{&txnReadWrite{tr}, 0, 0, 0}
+}
+
+func newMetricsTxnWrite(tw TxnWrite) TxnWrite {
+ return &metricsTxnWrite{tw, 0, 0, 0}
+}
+
+func (tw *metricsTxnWrite) Range(key, end []byte, ro RangeOptions) (*RangeResult, error) {
+ tw.ranges++
+ return tw.TxnWrite.Range(key, end, ro)
+}
+
+func (tw *metricsTxnWrite) DeleteRange(key, end []byte) (n, rev int64) {
+ tw.deletes++
+ return tw.TxnWrite.DeleteRange(key, end)
+}
+
+func (tw *metricsTxnWrite) Put(key, value []byte, lease lease.LeaseID) (rev int64) {
+ tw.puts++
+ return tw.TxnWrite.Put(key, value, lease)
+}
+
+func (tw *metricsTxnWrite) End() {
+ defer tw.TxnWrite.End()
+ if sum := tw.ranges + tw.puts + tw.deletes; sum != 1 {
+ if sum > 1 {
+ txnCounter.Inc()
+ }
+ return
+ }
+ switch {
+ case tw.ranges == 1:
+ rangeCounter.Inc()
+ case tw.puts == 1:
+ putCounter.Inc()
+ case tw.deletes == 1:
+ deleteCounter.Inc()
+ }
+}
diff --git a/vendor/github.com/coreos/etcd/mvcc/mvccpb/kv.pb.go b/vendor/github.com/coreos/etcd/mvcc/mvccpb/kv.pb.go
index aa053f4e66e0..7033f1326626 100644
--- a/vendor/github.com/coreos/etcd/mvcc/mvccpb/kv.pb.go
+++ b/vendor/github.com/coreos/etcd/mvcc/mvccpb/kv.pb.go
@@ -713,7 +713,7 @@ func init() { proto.RegisterFile("kv.proto", fileDescriptorKv) }
var fileDescriptorKv = []byte{
// 303 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x6c, 0x90, 0x41, 0x4e, 0xc2, 0x40,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x6c, 0x90, 0x41, 0x4e, 0xc2, 0x40,
0x14, 0x86, 0x3b, 0x14, 0x0a, 0x3e, 0x08, 0x36, 0x13, 0x12, 0x27, 0x2e, 0x26, 0x95, 0x8d, 0x18,
0x13, 0x4c, 0xf0, 0x06, 0xc6, 0xae, 0x70, 0x61, 0x1a, 0x74, 0x4b, 0x4a, 0x79, 0x21, 0xa4, 0x94,
0x69, 0x4a, 0x9d, 0xa4, 0x37, 0x71, 0xef, 0xde, 0x73, 0xb0, 0xe4, 0x08, 0x52, 0x2f, 0x62, 0xfa,
diff --git a/vendor/github.com/coreos/etcd/mvcc/watchable_store.go b/vendor/github.com/coreos/etcd/mvcc/watchable_store.go
index 028e05b9ad8c..68d9ab71d271 100644
--- a/vendor/github.com/coreos/etcd/mvcc/watchable_store.go
+++ b/vendor/github.com/coreos/etcd/mvcc/watchable_store.go
@@ -41,10 +41,12 @@ type watchable interface {
}
type watchableStore struct {
- mu sync.Mutex
-
*store
+ // mu protects watcher groups and batches. It should never be locked
+ // before locking store.mu to avoid deadlock.
+ mu sync.RWMutex
+
// victims are watcher batches that were blocked on the watch channel
victims []watcherBatch
victimc chan struct{}
@@ -76,9 +78,11 @@ func newWatchableStore(b backend.Backend, le lease.Lessor, ig ConsistentIndexGet
synced: newWatcherGroup(),
stopc: make(chan struct{}),
}
+ s.store.ReadView = &readView{s}
+ s.store.WriteView = &writeView{s}
if s.le != nil {
// use this store as the deleter so revokes trigger watch events
- s.le.SetRangeDeleter(s)
+ s.le.SetRangeDeleter(func() lease.TxnDelete { return s.Write() })
}
s.wg.Add(2)
go s.syncWatchersLoop()
@@ -86,89 +90,6 @@ func newWatchableStore(b backend.Backend, le lease.Lessor, ig ConsistentIndexGet
return s
}
-func (s *watchableStore) Put(key, value []byte, lease lease.LeaseID) (rev int64) {
- s.mu.Lock()
- defer s.mu.Unlock()
-
- rev = s.store.Put(key, value, lease)
- changes := s.store.getChanges()
- if len(changes) != 1 {
- plog.Panicf("unexpected len(changes) != 1 after put")
- }
-
- ev := mvccpb.Event{
- Type: mvccpb.PUT,
- Kv: &changes[0],
- }
- s.notify(rev, []mvccpb.Event{ev})
- return rev
-}
-
-func (s *watchableStore) DeleteRange(key, end []byte) (n, rev int64) {
- s.mu.Lock()
- defer s.mu.Unlock()
-
- n, rev = s.store.DeleteRange(key, end)
- changes := s.store.getChanges()
-
- if len(changes) != int(n) {
- plog.Panicf("unexpected len(changes) != n after deleteRange")
- }
-
- if n == 0 {
- return n, rev
- }
-
- evs := make([]mvccpb.Event, n)
- for i := range changes {
- evs[i] = mvccpb.Event{
- Type: mvccpb.DELETE,
- Kv: &changes[i]}
- evs[i].Kv.ModRevision = rev
- }
- s.notify(rev, evs)
- return n, rev
-}
-
-func (s *watchableStore) TxnBegin() int64 {
- s.mu.Lock()
- return s.store.TxnBegin()
-}
-
-func (s *watchableStore) TxnEnd(txnID int64) error {
- err := s.store.TxnEnd(txnID)
- if err != nil {
- return err
- }
-
- changes := s.getChanges()
- if len(changes) == 0 {
- s.mu.Unlock()
- return nil
- }
-
- rev := s.store.Rev()
- evs := make([]mvccpb.Event, len(changes))
- for i, change := range changes {
- switch change.CreateRevision {
- case 0:
- evs[i] = mvccpb.Event{
- Type: mvccpb.DELETE,
- Kv: &changes[i]}
- evs[i].Kv.ModRevision = rev
- default:
- evs[i] = mvccpb.Event{
- Type: mvccpb.PUT,
- Kv: &changes[i]}
- }
- }
-
- s.notify(rev, evs)
- s.mu.Unlock()
-
- return nil
-}
-
func (s *watchableStore) Close() error {
close(s.stopc)
s.wg.Wait()
@@ -186,9 +107,6 @@ func (s *watchableStore) NewWatchStream() WatchStream {
}
func (s *watchableStore) watch(key, end []byte, startRev int64, id WatchID, ch chan<- WatchResponse, fcs ...FilterFunc) (*watcher, cancelFunc) {
- s.mu.Lock()
- defer s.mu.Unlock()
-
wa := &watcher{
key: key,
end: end,
@@ -198,21 +116,24 @@ func (s *watchableStore) watch(key, end []byte, startRev int64, id WatchID, ch c
fcs: fcs,
}
- s.store.mu.Lock()
- synced := startRev > s.store.currentRev.main || startRev == 0
+ s.mu.Lock()
+ s.revMu.RLock()
+ synced := startRev > s.store.currentRev || startRev == 0
if synced {
- wa.minRev = s.store.currentRev.main + 1
+ wa.minRev = s.store.currentRev + 1
if startRev > wa.minRev {
wa.minRev = startRev
}
}
- s.store.mu.Unlock()
if synced {
s.synced.add(wa)
} else {
slowWatcherGauge.Inc()
s.unsynced.add(wa)
}
+ s.revMu.RUnlock()
+ s.mu.Unlock()
+
watcherGauge.Inc()
return wa, func() { s.cancelWatcher(wa) }
@@ -278,12 +199,15 @@ func (s *watchableStore) syncWatchersLoop() {
defer s.wg.Done()
for {
- s.mu.Lock()
+ s.mu.RLock()
st := time.Now()
lastUnsyncedWatchers := s.unsynced.size()
- s.syncWatchers()
- unsyncedWatchers := s.unsynced.size()
- s.mu.Unlock()
+ s.mu.RUnlock()
+
+ unsyncedWatchers := 0
+ if lastUnsyncedWatchers > 0 {
+ unsyncedWatchers = s.syncWatchers()
+ }
syncDuration := time.Since(st)
waitDuration := 100 * time.Millisecond
@@ -310,9 +234,9 @@ func (s *watchableStore) syncVictimsLoop() {
for s.moveVictims() != 0 {
// try to update all victim watchers
}
- s.mu.Lock()
+ s.mu.RLock()
isEmpty := len(s.victims) == 0
- s.mu.Unlock()
+ s.mu.RUnlock()
var tickc <-chan time.Time
if !isEmpty {
@@ -355,8 +279,8 @@ func (s *watchableStore) moveVictims() (moved int) {
// assign completed victim watchers to unsync/sync
s.mu.Lock()
- s.store.mu.Lock()
- curRev := s.store.currentRev.main
+ s.store.revMu.RLock()
+ curRev := s.store.currentRev
for w, eb := range wb {
if newVictim != nil && newVictim[w] != nil {
// couldn't send watch response; stays victim
@@ -373,7 +297,7 @@ func (s *watchableStore) moveVictims() (moved int) {
s.synced.add(w)
}
}
- s.store.mu.Unlock()
+ s.store.revMu.RUnlock()
s.mu.Unlock()
}
@@ -391,19 +315,23 @@ func (s *watchableStore) moveVictims() (moved int) {
// 2. iterate over the set to get the minimum revision and remove compacted watchers
// 3. use minimum revision to get all key-value pairs and send those events to watchers
// 4. remove synced watchers in set from unsynced group and move to synced group
-func (s *watchableStore) syncWatchers() {
+func (s *watchableStore) syncWatchers() int {
+ s.mu.Lock()
+ defer s.mu.Unlock()
+
if s.unsynced.size() == 0 {
- return
+ return 0
}
- s.store.mu.Lock()
- defer s.store.mu.Unlock()
+ s.store.revMu.RLock()
+ defer s.store.revMu.RUnlock()
// in order to find key-value pairs from unsynced watchers, we need to
// find min revision index, and these revisions can be used to
// query the backend store of key-value pairs
- curRev := s.store.currentRev.main
+ curRev := s.store.currentRev
compactionRev := s.store.compactMainRev
+
wg, minRev := s.unsynced.choose(maxWatchersPerSync, curRev, compactionRev)
minBytes, maxBytes := newRevBytes(), newRevBytes()
revToBytes(revision{main: minRev}, minBytes)
@@ -411,7 +339,7 @@ func (s *watchableStore) syncWatchers() {
// UnsafeRange returns keys and values. And in boltdb, keys are revisions.
// values are actual key-value pairs in backend.
- tx := s.store.b.BatchTx()
+ tx := s.store.b.ReadTx()
tx.Lock()
revs, vs := tx.UnsafeRange(keyBucketName, minBytes, maxBytes, 0)
evs := kvsToEvents(wg, revs, vs)
@@ -461,6 +389,8 @@ func (s *watchableStore) syncWatchers() {
vsz += len(v)
}
slowWatcherGauge.Set(float64(s.unsynced.size() + vsz))
+
+ return s.unsynced.size()
}
// kvsToEvents gets all events for the watchers from all key-value pairs
@@ -526,8 +456,8 @@ func (s *watchableStore) addVictim(victim watcherBatch) {
func (s *watchableStore) rev() int64 { return s.store.Rev() }
func (s *watchableStore) progress(w *watcher) {
- s.mu.Lock()
- defer s.mu.Unlock()
+ s.mu.RLock()
+ defer s.mu.RUnlock()
if _, ok := s.synced.watchers[w]; ok {
w.send(WatchResponse{WatchID: w.id, Revision: s.rev()})
diff --git a/vendor/github.com/coreos/etcd/mvcc/watchable_store_txn.go b/vendor/github.com/coreos/etcd/mvcc/watchable_store_txn.go
new file mode 100644
index 000000000000..5c5bfda13413
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/mvcc/watchable_store_txn.go
@@ -0,0 +1,53 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 mvcc
+
+import (
+ "github.com/coreos/etcd/mvcc/mvccpb"
+)
+
+func (tw *watchableStoreTxnWrite) End() {
+ changes := tw.Changes()
+ if len(changes) == 0 {
+ tw.TxnWrite.End()
+ return
+ }
+
+ rev := tw.Rev() + 1
+ evs := make([]mvccpb.Event, len(changes))
+ for i, change := range changes {
+ evs[i].Kv = &changes[i]
+ if change.CreateRevision == 0 {
+ evs[i].Type = mvccpb.DELETE
+ evs[i].Kv.ModRevision = rev
+ } else {
+ evs[i].Type = mvccpb.PUT
+ }
+ }
+
+ // end write txn under watchable store lock so the updates are visible
+ // when asynchronous event posting checks the current store revision
+ tw.s.mu.Lock()
+ tw.s.notify(rev, evs)
+ tw.TxnWrite.End()
+ tw.s.mu.Unlock()
+}
+
+type watchableStoreTxnWrite struct {
+ TxnWrite
+ s *watchableStore
+}
+
+func (s *watchableStore) Write() TxnWrite { return &watchableStoreTxnWrite{s.store.Write(), s} }
diff --git a/vendor/github.com/coreos/etcd/mvcc/watcher_group.go b/vendor/github.com/coreos/etcd/mvcc/watcher_group.go
index 2710c1cc9408..6ef1d0ce8bbe 100644
--- a/vendor/github.com/coreos/etcd/mvcc/watcher_group.go
+++ b/vendor/github.com/coreos/etcd/mvcc/watcher_group.go
@@ -183,7 +183,7 @@ func (wg *watcherGroup) add(wa *watcher) {
// contains is whether the given key has a watcher in the group.
func (wg *watcherGroup) contains(key string) bool {
_, ok := wg.keyWatchers[key]
- return ok || wg.ranges.Contains(adt.NewStringAffinePoint(key))
+ return ok || wg.ranges.Intersects(adt.NewStringAffinePoint(key))
}
// size gives the number of unique watchers in the group.
diff --git a/vendor/github.com/coreos/etcd/pkg/adt/interval_tree.go b/vendor/github.com/coreos/etcd/pkg/adt/interval_tree.go
index 6edbe593fb41..9769771ea4fd 100644
--- a/vendor/github.com/coreos/etcd/pkg/adt/interval_tree.go
+++ b/vendor/github.com/coreos/etcd/pkg/adt/interval_tree.go
@@ -15,6 +15,7 @@
package adt
import (
+ "bytes"
"math"
)
@@ -134,25 +135,29 @@ func (x *intervalNode) updateMax() {
type nodeVisitor func(n *intervalNode) bool
// visit will call a node visitor on each node that overlaps the given interval
-func (x *intervalNode) visit(iv *Interval, nv nodeVisitor) {
+func (x *intervalNode) visit(iv *Interval, nv nodeVisitor) bool {
if x == nil {
- return
+ return true
}
v := iv.Compare(&x.iv.Ivl)
switch {
case v < 0:
- x.left.visit(iv, nv)
+ if !x.left.visit(iv, nv) {
+ return false
+ }
case v > 0:
maxiv := Interval{x.iv.Ivl.Begin, x.max}
if maxiv.Compare(iv) == 0 {
- x.left.visit(iv, nv)
- x.right.visit(iv, nv)
+ if !x.left.visit(iv, nv) || !x.right.visit(iv, nv) {
+ return false
+ }
}
default:
- nv(x)
- x.left.visit(iv, nv)
- x.right.visit(iv, nv)
+ if !x.left.visit(iv, nv) || !nv(x) || !x.right.visit(iv, nv) {
+ return false
+ }
}
+ return true
}
type IntervalValue struct {
@@ -402,10 +407,11 @@ func (ivt *IntervalTree) MaxHeight() int {
return int((2 * math.Log2(float64(ivt.Len()+1))) + 0.5)
}
-// IntervalVisitor is used on tree searchs; return false to stop searching.
+// IntervalVisitor is used on tree searches; return false to stop searching.
type IntervalVisitor func(n *IntervalValue) bool
// Visit calls a visitor function on every tree node intersecting the given interval.
+// It will visit each interval [x, y) in ascending order sorted on x.
func (ivt *IntervalTree) Visit(ivl Interval, ivv IntervalVisitor) {
ivt.root.visit(&ivl, func(n *intervalNode) bool { return ivv(&n.iv) })
}
@@ -432,8 +438,8 @@ func (ivt *IntervalTree) Find(ivl Interval) (ret *IntervalValue) {
return &n.iv
}
-// Contains returns true if there is some tree node intersecting the given interval.
-func (ivt *IntervalTree) Contains(iv Interval) bool {
+// Intersects returns true if there is some tree node intersecting the given interval.
+func (ivt *IntervalTree) Intersects(iv Interval) bool {
x := ivt.root
for x != nil && iv.Compare(&x.iv.Ivl) != 0 {
if x.left != nil && x.left.max.Compare(iv.Begin) > 0 {
@@ -445,6 +451,30 @@ func (ivt *IntervalTree) Contains(iv Interval) bool {
return x != nil
}
+// Contains returns true if the interval tree's keys cover the entire given interval.
+func (ivt *IntervalTree) Contains(ivl Interval) bool {
+ var maxEnd, minBegin Comparable
+
+ isContiguous := true
+ ivt.Visit(ivl, func(n *IntervalValue) bool {
+ if minBegin == nil {
+ minBegin = n.Ivl.Begin
+ maxEnd = n.Ivl.End
+ return true
+ }
+ if maxEnd.Compare(n.Ivl.Begin) < 0 {
+ isContiguous = false
+ return false
+ }
+ if n.Ivl.End.Compare(maxEnd) > 0 {
+ maxEnd = n.Ivl.End
+ }
+ return true
+ })
+
+ return isContiguous && minBegin != nil && maxEnd.Compare(ivl.End) >= 0 && minBegin.Compare(ivl.Begin) <= 0
+}
+
// Stab returns a slice with all elements in the tree intersecting the interval.
func (ivt *IntervalTree) Stab(iv Interval) (ivs []*IntervalValue) {
if ivt.count == 0 {
@@ -529,3 +559,32 @@ func (v Int64Comparable) Compare(c Comparable) int {
}
return 0
}
+
+// BytesAffineComparable treats empty byte arrays as > all other byte arrays
+type BytesAffineComparable []byte
+
+func (b BytesAffineComparable) Compare(c Comparable) int {
+ bc := c.(BytesAffineComparable)
+
+ if len(b) == 0 {
+ if len(bc) == 0 {
+ return 0
+ }
+ return 1
+ }
+ if len(bc) == 0 {
+ return -1
+ }
+
+ return bytes.Compare(b, bc)
+}
+
+func NewBytesAffineInterval(begin, end []byte) Interval {
+ return Interval{BytesAffineComparable(begin), BytesAffineComparable(end)}
+}
+func NewBytesAffinePoint(b []byte) Interval {
+ be := make([]byte, len(b)+1)
+ copy(be, b)
+ be[len(b)] = 0
+ return NewBytesAffineInterval(b, be)
+}
diff --git a/vendor/github.com/coreos/etcd/pkg/debugutil/doc.go b/vendor/github.com/coreos/etcd/pkg/debugutil/doc.go
new file mode 100644
index 000000000000..74499eb2737e
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/pkg/debugutil/doc.go
@@ -0,0 +1,16 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 debugutil includes utility functions for debugging.
+package debugutil
diff --git a/vendor/github.com/coreos/etcd/pkg/debugutil/pprof.go b/vendor/github.com/coreos/etcd/pkg/debugutil/pprof.go
new file mode 100644
index 000000000000..8d5544a3dcac
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/pkg/debugutil/pprof.go
@@ -0,0 +1,47 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 debugutil
+
+import (
+ "net/http"
+ "net/http/pprof"
+ "runtime"
+)
+
+const HTTPPrefixPProf = "/debug/pprof"
+
+// PProfHandlers returns a map of pprof handlers keyed by the HTTP path.
+func PProfHandlers() map[string]http.Handler {
+ // set only when there's no existing setting
+ if runtime.SetMutexProfileFraction(-1) == 0 {
+ // 1 out of 5 mutex events are reported, on average
+ runtime.SetMutexProfileFraction(5)
+ }
+
+ m := make(map[string]http.Handler)
+
+ m[HTTPPrefixPProf+"/"] = http.HandlerFunc(pprof.Index)
+ m[HTTPPrefixPProf+"/profile"] = http.HandlerFunc(pprof.Profile)
+ m[HTTPPrefixPProf+"/symbol"] = http.HandlerFunc(pprof.Symbol)
+ m[HTTPPrefixPProf+"/cmdline"] = http.HandlerFunc(pprof.Cmdline)
+ m[HTTPPrefixPProf+"/trace "] = http.HandlerFunc(pprof.Trace)
+ m[HTTPPrefixPProf+"/heap"] = pprof.Handler("heap")
+ m[HTTPPrefixPProf+"/goroutine"] = pprof.Handler("goroutine")
+ m[HTTPPrefixPProf+"/threadcreate"] = pprof.Handler("threadcreate")
+ m[HTTPPrefixPProf+"/block"] = pprof.Handler("block")
+ m[HTTPPrefixPProf+"/mutex"] = pprof.Handler("mutex")
+
+ return m
+}
diff --git a/vendor/github.com/coreos/etcd/pkg/fileutil/fileutil.go b/vendor/github.com/coreos/etcd/pkg/fileutil/fileutil.go
index aad40b75904c..fce5126c6956 100644
--- a/vendor/github.com/coreos/etcd/pkg/fileutil/fileutil.go
+++ b/vendor/github.com/coreos/etcd/pkg/fileutil/fileutil.go
@@ -17,6 +17,7 @@ package fileutil
import (
"fmt"
+ "io"
"io/ioutil"
"os"
"path/filepath"
@@ -101,11 +102,11 @@ func Exist(name string) bool {
// shorten the length of the file.
func ZeroToEnd(f *os.File) error {
// TODO: support FALLOC_FL_ZERO_RANGE
- off, err := f.Seek(0, os.SEEK_CUR)
+ off, err := f.Seek(0, io.SeekCurrent)
if err != nil {
return err
}
- lenf, lerr := f.Seek(0, os.SEEK_END)
+ lenf, lerr := f.Seek(0, io.SeekEnd)
if lerr != nil {
return lerr
}
@@ -116,6 +117,6 @@ func ZeroToEnd(f *os.File) error {
if err = Preallocate(f, lenf, true); err != nil {
return err
}
- _, err = f.Seek(off, os.SEEK_SET)
+ _, err = f.Seek(off, io.SeekStart)
return err
}
diff --git a/vendor/github.com/coreos/etcd/pkg/fileutil/lock_linux.go b/vendor/github.com/coreos/etcd/pkg/fileutil/lock_linux.go
index dec25a1af44d..939fea623818 100644
--- a/vendor/github.com/coreos/etcd/pkg/fileutil/lock_linux.go
+++ b/vendor/github.com/coreos/etcd/pkg/fileutil/lock_linux.go
@@ -17,6 +17,7 @@
package fileutil
import (
+ "io"
"os"
"syscall"
)
@@ -36,7 +37,7 @@ const (
var (
wrlck = syscall.Flock_t{
Type: syscall.F_WRLCK,
- Whence: int16(os.SEEK_SET),
+ Whence: int16(io.SeekStart),
Start: 0,
Len: 0,
}
diff --git a/vendor/github.com/coreos/etcd/pkg/fileutil/preallocate.go b/vendor/github.com/coreos/etcd/pkg/fileutil/preallocate.go
index bb7f02812393..c747b7cf81f9 100644
--- a/vendor/github.com/coreos/etcd/pkg/fileutil/preallocate.go
+++ b/vendor/github.com/coreos/etcd/pkg/fileutil/preallocate.go
@@ -14,7 +14,10 @@
package fileutil
-import "os"
+import (
+ "io"
+ "os"
+)
// Preallocate tries to allocate the space for given
// file. This operation is only supported on linux by a
@@ -22,6 +25,10 @@ import "os"
// If the operation is unsupported, no error will be returned.
// Otherwise, the error encountered will be returned.
func Preallocate(f *os.File, sizeInBytes int64, extendFile bool) error {
+ if sizeInBytes == 0 {
+ // fallocate will return EINVAL if length is 0; skip
+ return nil
+ }
if extendFile {
return preallocExtend(f, sizeInBytes)
}
@@ -29,15 +36,15 @@ func Preallocate(f *os.File, sizeInBytes int64, extendFile bool) error {
}
func preallocExtendTrunc(f *os.File, sizeInBytes int64) error {
- curOff, err := f.Seek(0, os.SEEK_CUR)
+ curOff, err := f.Seek(0, io.SeekCurrent)
if err != nil {
return err
}
- size, err := f.Seek(sizeInBytes, os.SEEK_END)
+ size, err := f.Seek(sizeInBytes, io.SeekEnd)
if err != nil {
return err
}
- if _, err = f.Seek(curOff, os.SEEK_SET); err != nil {
+ if _, err = f.Seek(curOff, io.SeekStart); err != nil {
return err
}
if sizeInBytes > size {
diff --git a/vendor/github.com/coreos/etcd/pkg/httputil/httputil.go b/vendor/github.com/coreos/etcd/pkg/httputil/httputil.go
index 859fc9d49e1c..09f44e7c71d9 100644
--- a/vendor/github.com/coreos/etcd/pkg/httputil/httputil.go
+++ b/vendor/github.com/coreos/etcd/pkg/httputil/httputil.go
@@ -13,15 +13,6 @@ import (
"net/http"
)
-func RequestCanceler(req *http.Request) func() {
- ch := make(chan struct{})
- req.Cancel = ch
-
- return func() {
- close(ch)
- }
-}
-
// GracefulClose drains http.Response.Body until it hits EOF
// and closes it. This prevents TCP/TLS connections from closing,
// therefore available for reuse.
diff --git a/vendor/github.com/coreos/etcd/pkg/idutil/id.go b/vendor/github.com/coreos/etcd/pkg/idutil/id.go
index 931beb2d0583..2da210626571 100644
--- a/vendor/github.com/coreos/etcd/pkg/idutil/id.go
+++ b/vendor/github.com/coreos/etcd/pkg/idutil/id.go
@@ -32,8 +32,8 @@ const (
// a node member ID.
//
// The initial id is in this format:
-// High order byte is memberID, next 5 bytes are from timestamp,
-// and low order 2 bytes are 0s.
+// High order 2 bytes are from memberID, next 5 bytes are from timestamp,
+// and low order one byte is a counter.
// | prefix | suffix |
// | 2 bytes | 5 bytes | 1 byte |
// | memberID | timestamp | cnt |
diff --git a/vendor/github.com/coreos/etcd/pkg/netutil/netutil.go b/vendor/github.com/coreos/etcd/pkg/netutil/netutil.go
index bb5f392b34c5..5e38dc98dbfe 100644
--- a/vendor/github.com/coreos/etcd/pkg/netutil/netutil.go
+++ b/vendor/github.com/coreos/etcd/pkg/netutil/netutil.go
@@ -16,14 +16,13 @@
package netutil
import (
+ "context"
"net"
"net/url"
"reflect"
"sort"
"time"
- "golang.org/x/net/context"
-
"github.com/coreos/etcd/pkg/types"
"github.com/coreos/pkg/capnslog"
)
@@ -32,11 +31,38 @@ var (
plog = capnslog.NewPackageLogger("github.com/coreos/etcd", "pkg/netutil")
// indirection for testing
- resolveTCPAddr = net.ResolveTCPAddr
+ resolveTCPAddr = resolveTCPAddrDefault
)
const retryInterval = time.Second
+// taken from go's ResolveTCP code but uses configurable ctx
+func resolveTCPAddrDefault(ctx context.Context, addr string) (*net.TCPAddr, error) {
+ host, port, serr := net.SplitHostPort(addr)
+ if serr != nil {
+ return nil, serr
+ }
+ portnum, perr := net.DefaultResolver.LookupPort(ctx, "tcp", port)
+ if perr != nil {
+ return nil, perr
+ }
+
+ var ips []net.IPAddr
+ if ip := net.ParseIP(host); ip != nil {
+ ips = []net.IPAddr{{IP: ip}}
+ } else {
+ // Try as a DNS name.
+ ipss, err := net.DefaultResolver.LookupIPAddr(ctx, host)
+ if err != nil {
+ return nil, err
+ }
+ ips = ipss
+ }
+ // randomize?
+ ip := ips[0]
+ return &net.TCPAddr{IP: ip.IP, Port: portnum, Zone: ip.Zone}, nil
+}
+
// resolveTCPAddrs is a convenience wrapper for net.ResolveTCPAddr.
// resolveTCPAddrs return a new set of url.URLs, in which all DNS hostnames
// are resolved.
@@ -75,7 +101,7 @@ func resolveURL(ctx context.Context, u url.URL) (string, error) {
if host == "localhost" || net.ParseIP(host) != nil {
return "", nil
}
- tcpAddr, err := resolveTCPAddr("tcp", u.Host)
+ tcpAddr, err := resolveTCPAddr(ctx, u.Host)
if err == nil {
plog.Infof("resolving %s to %s", u.Host, tcpAddr.String())
return tcpAddr.String(), nil
diff --git a/vendor/github.com/coreos/etcd/pkg/schedule/schedule.go b/vendor/github.com/coreos/etcd/pkg/schedule/schedule.go
index 79c59b01288a..bf8528b753a0 100644
--- a/vendor/github.com/coreos/etcd/pkg/schedule/schedule.go
+++ b/vendor/github.com/coreos/etcd/pkg/schedule/schedule.go
@@ -88,8 +88,6 @@ func (f *fifo) Schedule(j Job) {
}
}
f.pendings = append(f.pendings, j)
-
- return
}
func (f *fifo) Pending() int {
diff --git a/vendor/github.com/coreos/etcd/pkg/srv/srv.go b/vendor/github.com/coreos/etcd/pkg/srv/srv.go
new file mode 100644
index 000000000000..fefcbcb4b889
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/pkg/srv/srv.go
@@ -0,0 +1,140 @@
+// Copyright 2015 The etcd Authors
+//
+// 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 srv looks up DNS SRV records.
+package srv
+
+import (
+ "fmt"
+ "net"
+ "net/url"
+ "strings"
+
+ "github.com/coreos/etcd/pkg/types"
+)
+
+var (
+ // indirection for testing
+ lookupSRV = net.LookupSRV // net.DefaultResolver.LookupSRV when ctxs don't conflict
+ resolveTCPAddr = net.ResolveTCPAddr
+)
+
+// GetCluster gets the cluster information via DNS discovery.
+// Also sees each entry as a separate instance.
+func GetCluster(service, name, dns string, apurls types.URLs) ([]string, error) {
+ tempName := int(0)
+ tcp2ap := make(map[string]url.URL)
+
+ // First, resolve the apurls
+ for _, url := range apurls {
+ tcpAddr, err := resolveTCPAddr("tcp", url.Host)
+ if err != nil {
+ return nil, err
+ }
+ tcp2ap[tcpAddr.String()] = url
+ }
+
+ stringParts := []string{}
+ updateNodeMap := func(service, scheme string) error {
+ _, addrs, err := lookupSRV(service, "tcp", dns)
+ if err != nil {
+ return err
+ }
+ for _, srv := range addrs {
+ port := fmt.Sprintf("%d", srv.Port)
+ host := net.JoinHostPort(srv.Target, port)
+ tcpAddr, terr := resolveTCPAddr("tcp", host)
+ if terr != nil {
+ err = terr
+ continue
+ }
+ n := ""
+ url, ok := tcp2ap[tcpAddr.String()]
+ if ok {
+ n = name
+ }
+ if n == "" {
+ n = fmt.Sprintf("%d", tempName)
+ tempName++
+ }
+ // SRV records have a trailing dot but URL shouldn't.
+ shortHost := strings.TrimSuffix(srv.Target, ".")
+ urlHost := net.JoinHostPort(shortHost, port)
+ stringParts = append(stringParts, fmt.Sprintf("%s=%s://%s", n, scheme, urlHost))
+ if ok && url.Scheme != scheme {
+ err = fmt.Errorf("bootstrap at %s from DNS for %s has scheme mismatch with expected peer %s", scheme+"://"+urlHost, service, url.String())
+ }
+ }
+ if len(stringParts) == 0 {
+ return err
+ }
+ return nil
+ }
+
+ failCount := 0
+ err := updateNodeMap(service+"-ssl", "https")
+ srvErr := make([]string, 2)
+ if err != nil {
+ srvErr[0] = fmt.Sprintf("error querying DNS SRV records for _%s-ssl %s", service, err)
+ failCount++
+ }
+ err = updateNodeMap(service, "http")
+ if err != nil {
+ srvErr[1] = fmt.Sprintf("error querying DNS SRV records for _%s %s", service, err)
+ failCount++
+ }
+ if failCount == 2 {
+ return nil, fmt.Errorf("srv: too many errors querying DNS SRV records (%q, %q)", srvErr[0], srvErr[1])
+ }
+ return stringParts, nil
+}
+
+type SRVClients struct {
+ Endpoints []string
+ SRVs []*net.SRV
+}
+
+// GetClient looks up the client endpoints for a service and domain.
+func GetClient(service, domain string) (*SRVClients, error) {
+ var urls []*url.URL
+ var srvs []*net.SRV
+
+ updateURLs := func(service, scheme string) error {
+ _, addrs, err := lookupSRV(service, "tcp", domain)
+ if err != nil {
+ return err
+ }
+ for _, srv := range addrs {
+ urls = append(urls, &url.URL{
+ Scheme: scheme,
+ Host: net.JoinHostPort(srv.Target, fmt.Sprintf("%d", srv.Port)),
+ })
+ }
+ srvs = append(srvs, addrs...)
+ return nil
+ }
+
+ errHTTPS := updateURLs(service+"-ssl", "https")
+ errHTTP := updateURLs(service, "http")
+
+ if errHTTPS != nil && errHTTP != nil {
+ return nil, fmt.Errorf("dns lookup errors: %s and %s", errHTTPS, errHTTP)
+ }
+
+ endpoints := make([]string, len(urls))
+ for i := range urls {
+ endpoints[i] = urls[i].String()
+ }
+ return &SRVClients{Endpoints: endpoints, SRVs: srvs}, nil
+}
diff --git a/vendor/github.com/coreos/etcd/pkg/transport/listener.go b/vendor/github.com/coreos/etcd/pkg/transport/listener.go
index 4fcdb5ad9a37..3b58b41543f2 100644
--- a/vendor/github.com/coreos/etcd/pkg/transport/listener.go
+++ b/vendor/github.com/coreos/etcd/pkg/transport/listener.go
@@ -23,22 +23,21 @@ import (
"crypto/x509/pkix"
"encoding/pem"
"fmt"
- "log"
"math/big"
"net"
"os"
"path/filepath"
+ "strings"
"time"
- "github.com/coreos/etcd/pkg/fileutil"
"github.com/coreos/etcd/pkg/tlsutil"
)
-func NewListener(addr, scheme string, tlscfg *tls.Config) (l net.Listener, err error) {
+func NewListener(addr, scheme string, tlsinfo *TLSInfo) (l net.Listener, err error) {
if l, err = newListener(addr, scheme); err != nil {
return nil, err
}
- return wrapTLS(addr, scheme, tlscfg, l)
+ return wrapTLS(addr, scheme, tlsinfo, l)
}
func newListener(addr string, scheme string) (net.Listener, error) {
@@ -49,15 +48,11 @@ func newListener(addr string, scheme string) (net.Listener, error) {
return net.Listen("tcp", addr)
}
-func wrapTLS(addr, scheme string, tlscfg *tls.Config, l net.Listener) (net.Listener, error) {
+func wrapTLS(addr, scheme string, tlsinfo *TLSInfo, l net.Listener) (net.Listener, error) {
if scheme != "https" && scheme != "unixs" {
return l, nil
}
- if tlscfg == nil {
- l.Close()
- return nil, fmt.Errorf("cannot listen on TLS for %s: KeyFile and CertFile are not presented", scheme+"://"+addr)
- }
- return tls.NewListener(l, tlscfg), nil
+ return newTLSListener(l, tlsinfo)
}
type TLSInfo struct {
@@ -70,6 +65,10 @@ type TLSInfo struct {
// ServerName ensures the cert matches the given host in case of discovery / virtual hosting
ServerName string
+ // HandshakeFailure is optionally called when a connection fails to handshake. The
+ // connection will be closed immediately afterwards.
+ HandshakeFailure func(*tls.Conn, error)
+
selfCert bool
// parseFunc exists to simplify testing. Typically, parseFunc
@@ -86,7 +85,7 @@ func (info TLSInfo) Empty() bool {
}
func SelfCert(dirpath string, hosts []string) (info TLSInfo, err error) {
- if err = fileutil.TouchDirAll(dirpath); err != nil {
+ if err = os.MkdirAll(dirpath, 0700); err != nil {
return
}
@@ -173,6 +172,14 @@ func (info TLSInfo) baseConfig() (*tls.Config, error) {
MinVersion: tls.VersionTLS12,
ServerName: info.ServerName,
}
+ // this only reloads certs when there's a client request
+ // TODO: support server-side refresh (e.g. inotify, SIGHUP), caching
+ cfg.GetCertificate = func(clientHello *tls.ClientHelloInfo) (*tls.Certificate, error) {
+ return tlsutil.NewCert(info.CertFile, info.KeyFile, info.parseFunc)
+ }
+ cfg.GetClientCertificate = func(unused *tls.CertificateRequestInfo) (*tls.Certificate, error) {
+ return tlsutil.NewCert(info.CertFile, info.KeyFile, info.parseFunc)
+ }
return cfg, nil
}
@@ -235,9 +242,6 @@ func (info TLSInfo) ClientConfig() (*tls.Config, error) {
if err != nil {
return nil, err
}
- // if given a CA, trust any host with a cert signed by the CA
- log.Println("warning: ignoring ServerName for user-provided CA for backwards compatibility is deprecated")
- cfg.ServerName = ""
}
if info.selfCert {
@@ -246,31 +250,11 @@ func (info TLSInfo) ClientConfig() (*tls.Config, error) {
return cfg, nil
}
-// ShallowCopyTLSConfig copies *tls.Config. This is only
-// work-around for go-vet tests, which complains
-//
-// assignment copies lock value to p: crypto/tls.Config contains sync.Once contains sync.Mutex
-//
-// Keep up-to-date with 'go/src/crypto/tls/common.go'
-func ShallowCopyTLSConfig(cfg *tls.Config) *tls.Config {
- ncfg := tls.Config{
- Time: cfg.Time,
- Certificates: cfg.Certificates,
- NameToCertificate: cfg.NameToCertificate,
- GetCertificate: cfg.GetCertificate,
- RootCAs: cfg.RootCAs,
- NextProtos: cfg.NextProtos,
- ServerName: cfg.ServerName,
- ClientAuth: cfg.ClientAuth,
- ClientCAs: cfg.ClientCAs,
- InsecureSkipVerify: cfg.InsecureSkipVerify,
- CipherSuites: cfg.CipherSuites,
- PreferServerCipherSuites: cfg.PreferServerCipherSuites,
- SessionTicketKey: cfg.SessionTicketKey,
- ClientSessionCache: cfg.ClientSessionCache,
- MinVersion: cfg.MinVersion,
- MaxVersion: cfg.MaxVersion,
- CurvePreferences: cfg.CurvePreferences,
- }
- return &ncfg
+// IsClosedConnError returns true if the error is from closing listener, cmux.
+// copied from golang.org/x/net/http2/http2.go
+func IsClosedConnError(err error) bool {
+ // 'use of closed network connection' (Go <=1.8)
+ // 'use of closed file or network connection' (Go >1.8, internal/poll.ErrClosing)
+ // 'mux: listener closed' (cmux.ErrListenerClosed)
+ return err != nil && strings.Contains(err.Error(), "closed")
}
diff --git a/vendor/github.com/coreos/etcd/pkg/transport/listener_tls.go b/vendor/github.com/coreos/etcd/pkg/transport/listener_tls.go
new file mode 100644
index 000000000000..86511860335a
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/pkg/transport/listener_tls.go
@@ -0,0 +1,217 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 transport
+
+import (
+ "context"
+ "crypto/tls"
+ "crypto/x509"
+ "fmt"
+ "net"
+ "strings"
+ "sync"
+)
+
+// tlsListener overrides a TLS listener so it will reject client
+// certificates with insufficient SAN credentials.
+type tlsListener struct {
+ net.Listener
+ connc chan net.Conn
+ donec chan struct{}
+ err error
+ handshakeFailure func(*tls.Conn, error)
+}
+
+func newTLSListener(l net.Listener, tlsinfo *TLSInfo) (net.Listener, error) {
+ if tlsinfo == nil || tlsinfo.Empty() {
+ l.Close()
+ return nil, fmt.Errorf("cannot listen on TLS for %s: KeyFile and CertFile are not presented", l.Addr().String())
+ }
+ tlscfg, err := tlsinfo.ServerConfig()
+ if err != nil {
+ return nil, err
+ }
+
+ hf := tlsinfo.HandshakeFailure
+ if hf == nil {
+ hf = func(*tls.Conn, error) {}
+ }
+ tlsl := &tlsListener{
+ Listener: tls.NewListener(l, tlscfg),
+ connc: make(chan net.Conn),
+ donec: make(chan struct{}),
+ handshakeFailure: hf,
+ }
+ go tlsl.acceptLoop()
+ return tlsl, nil
+}
+
+func (l *tlsListener) Accept() (net.Conn, error) {
+ select {
+ case conn := <-l.connc:
+ return conn, nil
+ case <-l.donec:
+ return nil, l.err
+ }
+}
+
+// acceptLoop launches each TLS handshake in a separate goroutine
+// to prevent a hanging TLS connection from blocking other connections.
+func (l *tlsListener) acceptLoop() {
+ var wg sync.WaitGroup
+ var pendingMu sync.Mutex
+
+ pending := make(map[net.Conn]struct{})
+ ctx, cancel := context.WithCancel(context.Background())
+ defer func() {
+ cancel()
+ pendingMu.Lock()
+ for c := range pending {
+ c.Close()
+ }
+ pendingMu.Unlock()
+ wg.Wait()
+ close(l.donec)
+ }()
+
+ for {
+ conn, err := l.Listener.Accept()
+ if err != nil {
+ l.err = err
+ return
+ }
+
+ pendingMu.Lock()
+ pending[conn] = struct{}{}
+ pendingMu.Unlock()
+
+ wg.Add(1)
+ go func() {
+ defer func() {
+ if conn != nil {
+ conn.Close()
+ }
+ wg.Done()
+ }()
+
+ tlsConn := conn.(*tls.Conn)
+ herr := tlsConn.Handshake()
+ pendingMu.Lock()
+ delete(pending, conn)
+ pendingMu.Unlock()
+ if herr != nil {
+ l.handshakeFailure(tlsConn, herr)
+ return
+ }
+
+ st := tlsConn.ConnectionState()
+ if len(st.PeerCertificates) > 0 {
+ cert := st.PeerCertificates[0]
+ addr := tlsConn.RemoteAddr().String()
+ if cerr := checkCert(ctx, cert, addr); cerr != nil {
+ l.handshakeFailure(tlsConn, cerr)
+ return
+ }
+ }
+ select {
+ case l.connc <- tlsConn:
+ conn = nil
+ case <-ctx.Done():
+ }
+ }()
+ }
+}
+
+func checkCert(ctx context.Context, cert *x509.Certificate, remoteAddr string) error {
+ h, _, herr := net.SplitHostPort(remoteAddr)
+ if len(cert.IPAddresses) == 0 && len(cert.DNSNames) == 0 {
+ return nil
+ }
+ if herr != nil {
+ return herr
+ }
+ if len(cert.IPAddresses) > 0 {
+ cerr := cert.VerifyHostname(h)
+ if cerr == nil {
+ return nil
+ }
+ if len(cert.DNSNames) == 0 {
+ return cerr
+ }
+ }
+ if len(cert.DNSNames) > 0 {
+ ok, err := isHostInDNS(ctx, h, cert.DNSNames)
+ if ok {
+ return nil
+ }
+ errStr := ""
+ if err != nil {
+ errStr = " (" + err.Error() + ")"
+ }
+ return fmt.Errorf("tls: %q does not match any of DNSNames %q"+errStr, h, cert.DNSNames)
+ }
+ return nil
+}
+
+func isHostInDNS(ctx context.Context, host string, dnsNames []string) (ok bool, err error) {
+ // reverse lookup
+ wildcards, names := []string{}, []string{}
+ for _, dns := range dnsNames {
+ if strings.HasPrefix(dns, "*.") {
+ wildcards = append(wildcards, dns[1:])
+ } else {
+ names = append(names, dns)
+ }
+ }
+ lnames, lerr := net.DefaultResolver.LookupAddr(ctx, host)
+ for _, name := range lnames {
+ // strip trailing '.' from PTR record
+ if name[len(name)-1] == '.' {
+ name = name[:len(name)-1]
+ }
+ for _, wc := range wildcards {
+ if strings.HasSuffix(name, wc) {
+ return true, nil
+ }
+ }
+ for _, n := range names {
+ if n == name {
+ return true, nil
+ }
+ }
+ }
+ err = lerr
+
+ // forward lookup
+ for _, dns := range names {
+ addrs, lerr := net.DefaultResolver.LookupHost(ctx, dns)
+ if lerr != nil {
+ err = lerr
+ continue
+ }
+ for _, addr := range addrs {
+ if addr == host {
+ return true, nil
+ }
+ }
+ }
+ return false, err
+}
+
+func (l *tlsListener) Close() error {
+ err := l.Listener.Close()
+ <-l.donec
+ return err
+}
diff --git a/vendor/github.com/coreos/etcd/pkg/transport/timeout_listener.go b/vendor/github.com/coreos/etcd/pkg/transport/timeout_listener.go
index 0f4df5fbe3b2..b35e04955bb0 100644
--- a/vendor/github.com/coreos/etcd/pkg/transport/timeout_listener.go
+++ b/vendor/github.com/coreos/etcd/pkg/transport/timeout_listener.go
@@ -15,7 +15,6 @@
package transport
import (
- "crypto/tls"
"net"
"time"
)
@@ -23,7 +22,7 @@ import (
// NewTimeoutListener returns a listener that listens on the given address.
// If read/write on the accepted connection blocks longer than its time limit,
// it will return timeout error.
-func NewTimeoutListener(addr string, scheme string, tlscfg *tls.Config, rdtimeoutd, wtimeoutd time.Duration) (net.Listener, error) {
+func NewTimeoutListener(addr string, scheme string, tlsinfo *TLSInfo, rdtimeoutd, wtimeoutd time.Duration) (net.Listener, error) {
ln, err := newListener(addr, scheme)
if err != nil {
return nil, err
@@ -33,7 +32,7 @@ func NewTimeoutListener(addr string, scheme string, tlscfg *tls.Config, rdtimeou
rdtimeoutd: rdtimeoutd,
wtimeoutd: wtimeoutd,
}
- if ln, err = wrapTLS(addr, scheme, tlscfg, ln); err != nil {
+ if ln, err = wrapTLS(addr, scheme, tlsinfo, ln); err != nil {
return nil, err
}
return ln, nil
diff --git a/vendor/github.com/coreos/etcd/pkg/transport/unix_listener.go b/vendor/github.com/coreos/etcd/pkg/transport/unix_listener.go
index c126b6f7fa04..123e2036f0f0 100644
--- a/vendor/github.com/coreos/etcd/pkg/transport/unix_listener.go
+++ b/vendor/github.com/coreos/etcd/pkg/transport/unix_listener.go
@@ -22,7 +22,7 @@ import (
type unixListener struct{ net.Listener }
func NewUnixListener(addr string) (net.Listener, error) {
- if err := os.RemoveAll(addr); err != nil {
+ if err := os.Remove(addr); err != nil && !os.IsNotExist(err) {
return nil, err
}
l, err := net.Listen("unix", addr)
@@ -33,7 +33,7 @@ func NewUnixListener(addr string) (net.Listener, error) {
}
func (ul *unixListener) Close() error {
- if err := os.RemoveAll(ul.Addr().String()); err != nil {
+ if err := os.Remove(ul.Addr().String()); err != nil && !os.IsNotExist(err) {
return err
}
return ul.Listener.Close()
diff --git a/vendor/github.com/coreos/etcd/pkg/wait/wait.go b/vendor/github.com/coreos/etcd/pkg/wait/wait.go
index 0f31eeb9790b..34fa237e825b 100644
--- a/vendor/github.com/coreos/etcd/pkg/wait/wait.go
+++ b/vendor/github.com/coreos/etcd/pkg/wait/wait.go
@@ -21,22 +21,29 @@ import (
"sync"
)
+// Wait is an interface that provides the ability to wait and trigger events that
+// are associated with IDs.
type Wait interface {
+ // Register waits returns a chan that waits on the given ID.
+ // The chan will be triggered when Trigger is called with
+ // the same ID.
Register(id uint64) <-chan interface{}
+ // Trigger triggers the waiting chans with the given ID.
Trigger(id uint64, x interface{})
IsRegistered(id uint64) bool
}
-type List struct {
+type list struct {
l sync.Mutex
m map[uint64]chan interface{}
}
-func New() *List {
- return &List{m: make(map[uint64]chan interface{})}
+// New creates a Wait.
+func New() Wait {
+ return &list{m: make(map[uint64]chan interface{})}
}
-func (w *List) Register(id uint64) <-chan interface{} {
+func (w *list) Register(id uint64) <-chan interface{} {
w.l.Lock()
defer w.l.Unlock()
ch := w.m[id]
@@ -49,7 +56,7 @@ func (w *List) Register(id uint64) <-chan interface{} {
return ch
}
-func (w *List) Trigger(id uint64, x interface{}) {
+func (w *list) Trigger(id uint64, x interface{}) {
w.l.Lock()
ch := w.m[id]
delete(w.m, id)
@@ -60,7 +67,7 @@ func (w *List) Trigger(id uint64, x interface{}) {
}
}
-func (w *List) IsRegistered(id uint64) bool {
+func (w *list) IsRegistered(id uint64) bool {
w.l.Lock()
defer w.l.Unlock()
_, ok := w.m[id]
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/chan_stream.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/chan_stream.go
new file mode 100644
index 000000000000..3aa01f2052b1
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/chan_stream.go
@@ -0,0 +1,165 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 adapter
+
+import (
+ "golang.org/x/net/context"
+
+ "google.golang.org/grpc"
+ "google.golang.org/grpc/metadata"
+)
+
+// chanServerStream implements grpc.ServerStream with a chanStream
+type chanServerStream struct {
+ headerc chan<- metadata.MD
+ trailerc chan<- metadata.MD
+ grpc.Stream
+
+ headers []metadata.MD
+}
+
+func (ss *chanServerStream) SendHeader(md metadata.MD) error {
+ if ss.headerc == nil {
+ return errAlreadySentHeader
+ }
+ outmd := make(map[string][]string)
+ for _, h := range append(ss.headers, md) {
+ for k, v := range h {
+ outmd[k] = v
+ }
+ }
+ select {
+ case ss.headerc <- outmd:
+ ss.headerc = nil
+ ss.headers = nil
+ return nil
+ case <-ss.Context().Done():
+ }
+ return ss.Context().Err()
+}
+
+func (ss *chanServerStream) SetHeader(md metadata.MD) error {
+ if ss.headerc == nil {
+ return errAlreadySentHeader
+ }
+ ss.headers = append(ss.headers, md)
+ return nil
+}
+
+func (ss *chanServerStream) SetTrailer(md metadata.MD) {
+ ss.trailerc <- md
+}
+
+// chanClientStream implements grpc.ClientStream with a chanStream
+type chanClientStream struct {
+ headerc <-chan metadata.MD
+ trailerc <-chan metadata.MD
+ *chanStream
+}
+
+func (cs *chanClientStream) Header() (metadata.MD, error) {
+ select {
+ case md := <-cs.headerc:
+ return md, nil
+ case <-cs.Context().Done():
+ }
+ return nil, cs.Context().Err()
+}
+
+func (cs *chanClientStream) Trailer() metadata.MD {
+ select {
+ case md := <-cs.trailerc:
+ return md
+ case <-cs.Context().Done():
+ return nil
+ }
+}
+
+func (cs *chanClientStream) CloseSend() error {
+ close(cs.chanStream.sendc)
+ return nil
+}
+
+// chanStream implements grpc.Stream using channels
+type chanStream struct {
+ recvc <-chan interface{}
+ sendc chan<- interface{}
+ ctx context.Context
+ cancel context.CancelFunc
+}
+
+func (s *chanStream) Context() context.Context { return s.ctx }
+
+func (s *chanStream) SendMsg(m interface{}) error {
+ select {
+ case s.sendc <- m:
+ if err, ok := m.(error); ok {
+ return err
+ }
+ return nil
+ case <-s.ctx.Done():
+ }
+ return s.ctx.Err()
+}
+
+func (s *chanStream) RecvMsg(m interface{}) error {
+ v := m.(*interface{})
+ for {
+ select {
+ case msg, ok := <-s.recvc:
+ if !ok {
+ return grpc.ErrClientConnClosing
+ }
+ if err, ok := msg.(error); ok {
+ return err
+ }
+ *v = msg
+ return nil
+ case <-s.ctx.Done():
+ }
+ if len(s.recvc) == 0 {
+ // prioritize any pending recv messages over canceled context
+ break
+ }
+ }
+ return s.ctx.Err()
+}
+
+func newPipeStream(ctx context.Context, ssHandler func(chanServerStream) error) chanClientStream {
+ // ch1 is buffered so server can send error on close
+ ch1, ch2 := make(chan interface{}, 1), make(chan interface{})
+ headerc, trailerc := make(chan metadata.MD, 1), make(chan metadata.MD, 1)
+
+ cctx, ccancel := context.WithCancel(ctx)
+ cli := &chanStream{recvc: ch1, sendc: ch2, ctx: cctx, cancel: ccancel}
+ cs := chanClientStream{headerc, trailerc, cli}
+
+ sctx, scancel := context.WithCancel(ctx)
+ srv := &chanStream{recvc: ch2, sendc: ch1, ctx: sctx, cancel: scancel}
+ ss := chanServerStream{headerc, trailerc, srv, nil}
+
+ go func() {
+ if err := ssHandler(ss); err != nil {
+ select {
+ case srv.sendc <- err:
+ case <-sctx.Done():
+ case <-cctx.Done():
+ }
+ }
+ scancel()
+ ccancel()
+ }()
+ return cs
+}
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/cluster_client_adapter.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/cluster_client_adapter.go
new file mode 100644
index 000000000000..4ddf78e15ec1
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/cluster_client_adapter.go
@@ -0,0 +1,44 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 adapter
+
+import (
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+)
+
+type cls2clc struct{ cls pb.ClusterServer }
+
+func ClusterServerToClusterClient(cls pb.ClusterServer) pb.ClusterClient {
+ return &cls2clc{cls}
+}
+
+func (s *cls2clc) MemberList(ctx context.Context, r *pb.MemberListRequest, opts ...grpc.CallOption) (*pb.MemberListResponse, error) {
+ return s.cls.MemberList(ctx, r)
+}
+
+func (s *cls2clc) MemberAdd(ctx context.Context, r *pb.MemberAddRequest, opts ...grpc.CallOption) (*pb.MemberAddResponse, error) {
+ return s.cls.MemberAdd(ctx, r)
+}
+
+func (s *cls2clc) MemberUpdate(ctx context.Context, r *pb.MemberUpdateRequest, opts ...grpc.CallOption) (*pb.MemberUpdateResponse, error) {
+ return s.cls.MemberUpdate(ctx, r)
+}
+
+func (s *cls2clc) MemberRemove(ctx context.Context, r *pb.MemberRemoveRequest, opts ...grpc.CallOption) (*pb.MemberRemoveResponse, error) {
+ return s.cls.MemberRemove(ctx, r)
+}
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/doc.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/doc.go
new file mode 100644
index 000000000000..7170be233046
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/doc.go
@@ -0,0 +1,17 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 adapter provides gRPC adapters between client and server
+// gRPC interfaces without needing to go through a gRPC connection.
+package adapter
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/election_client_adapter.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/election_client_adapter.go
new file mode 100644
index 000000000000..383c1b9d8fb4
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/election_client_adapter.go
@@ -0,0 +1,79 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 adapter
+
+import (
+ "github.com/coreos/etcd/etcdserver/api/v3election/v3electionpb"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+)
+
+type es2ec struct{ es v3electionpb.ElectionServer }
+
+func ElectionServerToElectionClient(es v3electionpb.ElectionServer) v3electionpb.ElectionClient {
+ return &es2ec{es}
+}
+
+func (s *es2ec) Campaign(ctx context.Context, r *v3electionpb.CampaignRequest, opts ...grpc.CallOption) (*v3electionpb.CampaignResponse, error) {
+ return s.es.Campaign(ctx, r)
+}
+
+func (s *es2ec) Proclaim(ctx context.Context, r *v3electionpb.ProclaimRequest, opts ...grpc.CallOption) (*v3electionpb.ProclaimResponse, error) {
+ return s.es.Proclaim(ctx, r)
+}
+
+func (s *es2ec) Leader(ctx context.Context, r *v3electionpb.LeaderRequest, opts ...grpc.CallOption) (*v3electionpb.LeaderResponse, error) {
+ return s.es.Leader(ctx, r)
+}
+
+func (s *es2ec) Resign(ctx context.Context, r *v3electionpb.ResignRequest, opts ...grpc.CallOption) (*v3electionpb.ResignResponse, error) {
+ return s.es.Resign(ctx, r)
+}
+
+func (s *es2ec) Observe(ctx context.Context, in *v3electionpb.LeaderRequest, opts ...grpc.CallOption) (v3electionpb.Election_ObserveClient, error) {
+ cs := newPipeStream(ctx, func(ss chanServerStream) error {
+ return s.es.Observe(in, &es2ecServerStream{ss})
+ })
+ return &es2ecClientStream{cs}, nil
+}
+
+// es2ecClientStream implements Election_ObserveClient
+type es2ecClientStream struct{ chanClientStream }
+
+// es2ecServerStream implements Election_ObserveServer
+type es2ecServerStream struct{ chanServerStream }
+
+func (s *es2ecClientStream) Send(rr *v3electionpb.LeaderRequest) error {
+ return s.SendMsg(rr)
+}
+func (s *es2ecClientStream) Recv() (*v3electionpb.LeaderResponse, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*v3electionpb.LeaderResponse), nil
+}
+
+func (s *es2ecServerStream) Send(rr *v3electionpb.LeaderResponse) error {
+ return s.SendMsg(rr)
+}
+func (s *es2ecServerStream) Recv() (*v3electionpb.LeaderRequest, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*v3electionpb.LeaderRequest), nil
+}
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/kv_client_adapter.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/kv_client_adapter.go
new file mode 100644
index 000000000000..fec401d9dd0e
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/kv_client_adapter.go
@@ -0,0 +1,47 @@
+// Copyright 2016 The etcd Authors
+//
+// 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 adapter
+
+import (
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+ "golang.org/x/net/context"
+ grpc "google.golang.org/grpc"
+)
+
+type kvs2kvc struct{ kvs pb.KVServer }
+
+func KvServerToKvClient(kvs pb.KVServer) pb.KVClient {
+ return &kvs2kvc{kvs}
+}
+
+func (s *kvs2kvc) Range(ctx context.Context, in *pb.RangeRequest, opts ...grpc.CallOption) (*pb.RangeResponse, error) {
+ return s.kvs.Range(ctx, in)
+}
+
+func (s *kvs2kvc) Put(ctx context.Context, in *pb.PutRequest, opts ...grpc.CallOption) (*pb.PutResponse, error) {
+ return s.kvs.Put(ctx, in)
+}
+
+func (s *kvs2kvc) DeleteRange(ctx context.Context, in *pb.DeleteRangeRequest, opts ...grpc.CallOption) (*pb.DeleteRangeResponse, error) {
+ return s.kvs.DeleteRange(ctx, in)
+}
+
+func (s *kvs2kvc) Txn(ctx context.Context, in *pb.TxnRequest, opts ...grpc.CallOption) (*pb.TxnResponse, error) {
+ return s.kvs.Txn(ctx, in)
+}
+
+func (s *kvs2kvc) Compact(ctx context.Context, in *pb.CompactionRequest, opts ...grpc.CallOption) (*pb.CompactionResponse, error) {
+ return s.kvs.Compact(ctx, in)
+}
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/lease_client_adapter.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/lease_client_adapter.go
new file mode 100644
index 000000000000..d471fd9144be
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/lease_client_adapter.go
@@ -0,0 +1,77 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 adapter
+
+import (
+ "golang.org/x/net/context"
+
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+ "google.golang.org/grpc"
+)
+
+type ls2lc struct {
+ leaseServer pb.LeaseServer
+}
+
+func LeaseServerToLeaseClient(ls pb.LeaseServer) pb.LeaseClient {
+ return &ls2lc{ls}
+}
+
+func (c *ls2lc) LeaseGrant(ctx context.Context, in *pb.LeaseGrantRequest, opts ...grpc.CallOption) (*pb.LeaseGrantResponse, error) {
+ return c.leaseServer.LeaseGrant(ctx, in)
+}
+
+func (c *ls2lc) LeaseRevoke(ctx context.Context, in *pb.LeaseRevokeRequest, opts ...grpc.CallOption) (*pb.LeaseRevokeResponse, error) {
+ return c.leaseServer.LeaseRevoke(ctx, in)
+}
+
+func (c *ls2lc) LeaseKeepAlive(ctx context.Context, opts ...grpc.CallOption) (pb.Lease_LeaseKeepAliveClient, error) {
+ cs := newPipeStream(ctx, func(ss chanServerStream) error {
+ return c.leaseServer.LeaseKeepAlive(&ls2lcServerStream{ss})
+ })
+ return &ls2lcClientStream{cs}, nil
+}
+
+func (c *ls2lc) LeaseTimeToLive(ctx context.Context, in *pb.LeaseTimeToLiveRequest, opts ...grpc.CallOption) (*pb.LeaseTimeToLiveResponse, error) {
+ return c.leaseServer.LeaseTimeToLive(ctx, in)
+}
+
+// ls2lcClientStream implements Lease_LeaseKeepAliveClient
+type ls2lcClientStream struct{ chanClientStream }
+
+// ls2lcServerStream implements Lease_LeaseKeepAliveServer
+type ls2lcServerStream struct{ chanServerStream }
+
+func (s *ls2lcClientStream) Send(rr *pb.LeaseKeepAliveRequest) error {
+ return s.SendMsg(rr)
+}
+func (s *ls2lcClientStream) Recv() (*pb.LeaseKeepAliveResponse, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*pb.LeaseKeepAliveResponse), nil
+}
+
+func (s *ls2lcServerStream) Send(rr *pb.LeaseKeepAliveResponse) error {
+ return s.SendMsg(rr)
+}
+func (s *ls2lcServerStream) Recv() (*pb.LeaseKeepAliveRequest, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*pb.LeaseKeepAliveRequest), nil
+}
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/lock_client_adapter.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/lock_client_adapter.go
new file mode 100644
index 000000000000..05e5cb020a16
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/lock_client_adapter.go
@@ -0,0 +1,36 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 adapter
+
+import (
+ "github.com/coreos/etcd/etcdserver/api/v3lock/v3lockpb"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+)
+
+type ls2lsc struct{ ls v3lockpb.LockServer }
+
+func LockServerToLockClient(ls v3lockpb.LockServer) v3lockpb.LockClient {
+ return &ls2lsc{ls}
+}
+
+func (s *ls2lsc) Lock(ctx context.Context, r *v3lockpb.LockRequest, opts ...grpc.CallOption) (*v3lockpb.LockResponse, error) {
+ return s.ls.Lock(ctx, r)
+}
+
+func (s *ls2lsc) Unlock(ctx context.Context, r *v3lockpb.UnlockRequest, opts ...grpc.CallOption) (*v3lockpb.UnlockResponse, error) {
+ return s.ls.Unlock(ctx, r)
+}
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/maintenance_client_adapter.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/maintenance_client_adapter.go
new file mode 100644
index 000000000000..9b21bf2576e2
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/maintenance_client_adapter.go
@@ -0,0 +1,79 @@
+// Copyright 2017 The etcd Authors
+//
+// 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 adapter
+
+import (
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+)
+
+type mts2mtc struct{ mts pb.MaintenanceServer }
+
+func MaintenanceServerToMaintenanceClient(mts pb.MaintenanceServer) pb.MaintenanceClient {
+ return &mts2mtc{mts}
+}
+
+func (s *mts2mtc) Alarm(ctx context.Context, r *pb.AlarmRequest, opts ...grpc.CallOption) (*pb.AlarmResponse, error) {
+ return s.mts.Alarm(ctx, r)
+}
+
+func (s *mts2mtc) Status(ctx context.Context, r *pb.StatusRequest, opts ...grpc.CallOption) (*pb.StatusResponse, error) {
+ return s.mts.Status(ctx, r)
+}
+
+func (s *mts2mtc) Defragment(ctx context.Context, dr *pb.DefragmentRequest, opts ...grpc.CallOption) (*pb.DefragmentResponse, error) {
+ return s.mts.Defragment(ctx, dr)
+}
+
+func (s *mts2mtc) Hash(ctx context.Context, r *pb.HashRequest, opts ...grpc.CallOption) (*pb.HashResponse, error) {
+ return s.mts.Hash(ctx, r)
+}
+
+func (s *mts2mtc) Snapshot(ctx context.Context, in *pb.SnapshotRequest, opts ...grpc.CallOption) (pb.Maintenance_SnapshotClient, error) {
+ cs := newPipeStream(ctx, func(ss chanServerStream) error {
+ return s.mts.Snapshot(in, &ss2scServerStream{ss})
+ })
+ return &ss2scClientStream{cs}, nil
+}
+
+// ss2scClientStream implements Maintenance_SnapshotClient
+type ss2scClientStream struct{ chanClientStream }
+
+// ss2scServerStream implements Maintenance_SnapshotServer
+type ss2scServerStream struct{ chanServerStream }
+
+func (s *ss2scClientStream) Send(rr *pb.SnapshotRequest) error {
+ return s.SendMsg(rr)
+}
+func (s *ss2scClientStream) Recv() (*pb.SnapshotResponse, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*pb.SnapshotResponse), nil
+}
+
+func (s *ss2scServerStream) Send(rr *pb.SnapshotResponse) error {
+ return s.SendMsg(rr)
+}
+func (s *ss2scServerStream) Recv() (*pb.SnapshotRequest, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*pb.SnapshotRequest), nil
+}
diff --git a/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/watch_client_adapter.go b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/watch_client_adapter.go
new file mode 100644
index 000000000000..af4a13c41520
--- /dev/null
+++ b/vendor/github.com/coreos/etcd/proxy/grpcproxy/adapter/watch_client_adapter.go
@@ -0,0 +1,66 @@
+// Copyright 2016 The etcd Authors
+//
+// 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 adapter
+
+import (
+ "errors"
+
+ pb "github.com/coreos/etcd/etcdserver/etcdserverpb"
+ "golang.org/x/net/context"
+ "google.golang.org/grpc"
+)
+
+var errAlreadySentHeader = errors.New("adapter: already sent header")
+
+type ws2wc struct{ wserv pb.WatchServer }
+
+func WatchServerToWatchClient(wserv pb.WatchServer) pb.WatchClient {
+ return &ws2wc{wserv}
+}
+
+func (s *ws2wc) Watch(ctx context.Context, opts ...grpc.CallOption) (pb.Watch_WatchClient, error) {
+ cs := newPipeStream(ctx, func(ss chanServerStream) error {
+ return s.wserv.Watch(&ws2wcServerStream{ss})
+ })
+ return &ws2wcClientStream{cs}, nil
+}
+
+// ws2wcClientStream implements Watch_WatchClient
+type ws2wcClientStream struct{ chanClientStream }
+
+// ws2wcServerStream implements Watch_WatchServer
+type ws2wcServerStream struct{ chanServerStream }
+
+func (s *ws2wcClientStream) Send(wr *pb.WatchRequest) error {
+ return s.SendMsg(wr)
+}
+func (s *ws2wcClientStream) Recv() (*pb.WatchResponse, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*pb.WatchResponse), nil
+}
+
+func (s *ws2wcServerStream) Send(wr *pb.WatchResponse) error {
+ return s.SendMsg(wr)
+}
+func (s *ws2wcServerStream) Recv() (*pb.WatchRequest, error) {
+ var v interface{}
+ if err := s.RecvMsg(&v); err != nil {
+ return nil, err
+ }
+ return v.(*pb.WatchRequest), nil
+}
diff --git a/vendor/github.com/coreos/etcd/raft/README.md b/vendor/github.com/coreos/etcd/raft/README.md
index a724b9585790..f485b839771b 100644
--- a/vendor/github.com/coreos/etcd/raft/README.md
+++ b/vendor/github.com/coreos/etcd/raft/README.md
@@ -13,9 +13,7 @@ To keep the codebase small as well as provide flexibility, the library only impl
In order to easily test the Raft library, its behavior should be deterministic. To achieve this determinism, the library models Raft as a state machine. The state machine takes a `Message` as input. A message can either be a local timer update or a network message sent from a remote peer. The state machine's output is a 3-tuple `{[]Messages, []LogEntries, NextState}` consisting of an array of `Messages`, `log entries`, and `Raft state changes`. For state machines with the same state, the same state machine input should always generate the same state machine output.
-A simple example application, _raftexample_, is also available to help illustrate
-how to use this package in practice:
-https://github.com/coreos/etcd/tree/master/contrib/raftexample
+A simple example application, _raftexample_, is also available to help illustrate how to use this package in practice: https://github.com/coreos/etcd/tree/master/contrib/raftexample
# Features
@@ -51,11 +49,11 @@ This raft implementation also includes a few optional enhancements:
- [etcd](https://github.com/coreos/etcd) A distributed reliable key-value store
- [tikv](https://github.com/pingcap/tikv) A Distributed transactional key value database powered by Rust and Raft
- [swarmkit](https://github.com/docker/swarmkit) A toolkit for orchestrating distributed systems at any scale.
+- [chain core](https://github.com/chain/chain) Software for operating permissioned, multi-asset blockchain networks
## Usage
-The primary object in raft is a Node. You either start a Node from scratch
-using raft.StartNode or start a Node from some initial state using raft.RestartNode.
+The primary object in raft is a Node. Either start a Node from scratch using raft.StartNode or start a Node from some initial state using raft.RestartNode.
To start a three-node cluster
```go
@@ -73,7 +71,7 @@ To start a three-node cluster
n := raft.StartNode(c, []raft.Peer{{ID: 0x02}, {ID: 0x03}})
```
-You can start a single node cluster, like so:
+Start a single node cluster, like so:
```go
// Create storage and config as shown above.
// Set peer list to itself, so this node can become the leader of this single-node cluster.
@@ -81,7 +79,7 @@ You can start a single node cluster, like so:
n := raft.StartNode(c, peers)
```
-To allow a new node to join this cluster, do not pass in any peers. First, you need add the node to the existing cluster by calling `ProposeConfChange` on any existing node inside the cluster. Then, you can start the node with empty peer list, like so:
+To allow a new node to join this cluster, do not pass in any peers. First, add the node to the existing cluster by calling `ProposeConfChange` on any existing node inside the cluster. Then, start the node with an empty peer list, like so:
```go
// Create storage and config as shown above.
n := raft.StartNode(c, nil)
@@ -110,46 +108,21 @@ To restart a node from previous state:
n := raft.RestartNode(c)
```
-Now that you are holding onto a Node you have a few responsibilities:
-
-First, you must read from the Node.Ready() channel and process the updates
-it contains. These steps may be performed in parallel, except as noted in step
-2.
-
-1. Write HardState, Entries, and Snapshot to persistent storage if they are
-not empty. Note that when writing an Entry with Index i, any
-previously-persisted entries with Index >= i must be discarded.
-
-2. Send all Messages to the nodes named in the To field. It is important that
-no messages be sent until the latest HardState has been persisted to disk,
-and all Entries written by any previous Ready batch (Messages may be sent while
-entries from the same batch are being persisted). To reduce the I/O latency, an
-optimization can be applied to make leader write to disk in parallel with its
-followers (as explained at section 10.2.1 in Raft thesis). If any Message has type
-MsgSnap, call Node.ReportSnapshot() after it has been sent (these messages may be
-large). Note: Marshalling messages is not thread-safe; it is important that you
-make sure that no new entries are persisted while marshalling.
-The easiest way to achieve this is to serialise the messages directly inside
-your main raft loop.
-
-3. Apply Snapshot (if any) and CommittedEntries to the state machine.
-If any committed Entry has Type EntryConfChange, call Node.ApplyConfChange()
-to apply it to the node. The configuration change may be cancelled at this point
-by setting the NodeID field to zero before calling ApplyConfChange
-(but ApplyConfChange must be called one way or the other, and the decision to cancel
-must be based solely on the state machine and not external information such as
-the observed health of the node).
-
-4. Call Node.Advance() to signal readiness for the next batch of updates.
-This may be done at any time after step 1, although all updates must be processed
-in the order they were returned by Ready.
-
-Second, all persisted log entries must be made available via an
-implementation of the Storage interface. The provided MemoryStorage
-type can be used for this (if you repopulate its state upon a
-restart), or you can supply your own disk-backed implementation.
-
-Third, when you receive a message from another node, pass it to Node.Step:
+After creating a Node, the user has a few responsibilities:
+
+First, read from the Node.Ready() channel and process the updates it contains. These steps may be performed in parallel, except as noted in step 2.
+
+1. Write HardState, Entries, and Snapshot to persistent storage if they are not empty. Note that when writing an Entry with Index i, any previously-persisted entries with Index >= i must be discarded.
+
+2. Send all Messages to the nodes named in the To field. It is important that no messages be sent until the latest HardState has been persisted to disk, and all Entries written by any previous Ready batch (Messages may be sent while entries from the same batch are being persisted). To reduce the I/O latency, an optimization can be applied to make leader write to disk in parallel with its followers (as explained at section 10.2.1 in Raft thesis). If any Message has type MsgSnap, call Node.ReportSnapshot() after it has been sent (these messages may be large). Note: Marshalling messages is not thread-safe; it is important to make sure that no new entries are persisted while marshalling. The easiest way to achieve this is to serialise the messages directly inside the main raft loop.
+
+3. Apply Snapshot (if any) and CommittedEntries to the state machine. If any committed Entry has Type EntryConfChange, call Node.ApplyConfChange() to apply it to the node. The configuration change may be cancelled at this point by setting the NodeID field to zero before calling ApplyConfChange (but ApplyConfChange must be called one way or the other, and the decision to cancel must be based solely on the state machine and not external information such as the observed health of the node).
+
+4. Call Node.Advance() to signal readiness for the next batch of updates. This may be done at any time after step 1, although all updates must be processed in the order they were returned by Ready.
+
+Second, all persisted log entries must be made available via an implementation of the Storage interface. The provided MemoryStorage type can be used for this (if repopulating its state upon a restart), or a custom disk-backed implementation can be supplied.
+
+Third, after receiving a message from another node, pass it to Node.Step:
```go
func recvRaftRPC(ctx context.Context, m raftpb.Message) {
@@ -157,10 +130,7 @@ Third, when you receive a message from another node, pass it to Node.Step:
}
```
-Finally, you need to call `Node.Tick()` at regular intervals (probably
-via a `time.Ticker`). Raft has two important timeouts: heartbeat and the
-election timeout. However, internally to the raft package time is
-represented by an abstract "tick".
+Finally, call `Node.Tick()` at regular intervals (probably via a `time.Ticker`). Raft has two important timeouts: heartbeat and the election timeout. However, internally to the raft package time is represented by an abstract "tick".
The total state machine handling loop will look something like this:
@@ -190,16 +160,13 @@ The total state machine handling loop will look something like this:
}
```
-To propose changes to the state machine from your node take your application
-data, serialize it into a byte slice and call:
+To propose changes to the state machine from the node to take application data, serialize it into a byte slice and call:
```go
n.Propose(ctx, data)
```
-If the proposal is committed, data will appear in committed entries with type
-raftpb.EntryNormal. There is no guarantee that a proposed command will be
-committed; you may have to re-propose after a timeout.
+If the proposal is committed, data will appear in committed entries with type raftpb.EntryNormal. There is no guarantee that a proposed command will be committed; the command may have to be reproposed after a timeout.
To add or remove node in a cluster, build ConfChange struct 'cc' and call:
@@ -207,8 +174,7 @@ To add or remove node in a cluster, build ConfChange struct 'cc' and call:
n.ProposeConfChange(ctx, cc)
```
-After config change is committed, some committed entry with type
-raftpb.EntryConfChange will be returned. You must apply it to node through:
+After config change is committed, some committed entry with type raftpb.EntryConfChange will be returned. This must be applied to node through:
```go
var cc raftpb.ConfChange
@@ -223,25 +189,8 @@ may be reused. Node IDs must be non-zero.
## Implementation notes
-This implementation is up to date with the final Raft thesis
-(https://ramcloud.stanford.edu/~ongaro/thesis.pdf), although our
-implementation of the membership change protocol differs somewhat from
-that described in chapter 4. The key invariant that membership changes
-happen one node at a time is preserved, but in our implementation the
-membership change takes effect when its entry is applied, not when it
-is added to the log (so the entry is committed under the old
-membership instead of the new). This is equivalent in terms of safety,
-since the old and new configurations are guaranteed to overlap.
-
-To ensure that we do not attempt to commit two membership changes at
-once by matching log positions (which would be unsafe since they
-should have different quorum requirements), we simply disallow any
-proposed membership change while any uncommitted change appears in
-the leader's log.
-
-This approach introduces a problem when you try to remove a member
-from a two-member cluster: If one of the members dies before the
-other one receives the commit of the confchange entry, then the member
-cannot be removed any more since the cluster cannot make progress.
-For this reason it is highly recommended to use three or more nodes in
-every cluster.
+This implementation is up to date with the final Raft thesis (https://ramcloud.stanford.edu/~ongaro/thesis.pdf), although this implementation of the membership change protocol differs somewhat from that described in chapter 4. The key invariant that membership changes happen one node at a time is preserved, but in our implementation the membership change takes effect when its entry is applied, not when it is added to the log (so the entry is committed under the old membership instead of the new). This is equivalent in terms of safety, since the old and new configurations are guaranteed to overlap.
+
+To ensure there is no attempt to commit two membership changes at once by matching log positions (which would be unsafe since they should have different quorum requirements), any proposed membership change is simply disallowed while any uncommitted change appears in the leader's log.
+
+This approach introduces a problem when removing a member from a two-member cluster: If one of the members dies before the other one receives the commit of the confchange entry, then the member cannot be removed any more since the cluster cannot make progress. For this reason it is highly recommended to use three or more nodes in every cluster.
diff --git a/vendor/github.com/coreos/etcd/raft/log_unstable.go b/vendor/github.com/coreos/etcd/raft/log_unstable.go
index 8ae301c3d8dd..263af9ce405e 100644
--- a/vendor/github.com/coreos/etcd/raft/log_unstable.go
+++ b/vendor/github.com/coreos/etcd/raft/log_unstable.go
@@ -85,6 +85,26 @@ func (u *unstable) stableTo(i, t uint64) {
if gt == t && i >= u.offset {
u.entries = u.entries[i+1-u.offset:]
u.offset = i + 1
+ u.shrinkEntriesArray()
+ }
+}
+
+// shrinkEntriesArray discards the underlying array used by the entries slice
+// if most of it isn't being used. This avoids holding references to a bunch of
+// potentially large entries that aren't needed anymore. Simply clearing the
+// entries wouldn't be safe because clients might still be using them.
+func (u *unstable) shrinkEntriesArray() {
+ // We replace the array if we're using less than half of the space in
+ // it. This number is fairly arbitrary, chosen as an attempt to balance
+ // memory usage vs number of allocations. It could probably be improved
+ // with some focused tuning.
+ const lenMultiple = 2
+ if len(u.entries) == 0 {
+ u.entries = nil
+ } else if len(u.entries)*lenMultiple < cap(u.entries) {
+ newEntries := make([]pb.Entry, len(u.entries))
+ copy(newEntries, u.entries)
+ u.entries = newEntries
}
}
diff --git a/vendor/github.com/coreos/etcd/raft/node.go b/vendor/github.com/coreos/etcd/raft/node.go
index c8410fdc77fa..5da1c1193b27 100644
--- a/vendor/github.com/coreos/etcd/raft/node.go
+++ b/vendor/github.com/coreos/etcd/raft/node.go
@@ -83,6 +83,10 @@ type Ready struct {
// If it contains a MsgSnap message, the application MUST report back to raft
// when the snapshot has been received or has failed by calling ReportSnapshot.
Messages []pb.Message
+
+ // MustSync indicates whether the HardState and Entries must be synchronously
+ // written to disk or if an asynchronous write is permissible.
+ MustSync bool
}
func isHardStateEqual(a, b pb.HardState) bool {
@@ -517,5 +521,17 @@ func newReady(r *raft, prevSoftSt *SoftState, prevHardSt pb.HardState) Ready {
if len(r.readStates) != 0 {
rd.ReadStates = r.readStates
}
+ rd.MustSync = MustSync(rd.HardState, prevHardSt, len(rd.Entries))
return rd
}
+
+// MustSync returns true if the hard state and count of Raft entries indicate
+// that a synchronous write to persistent storage is required.
+func MustSync(st, prevst pb.HardState, entsnum int) bool {
+ // Persistent state on all servers:
+ // (Updated on stable storage before responding to RPCs)
+ // currentTerm
+ // votedFor
+ // log entries[]
+ return entsnum != 0 || st.Vote != prevst.Vote || st.Term != prevst.Term
+}
diff --git a/vendor/github.com/coreos/etcd/raft/raft.go b/vendor/github.com/coreos/etcd/raft/raft.go
index 7be4407ee2bb..29f203982032 100644
--- a/vendor/github.com/coreos/etcd/raft/raft.go
+++ b/vendor/github.com/coreos/etcd/raft/raft.go
@@ -1159,6 +1159,10 @@ func (r *raft) addNode(id uint64) {
}
r.setProgress(id, 0, r.raftLog.lastIndex()+1)
+ // When a node is first added, we should mark it as recently active.
+ // Otherwise, CheckQuorum may cause us to step down if it is invoked
+ // before the added node has a chance to communicate with us.
+ r.prs[id].RecentActive = true
}
func (r *raft) removeNode(id uint64) {
diff --git a/vendor/github.com/coreos/etcd/raft/raftpb/raft.pb.go b/vendor/github.com/coreos/etcd/raft/raftpb/raft.pb.go
index 86ad31207087..4c6e79d58a0c 100644
--- a/vendor/github.com/coreos/etcd/raft/raftpb/raft.pb.go
+++ b/vendor/github.com/coreos/etcd/raft/raftpb/raft.pb.go
@@ -1558,25 +1558,67 @@ func (m *ConfState) Unmarshal(dAtA []byte) error {
}
switch fieldNum {
case 1:
- if wireType != 0 {
- return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType)
- }
- var v uint64
- for shift := uint(0); ; shift += 7 {
- if shift >= 64 {
- return ErrIntOverflowRaft
+ if wireType == 0 {
+ var v uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRaft
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
}
- if iNdEx >= l {
+ m.Nodes = append(m.Nodes, v)
+ } else if wireType == 2 {
+ var packedLen int
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRaft
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ packedLen |= (int(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ if packedLen < 0 {
+ return ErrInvalidLengthRaft
+ }
+ postIndex := iNdEx + packedLen
+ if postIndex > l {
return io.ErrUnexpectedEOF
}
- b := dAtA[iNdEx]
- iNdEx++
- v |= (uint64(b) & 0x7F) << shift
- if b < 0x80 {
- break
+ for iNdEx < postIndex {
+ var v uint64
+ for shift := uint(0); ; shift += 7 {
+ if shift >= 64 {
+ return ErrIntOverflowRaft
+ }
+ if iNdEx >= l {
+ return io.ErrUnexpectedEOF
+ }
+ b := dAtA[iNdEx]
+ iNdEx++
+ v |= (uint64(b) & 0x7F) << shift
+ if b < 0x80 {
+ break
+ }
+ }
+ m.Nodes = append(m.Nodes, v)
}
+ } else {
+ return fmt.Errorf("proto: wrong wireType = %d for field Nodes", wireType)
}
- m.Nodes = append(m.Nodes, v)
default:
iNdEx = preIndex
skippy, err := skipRaft(dAtA[iNdEx:])
@@ -1847,7 +1889,7 @@ func init() { proto.RegisterFile("raft.proto", fileDescriptorRaft) }
var fileDescriptorRaft = []byte{
// 790 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x64, 0x54, 0xcd, 0x6e, 0xdb, 0x46,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x64, 0x54, 0xcd, 0x6e, 0xdb, 0x46,
0x10, 0x16, 0x29, 0xea, 0x6f, 0x28, 0xcb, 0xab, 0xb5, 0x5a, 0x2c, 0x0c, 0x43, 0x55, 0x85, 0x1e,
0x04, 0x17, 0x76, 0x5b, 0x1d, 0x7a, 0xe8, 0xcd, 0x96, 0x0a, 0x58, 0x40, 0x65, 0xb8, 0xb2, 0xdc,
0x43, 0x83, 0x20, 0x58, 0x8b, 0x2b, 0x4a, 0x89, 0xc9, 0x25, 0x96, 0x2b, 0xc7, 0xbe, 0x04, 0x79,
diff --git a/vendor/github.com/coreos/etcd/rafthttp/pipeline.go b/vendor/github.com/coreos/etcd/rafthttp/pipeline.go
index ccd9eb78698d..d9f07c3479d9 100644
--- a/vendor/github.com/coreos/etcd/rafthttp/pipeline.go
+++ b/vendor/github.com/coreos/etcd/rafthttp/pipeline.go
@@ -16,13 +16,13 @@ package rafthttp
import (
"bytes"
+ "context"
"errors"
"io/ioutil"
"sync"
"time"
"github.com/coreos/etcd/etcdserver/stats"
- "github.com/coreos/etcd/pkg/httputil"
"github.com/coreos/etcd/pkg/pbutil"
"github.com/coreos/etcd/pkg/types"
"github.com/coreos/etcd/raft"
@@ -118,7 +118,8 @@ func (p *pipeline) post(data []byte) (err error) {
req := createPostRequest(u, RaftPrefix, bytes.NewBuffer(data), "application/protobuf", p.tr.URLs, p.tr.ID, p.tr.ClusterID)
done := make(chan struct{}, 1)
- cancel := httputil.RequestCanceler(req)
+ ctx, cancel := context.WithCancel(context.Background())
+ req = req.WithContext(ctx)
go func() {
select {
case <-done:
diff --git a/vendor/github.com/coreos/etcd/rafthttp/snapshot_sender.go b/vendor/github.com/coreos/etcd/rafthttp/snapshot_sender.go
index 105b330728e8..52273c9d195e 100644
--- a/vendor/github.com/coreos/etcd/rafthttp/snapshot_sender.go
+++ b/vendor/github.com/coreos/etcd/rafthttp/snapshot_sender.go
@@ -16,6 +16,7 @@ package rafthttp
import (
"bytes"
+ "context"
"io"
"io/ioutil"
"net/http"
@@ -104,7 +105,9 @@ func (s *snapshotSender) send(merged snap.Message) {
// post posts the given request.
// It returns nil when request is sent out and processed successfully.
func (s *snapshotSender) post(req *http.Request) (err error) {
- cancel := httputil.RequestCanceler(req)
+ ctx, cancel := context.WithCancel(context.Background())
+ req = req.WithContext(ctx)
+ defer cancel()
type responseAndError struct {
resp *http.Response
@@ -130,7 +133,6 @@ func (s *snapshotSender) post(req *http.Request) (err error) {
select {
case <-s.stopc:
- cancel()
return errStopped
case r := <-result:
if r.err != nil {
diff --git a/vendor/github.com/coreos/etcd/rafthttp/stream.go b/vendor/github.com/coreos/etcd/rafthttp/stream.go
index e69a44ff65a1..2a6c620f56dc 100644
--- a/vendor/github.com/coreos/etcd/rafthttp/stream.go
+++ b/vendor/github.com/coreos/etcd/rafthttp/stream.go
@@ -15,10 +15,10 @@
package rafthttp
import (
+ "context"
"fmt"
"io"
"io/ioutil"
- "net"
"net/http"
"path"
"strings"
@@ -27,6 +27,7 @@ import (
"github.com/coreos/etcd/etcdserver/stats"
"github.com/coreos/etcd/pkg/httputil"
+ "github.com/coreos/etcd/pkg/transport"
"github.com/coreos/etcd/pkg/types"
"github.com/coreos/etcd/raft/raftpb"
"github.com/coreos/etcd/version"
@@ -51,6 +52,7 @@ var (
"2.3.0": {streamTypeMsgAppV2, streamTypeMessage},
"3.0.0": {streamTypeMsgAppV2, streamTypeMessage},
"3.1.0": {streamTypeMsgAppV2, streamTypeMessage},
+ "3.2.0": {streamTypeMsgAppV2, streamTypeMessage},
}
)
@@ -140,7 +142,8 @@ func (cw *streamWriter) run() {
flusher http.Flusher
batched int
)
- tickc := time.Tick(ConnReadTimeout / 3)
+ tickc := time.NewTicker(ConnReadTimeout / 3)
+ defer tickc.Stop()
unflushed := 0
plog.Infof("started streaming with peer %s (writer)", cw.peerID)
@@ -212,7 +215,7 @@ func (cw *streamWriter) run() {
plog.Warningf("closed an existing TCP streaming connection with peer %s (%s writer)", cw.peerID, t)
}
plog.Infof("established a TCP streaming connection with peer %s (%s writer)", cw.peerID, t)
- heartbeatc, msgc = tickc, cw.msgc
+ heartbeatc, msgc = tickc.C, cw.msgc
case <-cw.stopc:
if cw.close() {
plog.Infof("closed the TCP streaming connection with peer %s (%s writer)", cw.peerID, t)
@@ -314,7 +317,7 @@ func (cr *streamReader) run() {
// all data is read out
case err == io.EOF:
// connection is closed by the remote
- case isClosedConnectionError(err):
+ case transport.IsClosedConnError(err):
default:
cr.status.deactivate(failureType{source: t.String(), action: "read"}, err.Error())
}
@@ -426,14 +429,17 @@ func (cr *streamReader) dial(t streamType) (io.ReadCloser, error) {
setPeerURLsHeader(req, cr.tr.URLs)
+ ctx, cancel := context.WithCancel(context.Background())
+ req = req.WithContext(ctx)
+
cr.mu.Lock()
+ cr.cancel = cancel
select {
case <-cr.stopc:
cr.mu.Unlock()
return nil, fmt.Errorf("stream reader is stopped")
default:
}
- cr.cancel = httputil.RequestCanceler(req)
cr.mu.Unlock()
resp, err := cr.tr.streamRt.RoundTrip(req)
@@ -508,11 +514,6 @@ func (cr *streamReader) resume() {
cr.paused = false
}
-func isClosedConnectionError(err error) bool {
- operr, ok := err.(*net.OpError)
- return ok && operr.Err.Error() == "use of closed network connection"
-}
-
// checkStreamSupport checks whether the stream type is supported in the
// given version.
func checkStreamSupport(v *semver.Version, t streamType) bool {
diff --git a/vendor/github.com/coreos/etcd/rafthttp/util.go b/vendor/github.com/coreos/etcd/rafthttp/util.go
index 61855c52a60c..12e548c77175 100644
--- a/vendor/github.com/coreos/etcd/rafthttp/util.go
+++ b/vendor/github.com/coreos/etcd/rafthttp/util.go
@@ -15,8 +15,6 @@
package rafthttp
import (
- "crypto/tls"
- "encoding/binary"
"fmt"
"io"
"net"
@@ -27,7 +25,6 @@ import (
"github.com/coreos/etcd/pkg/transport"
"github.com/coreos/etcd/pkg/types"
- "github.com/coreos/etcd/raft/raftpb"
"github.com/coreos/etcd/version"
"github.com/coreos/go-semver/semver"
)
@@ -39,8 +36,8 @@ var (
// NewListener returns a listener for raft message transfer between peers.
// It uses timeout listener to identify broken streams promptly.
-func NewListener(u url.URL, tlscfg *tls.Config) (net.Listener, error) {
- return transport.NewTimeoutListener(u.Host, u.Scheme, tlscfg, ConnReadTimeout, ConnWriteTimeout)
+func NewListener(u url.URL, tlsinfo *transport.TLSInfo) (net.Listener, error) {
+ return transport.NewTimeoutListener(u.Host, u.Scheme, tlsinfo, ConnReadTimeout, ConnWriteTimeout)
}
// NewRoundTripper returns a roundTripper used to send requests
@@ -61,31 +58,6 @@ func newStreamRoundTripper(tlsInfo transport.TLSInfo, dialTimeout time.Duration)
return transport.NewTimeoutTransport(tlsInfo, dialTimeout, ConnReadTimeout, ConnWriteTimeout)
}
-func writeEntryTo(w io.Writer, ent *raftpb.Entry) error {
- size := ent.Size()
- if err := binary.Write(w, binary.BigEndian, uint64(size)); err != nil {
- return err
- }
- b, err := ent.Marshal()
- if err != nil {
- return err
- }
- _, err = w.Write(b)
- return err
-}
-
-func readEntryFrom(r io.Reader, ent *raftpb.Entry) error {
- var l uint64
- if err := binary.Read(r, binary.BigEndian, &l); err != nil {
- return err
- }
- buf := make([]byte, int(l))
- if _, err := io.ReadFull(r, buf); err != nil {
- return err
- }
- return ent.Unmarshal(buf)
-}
-
// createPostRequest creates a HTTP POST request that sends raft message.
func createPostRequest(u url.URL, path string, body io.Reader, ct string, urls types.URLs, from, cid types.ID) *http.Request {
uu := u
diff --git a/vendor/github.com/coreos/etcd/snap/db.go b/vendor/github.com/coreos/etcd/snap/db.go
index ae3c743f80c1..01d897ae8611 100644
--- a/vendor/github.com/coreos/etcd/snap/db.go
+++ b/vendor/github.com/coreos/etcd/snap/db.go
@@ -15,6 +15,7 @@
package snap
import (
+ "errors"
"fmt"
"io"
"io/ioutil"
@@ -24,6 +25,8 @@ import (
"github.com/coreos/etcd/pkg/fileutil"
)
+var ErrNoDBSnapshot = errors.New("snap: snapshot file doesn't exist")
+
// SaveDBFrom saves snapshot of the database from the given reader. It
// guarantees the save operation is atomic.
func (s *Snapshotter) SaveDBFrom(r io.Reader, id uint64) (int64, error) {
@@ -41,7 +44,7 @@ func (s *Snapshotter) SaveDBFrom(r io.Reader, id uint64) (int64, error) {
os.Remove(f.Name())
return n, err
}
- fn := filepath.Join(s.dir, fmt.Sprintf("%016x.snap.db", id))
+ fn := s.dbFilePath(id)
if fileutil.Exist(fn) {
os.Remove(f.Name())
return n, nil
@@ -60,15 +63,15 @@ func (s *Snapshotter) SaveDBFrom(r io.Reader, id uint64) (int64, error) {
// DBFilePath returns the file path for the snapshot of the database with
// given id. If the snapshot does not exist, it returns error.
func (s *Snapshotter) DBFilePath(id uint64) (string, error) {
- fns, err := fileutil.ReadDir(s.dir)
- if err != nil {
+ if _, err := fileutil.ReadDir(s.dir); err != nil {
return "", err
}
- wfn := fmt.Sprintf("%016x.snap.db", id)
- for _, fn := range fns {
- if fn == wfn {
- return filepath.Join(s.dir, fn), nil
- }
+ if fn := s.dbFilePath(id); fileutil.Exist(fn) {
+ return fn, nil
}
- return "", fmt.Errorf("snap: snapshot file doesn't exist")
+ return "", ErrNoDBSnapshot
+}
+
+func (s *Snapshotter) dbFilePath(id uint64) string {
+ return filepath.Join(s.dir, fmt.Sprintf("%016x.snap.db", id))
}
diff --git a/vendor/github.com/coreos/etcd/snap/snappb/snap.pb.go b/vendor/github.com/coreos/etcd/snap/snappb/snap.pb.go
index 130e2277c847..05a77ff9d06c 100644
--- a/vendor/github.com/coreos/etcd/snap/snappb/snap.pb.go
+++ b/vendor/github.com/coreos/etcd/snap/snappb/snap.pb.go
@@ -342,7 +342,7 @@ func init() { proto.RegisterFile("snap.proto", fileDescriptorSnap) }
var fileDescriptorSnap = []byte{
// 126 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0xce, 0x4b, 0x2c,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x2a, 0xce, 0x4b, 0x2c,
0xd0, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x03, 0xb1, 0x0b, 0x92, 0xa4, 0x44, 0xd2, 0xf3,
0xd3, 0xf3, 0xc1, 0x42, 0xfa, 0x20, 0x16, 0x44, 0x56, 0xc9, 0x8c, 0x8b, 0x03, 0x24, 0x5f, 0x9c,
0x91, 0x5f, 0x22, 0x24, 0xc6, 0xc5, 0x9c, 0x5c, 0x94, 0x2c, 0xc1, 0xa8, 0xc0, 0xa8, 0xc1, 0xeb,
diff --git a/vendor/github.com/coreos/etcd/store/node.go b/vendor/github.com/coreos/etcd/store/node.go
index 731327b08ba1..54159553500f 100644
--- a/vendor/github.com/coreos/etcd/store/node.go
+++ b/vendor/github.com/coreos/etcd/store/node.go
@@ -332,7 +332,6 @@ func (n *node) UpdateTTL(expireTime time.Time) {
n.ExpireTime = expireTime
// push into ttl heap
n.store.ttlKeyHeap.push(n)
- return
}
// Compare function compares node index and value with provided ones.
diff --git a/vendor/github.com/coreos/etcd/store/store.go b/vendor/github.com/coreos/etcd/store/store.go
index 6c19ad4c9707..edf7f21942b9 100644
--- a/vendor/github.com/coreos/etcd/store/store.go
+++ b/vendor/github.com/coreos/etcd/store/store.go
@@ -682,6 +682,9 @@ func (s *store) DeleteExpiredKeys(cutoff time.Time) {
e := newEvent(Expire, node.Path, s.CurrentIndex, node.CreatedIndex)
e.EtcdIndex = s.CurrentIndex
e.PrevNode = node.Repr(false, false, s.clock)
+ if node.IsDir() {
+ e.Node.Dir = true
+ }
callback := func(path string) { // notify function
// notify the watchers with deleted set true
diff --git a/vendor/github.com/coreos/etcd/store/watcher_hub.go b/vendor/github.com/coreos/etcd/store/watcher_hub.go
index 6dd63f3c5419..13c23e391d91 100644
--- a/vendor/github.com/coreos/etcd/store/watcher_hub.go
+++ b/vendor/github.com/coreos/etcd/store/watcher_hub.go
@@ -116,7 +116,7 @@ func (wh *watcherHub) watch(key string, recursive, stream bool, index, storeInde
}
func (wh *watcherHub) add(e *Event) {
- e = wh.EventHistory.addEvent(e)
+ wh.EventHistory.addEvent(e)
}
// notify function accepts an event and notify to the watchers.
diff --git a/vendor/github.com/coreos/etcd/version/version.go b/vendor/github.com/coreos/etcd/version/version.go
index 0cefd81ece2c..b488499c686d 100644
--- a/vendor/github.com/coreos/etcd/version/version.go
+++ b/vendor/github.com/coreos/etcd/version/version.go
@@ -26,7 +26,7 @@ import (
var (
// MinClusterVersion is the min cluster version this etcd binary is compatible with.
MinClusterVersion = "3.0.0"
- Version = "3.1.11"
+ Version = "3.2.13"
APIVersion = "unknown"
// Git SHA Value will be set during build
diff --git a/vendor/github.com/coreos/etcd/wal/encoder.go b/vendor/github.com/coreos/etcd/wal/encoder.go
index efe58928cc8c..aac1e197e590 100644
--- a/vendor/github.com/coreos/etcd/wal/encoder.go
+++ b/vendor/github.com/coreos/etcd/wal/encoder.go
@@ -52,7 +52,7 @@ func newEncoder(w io.Writer, prevCrc uint32, pageOffset int) *encoder {
// newFileEncoder creates a new encoder with current file offset for the page writer.
func newFileEncoder(f *os.File, prevCrc uint32) (*encoder, error) {
- offset, err := f.Seek(0, os.SEEK_CUR)
+ offset, err := f.Seek(0, io.SeekCurrent)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/coreos/etcd/wal/repair.go b/vendor/github.com/coreos/etcd/wal/repair.go
index ffb141616826..091036b57b9a 100644
--- a/vendor/github.com/coreos/etcd/wal/repair.go
+++ b/vendor/github.com/coreos/etcd/wal/repair.go
@@ -62,7 +62,7 @@ func Repair(dirpath string) bool {
}
defer bf.Close()
- if _, err = f.Seek(0, os.SEEK_SET); err != nil {
+ if _, err = f.Seek(0, io.SeekStart); err != nil {
plog.Errorf("could not repair %v, failed to read file", f.Name())
return false
}
diff --git a/vendor/github.com/coreos/etcd/wal/wal.go b/vendor/github.com/coreos/etcd/wal/wal.go
index b65f64483042..2cac25c1c904 100644
--- a/vendor/github.com/coreos/etcd/wal/wal.go
+++ b/vendor/github.com/coreos/etcd/wal/wal.go
@@ -112,7 +112,7 @@ func Create(dirpath string, metadata []byte) (*WAL, error) {
if err != nil {
return nil, err
}
- if _, err = f.Seek(0, os.SEEK_END); err != nil {
+ if _, err = f.Seek(0, io.SeekEnd); err != nil {
return nil, err
}
if err = fileutil.Preallocate(f.File, SegmentSizeBytes, true); err != nil {
@@ -322,7 +322,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb.
// not all, will cause CRC errors on WAL open. Since the records
// were never fully synced to disk in the first place, it's safe
// to zero them out to avoid any CRC errors from new writes.
- if _, err = w.tail().Seek(w.decoder.lastOffset(), os.SEEK_SET); err != nil {
+ if _, err = w.tail().Seek(w.decoder.lastOffset(), io.SeekStart); err != nil {
return nil, state, nil, err
}
if err = fileutil.ZeroToEnd(w.tail().File); err != nil {
@@ -361,7 +361,7 @@ func (w *WAL) ReadAll() (metadata []byte, state raftpb.HardState, ents []raftpb.
// Then cut atomically rename temp wal file to a wal file.
func (w *WAL) cut() error {
// close old wal file; truncate to avoid wasting space if an early cut
- off, serr := w.tail().Seek(0, os.SEEK_CUR)
+ off, serr := w.tail().Seek(0, io.SeekCurrent)
if serr != nil {
return serr
}
@@ -401,7 +401,7 @@ func (w *WAL) cut() error {
return err
}
- off, err = w.tail().Seek(0, os.SEEK_CUR)
+ off, err = w.tail().Seek(0, io.SeekCurrent)
if err != nil {
return err
}
@@ -418,7 +418,7 @@ func (w *WAL) cut() error {
if newTail, err = fileutil.LockFile(fpath, os.O_WRONLY, fileutil.PrivateFileMode); err != nil {
return err
}
- if _, err = newTail.Seek(off, os.SEEK_SET); err != nil {
+ if _, err = newTail.Seek(off, io.SeekStart); err != nil {
return err
}
@@ -552,7 +552,7 @@ func (w *WAL) Save(st raftpb.HardState, ents []raftpb.Entry) error {
return nil
}
- mustSync := mustSync(st, w.state, len(ents))
+ mustSync := raft.MustSync(st, w.state, len(ents))
// TODO(xiangli): no more reference operator
for i := range ents {
@@ -564,7 +564,7 @@ func (w *WAL) Save(st raftpb.HardState, ents []raftpb.Entry) error {
return err
}
- curOff, err := w.tail().Seek(0, os.SEEK_CUR)
+ curOff, err := w.tail().Seek(0, io.SeekCurrent)
if err != nil {
return err
}
@@ -618,15 +618,6 @@ func (w *WAL) seq() uint64 {
return seq
}
-func mustSync(st, prevst raftpb.HardState, entsnum int) bool {
- // Persistent state on all servers:
- // (Updated on stable storage before responding to RPCs)
- // currentTerm
- // votedFor
- // log entries[]
- return entsnum != 0 || st.Vote != prevst.Vote || st.Term != prevst.Term
-}
-
func closeAll(rcs ...io.ReadCloser) error {
for _, f := range rcs {
if err := f.Close(); err != nil {
diff --git a/vendor/github.com/coreos/etcd/wal/walpb/record.pb.go b/vendor/github.com/coreos/etcd/wal/walpb/record.pb.go
index e1a77d5e51a0..664fae1305bf 100644
--- a/vendor/github.com/coreos/etcd/wal/walpb/record.pb.go
+++ b/vendor/github.com/coreos/etcd/wal/walpb/record.pb.go
@@ -506,7 +506,7 @@ func init() { proto.RegisterFile("record.proto", fileDescriptorRecord) }
var fileDescriptorRecord = []byte{
// 186 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x4a, 0x4d, 0xce,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xe2, 0xe2, 0x29, 0x4a, 0x4d, 0xce,
0x2f, 0x4a, 0xd1, 0x2b, 0x28, 0xca, 0x2f, 0xc9, 0x17, 0x62, 0x2d, 0x4f, 0xcc, 0x29, 0x48, 0x92,
0x12, 0x49, 0xcf, 0x4f, 0xcf, 0x07, 0x8b, 0xe8, 0x83, 0x58, 0x10, 0x49, 0x25, 0x3f, 0x2e, 0xb6,
0x20, 0xb0, 0x62, 0x21, 0x09, 0x2e, 0x96, 0x92, 0xca, 0x82, 0x54, 0x09, 0x46, 0x05, 0x46, 0x0d,
diff --git a/vendor/github.com/coreos/go-oidc/.gitignore b/vendor/github.com/coreos/go-oidc/.gitignore
new file mode 100644
index 000000000000..c96f2f47bc6d
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/.gitignore
@@ -0,0 +1,2 @@
+/bin
+/gopath
diff --git a/vendor/github.com/coreos/go-oidc/.travis.yml b/vendor/github.com/coreos/go-oidc/.travis.yml
new file mode 100644
index 000000000000..f2f3c9c81ffd
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/.travis.yml
@@ -0,0 +1,16 @@
+language: go
+
+go:
+ - 1.7.5
+ - 1.8
+
+install:
+ - go get -v -t github.com/coreos/go-oidc/...
+ - go get golang.org/x/tools/cmd/cover
+ - go get github.com/golang/lint/golint
+
+script:
+ - ./test
+
+notifications:
+ email: false
diff --git a/vendor/github.com/coreos/go-oidc/CONTRIBUTING.md b/vendor/github.com/coreos/go-oidc/CONTRIBUTING.md
new file mode 100644
index 000000000000..6662073a848e
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/CONTRIBUTING.md
@@ -0,0 +1,71 @@
+# How to Contribute
+
+CoreOS projects are [Apache 2.0 licensed](LICENSE) and accept contributions via
+GitHub pull requests. This document outlines some of the conventions on
+development workflow, commit message formatting, contact points and other
+resources to make it easier to get your contribution accepted.
+
+# Certificate of Origin
+
+By contributing to this project you agree to the Developer Certificate of
+Origin (DCO). This document was created by the Linux Kernel community and is a
+simple statement that you, as a contributor, have the legal right to make the
+contribution. See the [DCO](DCO) file for details.
+
+# Email and Chat
+
+The project currently uses the general CoreOS email list and IRC channel:
+- Email: [coreos-dev](https://groups.google.com/forum/#!forum/coreos-dev)
+- IRC: #[coreos](irc://irc.freenode.org:6667/#coreos) IRC channel on freenode.org
+
+Please avoid emailing maintainers found in the MAINTAINERS file directly. They
+are very busy and read the mailing lists.
+
+## Getting Started
+
+- Fork the repository on GitHub
+- Read the [README](README.md) for build and test instructions
+- Play with the project, submit bugs, submit patches!
+
+## Contribution Flow
+
+This is a rough outline of what a contributor's workflow looks like:
+
+- Create a topic branch from where you want to base your work (usually master).
+- Make commits of logical units.
+- Make sure your commit messages are in the proper format (see below).
+- Push your changes to a topic branch in your fork of the repository.
+- Make sure the tests pass, and add any new tests as appropriate.
+- Submit a pull request to the original repository.
+
+Thanks for your contributions!
+
+### Format of the Commit Message
+
+We follow a rough convention for commit messages that is designed to answer two
+questions: what changed and why. The subject line should feature the what and
+the body of the commit should describe the why.
+
+```
+scripts: add the test-cluster command
+
+this uses tmux to setup a test cluster that you can easily kill and
+start for debugging.
+
+Fixes #38
+```
+
+The format can be described more formally as follows:
+
+```
+:
+
+
+
+
+```
+
+The first line is the subject and should be no longer than 70 characters, the
+second line is always blank, and other lines should be wrapped at 80 characters.
+This allows the message to be easier to read on GitHub as well as in various
+git tools.
diff --git a/vendor/github.com/coreos/go-oidc/DCO b/vendor/github.com/coreos/go-oidc/DCO
new file mode 100644
index 000000000000..716561d5d282
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/DCO
@@ -0,0 +1,36 @@
+Developer Certificate of Origin
+Version 1.1
+
+Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
+660 York Street, Suite 102,
+San Francisco, CA 94110 USA
+
+Everyone is permitted to copy and distribute verbatim copies of this
+license document, but changing it is not allowed.
+
+
+Developer's Certificate of Origin 1.1
+
+By making a contribution to this project, I certify that:
+
+(a) The contribution was created in whole or in part by me and I
+ have the right to submit it under the open source license
+ indicated in the file; or
+
+(b) The contribution is based upon previous work that, to the best
+ of my knowledge, is covered under an appropriate open source
+ license and I have the right under that license to submit that
+ work with modifications, whether created in whole or in part
+ by me, under the same open source license (unless I am
+ permitted to submit under a different license), as indicated
+ in the file; or
+
+(c) The contribution was provided directly to me by some other
+ person who certified (a), (b) or (c) and I have not modified
+ it.
+
+(d) I understand and agree that this project and the contribution
+ are public and that a record of the contribution (including all
+ personal information I submit with it, including my sign-off) is
+ maintained indefinitely and may be redistributed consistent with
+ this project or the open source license(s) involved.
diff --git a/vendor/github.com/coreos/go-oidc/MAINTAINERS b/vendor/github.com/coreos/go-oidc/MAINTAINERS
new file mode 100644
index 000000000000..68079f1ea685
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/MAINTAINERS
@@ -0,0 +1,3 @@
+Bobby Rullo (@bobbyrullo)
+Ed Rooth (@sym3tri)
+Eric Chiang (@ericchiang)
diff --git a/vendor/github.com/coreos/go-oidc/README.md b/vendor/github.com/coreos/go-oidc/README.md
new file mode 100644
index 000000000000..520d7c87f466
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/README.md
@@ -0,0 +1,72 @@
+# go-oidc
+
+[![GoDoc](https://godoc.org/github.com/coreos/go-oidc?status.svg)](https://godoc.org/github.com/coreos/go-oidc)
+[![Build Status](https://travis-ci.org/coreos/go-oidc.png?branch=master)](https://travis-ci.org/coreos/go-oidc)
+
+## OpenID Connect support for Go
+
+This package enables OpenID Connect support for the [golang.org/x/oauth2](https://godoc.org/golang.org/x/oauth2) package.
+
+```go
+provider, err := oidc.NewProvider(ctx, "https://accounts.google.com")
+if err != nil {
+ // handle error
+}
+
+// Configure an OpenID Connect aware OAuth2 client.
+oauth2Config := oauth2.Config{
+ ClientID: clientID,
+ ClientSecret: clientSecret,
+ RedirectURL: redirectURL,
+
+ // Discovery returns the OAuth2 endpoints.
+ Endpoint: provider.Endpoint(),
+
+ // "openid" is a required scope for OpenID Connect flows.
+ Scopes: []string{oidc.ScopeOpenID, "profile", "email"},
+}
+```
+
+OAuth2 redirects are unchanged.
+
+```go
+func handleRedirect(w http.ResponseWriter, r *http.Request) {
+ http.Redirect(w, r, oauth2Config.AuthCodeURL(state), http.StatusFound)
+}
+```
+
+The on responses, the provider can be used to verify ID Tokens.
+
+```go
+var verifier = provider.Verifier(&oidc.Config{ClientID: clientID})
+
+func handleOAuth2Callback(w http.ResponseWriter, r *http.Request) {
+ // Verify state and errors.
+
+ oauth2Token, err := oauth2Config.Exchange(ctx, r.URL.Query().Get("code"))
+ if err != nil {
+ // handle error
+ }
+
+ // Extract the ID Token from OAuth2 token.
+ rawIDToken, ok := oauth2Token.Extra("id_token").(string)
+ if !ok {
+ // handle missing token
+ }
+
+ // Parse and verify ID Token payload.
+ idToken, err := verifier.Verify(ctx, rawIDToken)
+ if err != nil {
+ // handle error
+ }
+
+ // Extract custom claims
+ var claims struct {
+ Email string `json:"email"`
+ Verified bool `json:"email_verified"`
+ }
+ if err := idToken.Claims(&claims); err != nil {
+ // handle error
+ }
+}
+```
diff --git a/vendor/github.com/coreos/go-oidc/code-of-conduct.md b/vendor/github.com/coreos/go-oidc/code-of-conduct.md
new file mode 100644
index 000000000000..a234f3609d09
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/code-of-conduct.md
@@ -0,0 +1,61 @@
+## CoreOS Community Code of Conduct
+
+### Contributor Code of Conduct
+
+As contributors and maintainers of this project, and in the interest of
+fostering an open and welcoming community, we pledge to respect all people who
+contribute through reporting issues, posting feature requests, updating
+documentation, submitting pull requests or patches, and other activities.
+
+We are committed to making participation in this project a harassment-free
+experience for everyone, regardless of level of experience, gender, gender
+identity and expression, sexual orientation, disability, personal appearance,
+body size, race, ethnicity, age, religion, or nationality.
+
+Examples of unacceptable behavior by participants include:
+
+* The use of sexualized language or imagery
+* Personal attacks
+* Trolling or insulting/derogatory comments
+* Public or private harassment
+* Publishing others' private information, such as physical or electronic addresses, without explicit permission
+* Other unethical or unprofessional conduct.
+
+Project maintainers have the right and responsibility to remove, edit, or
+reject comments, commits, code, wiki edits, issues, and other contributions
+that are not aligned to this Code of Conduct. By adopting this Code of Conduct,
+project maintainers commit themselves to fairly and consistently applying these
+principles to every aspect of managing this project. Project maintainers who do
+not follow or enforce the Code of Conduct may be permanently removed from the
+project team.
+
+This code of conduct applies both within project spaces and in public spaces
+when an individual is representing the project or its community.
+
+Instances of abusive, harassing, or otherwise unacceptable behavior may be
+reported by contacting a project maintainer, Brandon Philips
+, and/or Rithu John .
+
+This Code of Conduct is adapted from the Contributor Covenant
+(http://contributor-covenant.org), version 1.2.0, available at
+http://contributor-covenant.org/version/1/2/0/
+
+### CoreOS Events Code of Conduct
+
+CoreOS events are working conferences intended for professional networking and
+collaboration in the CoreOS community. Attendees are expected to behave
+according to professional standards and in accordance with their employer’s
+policies on appropriate workplace behavior.
+
+While at CoreOS events or related social networking opportunities, attendees
+should not engage in discriminatory or offensive speech or actions including
+but not limited to gender, sexuality, race, age, disability, or religion.
+Speakers should be especially aware of these concerns.
+
+CoreOS does not condone any statements by speakers contrary to these standards.
+CoreOS reserves the right to deny entrance and/or eject from an event (without
+refund) any individual found to be engaging in discriminatory or offensive
+speech or actions.
+
+Please bring any concerns to the immediate attention of designated on-site
+staff, Brandon Philips , and/or Rithu John .
diff --git a/vendor/github.com/coreos/go-oidc/http/client.go b/vendor/github.com/coreos/go-oidc/http/client.go
deleted file mode 100644
index fd079b4950f0..000000000000
--- a/vendor/github.com/coreos/go-oidc/http/client.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package http
-
-import "net/http"
-
-type Client interface {
- Do(*http.Request) (*http.Response, error)
-}
diff --git a/vendor/github.com/coreos/go-oidc/http/doc.go b/vendor/github.com/coreos/go-oidc/http/doc.go
deleted file mode 100644
index 5687e8b81b4b..000000000000
--- a/vendor/github.com/coreos/go-oidc/http/doc.go
+++ /dev/null
@@ -1,2 +0,0 @@
-// Package http is DEPRECATED. Use net/http instead.
-package http
diff --git a/vendor/github.com/coreos/go-oidc/http/http.go b/vendor/github.com/coreos/go-oidc/http/http.go
deleted file mode 100644
index 48717833cabb..000000000000
--- a/vendor/github.com/coreos/go-oidc/http/http.go
+++ /dev/null
@@ -1,161 +0,0 @@
-package http
-
-import (
- "encoding/base64"
- "encoding/json"
- "errors"
- "log"
- "net/http"
- "net/url"
- "path"
- "strconv"
- "strings"
- "time"
-)
-
-func WriteError(w http.ResponseWriter, code int, msg string) {
- e := struct {
- Error string `json:"error"`
- }{
- Error: msg,
- }
- b, err := json.Marshal(e)
- if err != nil {
- log.Printf("go-oidc: failed to marshal %#v: %v", e, err)
- code = http.StatusInternalServerError
- b = []byte(`{"error":"server_error"}`)
- }
- w.Header().Set("Content-Type", "application/json")
- w.WriteHeader(code)
- w.Write(b)
-}
-
-// BasicAuth parses a username and password from the request's
-// Authorization header. This was pulled from golang master:
-// https://codereview.appspot.com/76540043
-func BasicAuth(r *http.Request) (username, password string, ok bool) {
- auth := r.Header.Get("Authorization")
- if auth == "" {
- return
- }
-
- if !strings.HasPrefix(auth, "Basic ") {
- return
- }
- c, err := base64.StdEncoding.DecodeString(strings.TrimPrefix(auth, "Basic "))
- if err != nil {
- return
- }
- cs := string(c)
- s := strings.IndexByte(cs, ':')
- if s < 0 {
- return
- }
- return cs[:s], cs[s+1:], true
-}
-
-func cacheControlMaxAge(hdr string) (time.Duration, bool, error) {
- for _, field := range strings.Split(hdr, ",") {
- parts := strings.SplitN(strings.TrimSpace(field), "=", 2)
- k := strings.ToLower(strings.TrimSpace(parts[0]))
- if k != "max-age" {
- continue
- }
-
- if len(parts) == 1 {
- return 0, false, errors.New("max-age has no value")
- }
-
- v := strings.TrimSpace(parts[1])
- if v == "" {
- return 0, false, errors.New("max-age has empty value")
- }
-
- age, err := strconv.Atoi(v)
- if err != nil {
- return 0, false, err
- }
-
- if age <= 0 {
- return 0, false, nil
- }
-
- return time.Duration(age) * time.Second, true, nil
- }
-
- return 0, false, nil
-}
-
-func expires(date, expires string) (time.Duration, bool, error) {
- if date == "" || expires == "" {
- return 0, false, nil
- }
-
- var te time.Time
- var err error
- if expires == "0" {
- return 0, false, nil
- }
- te, err = time.Parse(time.RFC1123, expires)
- if err != nil {
- return 0, false, err
- }
-
- td, err := time.Parse(time.RFC1123, date)
- if err != nil {
- return 0, false, err
- }
-
- ttl := te.Sub(td)
-
- // headers indicate data already expired, caller should not
- // have to care about this case
- if ttl <= 0 {
- return 0, false, nil
- }
-
- return ttl, true, nil
-}
-
-func Cacheable(hdr http.Header) (time.Duration, bool, error) {
- ttl, ok, err := cacheControlMaxAge(hdr.Get("Cache-Control"))
- if err != nil || ok {
- return ttl, ok, err
- }
-
- return expires(hdr.Get("Date"), hdr.Get("Expires"))
-}
-
-// MergeQuery appends additional query values to an existing URL.
-func MergeQuery(u url.URL, q url.Values) url.URL {
- uv := u.Query()
- for k, vs := range q {
- for _, v := range vs {
- uv.Add(k, v)
- }
- }
- u.RawQuery = uv.Encode()
- return u
-}
-
-// NewResourceLocation appends a resource id to the end of the requested URL path.
-func NewResourceLocation(reqURL *url.URL, id string) string {
- var u url.URL
- u = *reqURL
- u.Path = path.Join(u.Path, id)
- u.RawQuery = ""
- u.Fragment = ""
- return u.String()
-}
-
-// CopyRequest returns a clone of the provided *http.Request.
-// The returned object is a shallow copy of the struct and a
-// deep copy of its Header field.
-func CopyRequest(r *http.Request) *http.Request {
- r2 := *r
- r2.Header = make(http.Header)
- for k, s := range r.Header {
- r2.Header[k] = s
- }
- return &r2
-}
diff --git a/vendor/github.com/coreos/go-oidc/http/url.go b/vendor/github.com/coreos/go-oidc/http/url.go
deleted file mode 100644
index df60eb1a6b5a..000000000000
--- a/vendor/github.com/coreos/go-oidc/http/url.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package http
-
-import (
- "errors"
- "net/url"
-)
-
-// ParseNonEmptyURL checks that a string is a parsable URL which is also not empty
-// since `url.Parse("")` does not return an error. Must contian a scheme and a host.
-func ParseNonEmptyURL(u string) (*url.URL, error) {
- if u == "" {
- return nil, errors.New("url is empty")
- }
-
- ur, err := url.Parse(u)
- if err != nil {
- return nil, err
- }
-
- if ur.Scheme == "" {
- return nil, errors.New("url scheme is empty")
- }
-
- if ur.Host == "" {
- return nil, errors.New("url host is empty")
- }
-
- return ur, nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/jose.go b/vendor/github.com/coreos/go-oidc/jose.go
new file mode 100644
index 000000000000..f2e6bf432248
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/jose.go
@@ -0,0 +1,20 @@
+// +build !golint
+
+// Don't lint this file. We don't want to have to add a comment to each constant.
+
+package oidc
+
+const (
+ // JOSE asymmetric signing algorithm values as defined by RFC 7518
+ //
+ // see: https://tools.ietf.org/html/rfc7518#section-3.1
+ RS256 = "RS256" // RSASSA-PKCS-v1.5 using SHA-256
+ RS384 = "RS384" // RSASSA-PKCS-v1.5 using SHA-384
+ RS512 = "RS512" // RSASSA-PKCS-v1.5 using SHA-512
+ ES256 = "ES256" // ECDSA using P-256 and SHA-256
+ ES384 = "ES384" // ECDSA using P-384 and SHA-384
+ ES512 = "ES512" // ECDSA using P-521 and SHA-512
+ PS256 = "PS256" // RSASSA-PSS using SHA256 and MGF1-SHA256
+ PS384 = "PS384" // RSASSA-PSS using SHA384 and MGF1-SHA384
+ PS512 = "PS512" // RSASSA-PSS using SHA512 and MGF1-SHA512
+)
diff --git a/vendor/github.com/coreos/go-oidc/jose/claims.go b/vendor/github.com/coreos/go-oidc/jose/claims.go
deleted file mode 100644
index 8b48bfd230b0..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/claims.go
+++ /dev/null
@@ -1,126 +0,0 @@
-package jose
-
-import (
- "encoding/json"
- "fmt"
- "math"
- "time"
-)
-
-type Claims map[string]interface{}
-
-func (c Claims) Add(name string, value interface{}) {
- c[name] = value
-}
-
-func (c Claims) StringClaim(name string) (string, bool, error) {
- cl, ok := c[name]
- if !ok {
- return "", false, nil
- }
-
- v, ok := cl.(string)
- if !ok {
- return "", false, fmt.Errorf("unable to parse claim as string: %v", name)
- }
-
- return v, true, nil
-}
-
-func (c Claims) StringsClaim(name string) ([]string, bool, error) {
- cl, ok := c[name]
- if !ok {
- return nil, false, nil
- }
-
- if v, ok := cl.([]string); ok {
- return v, true, nil
- }
-
- // When unmarshaled, []string will become []interface{}.
- if v, ok := cl.([]interface{}); ok {
- var ret []string
- for _, vv := range v {
- str, ok := vv.(string)
- if !ok {
- return nil, false, fmt.Errorf("unable to parse claim as string array: %v", name)
- }
- ret = append(ret, str)
- }
- return ret, true, nil
- }
-
- return nil, false, fmt.Errorf("unable to parse claim as string array: %v", name)
-}
-
-func (c Claims) Int64Claim(name string) (int64, bool, error) {
- cl, ok := c[name]
- if !ok {
- return 0, false, nil
- }
-
- v, ok := cl.(int64)
- if !ok {
- vf, ok := cl.(float64)
- if !ok {
- return 0, false, fmt.Errorf("unable to parse claim as int64: %v", name)
- }
- v = int64(vf)
- }
-
- return v, true, nil
-}
-
-func (c Claims) Float64Claim(name string) (float64, bool, error) {
- cl, ok := c[name]
- if !ok {
- return 0, false, nil
- }
-
- v, ok := cl.(float64)
- if !ok {
- vi, ok := cl.(int64)
- if !ok {
- return 0, false, fmt.Errorf("unable to parse claim as float64: %v", name)
- }
- v = float64(vi)
- }
-
- return v, true, nil
-}
-
-func (c Claims) TimeClaim(name string) (time.Time, bool, error) {
- v, ok, err := c.Float64Claim(name)
- if !ok || err != nil {
- return time.Time{}, ok, err
- }
-
- s := math.Trunc(v)
- ns := (v - s) * math.Pow(10, 9)
- return time.Unix(int64(s), int64(ns)).UTC(), true, nil
-}
-
-func decodeClaims(payload []byte) (Claims, error) {
- var c Claims
- if err := json.Unmarshal(payload, &c); err != nil {
- return nil, fmt.Errorf("malformed JWT claims, unable to decode: %v", err)
- }
- return c, nil
-}
-
-func marshalClaims(c Claims) ([]byte, error) {
- b, err := json.Marshal(c)
- if err != nil {
- return nil, err
- }
- return b, nil
-}
-
-func encodeClaims(c Claims) (string, error) {
- b, err := marshalClaims(c)
- if err != nil {
- return "", err
- }
-
- return encodeSegment(b), nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/jose/doc.go b/vendor/github.com/coreos/go-oidc/jose/doc.go
deleted file mode 100644
index b5e1321781c3..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/doc.go
+++ /dev/null
@@ -1,2 +0,0 @@
-// Package jose is DEPRECATED. Use gopkg.in/square/go-jose.v2 instead.
-package jose
diff --git a/vendor/github.com/coreos/go-oidc/jose/jose.go b/vendor/github.com/coreos/go-oidc/jose/jose.go
deleted file mode 100644
index 6209926596c9..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/jose.go
+++ /dev/null
@@ -1,112 +0,0 @@
-package jose
-
-import (
- "encoding/base64"
- "encoding/json"
- "fmt"
- "strings"
-)
-
-const (
- HeaderMediaType = "typ"
- HeaderKeyAlgorithm = "alg"
- HeaderKeyID = "kid"
-)
-
-const (
- // Encryption Algorithm Header Parameter Values for JWS
- // See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#page-6
- AlgHS256 = "HS256"
- AlgHS384 = "HS384"
- AlgHS512 = "HS512"
- AlgRS256 = "RS256"
- AlgRS384 = "RS384"
- AlgRS512 = "RS512"
- AlgES256 = "ES256"
- AlgES384 = "ES384"
- AlgES512 = "ES512"
- AlgPS256 = "PS256"
- AlgPS384 = "PS384"
- AlgPS512 = "PS512"
- AlgNone = "none"
-)
-
-const (
- // Algorithm Header Parameter Values for JWE
- // See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#section-4.1
- AlgRSA15 = "RSA1_5"
- AlgRSAOAEP = "RSA-OAEP"
- AlgRSAOAEP256 = "RSA-OAEP-256"
- AlgA128KW = "A128KW"
- AlgA192KW = "A192KW"
- AlgA256KW = "A256KW"
- AlgDir = "dir"
- AlgECDHES = "ECDH-ES"
- AlgECDHESA128KW = "ECDH-ES+A128KW"
- AlgECDHESA192KW = "ECDH-ES+A192KW"
- AlgECDHESA256KW = "ECDH-ES+A256KW"
- AlgA128GCMKW = "A128GCMKW"
- AlgA192GCMKW = "A192GCMKW"
- AlgA256GCMKW = "A256GCMKW"
- AlgPBES2HS256A128KW = "PBES2-HS256+A128KW"
- AlgPBES2HS384A192KW = "PBES2-HS384+A192KW"
- AlgPBES2HS512A256KW = "PBES2-HS512+A256KW"
-)
-
-const (
- // Encryption Algorithm Header Parameter Values for JWE
- // See: https://tools.ietf.org/html/draft-ietf-jose-json-web-algorithms-40#page-22
- EncA128CBCHS256 = "A128CBC-HS256"
- EncA128CBCHS384 = "A128CBC-HS384"
- EncA256CBCHS512 = "A256CBC-HS512"
- EncA128GCM = "A128GCM"
- EncA192GCM = "A192GCM"
- EncA256GCM = "A256GCM"
-)
-
-type JOSEHeader map[string]string
-
-func (j JOSEHeader) Validate() error {
- if _, exists := j[HeaderKeyAlgorithm]; !exists {
- return fmt.Errorf("header missing %q parameter", HeaderKeyAlgorithm)
- }
-
- return nil
-}
-
-func decodeHeader(seg string) (JOSEHeader, error) {
- b, err := decodeSegment(seg)
- if err != nil {
- return nil, err
- }
-
- var h JOSEHeader
- err = json.Unmarshal(b, &h)
- if err != nil {
- return nil, err
- }
-
- return h, nil
-}
-
-func encodeHeader(h JOSEHeader) (string, error) {
- b, err := json.Marshal(h)
- if err != nil {
- return "", err
- }
-
- return encodeSegment(b), nil
-}
-
-// Decode JWT specific base64url encoding with padding stripped
-func decodeSegment(seg string) ([]byte, error) {
- if l := len(seg) % 4; l != 0 {
- seg += strings.Repeat("=", 4-l)
- }
- return base64.URLEncoding.DecodeString(seg)
-}
-
-// Encode JWT specific base64url encoding with padding stripped
-func encodeSegment(seg []byte) string {
- return strings.TrimRight(base64.URLEncoding.EncodeToString(seg), "=")
-}
diff --git a/vendor/github.com/coreos/go-oidc/jose/jwk.go b/vendor/github.com/coreos/go-oidc/jose/jwk.go
deleted file mode 100644
index 119f073ff7a9..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/jwk.go
+++ /dev/null
@@ -1,135 +0,0 @@
-package jose
-
-import (
- "bytes"
- "encoding/base64"
- "encoding/binary"
- "encoding/json"
- "math/big"
- "strings"
-)
-
-// JSON Web Key
-// https://tools.ietf.org/html/draft-ietf-jose-json-web-key-36#page-5
-type JWK struct {
- ID string
- Type string
- Alg string
- Use string
- Exponent int
- Modulus *big.Int
- Secret []byte
-}
-
-type jwkJSON struct {
- ID string `json:"kid"`
- Type string `json:"kty"`
- Alg string `json:"alg"`
- Use string `json:"use"`
- Exponent string `json:"e"`
- Modulus string `json:"n"`
-}
-
-func (j *JWK) MarshalJSON() ([]byte, error) {
- t := jwkJSON{
- ID: j.ID,
- Type: j.Type,
- Alg: j.Alg,
- Use: j.Use,
- Exponent: encodeExponent(j.Exponent),
- Modulus: encodeModulus(j.Modulus),
- }
-
- return json.Marshal(&t)
-}
-
-func (j *JWK) UnmarshalJSON(data []byte) error {
- var t jwkJSON
- err := json.Unmarshal(data, &t)
- if err != nil {
- return err
- }
-
- e, err := decodeExponent(t.Exponent)
- if err != nil {
- return err
- }
-
- n, err := decodeModulus(t.Modulus)
- if err != nil {
- return err
- }
-
- j.ID = t.ID
- j.Type = t.Type
- j.Alg = t.Alg
- j.Use = t.Use
- j.Exponent = e
- j.Modulus = n
-
- return nil
-}
-
-type JWKSet struct {
- Keys []JWK `json:"keys"`
-}
-
-func decodeExponent(e string) (int, error) {
- decE, err := decodeBase64URLPaddingOptional(e)
- if err != nil {
- return 0, err
- }
- var eBytes []byte
- if len(decE) < 8 {
- eBytes = make([]byte, 8-len(decE), 8)
- eBytes = append(eBytes, decE...)
- } else {
- eBytes = decE
- }
- eReader := bytes.NewReader(eBytes)
- var E uint64
- err = binary.Read(eReader, binary.BigEndian, &E)
- if err != nil {
- return 0, err
- }
- return int(E), nil
-}
-
-func encodeExponent(e int) string {
- b := make([]byte, 8)
- binary.BigEndian.PutUint64(b, uint64(e))
- var idx int
- for ; idx < 8; idx++ {
- if b[idx] != 0x0 {
- break
- }
- }
- return base64.RawURLEncoding.EncodeToString(b[idx:])
-}
-
-// Turns a URL encoded modulus of a key into a big int.
-func decodeModulus(n string) (*big.Int, error) {
- decN, err := decodeBase64URLPaddingOptional(n)
- if err != nil {
- return nil, err
- }
- N := big.NewInt(0)
- N.SetBytes(decN)
- return N, nil
-}
-
-func encodeModulus(n *big.Int) string {
- return base64.RawURLEncoding.EncodeToString(n.Bytes())
-}
-
-// decodeBase64URLPaddingOptional decodes Base64 whether there is padding or not.
-// The stdlib version currently doesn't handle this.
-// We can get rid of this is if this bug:
-// https://github.com/golang/go/issues/4237
-// ever closes.
-func decodeBase64URLPaddingOptional(e string) ([]byte, error) {
- if m := len(e) % 4; m != 0 {
- e += strings.Repeat("=", 4-m)
- }
- return base64.URLEncoding.DecodeString(e)
-}
diff --git a/vendor/github.com/coreos/go-oidc/jose/jws.go b/vendor/github.com/coreos/go-oidc/jose/jws.go
deleted file mode 100644
index 1049ece831c5..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/jws.go
+++ /dev/null
@@ -1,51 +0,0 @@
-package jose
-
-import (
- "fmt"
- "strings"
-)
-
-type JWS struct {
- RawHeader string
- Header JOSEHeader
- RawPayload string
- Payload []byte
- Signature []byte
-}
-
-// Given a raw encoded JWS token parses it and verifies the structure.
-func ParseJWS(raw string) (JWS, error) {
- parts := strings.Split(raw, ".")
- if len(parts) != 3 {
- return JWS{}, fmt.Errorf("malformed JWS, only %d segments", len(parts))
- }
-
- rawSig := parts[2]
- jws := JWS{
- RawHeader: parts[0],
- RawPayload: parts[1],
- }
-
- header, err := decodeHeader(jws.RawHeader)
- if err != nil {
- return JWS{}, fmt.Errorf("malformed JWS, unable to decode header, %s", err)
- }
- if err = header.Validate(); err != nil {
- return JWS{}, fmt.Errorf("malformed JWS, %s", err)
- }
- jws.Header = header
-
- payload, err := decodeSegment(jws.RawPayload)
- if err != nil {
- return JWS{}, fmt.Errorf("malformed JWS, unable to decode payload: %s", err)
- }
- jws.Payload = payload
-
- sig, err := decodeSegment(rawSig)
- if err != nil {
- return JWS{}, fmt.Errorf("malformed JWS, unable to decode signature: %s", err)
- }
- jws.Signature = sig
-
- return jws, nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/jose/jwt.go b/vendor/github.com/coreos/go-oidc/jose/jwt.go
deleted file mode 100644
index 3b3e9634b002..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/jwt.go
+++ /dev/null
@@ -1,82 +0,0 @@
-package jose
-
-import "strings"
-
-type JWT JWS
-
-func ParseJWT(token string) (jwt JWT, err error) {
- jws, err := ParseJWS(token)
- if err != nil {
- return
- }
-
- return JWT(jws), nil
-}
-
-func NewJWT(header JOSEHeader, claims Claims) (jwt JWT, err error) {
- jwt = JWT{}
-
- jwt.Header = header
- jwt.Header[HeaderMediaType] = "JWT"
-
- claimBytes, err := marshalClaims(claims)
- if err != nil {
- return
- }
- jwt.Payload = claimBytes
-
- eh, err := encodeHeader(header)
- if err != nil {
- return
- }
- jwt.RawHeader = eh
-
- ec, err := encodeClaims(claims)
- if err != nil {
- return
- }
- jwt.RawPayload = ec
-
- return
-}
-
-func (j *JWT) KeyID() (string, bool) {
- kID, ok := j.Header[HeaderKeyID]
- return kID, ok
-}
-
-func (j *JWT) Claims() (Claims, error) {
- return decodeClaims(j.Payload)
-}
-
-// Encoded data part of the token which may be signed.
-func (j *JWT) Data() string {
- return strings.Join([]string{j.RawHeader, j.RawPayload}, ".")
-}
-
-// Full encoded JWT token string in format: header.claims.signature
-func (j *JWT) Encode() string {
- d := j.Data()
- s := encodeSegment(j.Signature)
- return strings.Join([]string{d, s}, ".")
-}
-
-func NewSignedJWT(claims Claims, s Signer) (*JWT, error) {
- header := JOSEHeader{
- HeaderKeyAlgorithm: s.Alg(),
- HeaderKeyID: s.ID(),
- }
-
- jwt, err := NewJWT(header, claims)
- if err != nil {
- return nil, err
- }
-
- sig, err := s.Sign([]byte(jwt.Data()))
- if err != nil {
- return nil, err
- }
- jwt.Signature = sig
-
- return &jwt, nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/jose/sig.go b/vendor/github.com/coreos/go-oidc/jose/sig.go
deleted file mode 100755
index 7b2b253cca53..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/sig.go
+++ /dev/null
@@ -1,24 +0,0 @@
-package jose
-
-import (
- "fmt"
-)
-
-type Verifier interface {
- ID() string
- Alg() string
- Verify(sig []byte, data []byte) error
-}
-
-type Signer interface {
- Verifier
- Sign(data []byte) (sig []byte, err error)
-}
-
-func NewVerifier(jwk JWK) (Verifier, error) {
- if jwk.Type != "RSA" {
- return nil, fmt.Errorf("unsupported key type %q", jwk.Type)
- }
-
- return NewVerifierRSA(jwk)
-}
diff --git a/vendor/github.com/coreos/go-oidc/jose/sig_rsa.go b/vendor/github.com/coreos/go-oidc/jose/sig_rsa.go
deleted file mode 100755
index 004e45dd835c..000000000000
--- a/vendor/github.com/coreos/go-oidc/jose/sig_rsa.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package jose
-
-import (
- "crypto"
- "crypto/rand"
- "crypto/rsa"
- "fmt"
-)
-
-type VerifierRSA struct {
- KeyID string
- Hash crypto.Hash
- PublicKey rsa.PublicKey
-}
-
-type SignerRSA struct {
- PrivateKey rsa.PrivateKey
- VerifierRSA
-}
-
-func NewVerifierRSA(jwk JWK) (*VerifierRSA, error) {
- if jwk.Alg != "" && jwk.Alg != "RS256" {
- return nil, fmt.Errorf("unsupported key algorithm %q", jwk.Alg)
- }
-
- v := VerifierRSA{
- KeyID: jwk.ID,
- PublicKey: rsa.PublicKey{
- N: jwk.Modulus,
- E: jwk.Exponent,
- },
- Hash: crypto.SHA256,
- }
-
- return &v, nil
-}
-
-func NewSignerRSA(kid string, key rsa.PrivateKey) *SignerRSA {
- return &SignerRSA{
- PrivateKey: key,
- VerifierRSA: VerifierRSA{
- KeyID: kid,
- PublicKey: key.PublicKey,
- Hash: crypto.SHA256,
- },
- }
-}
-
-func (v *VerifierRSA) ID() string {
- return v.KeyID
-}
-
-func (v *VerifierRSA) Alg() string {
- return "RS256"
-}
-
-func (v *VerifierRSA) Verify(sig []byte, data []byte) error {
- h := v.Hash.New()
- h.Write(data)
- return rsa.VerifyPKCS1v15(&v.PublicKey, v.Hash, h.Sum(nil), sig)
-}
-
-func (s *SignerRSA) Sign(data []byte) ([]byte, error) {
- h := s.Hash.New()
- h.Write(data)
- return rsa.SignPKCS1v15(rand.Reader, &s.PrivateKey, s.Hash, h.Sum(nil))
-}
diff --git a/vendor/github.com/coreos/go-oidc/jwks.go b/vendor/github.com/coreos/go-oidc/jwks.go
new file mode 100644
index 000000000000..e6a82c842956
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/jwks.go
@@ -0,0 +1,228 @@
+package oidc
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "io/ioutil"
+ "net/http"
+ "sync"
+ "time"
+
+ "github.com/pquerna/cachecontrol"
+ jose "gopkg.in/square/go-jose.v2"
+)
+
+// keysExpiryDelta is the allowed clock skew between a client and the OpenID Connect
+// server.
+//
+// When keys expire, they are valid for this amount of time after.
+//
+// If the keys have not expired, and an ID Token claims it was signed by a key not in
+// the cache, if and only if the keys expire in this amount of time, the keys will be
+// updated.
+const keysExpiryDelta = 30 * time.Second
+
+// NewRemoteKeySet returns a KeySet that can validate JSON web tokens by using HTTP
+// GETs to fetch JSON web token sets hosted at a remote URL. This is automatically
+// used by NewProvider using the URLs returned by OpenID Connect discovery, but is
+// exposed for providers that don't support discovery or to prevent round trips to the
+// discovery URL.
+//
+// The returned KeySet is a long lived verifier that caches keys based on cache-control
+// headers. Reuse a common remote key set instead of creating new ones as needed.
+//
+// The behavior of the returned KeySet is undefined once the context is canceled.
+func NewRemoteKeySet(ctx context.Context, jwksURL string) KeySet {
+ return newRemoteKeySet(ctx, jwksURL, time.Now)
+}
+
+func newRemoteKeySet(ctx context.Context, jwksURL string, now func() time.Time) *remoteKeySet {
+ if now == nil {
+ now = time.Now
+ }
+ return &remoteKeySet{jwksURL: jwksURL, ctx: ctx, now: now}
+}
+
+type remoteKeySet struct {
+ jwksURL string
+ ctx context.Context
+ now func() time.Time
+
+ // guard all other fields
+ mu sync.Mutex
+
+ // inflight suppresses parallel execution of updateKeys and allows
+ // multiple goroutines to wait for its result.
+ inflight *inflight
+
+ // A set of cached keys and their expiry.
+ cachedKeys []jose.JSONWebKey
+ expiry time.Time
+}
+
+// inflight is used to wait on some in-flight request from multiple goroutines.
+type inflight struct {
+ doneCh chan struct{}
+
+ keys []jose.JSONWebKey
+ err error
+}
+
+func newInflight() *inflight {
+ return &inflight{doneCh: make(chan struct{})}
+}
+
+// wait returns a channel that multiple goroutines can receive on. Once it returns
+// a value, the inflight request is done and result() can be inspected.
+func (i *inflight) wait() <-chan struct{} {
+ return i.doneCh
+}
+
+// done can only be called by a single goroutine. It records the result of the
+// inflight request and signals other goroutines that the result is safe to
+// inspect.
+func (i *inflight) done(keys []jose.JSONWebKey, err error) {
+ i.keys = keys
+ i.err = err
+ close(i.doneCh)
+}
+
+// result cannot be called until the wait() channel has returned a value.
+func (i *inflight) result() ([]jose.JSONWebKey, error) {
+ return i.keys, i.err
+}
+
+func (r *remoteKeySet) VerifySignature(ctx context.Context, jwt string) ([]byte, error) {
+ jws, err := jose.ParseSigned(jwt)
+ if err != nil {
+ return nil, fmt.Errorf("oidc: malformed jwt: %v", err)
+ }
+ return r.verify(ctx, jws)
+}
+
+func (r *remoteKeySet) verify(ctx context.Context, jws *jose.JSONWebSignature) ([]byte, error) {
+ // We don't support JWTs signed with multiple signatures.
+ keyID := ""
+ for _, sig := range jws.Signatures {
+ keyID = sig.Header.KeyID
+ break
+ }
+
+ keys, expiry := r.keysFromCache()
+
+ // Don't check expiry yet. This optimizes for when the provider is unavailable.
+ for _, key := range keys {
+ if keyID == "" || key.KeyID == keyID {
+ if payload, err := jws.Verify(&key); err == nil {
+ return payload, nil
+ }
+ }
+ }
+
+ if !r.now().Add(keysExpiryDelta).After(expiry) {
+ // Keys haven't expired, don't refresh.
+ return nil, errors.New("failed to verify id token signature")
+ }
+
+ keys, err := r.keysFromRemote(ctx)
+ if err != nil {
+ return nil, fmt.Errorf("fetching keys %v", err)
+ }
+
+ for _, key := range keys {
+ if keyID == "" || key.KeyID == keyID {
+ if payload, err := jws.Verify(&key); err == nil {
+ return payload, nil
+ }
+ }
+ }
+ return nil, errors.New("failed to verify id token signature")
+}
+
+func (r *remoteKeySet) keysFromCache() (keys []jose.JSONWebKey, expiry time.Time) {
+ r.mu.Lock()
+ defer r.mu.Unlock()
+ return r.cachedKeys, r.expiry
+}
+
+// keysFromRemote syncs the key set from the remote set, records the values in the
+// cache, and returns the key set.
+func (r *remoteKeySet) keysFromRemote(ctx context.Context) ([]jose.JSONWebKey, error) {
+ // Need to lock to inspect the inflight request field.
+ r.mu.Lock()
+ // If there's not a current inflight request, create one.
+ if r.inflight == nil {
+ r.inflight = newInflight()
+
+ // This goroutine has exclusive ownership over the current inflight
+ // request. It releases the resource by nil'ing the inflight field
+ // once the goroutine is done.
+ go func() {
+ // Sync keys and finish inflight when that's done.
+ keys, expiry, err := r.updateKeys()
+
+ r.inflight.done(keys, err)
+
+ // Lock to update the keys and indicate that there is no longer an
+ // inflight request.
+ r.mu.Lock()
+ defer r.mu.Unlock()
+
+ if err == nil {
+ r.cachedKeys = keys
+ r.expiry = expiry
+ }
+
+ // Free inflight so a different request can run.
+ r.inflight = nil
+ }()
+ }
+ inflight := r.inflight
+ r.mu.Unlock()
+
+ select {
+ case <-ctx.Done():
+ return nil, ctx.Err()
+ case <-inflight.wait():
+ return inflight.result()
+ }
+}
+
+func (r *remoteKeySet) updateKeys() ([]jose.JSONWebKey, time.Time, error) {
+ req, err := http.NewRequest("GET", r.jwksURL, nil)
+ if err != nil {
+ return nil, time.Time{}, fmt.Errorf("oidc: can't create request: %v", err)
+ }
+
+ resp, err := doRequest(r.ctx, req)
+ if err != nil {
+ return nil, time.Time{}, fmt.Errorf("oidc: get keys failed %v", err)
+ }
+ defer resp.Body.Close()
+
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return nil, time.Time{}, fmt.Errorf("unable to read response body: %v", err)
+ }
+
+ if resp.StatusCode != http.StatusOK {
+ return nil, time.Time{}, fmt.Errorf("oidc: get keys failed: %s %s", resp.Status, body)
+ }
+
+ var keySet jose.JSONWebKeySet
+ err = unmarshalResp(resp, body, &keySet)
+ if err != nil {
+ return nil, time.Time{}, fmt.Errorf("oidc: failed to decode keys: %v %s", err, body)
+ }
+
+ // If the server doesn't provide cache control headers, assume the
+ // keys expire immediately.
+ expiry := r.now()
+
+ _, e, err := cachecontrol.CachableResponse(req, resp, cachecontrol.Options{})
+ if err == nil && e.After(expiry) {
+ expiry = e
+ }
+ return keySet.Keys, expiry, nil
+}
diff --git a/vendor/github.com/coreos/go-oidc/key/doc.go b/vendor/github.com/coreos/go-oidc/key/doc.go
deleted file mode 100644
index 936eec745825..000000000000
--- a/vendor/github.com/coreos/go-oidc/key/doc.go
+++ /dev/null
@@ -1,2 +0,0 @@
-// Package key is DEPRECATED. Use github.com/coreos/go-oidc instead.
-package key
diff --git a/vendor/github.com/coreos/go-oidc/key/key.go b/vendor/github.com/coreos/go-oidc/key/key.go
deleted file mode 100644
index 208c1fc1492c..000000000000
--- a/vendor/github.com/coreos/go-oidc/key/key.go
+++ /dev/null
@@ -1,153 +0,0 @@
-package key
-
-import (
- "crypto/rand"
- "crypto/rsa"
- "encoding/hex"
- "encoding/json"
- "io"
- "time"
-
- "github.com/coreos/go-oidc/jose"
-)
-
-func NewPublicKey(jwk jose.JWK) *PublicKey {
- return &PublicKey{jwk: jwk}
-}
-
-type PublicKey struct {
- jwk jose.JWK
-}
-
-func (k *PublicKey) MarshalJSON() ([]byte, error) {
- return json.Marshal(&k.jwk)
-}
-
-func (k *PublicKey) UnmarshalJSON(data []byte) error {
- var jwk jose.JWK
- if err := json.Unmarshal(data, &jwk); err != nil {
- return err
- }
- k.jwk = jwk
- return nil
-}
-
-func (k *PublicKey) ID() string {
- return k.jwk.ID
-}
-
-func (k *PublicKey) Verifier() (jose.Verifier, error) {
- return jose.NewVerifierRSA(k.jwk)
-}
-
-type PrivateKey struct {
- KeyID string
- PrivateKey *rsa.PrivateKey
-}
-
-func (k *PrivateKey) ID() string {
- return k.KeyID
-}
-
-func (k *PrivateKey) Signer() jose.Signer {
- return jose.NewSignerRSA(k.ID(), *k.PrivateKey)
-}
-
-func (k *PrivateKey) JWK() jose.JWK {
- return jose.JWK{
- ID: k.KeyID,
- Type: "RSA",
- Alg: "RS256",
- Use: "sig",
- Exponent: k.PrivateKey.PublicKey.E,
- Modulus: k.PrivateKey.PublicKey.N,
- }
-}
-
-type KeySet interface {
- ExpiresAt() time.Time
-}
-
-type PublicKeySet struct {
- keys []PublicKey
- index map[string]*PublicKey
- expiresAt time.Time
-}
-
-func NewPublicKeySet(jwks []jose.JWK, exp time.Time) *PublicKeySet {
- keys := make([]PublicKey, len(jwks))
- index := make(map[string]*PublicKey)
- for i, jwk := range jwks {
- keys[i] = *NewPublicKey(jwk)
- index[keys[i].ID()] = &keys[i]
- }
- return &PublicKeySet{
- keys: keys,
- index: index,
- expiresAt: exp,
- }
-}
-
-func (s *PublicKeySet) ExpiresAt() time.Time {
- return s.expiresAt
-}
-
-func (s *PublicKeySet) Keys() []PublicKey {
- return s.keys
-}
-
-func (s *PublicKeySet) Key(id string) *PublicKey {
- return s.index[id]
-}
-
-type PrivateKeySet struct {
- keys []*PrivateKey
- ActiveKeyID string
- expiresAt time.Time
-}
-
-func NewPrivateKeySet(keys []*PrivateKey, exp time.Time) *PrivateKeySet {
- return &PrivateKeySet{
- keys: keys,
- ActiveKeyID: keys[0].ID(),
- expiresAt: exp.UTC(),
- }
-}
-
-func (s *PrivateKeySet) Keys() []*PrivateKey {
- return s.keys
-}
-
-func (s *PrivateKeySet) ExpiresAt() time.Time {
- return s.expiresAt
-}
-
-func (s *PrivateKeySet) Active() *PrivateKey {
- for i, k := range s.keys {
- if k.ID() == s.ActiveKeyID {
- return s.keys[i]
- }
- }
-
- return nil
-}
-
-type GeneratePrivateKeyFunc func() (*PrivateKey, error)
-
-func GeneratePrivateKey() (*PrivateKey, error) {
- pk, err := rsa.GenerateKey(rand.Reader, 2048)
- if err != nil {
- return nil, err
- }
- keyID := make([]byte, 20)
- if _, err := io.ReadFull(rand.Reader, keyID); err != nil {
- return nil, err
- }
-
- k := PrivateKey{
- KeyID: hex.EncodeToString(keyID),
- PrivateKey: pk,
- }
-
- return &k, nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/key/manager.go b/vendor/github.com/coreos/go-oidc/key/manager.go
deleted file mode 100644
index 476ab6a8d2b9..000000000000
--- a/vendor/github.com/coreos/go-oidc/key/manager.go
+++ /dev/null
@@ -1,99 +0,0 @@
-package key
-
-import (
- "errors"
- "time"
-
- "github.com/jonboulle/clockwork"
-
- "github.com/coreos/go-oidc/jose"
- "github.com/coreos/pkg/health"
-)
-
-type PrivateKeyManager interface {
- ExpiresAt() time.Time
- Signer() (jose.Signer, error)
- JWKs() ([]jose.JWK, error)
- PublicKeys() ([]PublicKey, error)
-
- WritableKeySetRepo
- health.Checkable
-}
-
-func NewPrivateKeyManager() PrivateKeyManager {
- return &privateKeyManager{
- clock: clockwork.NewRealClock(),
- }
-}
-
-type privateKeyManager struct {
- keySet *PrivateKeySet
- clock clockwork.Clock
-}
-
-func (m *privateKeyManager) ExpiresAt() time.Time {
- if m.keySet == nil {
- return m.clock.Now().UTC()
- }
-
- return m.keySet.ExpiresAt()
-}
-
-func (m *privateKeyManager) Signer() (jose.Signer, error) {
- if err := m.Healthy(); err != nil {
- return nil, err
- }
-
- return m.keySet.Active().Signer(), nil
-}
-
-func (m *privateKeyManager) JWKs() ([]jose.JWK, error) {
- if err := m.Healthy(); err != nil {
- return nil, err
- }
-
- keys := m.keySet.Keys()
- jwks := make([]jose.JWK, len(keys))
- for i, k := range keys {
- jwks[i] = k.JWK()
- }
- return jwks, nil
-}
-
-func (m *privateKeyManager) PublicKeys() ([]PublicKey, error) {
- jwks, err := m.JWKs()
- if err != nil {
- return nil, err
- }
- keys := make([]PublicKey, len(jwks))
- for i, jwk := range jwks {
- keys[i] = *NewPublicKey(jwk)
- }
- return keys, nil
-}
-
-func (m *privateKeyManager) Healthy() error {
- if m.keySet == nil {
- return errors.New("private key manager uninitialized")
- }
-
- if len(m.keySet.Keys()) == 0 {
- return errors.New("private key manager zero keys")
- }
-
- if m.keySet.ExpiresAt().Before(m.clock.Now().UTC()) {
- return errors.New("private key manager keys expired")
- }
-
- return nil
-}
-
-func (m *privateKeyManager) Set(keySet KeySet) error {
- privKeySet, ok := keySet.(*PrivateKeySet)
- if !ok {
- return errors.New("unable to cast to PrivateKeySet")
- }
-
- m.keySet = privKeySet
- return nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/key/repo.go b/vendor/github.com/coreos/go-oidc/key/repo.go
deleted file mode 100644
index 1acdeb3614c5..000000000000
--- a/vendor/github.com/coreos/go-oidc/key/repo.go
+++ /dev/null
@@ -1,55 +0,0 @@
-package key
-
-import (
- "errors"
- "sync"
-)
-
-var ErrorNoKeys = errors.New("no keys found")
-
-type WritableKeySetRepo interface {
- Set(KeySet) error
-}
-
-type ReadableKeySetRepo interface {
- Get() (KeySet, error)
-}
-
-type PrivateKeySetRepo interface {
- WritableKeySetRepo
- ReadableKeySetRepo
-}
-
-func NewPrivateKeySetRepo() PrivateKeySetRepo {
- return &memPrivateKeySetRepo{}
-}
-
-type memPrivateKeySetRepo struct {
- mu sync.RWMutex
- pks PrivateKeySet
-}
-
-func (r *memPrivateKeySetRepo) Set(ks KeySet) error {
- pks, ok := ks.(*PrivateKeySet)
- if !ok {
- return errors.New("unable to cast to PrivateKeySet")
- } else if pks == nil {
- return errors.New("nil KeySet")
- }
-
- r.mu.Lock()
- defer r.mu.Unlock()
-
- r.pks = *pks
- return nil
-}
-
-func (r *memPrivateKeySetRepo) Get() (KeySet, error) {
- r.mu.RLock()
- defer r.mu.RUnlock()
-
- if r.pks.keys == nil {
- return nil, ErrorNoKeys
- }
- return KeySet(&r.pks), nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/key/rotate.go b/vendor/github.com/coreos/go-oidc/key/rotate.go
deleted file mode 100644
index bc6cdfb1bd89..000000000000
--- a/vendor/github.com/coreos/go-oidc/key/rotate.go
+++ /dev/null
@@ -1,159 +0,0 @@
-package key
-
-import (
- "errors"
- "log"
- "time"
-
- ptime "github.com/coreos/pkg/timeutil"
- "github.com/jonboulle/clockwork"
-)
-
-var (
- ErrorPrivateKeysExpired = errors.New("private keys have expired")
-)
-
-func NewPrivateKeyRotator(repo PrivateKeySetRepo, ttl time.Duration) *PrivateKeyRotator {
- return &PrivateKeyRotator{
- repo: repo,
- ttl: ttl,
-
- keep: 2,
- generateKey: GeneratePrivateKey,
- clock: clockwork.NewRealClock(),
- }
-}
-
-type PrivateKeyRotator struct {
- repo PrivateKeySetRepo
- generateKey GeneratePrivateKeyFunc
- clock clockwork.Clock
- keep int
- ttl time.Duration
-}
-
-func (r *PrivateKeyRotator) expiresAt() time.Time {
- return r.clock.Now().UTC().Add(r.ttl)
-}
-
-func (r *PrivateKeyRotator) Healthy() error {
- pks, err := r.privateKeySet()
- if err != nil {
- return err
- }
-
- if r.clock.Now().After(pks.ExpiresAt()) {
- return ErrorPrivateKeysExpired
- }
-
- return nil
-}
-
-func (r *PrivateKeyRotator) privateKeySet() (*PrivateKeySet, error) {
- ks, err := r.repo.Get()
- if err != nil {
- return nil, err
- }
-
- pks, ok := ks.(*PrivateKeySet)
- if !ok {
- return nil, errors.New("unable to cast to PrivateKeySet")
- }
- return pks, nil
-}
-
-func (r *PrivateKeyRotator) nextRotation() (time.Duration, error) {
- pks, err := r.privateKeySet()
- if err == ErrorNoKeys {
- return 0, nil
- }
- if err != nil {
- return 0, err
- }
-
- now := r.clock.Now()
-
- // Ideally, we want to rotate after half the TTL has elapsed.
- idealRotationTime := pks.ExpiresAt().Add(-r.ttl / 2)
-
- // If we are past the ideal rotation time, rotate immediatly.
- return max(0, idealRotationTime.Sub(now)), nil
-}
-
-func max(a, b time.Duration) time.Duration {
- if a > b {
- return a
- }
- return b
-}
-
-func (r *PrivateKeyRotator) Run() chan struct{} {
- attempt := func() {
- k, err := r.generateKey()
- if err != nil {
- log.Printf("go-oidc: failed generating signing key: %v", err)
- return
- }
-
- exp := r.expiresAt()
- if err := rotatePrivateKeys(r.repo, k, r.keep, exp); err != nil {
- log.Printf("go-oidc: key rotation failed: %v", err)
- return
- }
- }
-
- stop := make(chan struct{})
- go func() {
- for {
- var nextRotation time.Duration
- var sleep time.Duration
- var err error
- for {
- if nextRotation, err = r.nextRotation(); err == nil {
- break
- }
- sleep = ptime.ExpBackoff(sleep, time.Minute)
- log.Printf("go-oidc: error getting nextRotation, retrying in %v: %v", sleep, err)
- time.Sleep(sleep)
- }
-
- select {
- case <-r.clock.After(nextRotation):
- attempt()
- case <-stop:
- return
- }
- }
- }()
-
- return stop
-}
-
-func rotatePrivateKeys(repo PrivateKeySetRepo, k *PrivateKey, keep int, exp time.Time) error {
- ks, err := repo.Get()
- if err != nil && err != ErrorNoKeys {
- return err
- }
-
- var keys []*PrivateKey
- if ks != nil {
- pks, ok := ks.(*PrivateKeySet)
- if !ok {
- return errors.New("unable to cast to PrivateKeySet")
- }
- keys = pks.Keys()
- }
-
- keys = append([]*PrivateKey{k}, keys...)
- if l := len(keys); l > keep {
- keys = keys[0:keep]
- }
-
- nks := PrivateKeySet{
- keys: keys,
- ActiveKeyID: k.ID(),
- expiresAt: exp,
- }
-
- return repo.Set(KeySet(&nks))
-}
diff --git a/vendor/github.com/coreos/go-oidc/key/sync.go b/vendor/github.com/coreos/go-oidc/key/sync.go
deleted file mode 100644
index b887f7b5a560..000000000000
--- a/vendor/github.com/coreos/go-oidc/key/sync.go
+++ /dev/null
@@ -1,91 +0,0 @@
-package key
-
-import (
- "errors"
- "log"
- "time"
-
- "github.com/jonboulle/clockwork"
-
- "github.com/coreos/pkg/timeutil"
-)
-
-func NewKeySetSyncer(r ReadableKeySetRepo, w WritableKeySetRepo) *KeySetSyncer {
- return &KeySetSyncer{
- readable: r,
- writable: w,
- clock: clockwork.NewRealClock(),
- }
-}
-
-type KeySetSyncer struct {
- readable ReadableKeySetRepo
- writable WritableKeySetRepo
- clock clockwork.Clock
-}
-
-func (s *KeySetSyncer) Run() chan struct{} {
- stop := make(chan struct{})
- go func() {
- var failing bool
- var next time.Duration
- for {
- exp, err := syncKeySet(s.readable, s.writable, s.clock)
- if err != nil || exp == 0 {
- if !failing {
- failing = true
- next = time.Second
- } else {
- next = timeutil.ExpBackoff(next, time.Minute)
- }
- if exp == 0 {
- log.Printf("Synced to already expired key set, retrying in %v: %v", next, err)
-
- } else {
- log.Printf("Failed syncing key set, retrying in %v: %v", next, err)
- }
- } else {
- failing = false
- next = exp / 2
- }
-
- select {
- case <-s.clock.After(next):
- continue
- case <-stop:
- return
- }
- }
- }()
-
- return stop
-}
-
-func Sync(r ReadableKeySetRepo, w WritableKeySetRepo) (time.Duration, error) {
- return syncKeySet(r, w, clockwork.NewRealClock())
-}
-
-// syncKeySet copies the keyset from r to the KeySet at w and returns the duration in which the KeySet will expire.
-// If keyset has already expired, returns a zero duration.
-func syncKeySet(r ReadableKeySetRepo, w WritableKeySetRepo, clock clockwork.Clock) (exp time.Duration, err error) {
- var ks KeySet
- ks, err = r.Get()
- if err != nil {
- return
- }
-
- if ks == nil {
- err = errors.New("no source KeySet")
- return
- }
-
- if err = w.Set(ks); err != nil {
- return
- }
-
- now := clock.Now()
- if ks.ExpiresAt().After(now) {
- exp = ks.ExpiresAt().Sub(now)
- }
- return
-}
diff --git a/vendor/github.com/coreos/go-oidc/oauth2/doc.go b/vendor/github.com/coreos/go-oidc/oauth2/doc.go
deleted file mode 100644
index 52eb3085e934..000000000000
--- a/vendor/github.com/coreos/go-oidc/oauth2/doc.go
+++ /dev/null
@@ -1,2 +0,0 @@
-// Package oauth2 is DEPRECATED. Use golang.org/x/oauth instead.
-package oauth2
diff --git a/vendor/github.com/coreos/go-oidc/oauth2/error.go b/vendor/github.com/coreos/go-oidc/oauth2/error.go
deleted file mode 100644
index 50d890949a23..000000000000
--- a/vendor/github.com/coreos/go-oidc/oauth2/error.go
+++ /dev/null
@@ -1,29 +0,0 @@
-package oauth2
-
-const (
- ErrorAccessDenied = "access_denied"
- ErrorInvalidClient = "invalid_client"
- ErrorInvalidGrant = "invalid_grant"
- ErrorInvalidRequest = "invalid_request"
- ErrorServerError = "server_error"
- ErrorUnauthorizedClient = "unauthorized_client"
- ErrorUnsupportedGrantType = "unsupported_grant_type"
- ErrorUnsupportedResponseType = "unsupported_response_type"
-)
-
-type Error struct {
- Type string `json:"error"`
- Description string `json:"error_description,omitempty"`
- State string `json:"state,omitempty"`
-}
-
-func (e *Error) Error() string {
- if e.Description != "" {
- return e.Type + ": " + e.Description
- }
- return e.Type
-}
-
-func NewError(typ string) *Error {
- return &Error{Type: typ}
-}
diff --git a/vendor/github.com/coreos/go-oidc/oauth2/oauth2.go b/vendor/github.com/coreos/go-oidc/oauth2/oauth2.go
deleted file mode 100644
index 72d1d6715bfd..000000000000
--- a/vendor/github.com/coreos/go-oidc/oauth2/oauth2.go
+++ /dev/null
@@ -1,416 +0,0 @@
-package oauth2
-
-import (
- "encoding/json"
- "errors"
- "fmt"
- "io/ioutil"
- "mime"
- "net/http"
- "net/url"
- "sort"
- "strconv"
- "strings"
-
- phttp "github.com/coreos/go-oidc/http"
-)
-
-// ResponseTypesEqual compares two response_type values. If either
-// contains a space, it is treated as an unordered list. For example,
-// comparing "code id_token" and "id_token code" would evaluate to true.
-func ResponseTypesEqual(r1, r2 string) bool {
- if !strings.Contains(r1, " ") || !strings.Contains(r2, " ") {
- // fast route, no split needed
- return r1 == r2
- }
-
- // split, sort, and compare
- r1Fields := strings.Fields(r1)
- r2Fields := strings.Fields(r2)
- if len(r1Fields) != len(r2Fields) {
- return false
- }
- sort.Strings(r1Fields)
- sort.Strings(r2Fields)
- for i, r1Field := range r1Fields {
- if r1Field != r2Fields[i] {
- return false
- }
- }
- return true
-}
-
-const (
- // OAuth2.0 response types registered by OIDC.
- //
- // See: https://openid.net/specs/oauth-v2-multiple-response-types-1_0.html#RegistryContents
- ResponseTypeCode = "code"
- ResponseTypeCodeIDToken = "code id_token"
- ResponseTypeCodeIDTokenToken = "code id_token token"
- ResponseTypeIDToken = "id_token"
- ResponseTypeIDTokenToken = "id_token token"
- ResponseTypeToken = "token"
- ResponseTypeNone = "none"
-)
-
-const (
- GrantTypeAuthCode = "authorization_code"
- GrantTypeClientCreds = "client_credentials"
- GrantTypeUserCreds = "password"
- GrantTypeImplicit = "implicit"
- GrantTypeRefreshToken = "refresh_token"
-
- AuthMethodClientSecretPost = "client_secret_post"
- AuthMethodClientSecretBasic = "client_secret_basic"
- AuthMethodClientSecretJWT = "client_secret_jwt"
- AuthMethodPrivateKeyJWT = "private_key_jwt"
-)
-
-type Config struct {
- Credentials ClientCredentials
- Scope []string
- RedirectURL string
- AuthURL string
- TokenURL string
-
- // Must be one of the AuthMethodXXX methods above. Right now, only
- // AuthMethodClientSecretPost and AuthMethodClientSecretBasic are supported.
- AuthMethod string
-}
-
-type Client struct {
- hc phttp.Client
- creds ClientCredentials
- scope []string
- authURL *url.URL
- redirectURL *url.URL
- tokenURL *url.URL
- authMethod string
-}
-
-type ClientCredentials struct {
- ID string
- Secret string
-}
-
-func NewClient(hc phttp.Client, cfg Config) (c *Client, err error) {
- if len(cfg.Credentials.ID) == 0 {
- err = errors.New("missing client id")
- return
- }
-
- if len(cfg.Credentials.Secret) == 0 {
- err = errors.New("missing client secret")
- return
- }
-
- if cfg.AuthMethod == "" {
- cfg.AuthMethod = AuthMethodClientSecretBasic
- } else if cfg.AuthMethod != AuthMethodClientSecretPost && cfg.AuthMethod != AuthMethodClientSecretBasic {
- err = fmt.Errorf("auth method %q is not supported", cfg.AuthMethod)
- return
- }
-
- au, err := phttp.ParseNonEmptyURL(cfg.AuthURL)
- if err != nil {
- return
- }
-
- tu, err := phttp.ParseNonEmptyURL(cfg.TokenURL)
- if err != nil {
- return
- }
-
- // Allow empty redirect URL in the case where the client
- // only needs to verify a given token.
- ru, err := url.Parse(cfg.RedirectURL)
- if err != nil {
- return
- }
-
- c = &Client{
- creds: cfg.Credentials,
- scope: cfg.Scope,
- redirectURL: ru,
- authURL: au,
- tokenURL: tu,
- hc: hc,
- authMethod: cfg.AuthMethod,
- }
-
- return
-}
-
-// Return the embedded HTTP client
-func (c *Client) HttpClient() phttp.Client {
- return c.hc
-}
-
-// Generate the url for initial redirect to oauth provider.
-func (c *Client) AuthCodeURL(state, accessType, prompt string) string {
- v := c.commonURLValues()
- v.Set("state", state)
- if strings.ToLower(accessType) == "offline" {
- v.Set("access_type", "offline")
- }
-
- if prompt != "" {
- v.Set("prompt", prompt)
- }
- v.Set("response_type", "code")
-
- q := v.Encode()
- u := *c.authURL
- if u.RawQuery == "" {
- u.RawQuery = q
- } else {
- u.RawQuery += "&" + q
- }
- return u.String()
-}
-
-func (c *Client) commonURLValues() url.Values {
- return url.Values{
- "redirect_uri": {c.redirectURL.String()},
- "scope": {strings.Join(c.scope, " ")},
- "client_id": {c.creds.ID},
- }
-}
-
-func (c *Client) newAuthenticatedRequest(urlToken string, values url.Values) (*http.Request, error) {
- var req *http.Request
- var err error
- switch c.authMethod {
- case AuthMethodClientSecretPost:
- values.Set("client_secret", c.creds.Secret)
- req, err = http.NewRequest("POST", urlToken, strings.NewReader(values.Encode()))
- if err != nil {
- return nil, err
- }
- case AuthMethodClientSecretBasic:
- req, err = http.NewRequest("POST", urlToken, strings.NewReader(values.Encode()))
- if err != nil {
- return nil, err
- }
- encodedID := url.QueryEscape(c.creds.ID)
- encodedSecret := url.QueryEscape(c.creds.Secret)
- req.SetBasicAuth(encodedID, encodedSecret)
- default:
- panic("misconfigured client: auth method not supported")
- }
-
- req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
- return req, nil
-
-}
-
-// ClientCredsToken posts the client id and secret to obtain a token scoped to the OAuth2 client via the "client_credentials" grant type.
-// May not be supported by all OAuth2 servers.
-func (c *Client) ClientCredsToken(scope []string) (result TokenResponse, err error) {
- v := url.Values{
- "scope": {strings.Join(scope, " ")},
- "grant_type": {GrantTypeClientCreds},
- }
-
- req, err := c.newAuthenticatedRequest(c.tokenURL.String(), v)
- if err != nil {
- return
- }
-
- resp, err := c.hc.Do(req)
- if err != nil {
- return
- }
- defer resp.Body.Close()
-
- return parseTokenResponse(resp)
-}
-
-// UserCredsToken posts the username and password to obtain a token scoped to the OAuth2 client via the "password" grant_type
-// May not be supported by all OAuth2 servers.
-func (c *Client) UserCredsToken(username, password string) (result TokenResponse, err error) {
- v := url.Values{
- "scope": {strings.Join(c.scope, " ")},
- "grant_type": {GrantTypeUserCreds},
- "username": {username},
- "password": {password},
- }
-
- req, err := c.newAuthenticatedRequest(c.tokenURL.String(), v)
- if err != nil {
- return
- }
-
- resp, err := c.hc.Do(req)
- if err != nil {
- return
- }
- defer resp.Body.Close()
-
- return parseTokenResponse(resp)
-}
-
-// RequestToken requests a token from the Token Endpoint with the specified grantType.
-// If 'grantType' == GrantTypeAuthCode, then 'value' should be the authorization code.
-// If 'grantType' == GrantTypeRefreshToken, then 'value' should be the refresh token.
-func (c *Client) RequestToken(grantType, value string) (result TokenResponse, err error) {
- v := c.commonURLValues()
-
- v.Set("grant_type", grantType)
- v.Set("client_secret", c.creds.Secret)
- switch grantType {
- case GrantTypeAuthCode:
- v.Set("code", value)
- case GrantTypeRefreshToken:
- v.Set("refresh_token", value)
- default:
- err = fmt.Errorf("unsupported grant_type: %v", grantType)
- return
- }
-
- req, err := c.newAuthenticatedRequest(c.tokenURL.String(), v)
- if err != nil {
- return
- }
-
- resp, err := c.hc.Do(req)
- if err != nil {
- return
- }
- defer resp.Body.Close()
-
- return parseTokenResponse(resp)
-}
-
-func parseTokenResponse(resp *http.Response) (result TokenResponse, err error) {
- body, err := ioutil.ReadAll(resp.Body)
- if err != nil {
- return
- }
- badStatusCode := resp.StatusCode < 200 || resp.StatusCode > 299
-
- contentType, _, err := mime.ParseMediaType(resp.Header.Get("Content-Type"))
- if err != nil {
- return
- }
-
- result = TokenResponse{
- RawBody: body,
- }
-
- newError := func(typ, desc, state string) error {
- if typ == "" {
- return fmt.Errorf("unrecognized error %s", body)
- }
- return &Error{typ, desc, state}
- }
-
- if contentType == "application/x-www-form-urlencoded" || contentType == "text/plain" {
- var vals url.Values
- vals, err = url.ParseQuery(string(body))
- if err != nil {
- return
- }
- if error := vals.Get("error"); error != "" || badStatusCode {
- err = newError(error, vals.Get("error_description"), vals.Get("state"))
- return
- }
- e := vals.Get("expires_in")
- if e == "" {
- e = vals.Get("expires")
- }
- if e != "" {
- result.Expires, err = strconv.Atoi(e)
- if err != nil {
- return
- }
- }
- result.AccessToken = vals.Get("access_token")
- result.TokenType = vals.Get("token_type")
- result.IDToken = vals.Get("id_token")
- result.RefreshToken = vals.Get("refresh_token")
- result.Scope = vals.Get("scope")
- } else {
- var r struct {
- AccessToken string `json:"access_token"`
- TokenType string `json:"token_type"`
- IDToken string `json:"id_token"`
- RefreshToken string `json:"refresh_token"`
- Scope string `json:"scope"`
- State string `json:"state"`
- ExpiresIn json.Number `json:"expires_in"` // Azure AD returns string
- Expires int `json:"expires"`
- Error string `json:"error"`
- Desc string `json:"error_description"`
- }
- if err = json.Unmarshal(body, &r); err != nil {
- return
- }
- if r.Error != "" || badStatusCode {
- err = newError(r.Error, r.Desc, r.State)
- return
- }
- result.AccessToken = r.AccessToken
- result.TokenType = r.TokenType
- result.IDToken = r.IDToken
- result.RefreshToken = r.RefreshToken
- result.Scope = r.Scope
- if expiresIn, err := r.ExpiresIn.Int64(); err != nil {
- result.Expires = r.Expires
- } else {
- result.Expires = int(expiresIn)
- }
- }
- return
-}
-
-type TokenResponse struct {
- AccessToken string
- TokenType string
- Expires int
- IDToken string
- RefreshToken string // OPTIONAL.
- Scope string // OPTIONAL, if identical to the scope requested by the client, otherwise, REQUIRED.
- RawBody []byte // In case callers need some other non-standard info from the token response
-}
-
-type AuthCodeRequest struct {
- ResponseType string
- ClientID string
- RedirectURL *url.URL
- Scope []string
- State string
-}
-
-func ParseAuthCodeRequest(q url.Values) (AuthCodeRequest, error) {
- acr := AuthCodeRequest{
- ResponseType: q.Get("response_type"),
- ClientID: q.Get("client_id"),
- State: q.Get("state"),
- Scope: make([]string, 0),
- }
-
- qs := strings.TrimSpace(q.Get("scope"))
- if qs != "" {
- acr.Scope = strings.Split(qs, " ")
- }
-
- err := func() error {
- if acr.ClientID == "" {
- return NewError(ErrorInvalidRequest)
- }
-
- redirectURL := q.Get("redirect_uri")
- if redirectURL != "" {
- ru, err := url.Parse(redirectURL)
- if err != nil {
- return NewError(ErrorInvalidRequest)
- }
- acr.RedirectURL = ru
- }
-
- return nil
- }()
-
- return acr, err
-}
diff --git a/vendor/github.com/coreos/go-oidc/oidc.go b/vendor/github.com/coreos/go-oidc/oidc.go
new file mode 100644
index 000000000000..c82ba46b4af7
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/oidc.go
@@ -0,0 +1,374 @@
+// Package oidc implements OpenID Connect client logic for the golang.org/x/oauth2 package.
+package oidc
+
+import (
+ "context"
+ "crypto/sha256"
+ "crypto/sha512"
+ "encoding/base64"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "hash"
+ "io/ioutil"
+ "mime"
+ "net/http"
+ "strings"
+ "time"
+
+ "golang.org/x/oauth2"
+ jose "gopkg.in/square/go-jose.v2"
+)
+
+const (
+ // ScopeOpenID is the mandatory scope for all OpenID Connect OAuth2 requests.
+ ScopeOpenID = "openid"
+
+ // ScopeOfflineAccess is an optional scope defined by OpenID Connect for requesting
+ // OAuth2 refresh tokens.
+ //
+ // Support for this scope differs between OpenID Connect providers. For instance
+ // Google rejects it, favoring appending "access_type=offline" as part of the
+ // authorization request instead.
+ //
+ // See: https://openid.net/specs/openid-connect-core-1_0.html#OfflineAccess
+ ScopeOfflineAccess = "offline_access"
+)
+
+var (
+ errNoAtHash = errors.New("id token did not have an access token hash")
+ errInvalidAtHash = errors.New("access token hash does not match value in ID token")
+)
+
+// ClientContext returns a new Context that carries the provided HTTP client.
+//
+// This method sets the same context key used by the golang.org/x/oauth2 package,
+// so the returned context works for that package too.
+//
+// myClient := &http.Client{}
+// ctx := oidc.ClientContext(parentContext, myClient)
+//
+// // This will use the custom client
+// provider, err := oidc.NewProvider(ctx, "https://accounts.example.com")
+//
+func ClientContext(ctx context.Context, client *http.Client) context.Context {
+ return context.WithValue(ctx, oauth2.HTTPClient, client)
+}
+
+func doRequest(ctx context.Context, req *http.Request) (*http.Response, error) {
+ client := http.DefaultClient
+ if c, ok := ctx.Value(oauth2.HTTPClient).(*http.Client); ok {
+ client = c
+ }
+ return client.Do(req.WithContext(ctx))
+}
+
+// Provider represents an OpenID Connect server's configuration.
+type Provider struct {
+ issuer string
+ authURL string
+ tokenURL string
+ userInfoURL string
+
+ // Raw claims returned by the server.
+ rawClaims []byte
+
+ remoteKeySet KeySet
+}
+
+type cachedKeys struct {
+ keys []jose.JSONWebKey
+ expiry time.Time
+}
+
+type providerJSON struct {
+ Issuer string `json:"issuer"`
+ AuthURL string `json:"authorization_endpoint"`
+ TokenURL string `json:"token_endpoint"`
+ JWKSURL string `json:"jwks_uri"`
+ UserInfoURL string `json:"userinfo_endpoint"`
+}
+
+// NewProvider uses the OpenID Connect discovery mechanism to construct a Provider.
+//
+// The issuer is the URL identifier for the service. For example: "https://accounts.google.com"
+// or "https://login.salesforce.com".
+func NewProvider(ctx context.Context, issuer string) (*Provider, error) {
+ wellKnown := strings.TrimSuffix(issuer, "/") + "/.well-known/openid-configuration"
+ req, err := http.NewRequest("GET", wellKnown, nil)
+ if err != nil {
+ return nil, err
+ }
+ resp, err := doRequest(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return nil, fmt.Errorf("unable to read response body: %v", err)
+ }
+
+ if resp.StatusCode != http.StatusOK {
+ return nil, fmt.Errorf("%s: %s", resp.Status, body)
+ }
+
+ var p providerJSON
+ err = unmarshalResp(resp, body, &p)
+ if err != nil {
+ return nil, fmt.Errorf("oidc: failed to decode provider discovery object: %v", err)
+ }
+
+ if p.Issuer != issuer {
+ return nil, fmt.Errorf("oidc: issuer did not match the issuer returned by provider, expected %q got %q", issuer, p.Issuer)
+ }
+ return &Provider{
+ issuer: p.Issuer,
+ authURL: p.AuthURL,
+ tokenURL: p.TokenURL,
+ userInfoURL: p.UserInfoURL,
+ rawClaims: body,
+ remoteKeySet: NewRemoteKeySet(ctx, p.JWKSURL),
+ }, nil
+}
+
+// Claims unmarshals raw fields returned by the server during discovery.
+//
+// var claims struct {
+// ScopesSupported []string `json:"scopes_supported"`
+// ClaimsSupported []string `json:"claims_supported"`
+// }
+//
+// if err := provider.Claims(&claims); err != nil {
+// // handle unmarshaling error
+// }
+//
+// For a list of fields defined by the OpenID Connect spec see:
+// https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
+func (p *Provider) Claims(v interface{}) error {
+ if p.rawClaims == nil {
+ return errors.New("oidc: claims not set")
+ }
+ return json.Unmarshal(p.rawClaims, v)
+}
+
+// Endpoint returns the OAuth2 auth and token endpoints for the given provider.
+func (p *Provider) Endpoint() oauth2.Endpoint {
+ return oauth2.Endpoint{AuthURL: p.authURL, TokenURL: p.tokenURL}
+}
+
+// UserInfo represents the OpenID Connect userinfo claims.
+type UserInfo struct {
+ Subject string `json:"sub"`
+ Profile string `json:"profile"`
+ Email string `json:"email"`
+ EmailVerified bool `json:"email_verified"`
+
+ claims []byte
+}
+
+// Claims unmarshals the raw JSON object claims into the provided object.
+func (u *UserInfo) Claims(v interface{}) error {
+ if u.claims == nil {
+ return errors.New("oidc: claims not set")
+ }
+ return json.Unmarshal(u.claims, v)
+}
+
+// UserInfo uses the token source to query the provider's user info endpoint.
+func (p *Provider) UserInfo(ctx context.Context, tokenSource oauth2.TokenSource) (*UserInfo, error) {
+ if p.userInfoURL == "" {
+ return nil, errors.New("oidc: user info endpoint is not supported by this provider")
+ }
+
+ req, err := http.NewRequest("GET", p.userInfoURL, nil)
+ if err != nil {
+ return nil, fmt.Errorf("oidc: create GET request: %v", err)
+ }
+
+ token, err := tokenSource.Token()
+ if err != nil {
+ return nil, fmt.Errorf("oidc: get access token: %v", err)
+ }
+ token.SetAuthHeader(req)
+
+ resp, err := doRequest(ctx, req)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+ body, err := ioutil.ReadAll(resp.Body)
+ if err != nil {
+ return nil, err
+ }
+ if resp.StatusCode != http.StatusOK {
+ return nil, fmt.Errorf("%s: %s", resp.Status, body)
+ }
+
+ var userInfo UserInfo
+ if err := json.Unmarshal(body, &userInfo); err != nil {
+ return nil, fmt.Errorf("oidc: failed to decode userinfo: %v", err)
+ }
+ userInfo.claims = body
+ return &userInfo, nil
+}
+
+// IDToken is an OpenID Connect extension that provides a predictable representation
+// of an authorization event.
+//
+// The ID Token only holds fields OpenID Connect requires. To access additional
+// claims returned by the server, use the Claims method.
+type IDToken struct {
+ // The URL of the server which issued this token. OpenID Connect
+ // requires this value always be identical to the URL used for
+ // initial discovery.
+ //
+ // Note: Because of a known issue with Google Accounts' implementation
+ // this value may differ when using Google.
+ //
+ // See: https://developers.google.com/identity/protocols/OpenIDConnect#obtainuserinfo
+ Issuer string
+
+ // The client ID, or set of client IDs, that this token is issued for. For
+ // common uses, this is the client that initialized the auth flow.
+ //
+ // This package ensures the audience contains an expected value.
+ Audience []string
+
+ // A unique string which identifies the end user.
+ Subject string
+
+ // Expiry of the token. Ths package will not process tokens that have
+ // expired unless that validation is explicitly turned off.
+ Expiry time.Time
+ // When the token was issued by the provider.
+ IssuedAt time.Time
+
+ // Initial nonce provided during the authentication redirect.
+ //
+ // This package does NOT provided verification on the value of this field
+ // and it's the user's responsibility to ensure it contains a valid value.
+ Nonce string
+
+ // at_hash claim, if set in the ID token. Callers can verify an access token
+ // that corresponds to the ID token using the VerifyAccessToken method.
+ AccessTokenHash string
+
+ // signature algorithm used for ID token, needed to compute a verification hash of an
+ // access token
+ sigAlgorithm string
+
+ // Raw payload of the id_token.
+ claims []byte
+}
+
+// Claims unmarshals the raw JSON payload of the ID Token into a provided struct.
+//
+// idToken, err := idTokenVerifier.Verify(rawIDToken)
+// if err != nil {
+// // handle error
+// }
+// var claims struct {
+// Email string `json:"email"`
+// EmailVerified bool `json:"email_verified"`
+// }
+// if err := idToken.Claims(&claims); err != nil {
+// // handle error
+// }
+//
+func (i *IDToken) Claims(v interface{}) error {
+ if i.claims == nil {
+ return errors.New("oidc: claims not set")
+ }
+ return json.Unmarshal(i.claims, v)
+}
+
+// VerifyAccessToken verifies that the hash of the access token that corresponds to the iD token
+// matches the hash in the id token. It returns an error if the hashes don't match.
+// It is the caller's responsibility to ensure that the optional access token hash is present for the ID token
+// before calling this method. See https://openid.net/specs/openid-connect-core-1_0.html#CodeIDToken
+func (i *IDToken) VerifyAccessToken(accessToken string) error {
+ if i.AccessTokenHash == "" {
+ return errNoAtHash
+ }
+ var h hash.Hash
+ switch i.sigAlgorithm {
+ case RS256, ES256, PS256:
+ h = sha256.New()
+ case RS384, ES384, PS384:
+ h = sha512.New384()
+ case RS512, ES512, PS512:
+ h = sha512.New()
+ default:
+ return fmt.Errorf("oidc: unsupported signing algorithm %q", i.sigAlgorithm)
+ }
+ h.Write([]byte(accessToken)) // hash documents that Write will never return an error
+ sum := h.Sum(nil)[:h.Size()/2]
+ actual := base64.RawURLEncoding.EncodeToString(sum)
+ if actual != i.AccessTokenHash {
+ return errInvalidAtHash
+ }
+ return nil
+}
+
+type idToken struct {
+ Issuer string `json:"iss"`
+ Subject string `json:"sub"`
+ Audience audience `json:"aud"`
+ Expiry jsonTime `json:"exp"`
+ IssuedAt jsonTime `json:"iat"`
+ Nonce string `json:"nonce"`
+ AtHash string `json:"at_hash"`
+}
+
+type audience []string
+
+func (a *audience) UnmarshalJSON(b []byte) error {
+ var s string
+ if json.Unmarshal(b, &s) == nil {
+ *a = audience{s}
+ return nil
+ }
+ var auds []string
+ if err := json.Unmarshal(b, &auds); err != nil {
+ return err
+ }
+ *a = audience(auds)
+ return nil
+}
+
+type jsonTime time.Time
+
+func (j *jsonTime) UnmarshalJSON(b []byte) error {
+ var n json.Number
+ if err := json.Unmarshal(b, &n); err != nil {
+ return err
+ }
+ var unix int64
+
+ if t, err := n.Int64(); err == nil {
+ unix = t
+ } else {
+ f, err := n.Float64()
+ if err != nil {
+ return err
+ }
+ unix = int64(f)
+ }
+ *j = jsonTime(time.Unix(unix, 0))
+ return nil
+}
+
+func unmarshalResp(r *http.Response, body []byte, v interface{}) error {
+ err := json.Unmarshal(body, &v)
+ if err == nil {
+ return nil
+ }
+ ct := r.Header.Get("Content-Type")
+ mediaType, _, parseErr := mime.ParseMediaType(ct)
+ if parseErr == nil && mediaType == "application/json" {
+ return fmt.Errorf("got Content-Type = application/json, but could not unmarshal as JSON: %v", err)
+ }
+ return fmt.Errorf("expected Content-Type = application/json, got %q: %v", ct, err)
+}
diff --git a/vendor/github.com/coreos/go-oidc/oidc/client.go b/vendor/github.com/coreos/go-oidc/oidc/client.go
deleted file mode 100644
index 7a3cb40f6450..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/client.go
+++ /dev/null
@@ -1,846 +0,0 @@
-package oidc
-
-import (
- "encoding/json"
- "errors"
- "fmt"
- "net/http"
- "net/mail"
- "net/url"
- "sync"
- "time"
-
- phttp "github.com/coreos/go-oidc/http"
- "github.com/coreos/go-oidc/jose"
- "github.com/coreos/go-oidc/key"
- "github.com/coreos/go-oidc/oauth2"
-)
-
-const (
- // amount of time that must pass after the last key sync
- // completes before another attempt may begin
- keySyncWindow = 5 * time.Second
-)
-
-var (
- DefaultScope = []string{"openid", "email", "profile"}
-
- supportedAuthMethods = map[string]struct{}{
- oauth2.AuthMethodClientSecretBasic: struct{}{},
- oauth2.AuthMethodClientSecretPost: struct{}{},
- }
-)
-
-type ClientCredentials oauth2.ClientCredentials
-
-type ClientIdentity struct {
- Credentials ClientCredentials
- Metadata ClientMetadata
-}
-
-type JWAOptions struct {
- // SigningAlg specifies an JWA alg for signing JWTs.
- //
- // Specifying this field implies different actions depending on the context. It may
- // require objects be serialized and signed as a JWT instead of plain JSON, or
- // require an existing JWT object use the specified alg.
- //
- // See: http://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata
- SigningAlg string
- // EncryptionAlg, if provided, specifies that the returned or sent object be stored
- // (or nested) within a JWT object and encrypted with the provided JWA alg.
- EncryptionAlg string
- // EncryptionEnc specifies the JWA enc algorithm to use with EncryptionAlg. If
- // EncryptionAlg is provided and EncryptionEnc is omitted, this field defaults
- // to A128CBC-HS256.
- //
- // If EncryptionEnc is provided EncryptionAlg must also be specified.
- EncryptionEnc string
-}
-
-func (opt JWAOptions) valid() error {
- if opt.EncryptionEnc != "" && opt.EncryptionAlg == "" {
- return errors.New("encryption encoding provided with no encryption algorithm")
- }
- return nil
-}
-
-func (opt JWAOptions) defaults() JWAOptions {
- if opt.EncryptionAlg != "" && opt.EncryptionEnc == "" {
- opt.EncryptionEnc = jose.EncA128CBCHS256
- }
- return opt
-}
-
-var (
- // Ensure ClientMetadata satisfies these interfaces.
- _ json.Marshaler = &ClientMetadata{}
- _ json.Unmarshaler = &ClientMetadata{}
-)
-
-// ClientMetadata holds metadata that the authorization server associates
-// with a client identifier. The fields range from human-facing display
-// strings such as client name, to items that impact the security of the
-// protocol, such as the list of valid redirect URIs.
-//
-// See http://openid.net/specs/openid-connect-registration-1_0.html#ClientMetadata
-//
-// TODO: support language specific claim representations
-// http://openid.net/specs/openid-connect-registration-1_0.html#LanguagesAndScripts
-type ClientMetadata struct {
- RedirectURIs []url.URL // Required
-
- // A list of OAuth 2.0 "response_type" values that the client wishes to restrict
- // itself to. Either "code", "token", or another registered extension.
- //
- // If omitted, only "code" will be used.
- ResponseTypes []string
- // A list of OAuth 2.0 grant types the client wishes to restrict itself to.
- // The grant type values used by OIDC are "authorization_code", "implicit",
- // and "refresh_token".
- //
- // If ommitted, only "authorization_code" will be used.
- GrantTypes []string
- // "native" or "web". If omitted, "web".
- ApplicationType string
-
- // List of email addresses.
- Contacts []mail.Address
- // Name of client to be presented to the end-user.
- ClientName string
- // URL that references a logo for the Client application.
- LogoURI *url.URL
- // URL of the home page of the Client.
- ClientURI *url.URL
- // Profile data policies and terms of use to be provided to the end user.
- PolicyURI *url.URL
- TermsOfServiceURI *url.URL
-
- // URL to or the value of the client's JSON Web Key Set document.
- JWKSURI *url.URL
- JWKS *jose.JWKSet
-
- // URL referencing a flie with a single JSON array of redirect URIs.
- SectorIdentifierURI *url.URL
-
- SubjectType string
-
- // Options to restrict the JWS alg and enc values used for server responses and requests.
- IDTokenResponseOptions JWAOptions
- UserInfoResponseOptions JWAOptions
- RequestObjectOptions JWAOptions
-
- // Client requested authorization method and signing options for the token endpoint.
- //
- // Defaults to "client_secret_basic"
- TokenEndpointAuthMethod string
- TokenEndpointAuthSigningAlg string
-
- // DefaultMaxAge specifies the maximum amount of time in seconds before an authorized
- // user must reauthroize.
- //
- // If 0, no limitation is placed on the maximum.
- DefaultMaxAge int64
- // RequireAuthTime specifies if the auth_time claim in the ID token is required.
- RequireAuthTime bool
-
- // Default Authentication Context Class Reference values for authentication requests.
- DefaultACRValues []string
-
- // URI that a third party can use to initiate a login by the relaying party.
- //
- // See: http://openid.net/specs/openid-connect-core-1_0.html#ThirdPartyInitiatedLogin
- InitiateLoginURI *url.URL
- // Pre-registered request_uri values that may be cached by the server.
- RequestURIs []url.URL
-}
-
-// Defaults returns a shallow copy of ClientMetadata with default
-// values replacing omitted fields.
-func (m ClientMetadata) Defaults() ClientMetadata {
- if len(m.ResponseTypes) == 0 {
- m.ResponseTypes = []string{oauth2.ResponseTypeCode}
- }
- if len(m.GrantTypes) == 0 {
- m.GrantTypes = []string{oauth2.GrantTypeAuthCode}
- }
- if m.ApplicationType == "" {
- m.ApplicationType = "web"
- }
- if m.TokenEndpointAuthMethod == "" {
- m.TokenEndpointAuthMethod = oauth2.AuthMethodClientSecretBasic
- }
- m.IDTokenResponseOptions = m.IDTokenResponseOptions.defaults()
- m.UserInfoResponseOptions = m.UserInfoResponseOptions.defaults()
- m.RequestObjectOptions = m.RequestObjectOptions.defaults()
- return m
-}
-
-func (m *ClientMetadata) MarshalJSON() ([]byte, error) {
- e := m.toEncodableStruct()
- return json.Marshal(&e)
-}
-
-func (m *ClientMetadata) UnmarshalJSON(data []byte) error {
- var e encodableClientMetadata
- if err := json.Unmarshal(data, &e); err != nil {
- return err
- }
- meta, err := e.toStruct()
- if err != nil {
- return err
- }
- if err := meta.Valid(); err != nil {
- return err
- }
- *m = meta
- return nil
-}
-
-type encodableClientMetadata struct {
- RedirectURIs []string `json:"redirect_uris"` // Required
- ResponseTypes []string `json:"response_types,omitempty"`
- GrantTypes []string `json:"grant_types,omitempty"`
- ApplicationType string `json:"application_type,omitempty"`
- Contacts []string `json:"contacts,omitempty"`
- ClientName string `json:"client_name,omitempty"`
- LogoURI string `json:"logo_uri,omitempty"`
- ClientURI string `json:"client_uri,omitempty"`
- PolicyURI string `json:"policy_uri,omitempty"`
- TermsOfServiceURI string `json:"tos_uri,omitempty"`
- JWKSURI string `json:"jwks_uri,omitempty"`
- JWKS *jose.JWKSet `json:"jwks,omitempty"`
- SectorIdentifierURI string `json:"sector_identifier_uri,omitempty"`
- SubjectType string `json:"subject_type,omitempty"`
- IDTokenSignedResponseAlg string `json:"id_token_signed_response_alg,omitempty"`
- IDTokenEncryptedResponseAlg string `json:"id_token_encrypted_response_alg,omitempty"`
- IDTokenEncryptedResponseEnc string `json:"id_token_encrypted_response_enc,omitempty"`
- UserInfoSignedResponseAlg string `json:"userinfo_signed_response_alg,omitempty"`
- UserInfoEncryptedResponseAlg string `json:"userinfo_encrypted_response_alg,omitempty"`
- UserInfoEncryptedResponseEnc string `json:"userinfo_encrypted_response_enc,omitempty"`
- RequestObjectSigningAlg string `json:"request_object_signing_alg,omitempty"`
- RequestObjectEncryptionAlg string `json:"request_object_encryption_alg,omitempty"`
- RequestObjectEncryptionEnc string `json:"request_object_encryption_enc,omitempty"`
- TokenEndpointAuthMethod string `json:"token_endpoint_auth_method,omitempty"`
- TokenEndpointAuthSigningAlg string `json:"token_endpoint_auth_signing_alg,omitempty"`
- DefaultMaxAge int64 `json:"default_max_age,omitempty"`
- RequireAuthTime bool `json:"require_auth_time,omitempty"`
- DefaultACRValues []string `json:"default_acr_values,omitempty"`
- InitiateLoginURI string `json:"initiate_login_uri,omitempty"`
- RequestURIs []string `json:"request_uris,omitempty"`
-}
-
-func (c *encodableClientMetadata) toStruct() (ClientMetadata, error) {
- p := stickyErrParser{}
- m := ClientMetadata{
- RedirectURIs: p.parseURIs(c.RedirectURIs, "redirect_uris"),
- ResponseTypes: c.ResponseTypes,
- GrantTypes: c.GrantTypes,
- ApplicationType: c.ApplicationType,
- Contacts: p.parseEmails(c.Contacts, "contacts"),
- ClientName: c.ClientName,
- LogoURI: p.parseURI(c.LogoURI, "logo_uri"),
- ClientURI: p.parseURI(c.ClientURI, "client_uri"),
- PolicyURI: p.parseURI(c.PolicyURI, "policy_uri"),
- TermsOfServiceURI: p.parseURI(c.TermsOfServiceURI, "tos_uri"),
- JWKSURI: p.parseURI(c.JWKSURI, "jwks_uri"),
- JWKS: c.JWKS,
- SectorIdentifierURI: p.parseURI(c.SectorIdentifierURI, "sector_identifier_uri"),
- SubjectType: c.SubjectType,
- TokenEndpointAuthMethod: c.TokenEndpointAuthMethod,
- TokenEndpointAuthSigningAlg: c.TokenEndpointAuthSigningAlg,
- DefaultMaxAge: c.DefaultMaxAge,
- RequireAuthTime: c.RequireAuthTime,
- DefaultACRValues: c.DefaultACRValues,
- InitiateLoginURI: p.parseURI(c.InitiateLoginURI, "initiate_login_uri"),
- RequestURIs: p.parseURIs(c.RequestURIs, "request_uris"),
- IDTokenResponseOptions: JWAOptions{
- c.IDTokenSignedResponseAlg,
- c.IDTokenEncryptedResponseAlg,
- c.IDTokenEncryptedResponseEnc,
- },
- UserInfoResponseOptions: JWAOptions{
- c.UserInfoSignedResponseAlg,
- c.UserInfoEncryptedResponseAlg,
- c.UserInfoEncryptedResponseEnc,
- },
- RequestObjectOptions: JWAOptions{
- c.RequestObjectSigningAlg,
- c.RequestObjectEncryptionAlg,
- c.RequestObjectEncryptionEnc,
- },
- }
- if p.firstErr != nil {
- return ClientMetadata{}, p.firstErr
- }
- return m, nil
-}
-
-// stickyErrParser parses URIs and email addresses. Once it encounters
-// a parse error, subsequent calls become no-op.
-type stickyErrParser struct {
- firstErr error
-}
-
-func (p *stickyErrParser) parseURI(s, field string) *url.URL {
- if p.firstErr != nil || s == "" {
- return nil
- }
- u, err := url.Parse(s)
- if err == nil {
- if u.Host == "" {
- err = errors.New("no host in URI")
- } else if u.Scheme != "http" && u.Scheme != "https" {
- err = errors.New("invalid URI scheme")
- }
- }
- if err != nil {
- p.firstErr = fmt.Errorf("failed to parse %s: %v", field, err)
- return nil
- }
- return u
-}
-
-func (p *stickyErrParser) parseURIs(s []string, field string) []url.URL {
- if p.firstErr != nil || len(s) == 0 {
- return nil
- }
- uris := make([]url.URL, len(s))
- for i, val := range s {
- if val == "" {
- p.firstErr = fmt.Errorf("invalid URI in field %s", field)
- return nil
- }
- if u := p.parseURI(val, field); u != nil {
- uris[i] = *u
- }
- }
- return uris
-}
-
-func (p *stickyErrParser) parseEmails(s []string, field string) []mail.Address {
- if p.firstErr != nil || len(s) == 0 {
- return nil
- }
- addrs := make([]mail.Address, len(s))
- for i, addr := range s {
- if addr == "" {
- p.firstErr = fmt.Errorf("invalid email in field %s", field)
- return nil
- }
- a, err := mail.ParseAddress(addr)
- if err != nil {
- p.firstErr = fmt.Errorf("invalid email in field %s: %v", field, err)
- return nil
- }
- addrs[i] = *a
- }
- return addrs
-}
-
-func (m *ClientMetadata) toEncodableStruct() encodableClientMetadata {
- return encodableClientMetadata{
- RedirectURIs: urisToStrings(m.RedirectURIs),
- ResponseTypes: m.ResponseTypes,
- GrantTypes: m.GrantTypes,
- ApplicationType: m.ApplicationType,
- Contacts: emailsToStrings(m.Contacts),
- ClientName: m.ClientName,
- LogoURI: uriToString(m.LogoURI),
- ClientURI: uriToString(m.ClientURI),
- PolicyURI: uriToString(m.PolicyURI),
- TermsOfServiceURI: uriToString(m.TermsOfServiceURI),
- JWKSURI: uriToString(m.JWKSURI),
- JWKS: m.JWKS,
- SectorIdentifierURI: uriToString(m.SectorIdentifierURI),
- SubjectType: m.SubjectType,
- IDTokenSignedResponseAlg: m.IDTokenResponseOptions.SigningAlg,
- IDTokenEncryptedResponseAlg: m.IDTokenResponseOptions.EncryptionAlg,
- IDTokenEncryptedResponseEnc: m.IDTokenResponseOptions.EncryptionEnc,
- UserInfoSignedResponseAlg: m.UserInfoResponseOptions.SigningAlg,
- UserInfoEncryptedResponseAlg: m.UserInfoResponseOptions.EncryptionAlg,
- UserInfoEncryptedResponseEnc: m.UserInfoResponseOptions.EncryptionEnc,
- RequestObjectSigningAlg: m.RequestObjectOptions.SigningAlg,
- RequestObjectEncryptionAlg: m.RequestObjectOptions.EncryptionAlg,
- RequestObjectEncryptionEnc: m.RequestObjectOptions.EncryptionEnc,
- TokenEndpointAuthMethod: m.TokenEndpointAuthMethod,
- TokenEndpointAuthSigningAlg: m.TokenEndpointAuthSigningAlg,
- DefaultMaxAge: m.DefaultMaxAge,
- RequireAuthTime: m.RequireAuthTime,
- DefaultACRValues: m.DefaultACRValues,
- InitiateLoginURI: uriToString(m.InitiateLoginURI),
- RequestURIs: urisToStrings(m.RequestURIs),
- }
-}
-
-func uriToString(u *url.URL) string {
- if u == nil {
- return ""
- }
- return u.String()
-}
-
-func urisToStrings(urls []url.URL) []string {
- if len(urls) == 0 {
- return nil
- }
- sli := make([]string, len(urls))
- for i, u := range urls {
- sli[i] = u.String()
- }
- return sli
-}
-
-func emailsToStrings(addrs []mail.Address) []string {
- if len(addrs) == 0 {
- return nil
- }
- sli := make([]string, len(addrs))
- for i, addr := range addrs {
- sli[i] = addr.String()
- }
- return sli
-}
-
-// Valid determines if a ClientMetadata conforms with the OIDC specification.
-//
-// Valid is called by UnmarshalJSON.
-//
-// NOTE(ericchiang): For development purposes Valid does not mandate 'https' for
-// URLs fields where the OIDC spec requires it. This may change in future releases
-// of this package. See: https://github.com/coreos/go-oidc/issues/34
-func (m *ClientMetadata) Valid() error {
- if len(m.RedirectURIs) == 0 {
- return errors.New("zero redirect URLs")
- }
-
- validURI := func(u *url.URL, fieldName string) error {
- if u.Host == "" {
- return fmt.Errorf("no host for uri field %s", fieldName)
- }
- if u.Scheme != "http" && u.Scheme != "https" {
- return fmt.Errorf("uri field %s scheme is not http or https", fieldName)
- }
- return nil
- }
-
- uris := []struct {
- val *url.URL
- name string
- }{
- {m.LogoURI, "logo_uri"},
- {m.ClientURI, "client_uri"},
- {m.PolicyURI, "policy_uri"},
- {m.TermsOfServiceURI, "tos_uri"},
- {m.JWKSURI, "jwks_uri"},
- {m.SectorIdentifierURI, "sector_identifier_uri"},
- {m.InitiateLoginURI, "initiate_login_uri"},
- }
-
- for _, uri := range uris {
- if uri.val == nil {
- continue
- }
- if err := validURI(uri.val, uri.name); err != nil {
- return err
- }
- }
-
- uriLists := []struct {
- vals []url.URL
- name string
- }{
- {m.RedirectURIs, "redirect_uris"},
- {m.RequestURIs, "request_uris"},
- }
- for _, list := range uriLists {
- for _, uri := range list.vals {
- if err := validURI(&uri, list.name); err != nil {
- return err
- }
- }
- }
-
- options := []struct {
- option JWAOptions
- name string
- }{
- {m.IDTokenResponseOptions, "id_token response"},
- {m.UserInfoResponseOptions, "userinfo response"},
- {m.RequestObjectOptions, "request_object"},
- }
- for _, option := range options {
- if err := option.option.valid(); err != nil {
- return fmt.Errorf("invalid JWA values for %s: %v", option.name, err)
- }
- }
- return nil
-}
-
-type ClientRegistrationResponse struct {
- ClientID string // Required
- ClientSecret string
- RegistrationAccessToken string
- RegistrationClientURI string
- // If IsZero is true, unspecified.
- ClientIDIssuedAt time.Time
- // Time at which the client_secret will expire.
- // If IsZero is true, it will not expire.
- ClientSecretExpiresAt time.Time
-
- ClientMetadata
-}
-
-type encodableClientRegistrationResponse struct {
- ClientID string `json:"client_id"` // Required
- ClientSecret string `json:"client_secret,omitempty"`
- RegistrationAccessToken string `json:"registration_access_token,omitempty"`
- RegistrationClientURI string `json:"registration_client_uri,omitempty"`
- ClientIDIssuedAt int64 `json:"client_id_issued_at,omitempty"`
- // Time at which the client_secret will expire, in seconds since the epoch.
- // If 0 it will not expire.
- ClientSecretExpiresAt int64 `json:"client_secret_expires_at"` // Required
-
- encodableClientMetadata
-}
-
-func unixToSec(t time.Time) int64 {
- if t.IsZero() {
- return 0
- }
- return t.Unix()
-}
-
-func (c *ClientRegistrationResponse) MarshalJSON() ([]byte, error) {
- e := encodableClientRegistrationResponse{
- ClientID: c.ClientID,
- ClientSecret: c.ClientSecret,
- RegistrationAccessToken: c.RegistrationAccessToken,
- RegistrationClientURI: c.RegistrationClientURI,
- ClientIDIssuedAt: unixToSec(c.ClientIDIssuedAt),
- ClientSecretExpiresAt: unixToSec(c.ClientSecretExpiresAt),
- encodableClientMetadata: c.ClientMetadata.toEncodableStruct(),
- }
- return json.Marshal(&e)
-}
-
-func secToUnix(sec int64) time.Time {
- if sec == 0 {
- return time.Time{}
- }
- return time.Unix(sec, 0)
-}
-
-func (c *ClientRegistrationResponse) UnmarshalJSON(data []byte) error {
- var e encodableClientRegistrationResponse
- if err := json.Unmarshal(data, &e); err != nil {
- return err
- }
- if e.ClientID == "" {
- return errors.New("no client_id in client registration response")
- }
- metadata, err := e.encodableClientMetadata.toStruct()
- if err != nil {
- return err
- }
- *c = ClientRegistrationResponse{
- ClientID: e.ClientID,
- ClientSecret: e.ClientSecret,
- RegistrationAccessToken: e.RegistrationAccessToken,
- RegistrationClientURI: e.RegistrationClientURI,
- ClientIDIssuedAt: secToUnix(e.ClientIDIssuedAt),
- ClientSecretExpiresAt: secToUnix(e.ClientSecretExpiresAt),
- ClientMetadata: metadata,
- }
- return nil
-}
-
-type ClientConfig struct {
- HTTPClient phttp.Client
- Credentials ClientCredentials
- Scope []string
- RedirectURL string
- ProviderConfig ProviderConfig
- KeySet key.PublicKeySet
-}
-
-func NewClient(cfg ClientConfig) (*Client, error) {
- // Allow empty redirect URL in the case where the client
- // only needs to verify a given token.
- ru, err := url.Parse(cfg.RedirectURL)
- if err != nil {
- return nil, fmt.Errorf("invalid redirect URL: %v", err)
- }
-
- c := Client{
- credentials: cfg.Credentials,
- httpClient: cfg.HTTPClient,
- scope: cfg.Scope,
- redirectURL: ru.String(),
- providerConfig: newProviderConfigRepo(cfg.ProviderConfig),
- keySet: cfg.KeySet,
- }
-
- if c.httpClient == nil {
- c.httpClient = http.DefaultClient
- }
-
- if c.scope == nil {
- c.scope = make([]string, len(DefaultScope))
- copy(c.scope, DefaultScope)
- }
-
- return &c, nil
-}
-
-type Client struct {
- httpClient phttp.Client
- providerConfig *providerConfigRepo
- credentials ClientCredentials
- redirectURL string
- scope []string
- keySet key.PublicKeySet
- providerSyncer *ProviderConfigSyncer
-
- keySetSyncMutex sync.RWMutex
- lastKeySetSync time.Time
-}
-
-func (c *Client) Healthy() error {
- now := time.Now().UTC()
-
- cfg := c.providerConfig.Get()
-
- if cfg.Empty() {
- return errors.New("oidc client provider config empty")
- }
-
- if !cfg.ExpiresAt.IsZero() && cfg.ExpiresAt.Before(now) {
- return errors.New("oidc client provider config expired")
- }
-
- return nil
-}
-
-func (c *Client) OAuthClient() (*oauth2.Client, error) {
- cfg := c.providerConfig.Get()
- authMethod, err := chooseAuthMethod(cfg)
- if err != nil {
- return nil, err
- }
-
- ocfg := oauth2.Config{
- Credentials: oauth2.ClientCredentials(c.credentials),
- RedirectURL: c.redirectURL,
- AuthURL: cfg.AuthEndpoint.String(),
- TokenURL: cfg.TokenEndpoint.String(),
- Scope: c.scope,
- AuthMethod: authMethod,
- }
-
- return oauth2.NewClient(c.httpClient, ocfg)
-}
-
-func chooseAuthMethod(cfg ProviderConfig) (string, error) {
- if len(cfg.TokenEndpointAuthMethodsSupported) == 0 {
- return oauth2.AuthMethodClientSecretBasic, nil
- }
-
- for _, authMethod := range cfg.TokenEndpointAuthMethodsSupported {
- if _, ok := supportedAuthMethods[authMethod]; ok {
- return authMethod, nil
- }
- }
-
- return "", errors.New("no supported auth methods")
-}
-
-// SyncProviderConfig starts the provider config syncer
-func (c *Client) SyncProviderConfig(discoveryURL string) chan struct{} {
- r := NewHTTPProviderConfigGetter(c.httpClient, discoveryURL)
- s := NewProviderConfigSyncer(r, c.providerConfig)
- stop := s.Run()
- s.WaitUntilInitialSync()
- return stop
-}
-
-func (c *Client) maybeSyncKeys() error {
- tooSoon := func() bool {
- return time.Now().UTC().Before(c.lastKeySetSync.Add(keySyncWindow))
- }
-
- // ignore request to sync keys if a sync operation has been
- // attempted too recently
- if tooSoon() {
- return nil
- }
-
- c.keySetSyncMutex.Lock()
- defer c.keySetSyncMutex.Unlock()
-
- // check again, as another goroutine may have been holding
- // the lock while updating the keys
- if tooSoon() {
- return nil
- }
-
- cfg := c.providerConfig.Get()
- r := NewRemotePublicKeyRepo(c.httpClient, cfg.KeysEndpoint.String())
- w := &clientKeyRepo{client: c}
- _, err := key.Sync(r, w)
- c.lastKeySetSync = time.Now().UTC()
-
- return err
-}
-
-type clientKeyRepo struct {
- client *Client
-}
-
-func (r *clientKeyRepo) Set(ks key.KeySet) error {
- pks, ok := ks.(*key.PublicKeySet)
- if !ok {
- return errors.New("unable to cast to PublicKey")
- }
- r.client.keySet = *pks
- return nil
-}
-
-func (c *Client) ClientCredsToken(scope []string) (jose.JWT, error) {
- cfg := c.providerConfig.Get()
-
- if !cfg.SupportsGrantType(oauth2.GrantTypeClientCreds) {
- return jose.JWT{}, fmt.Errorf("%v grant type is not supported", oauth2.GrantTypeClientCreds)
- }
-
- oac, err := c.OAuthClient()
- if err != nil {
- return jose.JWT{}, err
- }
-
- t, err := oac.ClientCredsToken(scope)
- if err != nil {
- return jose.JWT{}, err
- }
-
- jwt, err := jose.ParseJWT(t.IDToken)
- if err != nil {
- return jose.JWT{}, err
- }
-
- return jwt, c.VerifyJWT(jwt)
-}
-
-// ExchangeAuthCode exchanges an OAuth2 auth code for an OIDC JWT ID token.
-func (c *Client) ExchangeAuthCode(code string) (jose.JWT, error) {
- oac, err := c.OAuthClient()
- if err != nil {
- return jose.JWT{}, err
- }
-
- t, err := oac.RequestToken(oauth2.GrantTypeAuthCode, code)
- if err != nil {
- return jose.JWT{}, err
- }
-
- jwt, err := jose.ParseJWT(t.IDToken)
- if err != nil {
- return jose.JWT{}, err
- }
-
- return jwt, c.VerifyJWT(jwt)
-}
-
-// RefreshToken uses a refresh token to exchange for a new OIDC JWT ID Token.
-func (c *Client) RefreshToken(refreshToken string) (jose.JWT, error) {
- oac, err := c.OAuthClient()
- if err != nil {
- return jose.JWT{}, err
- }
-
- t, err := oac.RequestToken(oauth2.GrantTypeRefreshToken, refreshToken)
- if err != nil {
- return jose.JWT{}, err
- }
-
- jwt, err := jose.ParseJWT(t.IDToken)
- if err != nil {
- return jose.JWT{}, err
- }
-
- return jwt, c.VerifyJWT(jwt)
-}
-
-func (c *Client) VerifyJWT(jwt jose.JWT) error {
- var keysFunc func() []key.PublicKey
- if kID, ok := jwt.KeyID(); ok {
- keysFunc = c.keysFuncWithID(kID)
- } else {
- keysFunc = c.keysFuncAll()
- }
-
- v := NewJWTVerifier(
- c.providerConfig.Get().Issuer.String(),
- c.credentials.ID,
- c.maybeSyncKeys, keysFunc)
-
- return v.Verify(jwt)
-}
-
-// keysFuncWithID returns a function that retrieves at most unexpired
-// public key from the Client that matches the provided ID
-func (c *Client) keysFuncWithID(kID string) func() []key.PublicKey {
- return func() []key.PublicKey {
- c.keySetSyncMutex.RLock()
- defer c.keySetSyncMutex.RUnlock()
-
- if c.keySet.ExpiresAt().Before(time.Now()) {
- return []key.PublicKey{}
- }
-
- k := c.keySet.Key(kID)
- if k == nil {
- return []key.PublicKey{}
- }
-
- return []key.PublicKey{*k}
- }
-}
-
-// keysFuncAll returns a function that retrieves all unexpired public
-// keys from the Client
-func (c *Client) keysFuncAll() func() []key.PublicKey {
- return func() []key.PublicKey {
- c.keySetSyncMutex.RLock()
- defer c.keySetSyncMutex.RUnlock()
-
- if c.keySet.ExpiresAt().Before(time.Now()) {
- return []key.PublicKey{}
- }
-
- return c.keySet.Keys()
- }
-}
-
-type providerConfigRepo struct {
- mu sync.RWMutex
- config ProviderConfig // do not access directly, use Get()
-}
-
-func newProviderConfigRepo(pc ProviderConfig) *providerConfigRepo {
- return &providerConfigRepo{sync.RWMutex{}, pc}
-}
-
-// returns an error to implement ProviderConfigSetter
-func (r *providerConfigRepo) Set(cfg ProviderConfig) error {
- r.mu.Lock()
- defer r.mu.Unlock()
- r.config = cfg
- return nil
-}
-
-func (r *providerConfigRepo) Get() ProviderConfig {
- r.mu.RLock()
- defer r.mu.RUnlock()
- return r.config
-}
diff --git a/vendor/github.com/coreos/go-oidc/oidc/doc.go b/vendor/github.com/coreos/go-oidc/oidc/doc.go
deleted file mode 100644
index 196611ec542f..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/doc.go
+++ /dev/null
@@ -1,2 +0,0 @@
-// Package oidc is DEPRECATED. Use github.com/coreos/go-oidc instead.
-package oidc
diff --git a/vendor/github.com/coreos/go-oidc/oidc/identity.go b/vendor/github.com/coreos/go-oidc/oidc/identity.go
deleted file mode 100644
index 9bfa8e343994..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/identity.go
+++ /dev/null
@@ -1,44 +0,0 @@
-package oidc
-
-import (
- "errors"
- "time"
-
- "github.com/coreos/go-oidc/jose"
-)
-
-type Identity struct {
- ID string
- Name string
- Email string
- ExpiresAt time.Time
-}
-
-func IdentityFromClaims(claims jose.Claims) (*Identity, error) {
- if claims == nil {
- return nil, errors.New("nil claim set")
- }
-
- var ident Identity
- var err error
- var ok bool
-
- if ident.ID, ok, err = claims.StringClaim("sub"); err != nil {
- return nil, err
- } else if !ok {
- return nil, errors.New("missing required claim: sub")
- }
-
- if ident.Email, _, err = claims.StringClaim("email"); err != nil {
- return nil, err
- }
-
- exp, ok, err := claims.TimeClaim("exp")
- if err != nil {
- return nil, err
- } else if ok {
- ident.ExpiresAt = exp
- }
-
- return &ident, nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/oidc/interface.go b/vendor/github.com/coreos/go-oidc/oidc/interface.go
deleted file mode 100644
index 248cac0b4dff..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/interface.go
+++ /dev/null
@@ -1,3 +0,0 @@
-package oidc
-
-type LoginFunc func(ident Identity, sessionKey string) (redirectURL string, err error)
diff --git a/vendor/github.com/coreos/go-oidc/oidc/key.go b/vendor/github.com/coreos/go-oidc/oidc/key.go
deleted file mode 100755
index 82a0f567d577..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/key.go
+++ /dev/null
@@ -1,67 +0,0 @@
-package oidc
-
-import (
- "encoding/json"
- "errors"
- "net/http"
- "time"
-
- phttp "github.com/coreos/go-oidc/http"
- "github.com/coreos/go-oidc/jose"
- "github.com/coreos/go-oidc/key"
-)
-
-// DefaultPublicKeySetTTL is the default TTL set on the PublicKeySet if no
-// Cache-Control header is provided by the JWK Set document endpoint.
-const DefaultPublicKeySetTTL = 24 * time.Hour
-
-// NewRemotePublicKeyRepo is responsible for fetching the JWK Set document.
-func NewRemotePublicKeyRepo(hc phttp.Client, ep string) *remotePublicKeyRepo {
- return &remotePublicKeyRepo{hc: hc, ep: ep}
-}
-
-type remotePublicKeyRepo struct {
- hc phttp.Client
- ep string
-}
-
-// Get returns a PublicKeySet fetched from the JWK Set document endpoint. A TTL
-// is set on the Key Set to avoid it having to be re-retrieved for every
-// encryption event. This TTL is typically controlled by the endpoint returning
-// a Cache-Control header, but defaults to 24 hours if no Cache-Control header
-// is found.
-func (r *remotePublicKeyRepo) Get() (key.KeySet, error) {
- req, err := http.NewRequest("GET", r.ep, nil)
- if err != nil {
- return nil, err
- }
-
- resp, err := r.hc.Do(req)
- if err != nil {
- return nil, err
- }
- defer resp.Body.Close()
-
- var d struct {
- Keys []jose.JWK `json:"keys"`
- }
- if err := json.NewDecoder(resp.Body).Decode(&d); err != nil {
- return nil, err
- }
-
- if len(d.Keys) == 0 {
- return nil, errors.New("zero keys in response")
- }
-
- ttl, ok, err := phttp.Cacheable(resp.Header)
- if err != nil {
- return nil, err
- }
- if !ok {
- ttl = DefaultPublicKeySetTTL
- }
-
- exp := time.Now().UTC().Add(ttl)
- ks := key.NewPublicKeySet(d.Keys, exp)
- return ks, nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/oidc/provider.go b/vendor/github.com/coreos/go-oidc/oidc/provider.go
deleted file mode 100644
index 2afc0da33529..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/provider.go
+++ /dev/null
@@ -1,687 +0,0 @@
-package oidc
-
-import (
- "encoding/json"
- "errors"
- "fmt"
- "log"
- "net/http"
- "net/url"
- "strings"
- "sync"
- "time"
-
- "github.com/coreos/pkg/timeutil"
- "github.com/jonboulle/clockwork"
-
- phttp "github.com/coreos/go-oidc/http"
- "github.com/coreos/go-oidc/oauth2"
-)
-
-const (
- // Subject Identifier types defined by the OIDC spec. Specifies if the provider
- // should provide the same sub claim value to all clients (public) or a unique
- // value for each client (pairwise).
- //
- // See: http://openid.net/specs/openid-connect-core-1_0.html#SubjectIDTypes
- SubjectTypePublic = "public"
- SubjectTypePairwise = "pairwise"
-)
-
-var (
- // Default values for omitted provider config fields.
- //
- // Use ProviderConfig's Defaults method to fill a provider config with these values.
- DefaultGrantTypesSupported = []string{oauth2.GrantTypeAuthCode, oauth2.GrantTypeImplicit}
- DefaultResponseModesSupported = []string{"query", "fragment"}
- DefaultTokenEndpointAuthMethodsSupported = []string{oauth2.AuthMethodClientSecretBasic}
- DefaultClaimTypesSupported = []string{"normal"}
-)
-
-const (
- MaximumProviderConfigSyncInterval = 24 * time.Hour
- MinimumProviderConfigSyncInterval = time.Minute
-
- discoveryConfigPath = "/.well-known/openid-configuration"
-)
-
-// internally configurable for tests
-var minimumProviderConfigSyncInterval = MinimumProviderConfigSyncInterval
-
-var (
- // Ensure ProviderConfig satisfies these interfaces.
- _ json.Marshaler = &ProviderConfig{}
- _ json.Unmarshaler = &ProviderConfig{}
-)
-
-// ProviderConfig represents the OpenID Provider Metadata specifying what
-// configurations a provider supports.
-//
-// See: http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderMetadata
-type ProviderConfig struct {
- Issuer *url.URL // Required
- AuthEndpoint *url.URL // Required
- TokenEndpoint *url.URL // Required if grant types other than "implicit" are supported
- UserInfoEndpoint *url.URL
- KeysEndpoint *url.URL // Required
- RegistrationEndpoint *url.URL
- EndSessionEndpoint *url.URL
- CheckSessionIFrame *url.URL
-
- // Servers MAY choose not to advertise some supported scope values even when this
- // parameter is used, although those defined in OpenID Core SHOULD be listed, if supported.
- ScopesSupported []string
- // OAuth2.0 response types supported.
- ResponseTypesSupported []string // Required
- // OAuth2.0 response modes supported.
- //
- // If omitted, defaults to DefaultResponseModesSupported.
- ResponseModesSupported []string
- // OAuth2.0 grant types supported.
- //
- // If omitted, defaults to DefaultGrantTypesSupported.
- GrantTypesSupported []string
- ACRValuesSupported []string
- // SubjectTypesSupported specifies strategies for providing values for the sub claim.
- SubjectTypesSupported []string // Required
-
- // JWA signing and encryption algorith values supported for ID tokens.
- IDTokenSigningAlgValues []string // Required
- IDTokenEncryptionAlgValues []string
- IDTokenEncryptionEncValues []string
-
- // JWA signing and encryption algorith values supported for user info responses.
- UserInfoSigningAlgValues []string
- UserInfoEncryptionAlgValues []string
- UserInfoEncryptionEncValues []string
-
- // JWA signing and encryption algorith values supported for request objects.
- ReqObjSigningAlgValues []string
- ReqObjEncryptionAlgValues []string
- ReqObjEncryptionEncValues []string
-
- TokenEndpointAuthMethodsSupported []string
- TokenEndpointAuthSigningAlgValuesSupported []string
- DisplayValuesSupported []string
- ClaimTypesSupported []string
- ClaimsSupported []string
- ServiceDocs *url.URL
- ClaimsLocalsSupported []string
- UILocalsSupported []string
- ClaimsParameterSupported bool
- RequestParameterSupported bool
- RequestURIParamaterSupported bool
- RequireRequestURIRegistration bool
-
- Policy *url.URL
- TermsOfService *url.URL
-
- // Not part of the OpenID Provider Metadata
- ExpiresAt time.Time
-}
-
-// Defaults returns a shallow copy of ProviderConfig with default
-// values replacing omitted fields.
-//
-// var cfg oidc.ProviderConfig
-// // Fill provider config with default values for omitted fields.
-// cfg = cfg.Defaults()
-//
-func (p ProviderConfig) Defaults() ProviderConfig {
- setDefault := func(val *[]string, defaultVal []string) {
- if len(*val) == 0 {
- *val = defaultVal
- }
- }
- setDefault(&p.GrantTypesSupported, DefaultGrantTypesSupported)
- setDefault(&p.ResponseModesSupported, DefaultResponseModesSupported)
- setDefault(&p.TokenEndpointAuthMethodsSupported, DefaultTokenEndpointAuthMethodsSupported)
- setDefault(&p.ClaimTypesSupported, DefaultClaimTypesSupported)
- return p
-}
-
-func (p *ProviderConfig) MarshalJSON() ([]byte, error) {
- e := p.toEncodableStruct()
- return json.Marshal(&e)
-}
-
-func (p *ProviderConfig) UnmarshalJSON(data []byte) error {
- var e encodableProviderConfig
- if err := json.Unmarshal(data, &e); err != nil {
- return err
- }
- conf, err := e.toStruct()
- if err != nil {
- return err
- }
- if err := conf.Valid(); err != nil {
- return err
- }
- *p = conf
- return nil
-}
-
-type encodableProviderConfig struct {
- Issuer string `json:"issuer"`
- AuthEndpoint string `json:"authorization_endpoint"`
- TokenEndpoint string `json:"token_endpoint"`
- UserInfoEndpoint string `json:"userinfo_endpoint,omitempty"`
- KeysEndpoint string `json:"jwks_uri"`
- RegistrationEndpoint string `json:"registration_endpoint,omitempty"`
- EndSessionEndpoint string `json:"end_session_endpoint,omitempty"`
- CheckSessionIFrame string `json:"check_session_iframe,omitempty"`
-
- // Use 'omitempty' for all slices as per OIDC spec:
- // "Claims that return multiple values are represented as JSON arrays.
- // Claims with zero elements MUST be omitted from the response."
- // http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationResponse
-
- ScopesSupported []string `json:"scopes_supported,omitempty"`
- ResponseTypesSupported []string `json:"response_types_supported,omitempty"`
- ResponseModesSupported []string `json:"response_modes_supported,omitempty"`
- GrantTypesSupported []string `json:"grant_types_supported,omitempty"`
- ACRValuesSupported []string `json:"acr_values_supported,omitempty"`
- SubjectTypesSupported []string `json:"subject_types_supported,omitempty"`
-
- IDTokenSigningAlgValues []string `json:"id_token_signing_alg_values_supported,omitempty"`
- IDTokenEncryptionAlgValues []string `json:"id_token_encryption_alg_values_supported,omitempty"`
- IDTokenEncryptionEncValues []string `json:"id_token_encryption_enc_values_supported,omitempty"`
- UserInfoSigningAlgValues []string `json:"userinfo_signing_alg_values_supported,omitempty"`
- UserInfoEncryptionAlgValues []string `json:"userinfo_encryption_alg_values_supported,omitempty"`
- UserInfoEncryptionEncValues []string `json:"userinfo_encryption_enc_values_supported,omitempty"`
- ReqObjSigningAlgValues []string `json:"request_object_signing_alg_values_supported,omitempty"`
- ReqObjEncryptionAlgValues []string `json:"request_object_encryption_alg_values_supported,omitempty"`
- ReqObjEncryptionEncValues []string `json:"request_object_encryption_enc_values_supported,omitempty"`
-
- TokenEndpointAuthMethodsSupported []string `json:"token_endpoint_auth_methods_supported,omitempty"`
- TokenEndpointAuthSigningAlgValuesSupported []string `json:"token_endpoint_auth_signing_alg_values_supported,omitempty"`
-
- DisplayValuesSupported []string `json:"display_values_supported,omitempty"`
- ClaimTypesSupported []string `json:"claim_types_supported,omitempty"`
- ClaimsSupported []string `json:"claims_supported,omitempty"`
- ServiceDocs string `json:"service_documentation,omitempty"`
- ClaimsLocalsSupported []string `json:"claims_locales_supported,omitempty"`
- UILocalsSupported []string `json:"ui_locales_supported,omitempty"`
- ClaimsParameterSupported bool `json:"claims_parameter_supported,omitempty"`
- RequestParameterSupported bool `json:"request_parameter_supported,omitempty"`
- RequestURIParamaterSupported bool `json:"request_uri_parameter_supported,omitempty"`
- RequireRequestURIRegistration bool `json:"require_request_uri_registration,omitempty"`
-
- Policy string `json:"op_policy_uri,omitempty"`
- TermsOfService string `json:"op_tos_uri,omitempty"`
-}
-
-func (cfg ProviderConfig) toEncodableStruct() encodableProviderConfig {
- return encodableProviderConfig{
- Issuer: uriToString(cfg.Issuer),
- AuthEndpoint: uriToString(cfg.AuthEndpoint),
- TokenEndpoint: uriToString(cfg.TokenEndpoint),
- UserInfoEndpoint: uriToString(cfg.UserInfoEndpoint),
- KeysEndpoint: uriToString(cfg.KeysEndpoint),
- RegistrationEndpoint: uriToString(cfg.RegistrationEndpoint),
- EndSessionEndpoint: uriToString(cfg.EndSessionEndpoint),
- CheckSessionIFrame: uriToString(cfg.CheckSessionIFrame),
- ScopesSupported: cfg.ScopesSupported,
- ResponseTypesSupported: cfg.ResponseTypesSupported,
- ResponseModesSupported: cfg.ResponseModesSupported,
- GrantTypesSupported: cfg.GrantTypesSupported,
- ACRValuesSupported: cfg.ACRValuesSupported,
- SubjectTypesSupported: cfg.SubjectTypesSupported,
- IDTokenSigningAlgValues: cfg.IDTokenSigningAlgValues,
- IDTokenEncryptionAlgValues: cfg.IDTokenEncryptionAlgValues,
- IDTokenEncryptionEncValues: cfg.IDTokenEncryptionEncValues,
- UserInfoSigningAlgValues: cfg.UserInfoSigningAlgValues,
- UserInfoEncryptionAlgValues: cfg.UserInfoEncryptionAlgValues,
- UserInfoEncryptionEncValues: cfg.UserInfoEncryptionEncValues,
- ReqObjSigningAlgValues: cfg.ReqObjSigningAlgValues,
- ReqObjEncryptionAlgValues: cfg.ReqObjEncryptionAlgValues,
- ReqObjEncryptionEncValues: cfg.ReqObjEncryptionEncValues,
- TokenEndpointAuthMethodsSupported: cfg.TokenEndpointAuthMethodsSupported,
- TokenEndpointAuthSigningAlgValuesSupported: cfg.TokenEndpointAuthSigningAlgValuesSupported,
- DisplayValuesSupported: cfg.DisplayValuesSupported,
- ClaimTypesSupported: cfg.ClaimTypesSupported,
- ClaimsSupported: cfg.ClaimsSupported,
- ServiceDocs: uriToString(cfg.ServiceDocs),
- ClaimsLocalsSupported: cfg.ClaimsLocalsSupported,
- UILocalsSupported: cfg.UILocalsSupported,
- ClaimsParameterSupported: cfg.ClaimsParameterSupported,
- RequestParameterSupported: cfg.RequestParameterSupported,
- RequestURIParamaterSupported: cfg.RequestURIParamaterSupported,
- RequireRequestURIRegistration: cfg.RequireRequestURIRegistration,
- Policy: uriToString(cfg.Policy),
- TermsOfService: uriToString(cfg.TermsOfService),
- }
-}
-
-func (e encodableProviderConfig) toStruct() (ProviderConfig, error) {
- p := stickyErrParser{}
- conf := ProviderConfig{
- Issuer: p.parseURI(e.Issuer, "issuer"),
- AuthEndpoint: p.parseURI(e.AuthEndpoint, "authorization_endpoint"),
- TokenEndpoint: p.parseURI(e.TokenEndpoint, "token_endpoint"),
- UserInfoEndpoint: p.parseURI(e.UserInfoEndpoint, "userinfo_endpoint"),
- KeysEndpoint: p.parseURI(e.KeysEndpoint, "jwks_uri"),
- RegistrationEndpoint: p.parseURI(e.RegistrationEndpoint, "registration_endpoint"),
- EndSessionEndpoint: p.parseURI(e.EndSessionEndpoint, "end_session_endpoint"),
- CheckSessionIFrame: p.parseURI(e.CheckSessionIFrame, "check_session_iframe"),
- ScopesSupported: e.ScopesSupported,
- ResponseTypesSupported: e.ResponseTypesSupported,
- ResponseModesSupported: e.ResponseModesSupported,
- GrantTypesSupported: e.GrantTypesSupported,
- ACRValuesSupported: e.ACRValuesSupported,
- SubjectTypesSupported: e.SubjectTypesSupported,
- IDTokenSigningAlgValues: e.IDTokenSigningAlgValues,
- IDTokenEncryptionAlgValues: e.IDTokenEncryptionAlgValues,
- IDTokenEncryptionEncValues: e.IDTokenEncryptionEncValues,
- UserInfoSigningAlgValues: e.UserInfoSigningAlgValues,
- UserInfoEncryptionAlgValues: e.UserInfoEncryptionAlgValues,
- UserInfoEncryptionEncValues: e.UserInfoEncryptionEncValues,
- ReqObjSigningAlgValues: e.ReqObjSigningAlgValues,
- ReqObjEncryptionAlgValues: e.ReqObjEncryptionAlgValues,
- ReqObjEncryptionEncValues: e.ReqObjEncryptionEncValues,
- TokenEndpointAuthMethodsSupported: e.TokenEndpointAuthMethodsSupported,
- TokenEndpointAuthSigningAlgValuesSupported: e.TokenEndpointAuthSigningAlgValuesSupported,
- DisplayValuesSupported: e.DisplayValuesSupported,
- ClaimTypesSupported: e.ClaimTypesSupported,
- ClaimsSupported: e.ClaimsSupported,
- ServiceDocs: p.parseURI(e.ServiceDocs, "service_documentation"),
- ClaimsLocalsSupported: e.ClaimsLocalsSupported,
- UILocalsSupported: e.UILocalsSupported,
- ClaimsParameterSupported: e.ClaimsParameterSupported,
- RequestParameterSupported: e.RequestParameterSupported,
- RequestURIParamaterSupported: e.RequestURIParamaterSupported,
- RequireRequestURIRegistration: e.RequireRequestURIRegistration,
- Policy: p.parseURI(e.Policy, "op_policy-uri"),
- TermsOfService: p.parseURI(e.TermsOfService, "op_tos_uri"),
- }
- if p.firstErr != nil {
- return ProviderConfig{}, p.firstErr
- }
- return conf, nil
-}
-
-// Empty returns if a ProviderConfig holds no information.
-//
-// This case generally indicates a ProviderConfigGetter has experienced an error
-// and has nothing to report.
-func (p ProviderConfig) Empty() bool {
- return p.Issuer == nil
-}
-
-func contains(sli []string, ele string) bool {
- for _, s := range sli {
- if s == ele {
- return true
- }
- }
- return false
-}
-
-// Valid determines if a ProviderConfig conforms with the OIDC specification.
-// If Valid returns successfully it guarantees required field are non-nil and
-// URLs are well formed.
-//
-// Valid is called by UnmarshalJSON.
-//
-// NOTE(ericchiang): For development purposes Valid does not mandate 'https' for
-// URLs fields where the OIDC spec requires it. This may change in future releases
-// of this package. See: https://github.com/coreos/go-oidc/issues/34
-func (p ProviderConfig) Valid() error {
- grantTypes := p.GrantTypesSupported
- if len(grantTypes) == 0 {
- grantTypes = DefaultGrantTypesSupported
- }
- implicitOnly := true
- for _, grantType := range grantTypes {
- if grantType != oauth2.GrantTypeImplicit {
- implicitOnly = false
- break
- }
- }
-
- if len(p.SubjectTypesSupported) == 0 {
- return errors.New("missing required field subject_types_supported")
- }
- if len(p.IDTokenSigningAlgValues) == 0 {
- return errors.New("missing required field id_token_signing_alg_values_supported")
- }
-
- if len(p.ScopesSupported) != 0 && !contains(p.ScopesSupported, "openid") {
- return errors.New("scoped_supported must be unspecified or include 'openid'")
- }
-
- if !contains(p.IDTokenSigningAlgValues, "RS256") {
- return errors.New("id_token_signing_alg_values_supported must include 'RS256'")
- }
-
- uris := []struct {
- val *url.URL
- name string
- required bool
- }{
- {p.Issuer, "issuer", true},
- {p.AuthEndpoint, "authorization_endpoint", true},
- {p.TokenEndpoint, "token_endpoint", !implicitOnly},
- {p.UserInfoEndpoint, "userinfo_endpoint", false},
- {p.KeysEndpoint, "jwks_uri", true},
- {p.RegistrationEndpoint, "registration_endpoint", false},
- {p.EndSessionEndpoint, "end_session_endpoint", false},
- {p.CheckSessionIFrame, "check_session_iframe", false},
- {p.ServiceDocs, "service_documentation", false},
- {p.Policy, "op_policy_uri", false},
- {p.TermsOfService, "op_tos_uri", false},
- }
-
- for _, uri := range uris {
- if uri.val == nil {
- if !uri.required {
- continue
- }
- return fmt.Errorf("empty value for required uri field %s", uri.name)
- }
- if uri.val.Host == "" {
- return fmt.Errorf("no host for uri field %s", uri.name)
- }
- if uri.val.Scheme != "http" && uri.val.Scheme != "https" {
- return fmt.Errorf("uri field %s schemeis not http or https", uri.name)
- }
- }
- return nil
-}
-
-// Supports determines if provider supports a client given their respective metadata.
-func (p ProviderConfig) Supports(c ClientMetadata) error {
- if err := p.Valid(); err != nil {
- return fmt.Errorf("invalid provider config: %v", err)
- }
- if err := c.Valid(); err != nil {
- return fmt.Errorf("invalid client config: %v", err)
- }
-
- // Fill default values for omitted fields
- c = c.Defaults()
- p = p.Defaults()
-
- // Do the supported values list the requested one?
- supports := []struct {
- supported []string
- requested string
- name string
- }{
- {p.IDTokenSigningAlgValues, c.IDTokenResponseOptions.SigningAlg, "id_token_signed_response_alg"},
- {p.IDTokenEncryptionAlgValues, c.IDTokenResponseOptions.EncryptionAlg, "id_token_encryption_response_alg"},
- {p.IDTokenEncryptionEncValues, c.IDTokenResponseOptions.EncryptionEnc, "id_token_encryption_response_enc"},
- {p.UserInfoSigningAlgValues, c.UserInfoResponseOptions.SigningAlg, "userinfo_signed_response_alg"},
- {p.UserInfoEncryptionAlgValues, c.UserInfoResponseOptions.EncryptionAlg, "userinfo_encryption_response_alg"},
- {p.UserInfoEncryptionEncValues, c.UserInfoResponseOptions.EncryptionEnc, "userinfo_encryption_response_enc"},
- {p.ReqObjSigningAlgValues, c.RequestObjectOptions.SigningAlg, "request_object_signing_alg"},
- {p.ReqObjEncryptionAlgValues, c.RequestObjectOptions.EncryptionAlg, "request_object_encryption_alg"},
- {p.ReqObjEncryptionEncValues, c.RequestObjectOptions.EncryptionEnc, "request_object_encryption_enc"},
- }
- for _, field := range supports {
- if field.requested == "" {
- continue
- }
- if !contains(field.supported, field.requested) {
- return fmt.Errorf("provider does not support requested value for field %s", field.name)
- }
- }
-
- stringsEqual := func(s1, s2 string) bool { return s1 == s2 }
-
- // For lists, are the list of requested values a subset of the supported ones?
- supportsAll := []struct {
- supported []string
- requested []string
- name string
- // OAuth2.0 response_type can be space separated lists where order doesn't matter.
- // For example "id_token token" is the same as "token id_token"
- // Support a custom compare method.
- comp func(s1, s2 string) bool
- }{
- {p.GrantTypesSupported, c.GrantTypes, "grant_types", stringsEqual},
- {p.ResponseTypesSupported, c.ResponseTypes, "response_type", oauth2.ResponseTypesEqual},
- }
- for _, field := range supportsAll {
- requestLoop:
- for _, req := range field.requested {
- for _, sup := range field.supported {
- if field.comp(req, sup) {
- continue requestLoop
- }
- }
- return fmt.Errorf("provider does not support requested value for field %s", field.name)
- }
- }
-
- // TODO(ericchiang): Are there more checks we feel comfortable with begin strict about?
-
- return nil
-}
-
-func (p ProviderConfig) SupportsGrantType(grantType string) bool {
- var supported []string
- if len(p.GrantTypesSupported) == 0 {
- supported = DefaultGrantTypesSupported
- } else {
- supported = p.GrantTypesSupported
- }
-
- for _, t := range supported {
- if t == grantType {
- return true
- }
- }
- return false
-}
-
-type ProviderConfigGetter interface {
- Get() (ProviderConfig, error)
-}
-
-type ProviderConfigSetter interface {
- Set(ProviderConfig) error
-}
-
-type ProviderConfigSyncer struct {
- from ProviderConfigGetter
- to ProviderConfigSetter
- clock clockwork.Clock
-
- initialSyncDone bool
- initialSyncWait sync.WaitGroup
-}
-
-func NewProviderConfigSyncer(from ProviderConfigGetter, to ProviderConfigSetter) *ProviderConfigSyncer {
- return &ProviderConfigSyncer{
- from: from,
- to: to,
- clock: clockwork.NewRealClock(),
- }
-}
-
-func (s *ProviderConfigSyncer) Run() chan struct{} {
- stop := make(chan struct{})
-
- var next pcsStepper
- next = &pcsStepNext{aft: time.Duration(0)}
-
- s.initialSyncWait.Add(1)
- go func() {
- for {
- select {
- case <-s.clock.After(next.after()):
- next = next.step(s.sync)
- case <-stop:
- return
- }
- }
- }()
-
- return stop
-}
-
-func (s *ProviderConfigSyncer) WaitUntilInitialSync() {
- s.initialSyncWait.Wait()
-}
-
-func (s *ProviderConfigSyncer) sync() (time.Duration, error) {
- cfg, err := s.from.Get()
- if err != nil {
- return 0, err
- }
-
- if err = s.to.Set(cfg); err != nil {
- return 0, fmt.Errorf("error setting provider config: %v", err)
- }
-
- if !s.initialSyncDone {
- s.initialSyncWait.Done()
- s.initialSyncDone = true
- }
-
- return nextSyncAfter(cfg.ExpiresAt, s.clock), nil
-}
-
-type pcsStepFunc func() (time.Duration, error)
-
-type pcsStepper interface {
- after() time.Duration
- step(pcsStepFunc) pcsStepper
-}
-
-type pcsStepNext struct {
- aft time.Duration
-}
-
-func (n *pcsStepNext) after() time.Duration {
- return n.aft
-}
-
-func (n *pcsStepNext) step(fn pcsStepFunc) (next pcsStepper) {
- ttl, err := fn()
- if err == nil {
- next = &pcsStepNext{aft: ttl}
- } else {
- next = &pcsStepRetry{aft: time.Second}
- log.Printf("go-oidc: provider config sync failed, retrying in %v: %v", next.after(), err)
- }
- return
-}
-
-type pcsStepRetry struct {
- aft time.Duration
-}
-
-func (r *pcsStepRetry) after() time.Duration {
- return r.aft
-}
-
-func (r *pcsStepRetry) step(fn pcsStepFunc) (next pcsStepper) {
- ttl, err := fn()
- if err == nil {
- next = &pcsStepNext{aft: ttl}
- } else {
- next = &pcsStepRetry{aft: timeutil.ExpBackoff(r.aft, time.Minute)}
- log.Printf("go-oidc: provider config sync failed, retrying in %v: %v", next.after(), err)
- }
- return
-}
-
-func nextSyncAfter(exp time.Time, clock clockwork.Clock) time.Duration {
- if exp.IsZero() {
- return MaximumProviderConfigSyncInterval
- }
-
- t := exp.Sub(clock.Now()) / 2
- if t > MaximumProviderConfigSyncInterval {
- t = MaximumProviderConfigSyncInterval
- } else if t < minimumProviderConfigSyncInterval {
- t = minimumProviderConfigSyncInterval
- }
-
- return t
-}
-
-type httpProviderConfigGetter struct {
- hc phttp.Client
- issuerURL string
- clock clockwork.Clock
-}
-
-func NewHTTPProviderConfigGetter(hc phttp.Client, issuerURL string) *httpProviderConfigGetter {
- return &httpProviderConfigGetter{
- hc: hc,
- issuerURL: issuerURL,
- clock: clockwork.NewRealClock(),
- }
-}
-
-func (r *httpProviderConfigGetter) Get() (cfg ProviderConfig, err error) {
- // If the Issuer value contains a path component, any terminating / MUST be removed before
- // appending /.well-known/openid-configuration.
- // https://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationRequest
- discoveryURL := strings.TrimSuffix(r.issuerURL, "/") + discoveryConfigPath
- req, err := http.NewRequest("GET", discoveryURL, nil)
- if err != nil {
- return
- }
-
- resp, err := r.hc.Do(req)
- if err != nil {
- return
- }
- defer resp.Body.Close()
-
- if err = json.NewDecoder(resp.Body).Decode(&cfg); err != nil {
- return
- }
-
- var ttl time.Duration
- var ok bool
- ttl, ok, err = phttp.Cacheable(resp.Header)
- if err != nil {
- return
- } else if ok {
- cfg.ExpiresAt = r.clock.Now().UTC().Add(ttl)
- }
-
- // The issuer value returned MUST be identical to the Issuer URL that was directly used to retrieve the configuration information.
- // http://openid.net/specs/openid-connect-discovery-1_0.html#ProviderConfigurationValidation
- if !urlEqual(cfg.Issuer.String(), r.issuerURL) {
- err = fmt.Errorf(`"issuer" in config (%v) does not match provided issuer URL (%v)`, cfg.Issuer, r.issuerURL)
- return
- }
-
- return
-}
-
-func FetchProviderConfig(hc phttp.Client, issuerURL string) (ProviderConfig, error) {
- if hc == nil {
- hc = http.DefaultClient
- }
-
- g := NewHTTPProviderConfigGetter(hc, issuerURL)
- return g.Get()
-}
-
-func WaitForProviderConfig(hc phttp.Client, issuerURL string) (pcfg ProviderConfig) {
- return waitForProviderConfig(hc, issuerURL, clockwork.NewRealClock())
-}
-
-func waitForProviderConfig(hc phttp.Client, issuerURL string, clock clockwork.Clock) (pcfg ProviderConfig) {
- var sleep time.Duration
- var err error
- for {
- pcfg, err = FetchProviderConfig(hc, issuerURL)
- if err == nil {
- break
- }
-
- sleep = timeutil.ExpBackoff(sleep, time.Minute)
- fmt.Printf("Failed fetching provider config, trying again in %v: %v\n", sleep, err)
- time.Sleep(sleep)
- }
-
- return
-}
diff --git a/vendor/github.com/coreos/go-oidc/oidc/transport.go b/vendor/github.com/coreos/go-oidc/oidc/transport.go
deleted file mode 100644
index 61c926d7fe72..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/transport.go
+++ /dev/null
@@ -1,88 +0,0 @@
-package oidc
-
-import (
- "fmt"
- "net/http"
- "sync"
-
- phttp "github.com/coreos/go-oidc/http"
- "github.com/coreos/go-oidc/jose"
-)
-
-type TokenRefresher interface {
- // Verify checks if the provided token is currently valid or not.
- Verify(jose.JWT) error
-
- // Refresh attempts to authenticate and retrieve a new token.
- Refresh() (jose.JWT, error)
-}
-
-type ClientCredsTokenRefresher struct {
- Issuer string
- OIDCClient *Client
-}
-
-func (c *ClientCredsTokenRefresher) Verify(jwt jose.JWT) (err error) {
- _, err = VerifyClientClaims(jwt, c.Issuer)
- return
-}
-
-func (c *ClientCredsTokenRefresher) Refresh() (jwt jose.JWT, err error) {
- if err = c.OIDCClient.Healthy(); err != nil {
- err = fmt.Errorf("unable to authenticate, unhealthy OIDC client: %v", err)
- return
- }
-
- jwt, err = c.OIDCClient.ClientCredsToken([]string{"openid"})
- if err != nil {
- err = fmt.Errorf("unable to verify auth code with issuer: %v", err)
- return
- }
-
- return
-}
-
-type AuthenticatedTransport struct {
- TokenRefresher
- http.RoundTripper
-
- mu sync.Mutex
- jwt jose.JWT
-}
-
-func (t *AuthenticatedTransport) verifiedJWT() (jose.JWT, error) {
- t.mu.Lock()
- defer t.mu.Unlock()
-
- if t.TokenRefresher.Verify(t.jwt) == nil {
- return t.jwt, nil
- }
-
- jwt, err := t.TokenRefresher.Refresh()
- if err != nil {
- return jose.JWT{}, fmt.Errorf("unable to acquire valid JWT: %v", err)
- }
-
- t.jwt = jwt
- return t.jwt, nil
-}
-
-// SetJWT sets the JWT held by the Transport.
-// This is useful for cases in which you want to set an initial JWT.
-func (t *AuthenticatedTransport) SetJWT(jwt jose.JWT) {
- t.mu.Lock()
- defer t.mu.Unlock()
-
- t.jwt = jwt
-}
-
-func (t *AuthenticatedTransport) RoundTrip(r *http.Request) (*http.Response, error) {
- jwt, err := t.verifiedJWT()
- if err != nil {
- return nil, err
- }
-
- req := phttp.CopyRequest(r)
- req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", jwt.Encode()))
- return t.RoundTripper.RoundTrip(req)
-}
diff --git a/vendor/github.com/coreos/go-oidc/oidc/util.go b/vendor/github.com/coreos/go-oidc/oidc/util.go
deleted file mode 100644
index f2a5a195e4a3..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/util.go
+++ /dev/null
@@ -1,109 +0,0 @@
-package oidc
-
-import (
- "crypto/rand"
- "encoding/base64"
- "errors"
- "fmt"
- "net"
- "net/http"
- "net/url"
- "strings"
- "time"
-
- "github.com/coreos/go-oidc/jose"
-)
-
-// RequestTokenExtractor funcs extract a raw encoded token from a request.
-type RequestTokenExtractor func(r *http.Request) (string, error)
-
-// ExtractBearerToken is a RequestTokenExtractor which extracts a bearer token from a request's
-// Authorization header.
-func ExtractBearerToken(r *http.Request) (string, error) {
- ah := r.Header.Get("Authorization")
- if ah == "" {
- return "", errors.New("missing Authorization header")
- }
-
- if len(ah) <= 6 || strings.ToUpper(ah[0:6]) != "BEARER" {
- return "", errors.New("should be a bearer token")
- }
-
- val := ah[7:]
- if len(val) == 0 {
- return "", errors.New("bearer token is empty")
- }
-
- return val, nil
-}
-
-// CookieTokenExtractor returns a RequestTokenExtractor which extracts a token from the named cookie in a request.
-func CookieTokenExtractor(cookieName string) RequestTokenExtractor {
- return func(r *http.Request) (string, error) {
- ck, err := r.Cookie(cookieName)
- if err != nil {
- return "", fmt.Errorf("token cookie not found in request: %v", err)
- }
-
- if ck.Value == "" {
- return "", errors.New("token cookie found but is empty")
- }
-
- return ck.Value, nil
- }
-}
-
-func NewClaims(iss, sub string, aud interface{}, iat, exp time.Time) jose.Claims {
- return jose.Claims{
- // required
- "iss": iss,
- "sub": sub,
- "aud": aud,
- "iat": iat.Unix(),
- "exp": exp.Unix(),
- }
-}
-
-func GenClientID(hostport string) (string, error) {
- b, err := randBytes(32)
- if err != nil {
- return "", err
- }
-
- var host string
- if strings.Contains(hostport, ":") {
- host, _, err = net.SplitHostPort(hostport)
- if err != nil {
- return "", err
- }
- } else {
- host = hostport
- }
-
- return fmt.Sprintf("%s@%s", base64.URLEncoding.EncodeToString(b), host), nil
-}
-
-func randBytes(n int) ([]byte, error) {
- b := make([]byte, n)
- got, err := rand.Read(b)
- if err != nil {
- return nil, err
- } else if n != got {
- return nil, errors.New("unable to generate enough random data")
- }
- return b, nil
-}
-
-// urlEqual checks two urls for equality using only the host and path portions.
-func urlEqual(url1, url2 string) bool {
- u1, err := url.Parse(url1)
- if err != nil {
- return false
- }
- u2, err := url.Parse(url2)
- if err != nil {
- return false
- }
-
- return strings.ToLower(u1.Host+u1.Path) == strings.ToLower(u2.Host+u2.Path)
-}
diff --git a/vendor/github.com/coreos/go-oidc/oidc/verification.go b/vendor/github.com/coreos/go-oidc/oidc/verification.go
deleted file mode 100644
index d9c6afa6974d..000000000000
--- a/vendor/github.com/coreos/go-oidc/oidc/verification.go
+++ /dev/null
@@ -1,190 +0,0 @@
-package oidc
-
-import (
- "errors"
- "fmt"
- "time"
-
- "github.com/jonboulle/clockwork"
-
- "github.com/coreos/go-oidc/jose"
- "github.com/coreos/go-oidc/key"
-)
-
-func VerifySignature(jwt jose.JWT, keys []key.PublicKey) (bool, error) {
- jwtBytes := []byte(jwt.Data())
- for _, k := range keys {
- v, err := k.Verifier()
- if err != nil {
- return false, err
- }
- if v.Verify(jwt.Signature, jwtBytes) == nil {
- return true, nil
- }
- }
- return false, nil
-}
-
-// containsString returns true if the given string(needle) is found
-// in the string array(haystack).
-func containsString(needle string, haystack []string) bool {
- for _, v := range haystack {
- if v == needle {
- return true
- }
- }
- return false
-}
-
-// Verify claims in accordance with OIDC spec
-// http://openid.net/specs/openid-connect-basic-1_0.html#IDTokenValidation
-func VerifyClaims(jwt jose.JWT, issuer, clientID string) error {
- now := time.Now().UTC()
-
- claims, err := jwt.Claims()
- if err != nil {
- return err
- }
-
- ident, err := IdentityFromClaims(claims)
- if err != nil {
- return err
- }
-
- if ident.ExpiresAt.Before(now) {
- return errors.New("token is expired")
- }
-
- // iss REQUIRED. Issuer Identifier for the Issuer of the response.
- // The iss value is a case sensitive URL using the https scheme that contains scheme,
- // host, and optionally, port number and path components and no query or fragment components.
- if iss, exists := claims["iss"].(string); exists {
- if !urlEqual(iss, issuer) {
- return fmt.Errorf("invalid claim value: 'iss'. expected=%s, found=%s.", issuer, iss)
- }
- } else {
- return errors.New("missing claim: 'iss'")
- }
-
- // iat REQUIRED. Time at which the JWT was issued.
- // Its value is a JSON number representing the number of seconds from 1970-01-01T0:0:0Z
- // as measured in UTC until the date/time.
- if _, exists := claims["iat"].(float64); !exists {
- return errors.New("missing claim: 'iat'")
- }
-
- // aud REQUIRED. Audience(s) that this ID Token is intended for.
- // It MUST contain the OAuth 2.0 client_id of the Relying Party as an audience value.
- // It MAY also contain identifiers for other audiences. In the general case, the aud
- // value is an array of case sensitive strings. In the common special case when there
- // is one audience, the aud value MAY be a single case sensitive string.
- if aud, ok, err := claims.StringClaim("aud"); err == nil && ok {
- if aud != clientID {
- return fmt.Errorf("invalid claims, 'aud' claim and 'client_id' do not match, aud=%s, client_id=%s", aud, clientID)
- }
- } else if aud, ok, err := claims.StringsClaim("aud"); err == nil && ok {
- if !containsString(clientID, aud) {
- return fmt.Errorf("invalid claims, cannot find 'client_id' in 'aud' claim, aud=%v, client_id=%s", aud, clientID)
- }
- } else {
- return errors.New("invalid claim value: 'aud' is required, and should be either string or string array")
- }
-
- return nil
-}
-
-// VerifyClientClaims verifies all the required claims are valid for a "client credentials" JWT.
-// Returns the client ID if valid, or an error if invalid.
-func VerifyClientClaims(jwt jose.JWT, issuer string) (string, error) {
- claims, err := jwt.Claims()
- if err != nil {
- return "", fmt.Errorf("failed to parse JWT claims: %v", err)
- }
-
- iss, ok, err := claims.StringClaim("iss")
- if err != nil {
- return "", fmt.Errorf("failed to parse 'iss' claim: %v", err)
- } else if !ok {
- return "", errors.New("missing required 'iss' claim")
- } else if !urlEqual(iss, issuer) {
- return "", fmt.Errorf("'iss' claim does not match expected issuer, iss=%s", iss)
- }
-
- sub, ok, err := claims.StringClaim("sub")
- if err != nil {
- return "", fmt.Errorf("failed to parse 'sub' claim: %v", err)
- } else if !ok {
- return "", errors.New("missing required 'sub' claim")
- }
-
- if aud, ok, err := claims.StringClaim("aud"); err == nil && ok {
- if aud != sub {
- return "", fmt.Errorf("invalid claims, 'aud' claim and 'sub' claim do not match, aud=%s, sub=%s", aud, sub)
- }
- } else if aud, ok, err := claims.StringsClaim("aud"); err == nil && ok {
- if !containsString(sub, aud) {
- return "", fmt.Errorf("invalid claims, cannot find 'sud' in 'aud' claim, aud=%v, sub=%s", aud, sub)
- }
- } else {
- return "", errors.New("invalid claim value: 'aud' is required, and should be either string or string array")
- }
-
- now := time.Now().UTC()
- exp, ok, err := claims.TimeClaim("exp")
- if err != nil {
- return "", fmt.Errorf("failed to parse 'exp' claim: %v", err)
- } else if !ok {
- return "", errors.New("missing required 'exp' claim")
- } else if exp.Before(now) {
- return "", fmt.Errorf("token already expired at: %v", exp)
- }
-
- return sub, nil
-}
-
-type JWTVerifier struct {
- issuer string
- clientID string
- syncFunc func() error
- keysFunc func() []key.PublicKey
- clock clockwork.Clock
-}
-
-func NewJWTVerifier(issuer, clientID string, syncFunc func() error, keysFunc func() []key.PublicKey) JWTVerifier {
- return JWTVerifier{
- issuer: issuer,
- clientID: clientID,
- syncFunc: syncFunc,
- keysFunc: keysFunc,
- clock: clockwork.NewRealClock(),
- }
-}
-
-func (v *JWTVerifier) Verify(jwt jose.JWT) error {
- // Verify claims before verifying the signature. This is an optimization to throw out
- // tokens we know are invalid without undergoing an expensive signature check and
- // possibly a re-sync event.
- if err := VerifyClaims(jwt, v.issuer, v.clientID); err != nil {
- return fmt.Errorf("oidc: JWT claims invalid: %v", err)
- }
-
- ok, err := VerifySignature(jwt, v.keysFunc())
- if err != nil {
- return fmt.Errorf("oidc: JWT signature verification failed: %v", err)
- } else if ok {
- return nil
- }
-
- if err = v.syncFunc(); err != nil {
- return fmt.Errorf("oidc: failed syncing KeySet: %v", err)
- }
-
- ok, err = VerifySignature(jwt, v.keysFunc())
- if err != nil {
- return fmt.Errorf("oidc: JWT signature verification failed: %v", err)
- } else if !ok {
- return errors.New("oidc: unable to verify JWT signature: no matching keys")
- }
-
- return nil
-}
diff --git a/vendor/github.com/coreos/go-oidc/test b/vendor/github.com/coreos/go-oidc/test
new file mode 100755
index 000000000000..b262d0e75a35
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/test
@@ -0,0 +1,16 @@
+#!/bin/bash
+
+set -e
+
+# Filter out any files with a !golint build tag.
+LINTABLE=$( go list -tags=golint -f '
+ {{- range $i, $file := .GoFiles -}}
+ {{ $file }} {{ end }}
+ {{ range $i, $file := .TestGoFiles -}}
+ {{ $file }} {{ end }}' github.com/coreos/go-oidc )
+
+go test -v -i -race github.com/coreos/go-oidc/...
+go test -v -race github.com/coreos/go-oidc/...
+golint -set_exit_status $LINTABLE
+go vet github.com/coreos/go-oidc/...
+go build -v ./example/...
diff --git a/vendor/github.com/coreos/go-oidc/verify.go b/vendor/github.com/coreos/go-oidc/verify.go
new file mode 100644
index 000000000000..24ff73ee1d21
--- /dev/null
+++ b/vendor/github.com/coreos/go-oidc/verify.go
@@ -0,0 +1,243 @@
+package oidc
+
+import (
+ "bytes"
+ "context"
+ "encoding/base64"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "strings"
+ "time"
+
+ "golang.org/x/oauth2"
+ jose "gopkg.in/square/go-jose.v2"
+)
+
+const (
+ issuerGoogleAccounts = "https://accounts.google.com"
+ issuerGoogleAccountsNoScheme = "accounts.google.com"
+)
+
+// KeySet is a set of publc JSON Web Keys that can be used to validate the signature
+// of JSON web tokens. This is expected to be backed by a remote key set through
+// provider metadata discovery or an in-memory set of keys delivered out-of-band.
+type KeySet interface {
+ // VerifySignature parses the JSON web token, verifies the signature, and returns
+ // the raw payload. Header and claim fields are validated by other parts of the
+ // package. For example, the KeySet does not need to check values such as signature
+ // algorithm, issuer, and audience since the IDTokenVerifier validates these values
+ // independently.
+ //
+ // If VerifySignature makes HTTP requests to verify the token, it's expected to
+ // use any HTTP client associated with the context through ClientContext.
+ VerifySignature(ctx context.Context, jwt string) (payload []byte, err error)
+}
+
+// IDTokenVerifier provides verification for ID Tokens.
+type IDTokenVerifier struct {
+ keySet KeySet
+ config *Config
+ issuer string
+}
+
+// NewVerifier returns a verifier manually constructed from a key set and issuer URL.
+//
+// It's easier to use provider discovery to construct an IDTokenVerifier than creating
+// one directly. This method is intended to be used with provider that don't support
+// metadata discovery, or avoiding round trips when the key set URL is already known.
+//
+// This constructor can be used to create a verifier directly using the issuer URL and
+// JSON Web Key Set URL without using discovery:
+//
+// keySet := oidc.NewRemoteKeySet(ctx, "https://www.googleapis.com/oauth2/v3/certs")
+// verifier := oidc.NewVerifier("https://accounts.google.com", keySet, config)
+//
+// Since KeySet is an interface, this constructor can also be used to supply custom
+// public key sources. For example, if a user wanted to supply public keys out-of-band
+// and hold them statically in-memory:
+//
+// // Custom KeySet implementation.
+// keySet := newStatisKeySet(publicKeys...)
+//
+// // Verifier uses the custom KeySet implementation.
+// verifier := oidc.NewVerifier("https://auth.example.com", keySet, config)
+//
+func NewVerifier(issuerURL string, keySet KeySet, config *Config) *IDTokenVerifier {
+ return &IDTokenVerifier{keySet: keySet, config: config, issuer: issuerURL}
+}
+
+// Config is the configuration for an IDTokenVerifier.
+type Config struct {
+ // Expected audience of the token. For a majority of the cases this is expected to be
+ // the ID of the client that initialized the login flow. It may occasionally differ if
+ // the provider supports the authorizing party (azp) claim.
+ //
+ // If not provided, users must explicitly set SkipClientIDCheck.
+ ClientID string
+ // If specified, only this set of algorithms may be used to sign the JWT.
+ //
+ // Since many providers only support RS256, SupportedSigningAlgs defaults to this value.
+ SupportedSigningAlgs []string
+
+ // If true, no ClientID check performed. Must be true if ClientID field is empty.
+ SkipClientIDCheck bool
+ // If true, token expiry is not checked.
+ SkipExpiryCheck bool
+
+ // Time function to check Token expiry. Defaults to time.Now
+ Now func() time.Time
+}
+
+// Verifier returns an IDTokenVerifier that uses the provider's key set to verify JWTs.
+//
+// The returned IDTokenVerifier is tied to the Provider's context and its behavior is
+// undefined once the Provider's context is canceled.
+func (p *Provider) Verifier(config *Config) *IDTokenVerifier {
+ return NewVerifier(p.issuer, p.remoteKeySet, config)
+}
+
+func parseJWT(p string) ([]byte, error) {
+ parts := strings.Split(p, ".")
+ if len(parts) < 2 {
+ return nil, fmt.Errorf("oidc: malformed jwt, expected 3 parts got %d", len(parts))
+ }
+ payload, err := base64.RawURLEncoding.DecodeString(parts[1])
+ if err != nil {
+ return nil, fmt.Errorf("oidc: malformed jwt payload: %v", err)
+ }
+ return payload, nil
+}
+
+func contains(sli []string, ele string) bool {
+ for _, s := range sli {
+ if s == ele {
+ return true
+ }
+ }
+ return false
+}
+
+// Verify parses a raw ID Token, verifies it's been signed by the provider, preforms
+// any additional checks depending on the Config, and returns the payload.
+//
+// Verify does NOT do nonce validation, which is the callers responsibility.
+//
+// See: https://openid.net/specs/openid-connect-core-1_0.html#IDTokenValidation
+//
+// oauth2Token, err := oauth2Config.Exchange(ctx, r.URL.Query().Get("code"))
+// if err != nil {
+// // handle error
+// }
+//
+// // Extract the ID Token from oauth2 token.
+// rawIDToken, ok := oauth2Token.Extra("id_token").(string)
+// if !ok {
+// // handle error
+// }
+//
+// token, err := verifier.Verify(ctx, rawIDToken)
+//
+func (v *IDTokenVerifier) Verify(ctx context.Context, rawIDToken string) (*IDToken, error) {
+ jws, err := jose.ParseSigned(rawIDToken)
+ if err != nil {
+ return nil, fmt.Errorf("oidc: malformed jwt: %v", err)
+ }
+
+ // Throw out tokens with invalid claims before trying to verify the token. This lets
+ // us do cheap checks before possibly re-syncing keys.
+ payload, err := parseJWT(rawIDToken)
+ if err != nil {
+ return nil, fmt.Errorf("oidc: malformed jwt: %v", err)
+ }
+ var token idToken
+ if err := json.Unmarshal(payload, &token); err != nil {
+ return nil, fmt.Errorf("oidc: failed to unmarshal claims: %v", err)
+ }
+
+ t := &IDToken{
+ Issuer: token.Issuer,
+ Subject: token.Subject,
+ Audience: []string(token.Audience),
+ Expiry: time.Time(token.Expiry),
+ IssuedAt: time.Time(token.IssuedAt),
+ Nonce: token.Nonce,
+ AccessTokenHash: token.AtHash,
+ claims: payload,
+ }
+
+ // Check issuer.
+ if t.Issuer != v.issuer {
+ // Google sometimes returns "accounts.google.com" as the issuer claim instead of
+ // the required "https://accounts.google.com". Detect this case and allow it only
+ // for Google.
+ //
+ // We will not add hooks to let other providers go off spec like this.
+ if !(v.issuer == issuerGoogleAccounts && t.Issuer == issuerGoogleAccountsNoScheme) {
+ return nil, fmt.Errorf("oidc: id token issued by a different provider, expected %q got %q", v.issuer, t.Issuer)
+ }
+ }
+
+ // If a client ID has been provided, make sure it's part of the audience. SkipClientIDCheck must be true if ClientID is empty.
+ //
+ // This check DOES NOT ensure that the ClientID is the party to which the ID Token was issued (i.e. Authorized party).
+ if !v.config.SkipClientIDCheck {
+ if v.config.ClientID != "" {
+ if !contains(t.Audience, v.config.ClientID) {
+ return nil, fmt.Errorf("oidc: expected audience %q got %q", v.config.ClientID, t.Audience)
+ }
+ } else {
+ return nil, fmt.Errorf("oidc: invalid configuration, clientID must be provided or SkipClientIDCheck must be set")
+ }
+ }
+
+ // If a SkipExpiryCheck is false, make sure token is not expired.
+ if !v.config.SkipExpiryCheck {
+ now := time.Now
+ if v.config.Now != nil {
+ now = v.config.Now
+ }
+
+ if t.Expiry.Before(now()) {
+ return nil, fmt.Errorf("oidc: token is expired (Token Expiry: %v)", t.Expiry)
+ }
+ }
+
+ switch len(jws.Signatures) {
+ case 0:
+ return nil, fmt.Errorf("oidc: id token not signed")
+ case 1:
+ default:
+ return nil, fmt.Errorf("oidc: multiple signatures on id token not supported")
+ }
+
+ sig := jws.Signatures[0]
+ supportedSigAlgs := v.config.SupportedSigningAlgs
+ if len(supportedSigAlgs) == 0 {
+ supportedSigAlgs = []string{RS256}
+ }
+
+ if !contains(supportedSigAlgs, sig.Header.Algorithm) {
+ return nil, fmt.Errorf("oidc: id token signed with unsupported algorithm, expected %q got %q", supportedSigAlgs, sig.Header.Algorithm)
+ }
+
+ t.sigAlgorithm = sig.Header.Algorithm
+
+ gotPayload, err := v.keySet.VerifySignature(ctx, rawIDToken)
+ if err != nil {
+ return nil, fmt.Errorf("failed to verify signature: %v", err)
+ }
+
+ // Ensure that the payload returned by the square actually matches the payload parsed earlier.
+ if !bytes.Equal(gotPayload, payload) {
+ return nil, errors.New("oidc: internal error, payload parsed did not match previous payload")
+ }
+
+ return t, nil
+}
+
+// Nonce returns an auth code option which requires the ID Token created by the
+// OpenID Connect provider to contain the specified nonce.
+func Nonce(nonce string) oauth2.AuthCodeOption {
+ return oauth2.SetAuthURLParam("nonce", nonce)
+}
diff --git a/vendor/github.com/coreos/pkg/health/README.md b/vendor/github.com/coreos/pkg/health/README.md
deleted file mode 100644
index 5ec34c21e0fd..000000000000
--- a/vendor/github.com/coreos/pkg/health/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-health
-====
-
-A simple framework for implementing an HTTP health check endpoint on servers.
-
-Users implement their `health.Checkable` types, and create a `health.Checker`, from which they can get an `http.HandlerFunc` using `health.Checker.MakeHealthHandlerFunc`.
-
-### Documentation
-
-For more details, visit the docs on [gopkgdoc](http://godoc.org/github.com/coreos/pkg/health)
-
diff --git a/vendor/github.com/coreos/pkg/health/health.go b/vendor/github.com/coreos/pkg/health/health.go
deleted file mode 100644
index a1c3610fa5c5..000000000000
--- a/vendor/github.com/coreos/pkg/health/health.go
+++ /dev/null
@@ -1,127 +0,0 @@
-package health
-
-import (
- "expvar"
- "fmt"
- "log"
- "net/http"
-
- "github.com/coreos/pkg/httputil"
-)
-
-// Checkables should return nil when the thing they are checking is healthy, and an error otherwise.
-type Checkable interface {
- Healthy() error
-}
-
-// Checker provides a way to make an endpoint which can be probed for system health.
-type Checker struct {
- // Checks are the Checkables to be checked when probing.
- Checks []Checkable
-
- // Unhealthyhandler is called when one or more of the checks are unhealthy.
- // If not provided DefaultUnhealthyHandler is called.
- UnhealthyHandler UnhealthyHandler
-
- // HealthyHandler is called when all checks are healthy.
- // If not provided, DefaultHealthyHandler is called.
- HealthyHandler http.HandlerFunc
-}
-
-func (c Checker) ServeHTTP(w http.ResponseWriter, r *http.Request) {
- unhealthyHandler := c.UnhealthyHandler
- if unhealthyHandler == nil {
- unhealthyHandler = DefaultUnhealthyHandler
- }
-
- successHandler := c.HealthyHandler
- if successHandler == nil {
- successHandler = DefaultHealthyHandler
- }
-
- if r.Method != "GET" {
- w.Header().Set("Allow", "GET")
- w.WriteHeader(http.StatusMethodNotAllowed)
- return
- }
-
- if err := Check(c.Checks); err != nil {
- unhealthyHandler(w, r, err)
- return
- }
-
- successHandler(w, r)
-}
-
-type UnhealthyHandler func(w http.ResponseWriter, r *http.Request, err error)
-
-type StatusResponse struct {
- Status string `json:"status"`
- Details *StatusResponseDetails `json:"details,omitempty"`
-}
-
-type StatusResponseDetails struct {
- Code int `json:"code,omitempty"`
- Message string `json:"message,omitempty"`
-}
-
-func Check(checks []Checkable) (err error) {
- errs := []error{}
- for _, c := range checks {
- if e := c.Healthy(); e != nil {
- errs = append(errs, e)
- }
- }
-
- switch len(errs) {
- case 0:
- err = nil
- case 1:
- err = errs[0]
- default:
- err = fmt.Errorf("multiple health check failure: %v", errs)
- }
-
- return
-}
-
-func DefaultHealthyHandler(w http.ResponseWriter, r *http.Request) {
- err := httputil.WriteJSONResponse(w, http.StatusOK, StatusResponse{
- Status: "ok",
- })
- if err != nil {
- // TODO(bobbyrullo): replace with logging from new logging pkg,
- // once it lands.
- log.Printf("Failed to write JSON response: %v", err)
- }
-}
-
-func DefaultUnhealthyHandler(w http.ResponseWriter, r *http.Request, err error) {
- writeErr := httputil.WriteJSONResponse(w, http.StatusInternalServerError, StatusResponse{
- Status: "error",
- Details: &StatusResponseDetails{
- Code: http.StatusInternalServerError,
- Message: err.Error(),
- },
- })
- if writeErr != nil {
- // TODO(bobbyrullo): replace with logging from new logging pkg,
- // once it lands.
- log.Printf("Failed to write JSON response: %v", err)
- }
-}
-
-// ExpvarHandler is copied from https://golang.org/src/expvar/expvar.go, where it's sadly unexported.
-func ExpvarHandler(w http.ResponseWriter, r *http.Request) {
- w.Header().Set("Content-Type", "application/json; charset=utf-8")
- fmt.Fprintf(w, "{\n")
- first := true
- expvar.Do(func(kv expvar.KeyValue) {
- if !first {
- fmt.Fprintf(w, ",\n")
- }
- first = false
- fmt.Fprintf(w, "%q: %s", kv.Key, kv.Value)
- })
- fmt.Fprintf(w, "\n}\n")
-}
diff --git a/vendor/github.com/coreos/pkg/httputil/README.md b/vendor/github.com/coreos/pkg/httputil/README.md
deleted file mode 100644
index 44fa751c4a0a..000000000000
--- a/vendor/github.com/coreos/pkg/httputil/README.md
+++ /dev/null
@@ -1,13 +0,0 @@
-httputil
-====
-
-Common code for dealing with HTTP.
-
-Includes:
-
-* Code for returning JSON responses.
-
-### Documentation
-
-Visit the docs on [gopkgdoc](http://godoc.org/github.com/coreos/pkg/httputil)
-
diff --git a/vendor/github.com/coreos/pkg/httputil/cookie.go b/vendor/github.com/coreos/pkg/httputil/cookie.go
deleted file mode 100644
index c37a37bb27c7..000000000000
--- a/vendor/github.com/coreos/pkg/httputil/cookie.go
+++ /dev/null
@@ -1,21 +0,0 @@
-package httputil
-
-import (
- "net/http"
- "time"
-)
-
-// DeleteCookies effectively deletes all named cookies
-// by wiping all data and setting to expire immediately.
-func DeleteCookies(w http.ResponseWriter, cookieNames ...string) {
- for _, n := range cookieNames {
- c := &http.Cookie{
- Name: n,
- Value: "",
- Path: "/",
- MaxAge: -1,
- Expires: time.Time{},
- }
- http.SetCookie(w, c)
- }
-}
diff --git a/vendor/github.com/coreos/pkg/httputil/json.go b/vendor/github.com/coreos/pkg/httputil/json.go
deleted file mode 100644
index 0b09235033ff..000000000000
--- a/vendor/github.com/coreos/pkg/httputil/json.go
+++ /dev/null
@@ -1,27 +0,0 @@
-package httputil
-
-import (
- "encoding/json"
- "net/http"
-)
-
-const (
- JSONContentType = "application/json"
-)
-
-func WriteJSONResponse(w http.ResponseWriter, code int, resp interface{}) error {
- enc, err := json.Marshal(resp)
- if err != nil {
- w.WriteHeader(http.StatusInternalServerError)
- return err
- }
-
- w.Header().Set("Content-Type", JSONContentType)
- w.WriteHeader(code)
-
- _, err = w.Write(enc)
- if err != nil {
- return err
- }
- return nil
-}
diff --git a/vendor/github.com/coreos/pkg/timeutil/backoff.go b/vendor/github.com/coreos/pkg/timeutil/backoff.go
deleted file mode 100644
index b34fb49661b6..000000000000
--- a/vendor/github.com/coreos/pkg/timeutil/backoff.go
+++ /dev/null
@@ -1,15 +0,0 @@
-package timeutil
-
-import (
- "time"
-)
-
-func ExpBackoff(prev, max time.Duration) time.Duration {
- if prev == 0 {
- return time.Second
- }
- if prev > max/2 {
- return max
- }
- return 2 * prev
-}
diff --git a/vendor/github.com/cyphar/filepath-securejoin/.travis.yml b/vendor/github.com/cyphar/filepath-securejoin/.travis.yml
new file mode 100644
index 000000000000..3938f3834944
--- /dev/null
+++ b/vendor/github.com/cyphar/filepath-securejoin/.travis.yml
@@ -0,0 +1,19 @@
+# Copyright (C) 2017 SUSE LLC. All rights reserved.
+# Use of this source code is governed by a BSD-style
+# license that can be found in the LICENSE file.
+
+language: go
+go:
+ - 1.7.x
+ - 1.8.x
+ - tip
+
+os:
+ - linux
+ - osx
+
+script:
+ - go test -cover -v ./...
+
+notifications:
+ email: false
diff --git a/vendor/github.com/cyphar/filepath-securejoin/LICENSE b/vendor/github.com/cyphar/filepath-securejoin/LICENSE
new file mode 100644
index 000000000000..bec842f294f7
--- /dev/null
+++ b/vendor/github.com/cyphar/filepath-securejoin/LICENSE
@@ -0,0 +1,28 @@
+Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.
+Copyright (C) 2017 SUSE LLC. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+ * Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+ * Redistributions in binary form must reproduce the above
+copyright notice, this list of conditions and the following disclaimer
+in the documentation and/or other materials provided with the
+distribution.
+ * Neither the name of Google Inc. nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/vendor/github.com/cyphar/filepath-securejoin/README.md b/vendor/github.com/cyphar/filepath-securejoin/README.md
new file mode 100644
index 000000000000..49b2baa9f35c
--- /dev/null
+++ b/vendor/github.com/cyphar/filepath-securejoin/README.md
@@ -0,0 +1,65 @@
+## `filepath-securejoin` ##
+
+[![Build Status](https://travis-ci.org/cyphar/filepath-securejoin.svg?branch=master)](https://travis-ci.org/cyphar/filepath-securejoin)
+
+An implementation of `SecureJoin`, a [candidate for inclusion in the Go
+standard library][go#20126]. The purpose of this function is to be a "secure"
+alternative to `filepath.Join`, and in particular it provides certain
+guarantees that are not provided by `filepath.Join`.
+
+This is the function prototype:
+
+```go
+func SecureJoin(root, unsafePath string) (string, error)
+```
+
+This library **guarantees** the following:
+
+* If no error is set, the resulting string **must** be a child path of
+ `SecureJoin` and will not contain any symlink path components (they will all
+ be expanded).
+
+* When expanding symlinks, all symlink path components **must** be resolved
+ relative to the provided root. In particular, this can be considered a
+ userspace implementation of how `chroot(2)` operates on file paths. Note that
+ these symlinks will **not** be expanded lexically (`filepath.Clean` is not
+ called on the input before processing).
+
+* Non-existant path components are unaffected by `SecureJoin` (similar to
+ `filepath.EvalSymlinks`'s semantics).
+
+* The returned path will always be `filepath.Clean`ed and thus not contain any
+ `..` components.
+
+A (trivial) implementation of this function on GNU/Linux systems could be done
+with the following (note that this requires root privileges and is far more
+opaque than the implementation in this library, and also requires that
+`readlink` is inside the `root` path):
+
+```go
+package securejoin
+
+import (
+ "os/exec"
+ "path/filepath"
+)
+
+func SecureJoin(root, unsafePath string) (string, error) {
+ unsafePath = string(filepath.Separator) + unsafePath
+ cmd := exec.Command("chroot", root,
+ "readlink", "--canonicalize-missing", "--no-newline", unsafePath)
+ output, err := cmd.CombinedOutput()
+ if err != nil {
+ return "", err
+ }
+ expanded := string(output)
+ return filepath.Join(root, expanded), nil
+}
+```
+
+[go#20126]: https://github.com/golang/go/issues/20126
+
+### License ###
+
+The license of this project is the same as Go, which is a BSD 3-clause license
+available in the `LICENSE` file.
diff --git a/vendor/github.com/cyphar/filepath-securejoin/VERSION b/vendor/github.com/cyphar/filepath-securejoin/VERSION
new file mode 100644
index 000000000000..1f5f83047d3a
--- /dev/null
+++ b/vendor/github.com/cyphar/filepath-securejoin/VERSION
@@ -0,0 +1 @@
+0.2.1+dev
diff --git a/vendor/github.com/cyphar/filepath-securejoin/join.go b/vendor/github.com/cyphar/filepath-securejoin/join.go
new file mode 100644
index 000000000000..f20985479d4f
--- /dev/null
+++ b/vendor/github.com/cyphar/filepath-securejoin/join.go
@@ -0,0 +1,135 @@
+// Copyright (C) 2014-2015 Docker Inc & Go Authors. All rights reserved.
+// Copyright (C) 2017 SUSE LLC. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package securejoin is an implementation of the hopefully-soon-to-be-included
+// SecureJoin helper that is meant to be part of the "path/filepath" package.
+// The purpose of this project is to provide a PoC implementation to make the
+// SecureJoin proposal (https://github.com/golang/go/issues/20126) more
+// tangible.
+package securejoin
+
+import (
+ "bytes"
+ "fmt"
+ "os"
+ "path/filepath"
+ "strings"
+ "syscall"
+
+ "github.com/pkg/errors"
+)
+
+// ErrSymlinkLoop is returned by SecureJoinVFS when too many symlinks have been
+// evaluated in attempting to securely join the two given paths.
+var ErrSymlinkLoop = fmt.Errorf("SecureJoin: too many links")
+
+// IsNotExist tells you if err is an error that implies that either the path
+// accessed does not exist (or path components don't exist). This is
+// effectively a more broad version of os.IsNotExist.
+func IsNotExist(err error) bool {
+ // If it's a bone-fide ENOENT just bail.
+ if os.IsNotExist(errors.Cause(err)) {
+ return true
+ }
+
+ // Check that it's not actually an ENOTDIR, which in some cases is a more
+ // convoluted case of ENOENT (usually involving weird paths).
+ var errno error
+ switch err := errors.Cause(err).(type) {
+ case *os.PathError:
+ errno = err.Err
+ case *os.LinkError:
+ errno = err.Err
+ case *os.SyscallError:
+ errno = err.Err
+ }
+ return errno == syscall.ENOTDIR || errno == syscall.ENOENT
+}
+
+// SecureJoinVFS joins the two given path components (similar to Join) except
+// that the returned path is guaranteed to be scoped inside the provided root
+// path (when evaluated). Any symbolic links in the path are evaluated with the
+// given root treated as the root of the filesystem, similar to a chroot. The
+// filesystem state is evaluated through the given VFS interface (if nil, the
+// standard os.* family of functions are used).
+//
+// Note that the guarantees provided by this function only apply if the path
+// components in the returned string are not modified (in other words are not
+// replaced with symlinks on the filesystem) after this function has returned.
+// Such a symlink race is necessarily out-of-scope of SecureJoin.
+func SecureJoinVFS(root, unsafePath string, vfs VFS) (string, error) {
+ // Use the os.* VFS implementation if none was specified.
+ if vfs == nil {
+ vfs = osVFS{}
+ }
+
+ var path bytes.Buffer
+ n := 0
+ for unsafePath != "" {
+ if n > 255 {
+ return "", ErrSymlinkLoop
+ }
+
+ // Next path component, p.
+ i := strings.IndexRune(unsafePath, filepath.Separator)
+ var p string
+ if i == -1 {
+ p, unsafePath = unsafePath, ""
+ } else {
+ p, unsafePath = unsafePath[:i], unsafePath[i+1:]
+ }
+
+ // Create a cleaned path, using the lexical semantics of /../a, to
+ // create a "scoped" path component which can safely be joined to fullP
+ // for evaluation. At this point, path.String() doesn't contain any
+ // symlink components.
+ cleanP := filepath.Clean(string(filepath.Separator) + path.String() + p)
+ if cleanP == string(filepath.Separator) {
+ path.Reset()
+ continue
+ }
+ fullP := filepath.Clean(root + cleanP)
+
+ // Figure out whether the path is a symlink.
+ fi, err := vfs.Lstat(fullP)
+ if err != nil && !IsNotExist(err) {
+ return "", err
+ }
+ // Treat non-existent path components the same as non-symlinks (we
+ // can't do any better here).
+ if IsNotExist(err) || fi.Mode()&os.ModeSymlink == 0 {
+ path.WriteString(p)
+ path.WriteRune(filepath.Separator)
+ continue
+ }
+
+ // Only increment when we actually dereference a link.
+ n++
+
+ // It's a symlink, expand it by prepending it to the yet-unparsed path.
+ dest, err := vfs.Readlink(fullP)
+ if err != nil {
+ return "", err
+ }
+ // Absolute symlinks reset any work we've already done.
+ if filepath.IsAbs(dest) {
+ path.Reset()
+ }
+ unsafePath = dest + string(filepath.Separator) + unsafePath
+ }
+
+ // We have to clean path.String() here because it may contain '..'
+ // components that are entirely lexical, but would be misleading otherwise.
+ // And finally do a final clean to ensure that root is also lexically
+ // clean.
+ fullP := filepath.Clean(string(filepath.Separator) + path.String())
+ return filepath.Clean(root + fullP), nil
+}
+
+// SecureJoin is a wrapper around SecureJoinVFS that just uses the os.* library
+// of functions as the VFS. If in doubt, use this function over SecureJoinVFS.
+func SecureJoin(root, unsafePath string) (string, error) {
+ return SecureJoinVFS(root, unsafePath, nil)
+}
diff --git a/vendor/github.com/cyphar/filepath-securejoin/vendor.conf b/vendor/github.com/cyphar/filepath-securejoin/vendor.conf
new file mode 100644
index 000000000000..66bb574b955b
--- /dev/null
+++ b/vendor/github.com/cyphar/filepath-securejoin/vendor.conf
@@ -0,0 +1 @@
+github.com/pkg/errors v0.8.0
diff --git a/vendor/github.com/cyphar/filepath-securejoin/vfs.go b/vendor/github.com/cyphar/filepath-securejoin/vfs.go
new file mode 100644
index 000000000000..a82a5eae11eb
--- /dev/null
+++ b/vendor/github.com/cyphar/filepath-securejoin/vfs.go
@@ -0,0 +1,41 @@
+// Copyright (C) 2017 SUSE LLC. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package securejoin
+
+import "os"
+
+// In future this should be moved into a separate package, because now there
+// are several projects (umoci and go-mtree) that are using this sort of
+// interface.
+
+// VFS is the minimal interface necessary to use SecureJoinVFS. A nil VFS is
+// equivalent to using the standard os.* family of functions. This is mainly
+// used for the purposes of mock testing, but also can be used to otherwise use
+// SecureJoin with VFS-like system.
+type VFS interface {
+ // Lstat returns a FileInfo describing the named file. If the file is a
+ // symbolic link, the returned FileInfo describes the symbolic link. Lstat
+ // makes no attempt to follow the link. These semantics are identical to
+ // os.Lstat.
+ Lstat(name string) (os.FileInfo, error)
+
+ // Readlink returns the destination of the named symbolic link. These
+ // semantics are identical to os.Readlink.
+ Readlink(name string) (string, error)
+}
+
+// osVFS is the "nil" VFS, in that it just passes everything through to the os
+// module.
+type osVFS struct{}
+
+// Lstat returns a FileInfo describing the named file. If the file is a
+// symbolic link, the returned FileInfo describes the symbolic link. Lstat
+// makes no attempt to follow the link. These semantics are identical to
+// os.Lstat.
+func (o osVFS) Lstat(name string) (os.FileInfo, error) { return os.Lstat(name) }
+
+// Readlink returns the destination of the named symbolic link. These
+// semantics are identical to os.Readlink.
+func (o osVFS) Readlink(name string) (string, error) { return os.Readlink(name) }
diff --git a/vendor/github.com/docker/docker/pkg/parsers/parsers.go b/vendor/github.com/docker/docker/pkg/parsers/parsers.go
new file mode 100644
index 000000000000..acc897168f3c
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/parsers/parsers.go
@@ -0,0 +1,69 @@
+// Package parsers provides helper functions to parse and validate different type
+// of string. It can be hosts, unix addresses, tcp addresses, filters, kernel
+// operating system versions.
+package parsers
+
+import (
+ "fmt"
+ "strconv"
+ "strings"
+)
+
+// ParseKeyValueOpt parses and validates the specified string as a key/value pair (key=value)
+func ParseKeyValueOpt(opt string) (string, string, error) {
+ parts := strings.SplitN(opt, "=", 2)
+ if len(parts) != 2 {
+ return "", "", fmt.Errorf("Unable to parse key/value option: %s", opt)
+ }
+ return strings.TrimSpace(parts[0]), strings.TrimSpace(parts[1]), nil
+}
+
+// ParseUintList parses and validates the specified string as the value
+// found in some cgroup file (e.g. `cpuset.cpus`, `cpuset.mems`), which could be
+// one of the formats below. Note that duplicates are actually allowed in the
+// input string. It returns a `map[int]bool` with available elements from `val`
+// set to `true`.
+// Supported formats:
+// 7
+// 1-6
+// 0,3-4,7,8-10
+// 0-0,0,1-7
+// 03,1-3 <- this is gonna get parsed as [1,2,3]
+// 3,2,1
+// 0-2,3,1
+func ParseUintList(val string) (map[int]bool, error) {
+ if val == "" {
+ return map[int]bool{}, nil
+ }
+
+ availableInts := make(map[int]bool)
+ split := strings.Split(val, ",")
+ errInvalidFormat := fmt.Errorf("invalid format: %s", val)
+
+ for _, r := range split {
+ if !strings.Contains(r, "-") {
+ v, err := strconv.Atoi(r)
+ if err != nil {
+ return nil, errInvalidFormat
+ }
+ availableInts[v] = true
+ } else {
+ split := strings.SplitN(r, "-", 2)
+ min, err := strconv.Atoi(split[0])
+ if err != nil {
+ return nil, errInvalidFormat
+ }
+ max, err := strconv.Atoi(split[1])
+ if err != nil {
+ return nil, errInvalidFormat
+ }
+ if max < min {
+ return nil, errInvalidFormat
+ }
+ for i := min; i <= max; i++ {
+ availableInts[i] = true
+ }
+ }
+ }
+ return availableInts, nil
+}
diff --git a/vendor/github.com/docker/docker/pkg/symlink/README.md b/vendor/github.com/docker/docker/pkg/symlink/README.md
deleted file mode 100644
index 8dba54fd089d..000000000000
--- a/vendor/github.com/docker/docker/pkg/symlink/README.md
+++ /dev/null
@@ -1,6 +0,0 @@
-Package symlink implements EvalSymlinksInScope which is an extension of filepath.EvalSymlinks,
-as well as a Windows long-path aware version of filepath.EvalSymlinks
-from the [Go standard library](https://golang.org/pkg/path/filepath).
-
-The code from filepath.EvalSymlinks has been adapted in fs.go.
-Please read the LICENSE.BSD file that governs fs.go and LICENSE.APACHE for fs_test.go.
diff --git a/vendor/github.com/docker/docker/pkg/symlink/fs.go b/vendor/github.com/docker/docker/pkg/symlink/fs.go
deleted file mode 100644
index 52fb9a691b35..000000000000
--- a/vendor/github.com/docker/docker/pkg/symlink/fs.go
+++ /dev/null
@@ -1,144 +0,0 @@
-// Copyright 2012 The Go Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE.BSD file.
-
-// This code is a modified version of path/filepath/symlink.go from the Go standard library.
-
-package symlink
-
-import (
- "bytes"
- "errors"
- "os"
- "path/filepath"
- "strings"
-
- "github.com/docker/docker/pkg/system"
-)
-
-// FollowSymlinkInScope is a wrapper around evalSymlinksInScope that returns an
-// absolute path. This function handles paths in a platform-agnostic manner.
-func FollowSymlinkInScope(path, root string) (string, error) {
- path, err := filepath.Abs(filepath.FromSlash(path))
- if err != nil {
- return "", err
- }
- root, err = filepath.Abs(filepath.FromSlash(root))
- if err != nil {
- return "", err
- }
- return evalSymlinksInScope(path, root)
-}
-
-// evalSymlinksInScope will evaluate symlinks in `path` within a scope `root` and return
-// a result guaranteed to be contained within the scope `root`, at the time of the call.
-// Symlinks in `root` are not evaluated and left as-is.
-// Errors encountered while attempting to evaluate symlinks in path will be returned.
-// Non-existing paths are valid and do not constitute an error.
-// `path` has to contain `root` as a prefix, or else an error will be returned.
-// Trying to break out from `root` does not constitute an error.
-//
-// Example:
-// If /foo/bar -> /outside,
-// FollowSymlinkInScope("/foo/bar", "/foo") == "/foo/outside" instead of "/outside"
-//
-// IMPORTANT: it is the caller's responsibility to call evalSymlinksInScope *after* relevant symlinks
-// are created and not to create subsequently, additional symlinks that could potentially make a
-// previously-safe path, unsafe. Example: if /foo/bar does not exist, evalSymlinksInScope("/foo/bar", "/foo")
-// would return "/foo/bar". If one makes /foo/bar a symlink to /baz subsequently, then "/foo/bar" should
-// no longer be considered safely contained in "/foo".
-func evalSymlinksInScope(path, root string) (string, error) {
- root = filepath.Clean(root)
- if path == root {
- return path, nil
- }
- if !strings.HasPrefix(path, root) {
- return "", errors.New("evalSymlinksInScope: " + path + " is not in " + root)
- }
- const maxIter = 255
- originalPath := path
- // given root of "/a" and path of "/a/b/../../c" we want path to be "/b/../../c"
- path = path[len(root):]
- if root == string(filepath.Separator) {
- path = string(filepath.Separator) + path
- }
- if !strings.HasPrefix(path, string(filepath.Separator)) {
- return "", errors.New("evalSymlinksInScope: " + path + " is not in " + root)
- }
- path = filepath.Clean(path)
- // consume path by taking each frontmost path element,
- // expanding it if it's a symlink, and appending it to b
- var b bytes.Buffer
- // b here will always be considered to be the "current absolute path inside
- // root" when we append paths to it, we also append a slash and use
- // filepath.Clean after the loop to trim the trailing slash
- for n := 0; path != ""; n++ {
- if n > maxIter {
- return "", errors.New("evalSymlinksInScope: too many links in " + originalPath)
- }
-
- // find next path component, p
- i := strings.IndexRune(path, filepath.Separator)
- var p string
- if i == -1 {
- p, path = path, ""
- } else {
- p, path = path[:i], path[i+1:]
- }
-
- if p == "" {
- continue
- }
-
- // this takes a b.String() like "b/../" and a p like "c" and turns it
- // into "/b/../c" which then gets filepath.Cleaned into "/c" and then
- // root gets prepended and we Clean again (to remove any trailing slash
- // if the first Clean gave us just "/")
- cleanP := filepath.Clean(string(filepath.Separator) + b.String() + p)
- if isDriveOrRoot(cleanP) {
- // never Lstat "/" itself, or drive letters on Windows
- b.Reset()
- continue
- }
- fullP := filepath.Clean(root + cleanP)
-
- fi, err := os.Lstat(fullP)
- if os.IsNotExist(err) {
- // if p does not exist, accept it
- b.WriteString(p)
- b.WriteRune(filepath.Separator)
- continue
- }
- if err != nil {
- return "", err
- }
- if fi.Mode()&os.ModeSymlink == 0 {
- b.WriteString(p)
- b.WriteRune(filepath.Separator)
- continue
- }
-
- // it's a symlink, put it at the front of path
- dest, err := os.Readlink(fullP)
- if err != nil {
- return "", err
- }
- if system.IsAbs(dest) {
- b.Reset()
- }
- path = dest + string(filepath.Separator) + path
- }
-
- // see note above on "fullP := ..." for why this is double-cleaned and
- // what's happening here
- return filepath.Clean(root + filepath.Clean(string(filepath.Separator)+b.String())), nil
-}
-
-// EvalSymlinks returns the path name after the evaluation of any symbolic
-// links.
-// If path is relative the result will be relative to the current directory,
-// unless one of the components is an absolute symbolic link.
-// This version has been updated to support long paths prepended with `\\?\`.
-func EvalSymlinks(path string) (string, error) {
- return evalSymlinks(path)
-}
diff --git a/vendor/github.com/docker/docker/pkg/symlink/fs_unix.go b/vendor/github.com/docker/docker/pkg/symlink/fs_unix.go
deleted file mode 100644
index 22708273d604..000000000000
--- a/vendor/github.com/docker/docker/pkg/symlink/fs_unix.go
+++ /dev/null
@@ -1,15 +0,0 @@
-// +build !windows
-
-package symlink
-
-import (
- "path/filepath"
-)
-
-func evalSymlinks(path string) (string, error) {
- return filepath.EvalSymlinks(path)
-}
-
-func isDriveOrRoot(p string) bool {
- return p == string(filepath.Separator)
-}
diff --git a/vendor/github.com/docker/docker/pkg/symlink/fs_windows.go b/vendor/github.com/docker/docker/pkg/symlink/fs_windows.go
deleted file mode 100644
index 31523ade923a..000000000000
--- a/vendor/github.com/docker/docker/pkg/symlink/fs_windows.go
+++ /dev/null
@@ -1,169 +0,0 @@
-package symlink
-
-import (
- "bytes"
- "errors"
- "os"
- "path/filepath"
- "strings"
-
- "github.com/docker/docker/pkg/longpath"
- "golang.org/x/sys/windows"
-)
-
-func toShort(path string) (string, error) {
- p, err := windows.UTF16FromString(path)
- if err != nil {
- return "", err
- }
- b := p // GetShortPathName says we can reuse buffer
- n, err := windows.GetShortPathName(&p[0], &b[0], uint32(len(b)))
- if err != nil {
- return "", err
- }
- if n > uint32(len(b)) {
- b = make([]uint16, n)
- if _, err = windows.GetShortPathName(&p[0], &b[0], uint32(len(b))); err != nil {
- return "", err
- }
- }
- return windows.UTF16ToString(b), nil
-}
-
-func toLong(path string) (string, error) {
- p, err := windows.UTF16FromString(path)
- if err != nil {
- return "", err
- }
- b := p // GetLongPathName says we can reuse buffer
- n, err := windows.GetLongPathName(&p[0], &b[0], uint32(len(b)))
- if err != nil {
- return "", err
- }
- if n > uint32(len(b)) {
- b = make([]uint16, n)
- n, err = windows.GetLongPathName(&p[0], &b[0], uint32(len(b)))
- if err != nil {
- return "", err
- }
- }
- b = b[:n]
- return windows.UTF16ToString(b), nil
-}
-
-func evalSymlinks(path string) (string, error) {
- path, err := walkSymlinks(path)
- if err != nil {
- return "", err
- }
-
- p, err := toShort(path)
- if err != nil {
- return "", err
- }
- p, err = toLong(p)
- if err != nil {
- return "", err
- }
- // windows.GetLongPathName does not change the case of the drive letter,
- // but the result of EvalSymlinks must be unique, so we have
- // EvalSymlinks(`c:\a`) == EvalSymlinks(`C:\a`).
- // Make drive letter upper case.
- if len(p) >= 2 && p[1] == ':' && 'a' <= p[0] && p[0] <= 'z' {
- p = string(p[0]+'A'-'a') + p[1:]
- } else if len(p) >= 6 && p[5] == ':' && 'a' <= p[4] && p[4] <= 'z' {
- p = p[:3] + string(p[4]+'A'-'a') + p[5:]
- }
- return filepath.Clean(p), nil
-}
-
-const utf8RuneSelf = 0x80
-
-func walkSymlinks(path string) (string, error) {
- const maxIter = 255
- originalPath := path
- // consume path by taking each frontmost path element,
- // expanding it if it's a symlink, and appending it to b
- var b bytes.Buffer
- for n := 0; path != ""; n++ {
- if n > maxIter {
- return "", errors.New("EvalSymlinks: too many links in " + originalPath)
- }
-
- // A path beginning with `\\?\` represents the root, so automatically
- // skip that part and begin processing the next segment.
- if strings.HasPrefix(path, longpath.Prefix) {
- b.WriteString(longpath.Prefix)
- path = path[4:]
- continue
- }
-
- // find next path component, p
- var i = -1
- for j, c := range path {
- if c < utf8RuneSelf && os.IsPathSeparator(uint8(c)) {
- i = j
- break
- }
- }
- var p string
- if i == -1 {
- p, path = path, ""
- } else {
- p, path = path[:i], path[i+1:]
- }
-
- if p == "" {
- if b.Len() == 0 {
- // must be absolute path
- b.WriteRune(filepath.Separator)
- }
- continue
- }
-
- // If this is the first segment after the long path prefix, accept the
- // current segment as a volume root or UNC share and move on to the next.
- if b.String() == longpath.Prefix {
- b.WriteString(p)
- b.WriteRune(filepath.Separator)
- continue
- }
-
- fi, err := os.Lstat(b.String() + p)
- if err != nil {
- return "", err
- }
- if fi.Mode()&os.ModeSymlink == 0 {
- b.WriteString(p)
- if path != "" || (b.Len() == 2 && len(p) == 2 && p[1] == ':') {
- b.WriteRune(filepath.Separator)
- }
- continue
- }
-
- // it's a symlink, put it at the front of path
- dest, err := os.Readlink(b.String() + p)
- if err != nil {
- return "", err
- }
- if filepath.IsAbs(dest) || os.IsPathSeparator(dest[0]) {
- b.Reset()
- }
- path = dest + string(filepath.Separator) + path
- }
- return filepath.Clean(b.String()), nil
-}
-
-func isDriveOrRoot(p string) bool {
- if p == string(filepath.Separator) {
- return true
- }
-
- length := len(p)
- if length >= 2 {
- if p[length-1] == ':' && (('a' <= p[length-2] && p[length-2] <= 'z') || ('A' <= p[length-2] && p[length-2] <= 'Z')) {
- return true
- }
- }
- return false
-}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/README.md b/vendor/github.com/docker/docker/pkg/sysinfo/README.md
new file mode 100644
index 000000000000..c1530cef0da6
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/README.md
@@ -0,0 +1 @@
+SysInfo stores information about which features a kernel supports.
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go
new file mode 100644
index 000000000000..aeb1a3a80405
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu.go
@@ -0,0 +1,12 @@
+// +build !linux,!windows
+
+package sysinfo
+
+import (
+ "runtime"
+)
+
+// NumCPU returns the number of CPUs
+func NumCPU() int {
+ return runtime.NumCPU()
+}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go
new file mode 100644
index 000000000000..f1d2d9db30b0
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_linux.go
@@ -0,0 +1,44 @@
+// +build linux
+
+package sysinfo
+
+import (
+ "runtime"
+ "unsafe"
+
+ "golang.org/x/sys/unix"
+)
+
+// numCPU queries the system for the count of threads available
+// for use to this process.
+//
+// Issues two syscalls.
+// Returns 0 on errors. Use |runtime.NumCPU| in that case.
+func numCPU() int {
+ // Gets the affinity mask for a process: The very one invoking this function.
+ pid, _, _ := unix.RawSyscall(unix.SYS_GETPID, 0, 0, 0)
+
+ var mask [1024 / 64]uintptr
+ _, _, err := unix.RawSyscall(unix.SYS_SCHED_GETAFFINITY, pid, uintptr(len(mask)*8), uintptr(unsafe.Pointer(&mask[0])))
+ if err != 0 {
+ return 0
+ }
+
+ // For every available thread a bit is set in the mask.
+ ncpu := 0
+ for _, e := range mask {
+ if e == 0 {
+ continue
+ }
+ ncpu += int(popcnt(uint64(e)))
+ }
+ return ncpu
+}
+
+// NumCPU returns the number of CPUs which are currently online
+func NumCPU() int {
+ if ncpu := numCPU(); ncpu > 0 {
+ return ncpu
+ }
+ return runtime.NumCPU()
+}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go
new file mode 100644
index 000000000000..1d89dd550307
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/numcpu_windows.go
@@ -0,0 +1,37 @@
+// +build windows
+
+package sysinfo
+
+import (
+ "runtime"
+ "unsafe"
+
+ "golang.org/x/sys/windows"
+)
+
+var (
+ kernel32 = windows.NewLazySystemDLL("kernel32.dll")
+ getCurrentProcess = kernel32.NewProc("GetCurrentProcess")
+ getProcessAffinityMask = kernel32.NewProc("GetProcessAffinityMask")
+)
+
+func numCPU() int {
+ // Gets the affinity mask for a process
+ var mask, sysmask uintptr
+ currentProcess, _, _ := getCurrentProcess.Call()
+ ret, _, _ := getProcessAffinityMask.Call(currentProcess, uintptr(unsafe.Pointer(&mask)), uintptr(unsafe.Pointer(&sysmask)))
+ if ret == 0 {
+ return 0
+ }
+ // For every available thread a bit is set in the mask.
+ ncpu := int(popcnt(uint64(mask)))
+ return ncpu
+}
+
+// NumCPU returns the number of CPUs which are currently online
+func NumCPU() int {
+ if ncpu := numCPU(); ncpu > 0 {
+ return ncpu
+ }
+ return runtime.NumCPU()
+}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go
new file mode 100644
index 000000000000..f046de4b1698
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo.go
@@ -0,0 +1,144 @@
+package sysinfo
+
+import "github.com/docker/docker/pkg/parsers"
+
+// SysInfo stores information about which features a kernel supports.
+// TODO Windows: Factor out platform specific capabilities.
+type SysInfo struct {
+ // Whether the kernel supports AppArmor or not
+ AppArmor bool
+ // Whether the kernel supports Seccomp or not
+ Seccomp bool
+
+ cgroupMemInfo
+ cgroupCPUInfo
+ cgroupBlkioInfo
+ cgroupCpusetInfo
+ cgroupPids
+
+ // Whether IPv4 forwarding is supported or not, if this was disabled, networking will not work
+ IPv4ForwardingDisabled bool
+
+ // Whether bridge-nf-call-iptables is supported or not
+ BridgeNFCallIPTablesDisabled bool
+
+ // Whether bridge-nf-call-ip6tables is supported or not
+ BridgeNFCallIP6TablesDisabled bool
+
+ // Whether the cgroup has the mountpoint of "devices" or not
+ CgroupDevicesEnabled bool
+}
+
+type cgroupMemInfo struct {
+ // Whether memory limit is supported or not
+ MemoryLimit bool
+
+ // Whether swap limit is supported or not
+ SwapLimit bool
+
+ // Whether soft limit is supported or not
+ MemoryReservation bool
+
+ // Whether OOM killer disable is supported or not
+ OomKillDisable bool
+
+ // Whether memory swappiness is supported or not
+ MemorySwappiness bool
+
+ // Whether kernel memory limit is supported or not
+ KernelMemory bool
+}
+
+type cgroupCPUInfo struct {
+ // Whether CPU shares is supported or not
+ CPUShares bool
+
+ // Whether CPU CFS(Completely Fair Scheduler) period is supported or not
+ CPUCfsPeriod bool
+
+ // Whether CPU CFS(Completely Fair Scheduler) quota is supported or not
+ CPUCfsQuota bool
+
+ // Whether CPU real-time period is supported or not
+ CPURealtimePeriod bool
+
+ // Whether CPU real-time runtime is supported or not
+ CPURealtimeRuntime bool
+}
+
+type cgroupBlkioInfo struct {
+ // Whether Block IO weight is supported or not
+ BlkioWeight bool
+
+ // Whether Block IO weight_device is supported or not
+ BlkioWeightDevice bool
+
+ // Whether Block IO read limit in bytes per second is supported or not
+ BlkioReadBpsDevice bool
+
+ // Whether Block IO write limit in bytes per second is supported or not
+ BlkioWriteBpsDevice bool
+
+ // Whether Block IO read limit in IO per second is supported or not
+ BlkioReadIOpsDevice bool
+
+ // Whether Block IO write limit in IO per second is supported or not
+ BlkioWriteIOpsDevice bool
+}
+
+type cgroupCpusetInfo struct {
+ // Whether Cpuset is supported or not
+ Cpuset bool
+
+ // Available Cpuset's cpus
+ Cpus string
+
+ // Available Cpuset's memory nodes
+ Mems string
+}
+
+type cgroupPids struct {
+ // Whether Pids Limit is supported or not
+ PidsLimit bool
+}
+
+// IsCpusetCpusAvailable returns `true` if the provided string set is contained
+// in cgroup's cpuset.cpus set, `false` otherwise.
+// If error is not nil a parsing error occurred.
+func (c cgroupCpusetInfo) IsCpusetCpusAvailable(provided string) (bool, error) {
+ return isCpusetListAvailable(provided, c.Cpus)
+}
+
+// IsCpusetMemsAvailable returns `true` if the provided string set is contained
+// in cgroup's cpuset.mems set, `false` otherwise.
+// If error is not nil a parsing error occurred.
+func (c cgroupCpusetInfo) IsCpusetMemsAvailable(provided string) (bool, error) {
+ return isCpusetListAvailable(provided, c.Mems)
+}
+
+func isCpusetListAvailable(provided, available string) (bool, error) {
+ parsedProvided, err := parsers.ParseUintList(provided)
+ if err != nil {
+ return false, err
+ }
+ parsedAvailable, err := parsers.ParseUintList(available)
+ if err != nil {
+ return false, err
+ }
+ for k := range parsedProvided {
+ if !parsedAvailable[k] {
+ return false, nil
+ }
+ }
+ return true, nil
+}
+
+// Returns bit count of 1, used by NumCPU
+func popcnt(x uint64) (n byte) {
+ x -= (x >> 1) & 0x5555555555555555
+ x = (x>>2)&0x3333333333333333 + x&0x3333333333333333
+ x += x >> 4
+ x &= 0x0f0f0f0f0f0f0f0f
+ x *= 0x0101010101010101
+ return byte(x >> 56)
+}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go
new file mode 100644
index 000000000000..471f786a70ad
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_linux.go
@@ -0,0 +1,254 @@
+package sysinfo
+
+import (
+ "fmt"
+ "io/ioutil"
+ "os"
+ "path"
+ "strings"
+
+ "github.com/opencontainers/runc/libcontainer/cgroups"
+ "github.com/sirupsen/logrus"
+ "golang.org/x/sys/unix"
+)
+
+func findCgroupMountpoints() (map[string]string, error) {
+ cgMounts, err := cgroups.GetCgroupMounts(false)
+ if err != nil {
+ return nil, fmt.Errorf("Failed to parse cgroup information: %v", err)
+ }
+ mps := make(map[string]string)
+ for _, m := range cgMounts {
+ for _, ss := range m.Subsystems {
+ mps[ss] = m.Mountpoint
+ }
+ }
+ return mps, nil
+}
+
+// New returns a new SysInfo, using the filesystem to detect which features
+// the kernel supports. If `quiet` is `false` warnings are printed in logs
+// whenever an error occurs or misconfigurations are present.
+func New(quiet bool) *SysInfo {
+ sysInfo := &SysInfo{}
+ cgMounts, err := findCgroupMountpoints()
+ if err != nil {
+ logrus.Warnf("Failed to parse cgroup information: %v", err)
+ } else {
+ sysInfo.cgroupMemInfo = checkCgroupMem(cgMounts, quiet)
+ sysInfo.cgroupCPUInfo = checkCgroupCPU(cgMounts, quiet)
+ sysInfo.cgroupBlkioInfo = checkCgroupBlkioInfo(cgMounts, quiet)
+ sysInfo.cgroupCpusetInfo = checkCgroupCpusetInfo(cgMounts, quiet)
+ sysInfo.cgroupPids = checkCgroupPids(quiet)
+ }
+
+ _, ok := cgMounts["devices"]
+ sysInfo.CgroupDevicesEnabled = ok
+
+ sysInfo.IPv4ForwardingDisabled = !readProcBool("/proc/sys/net/ipv4/ip_forward")
+ sysInfo.BridgeNFCallIPTablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-iptables")
+ sysInfo.BridgeNFCallIP6TablesDisabled = !readProcBool("/proc/sys/net/bridge/bridge-nf-call-ip6tables")
+
+ // Check if AppArmor is supported.
+ if _, err := os.Stat("/sys/kernel/security/apparmor"); !os.IsNotExist(err) {
+ sysInfo.AppArmor = true
+ }
+
+ // Check if Seccomp is supported, via CONFIG_SECCOMP.
+ if err := unix.Prctl(unix.PR_GET_SECCOMP, 0, 0, 0, 0); err != unix.EINVAL {
+ // Make sure the kernel has CONFIG_SECCOMP_FILTER.
+ if err := unix.Prctl(unix.PR_SET_SECCOMP, unix.SECCOMP_MODE_FILTER, 0, 0, 0); err != unix.EINVAL {
+ sysInfo.Seccomp = true
+ }
+ }
+
+ return sysInfo
+}
+
+// checkCgroupMem reads the memory information from the memory cgroup mount point.
+func checkCgroupMem(cgMounts map[string]string, quiet bool) cgroupMemInfo {
+ mountPoint, ok := cgMounts["memory"]
+ if !ok {
+ if !quiet {
+ logrus.Warn("Your kernel does not support cgroup memory limit")
+ }
+ return cgroupMemInfo{}
+ }
+
+ swapLimit := cgroupEnabled(mountPoint, "memory.memsw.limit_in_bytes")
+ if !quiet && !swapLimit {
+ logrus.Warn("Your kernel does not support swap memory limit")
+ }
+ memoryReservation := cgroupEnabled(mountPoint, "memory.soft_limit_in_bytes")
+ if !quiet && !memoryReservation {
+ logrus.Warn("Your kernel does not support memory reservation")
+ }
+ oomKillDisable := cgroupEnabled(mountPoint, "memory.oom_control")
+ if !quiet && !oomKillDisable {
+ logrus.Warn("Your kernel does not support oom control")
+ }
+ memorySwappiness := cgroupEnabled(mountPoint, "memory.swappiness")
+ if !quiet && !memorySwappiness {
+ logrus.Warn("Your kernel does not support memory swappiness")
+ }
+ kernelMemory := cgroupEnabled(mountPoint, "memory.kmem.limit_in_bytes")
+ if !quiet && !kernelMemory {
+ logrus.Warn("Your kernel does not support kernel memory limit")
+ }
+
+ return cgroupMemInfo{
+ MemoryLimit: true,
+ SwapLimit: swapLimit,
+ MemoryReservation: memoryReservation,
+ OomKillDisable: oomKillDisable,
+ MemorySwappiness: memorySwappiness,
+ KernelMemory: kernelMemory,
+ }
+}
+
+// checkCgroupCPU reads the cpu information from the cpu cgroup mount point.
+func checkCgroupCPU(cgMounts map[string]string, quiet bool) cgroupCPUInfo {
+ mountPoint, ok := cgMounts["cpu"]
+ if !ok {
+ if !quiet {
+ logrus.Warn("Unable to find cpu cgroup in mounts")
+ }
+ return cgroupCPUInfo{}
+ }
+
+ cpuShares := cgroupEnabled(mountPoint, "cpu.shares")
+ if !quiet && !cpuShares {
+ logrus.Warn("Your kernel does not support cgroup cpu shares")
+ }
+
+ cpuCfsPeriod := cgroupEnabled(mountPoint, "cpu.cfs_period_us")
+ if !quiet && !cpuCfsPeriod {
+ logrus.Warn("Your kernel does not support cgroup cfs period")
+ }
+
+ cpuCfsQuota := cgroupEnabled(mountPoint, "cpu.cfs_quota_us")
+ if !quiet && !cpuCfsQuota {
+ logrus.Warn("Your kernel does not support cgroup cfs quotas")
+ }
+
+ cpuRealtimePeriod := cgroupEnabled(mountPoint, "cpu.rt_period_us")
+ if !quiet && !cpuRealtimePeriod {
+ logrus.Warn("Your kernel does not support cgroup rt period")
+ }
+
+ cpuRealtimeRuntime := cgroupEnabled(mountPoint, "cpu.rt_runtime_us")
+ if !quiet && !cpuRealtimeRuntime {
+ logrus.Warn("Your kernel does not support cgroup rt runtime")
+ }
+
+ return cgroupCPUInfo{
+ CPUShares: cpuShares,
+ CPUCfsPeriod: cpuCfsPeriod,
+ CPUCfsQuota: cpuCfsQuota,
+ CPURealtimePeriod: cpuRealtimePeriod,
+ CPURealtimeRuntime: cpuRealtimeRuntime,
+ }
+}
+
+// checkCgroupBlkioInfo reads the blkio information from the blkio cgroup mount point.
+func checkCgroupBlkioInfo(cgMounts map[string]string, quiet bool) cgroupBlkioInfo {
+ mountPoint, ok := cgMounts["blkio"]
+ if !ok {
+ if !quiet {
+ logrus.Warn("Unable to find blkio cgroup in mounts")
+ }
+ return cgroupBlkioInfo{}
+ }
+
+ weight := cgroupEnabled(mountPoint, "blkio.weight")
+ if !quiet && !weight {
+ logrus.Warn("Your kernel does not support cgroup blkio weight")
+ }
+
+ weightDevice := cgroupEnabled(mountPoint, "blkio.weight_device")
+ if !quiet && !weightDevice {
+ logrus.Warn("Your kernel does not support cgroup blkio weight_device")
+ }
+
+ readBpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.read_bps_device")
+ if !quiet && !readBpsDevice {
+ logrus.Warn("Your kernel does not support cgroup blkio throttle.read_bps_device")
+ }
+
+ writeBpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.write_bps_device")
+ if !quiet && !writeBpsDevice {
+ logrus.Warn("Your kernel does not support cgroup blkio throttle.write_bps_device")
+ }
+ readIOpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.read_iops_device")
+ if !quiet && !readIOpsDevice {
+ logrus.Warn("Your kernel does not support cgroup blkio throttle.read_iops_device")
+ }
+
+ writeIOpsDevice := cgroupEnabled(mountPoint, "blkio.throttle.write_iops_device")
+ if !quiet && !writeIOpsDevice {
+ logrus.Warn("Your kernel does not support cgroup blkio throttle.write_iops_device")
+ }
+ return cgroupBlkioInfo{
+ BlkioWeight: weight,
+ BlkioWeightDevice: weightDevice,
+ BlkioReadBpsDevice: readBpsDevice,
+ BlkioWriteBpsDevice: writeBpsDevice,
+ BlkioReadIOpsDevice: readIOpsDevice,
+ BlkioWriteIOpsDevice: writeIOpsDevice,
+ }
+}
+
+// checkCgroupCpusetInfo reads the cpuset information from the cpuset cgroup mount point.
+func checkCgroupCpusetInfo(cgMounts map[string]string, quiet bool) cgroupCpusetInfo {
+ mountPoint, ok := cgMounts["cpuset"]
+ if !ok {
+ if !quiet {
+ logrus.Warn("Unable to find cpuset cgroup in mounts")
+ }
+ return cgroupCpusetInfo{}
+ }
+
+ cpus, err := ioutil.ReadFile(path.Join(mountPoint, "cpuset.cpus"))
+ if err != nil {
+ return cgroupCpusetInfo{}
+ }
+
+ mems, err := ioutil.ReadFile(path.Join(mountPoint, "cpuset.mems"))
+ if err != nil {
+ return cgroupCpusetInfo{}
+ }
+
+ return cgroupCpusetInfo{
+ Cpuset: true,
+ Cpus: strings.TrimSpace(string(cpus)),
+ Mems: strings.TrimSpace(string(mems)),
+ }
+}
+
+// checkCgroupPids reads the pids information from the pids cgroup mount point.
+func checkCgroupPids(quiet bool) cgroupPids {
+ _, err := cgroups.FindCgroupMountpoint("pids")
+ if err != nil {
+ if !quiet {
+ logrus.Warn(err)
+ }
+ return cgroupPids{}
+ }
+
+ return cgroupPids{
+ PidsLimit: true,
+ }
+}
+
+func cgroupEnabled(mountPoint, name string) bool {
+ _, err := os.Stat(path.Join(mountPoint, name))
+ return err == nil
+}
+
+func readProcBool(path string) bool {
+ val, err := ioutil.ReadFile(path)
+ if err != nil {
+ return false
+ }
+ return strings.TrimSpace(string(val)) == "1"
+}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_solaris.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_solaris.go
new file mode 100644
index 000000000000..c858d57e0895
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_solaris.go
@@ -0,0 +1,121 @@
+// +build solaris,cgo
+
+package sysinfo
+
+import (
+ "bytes"
+ "os/exec"
+ "strconv"
+ "strings"
+)
+
+/*
+#cgo LDFLAGS: -llgrp
+#include
+#include
+#include
+int getLgrpCount() {
+ lgrp_cookie_t lgrpcookie = LGRP_COOKIE_NONE;
+ uint_t nlgrps;
+
+ if ((lgrpcookie = lgrp_init(LGRP_VIEW_OS)) == LGRP_COOKIE_NONE) {
+ return -1;
+ }
+ nlgrps = lgrp_nlgrps(lgrpcookie);
+ return nlgrps;
+}
+*/
+import "C"
+
+// IsCPUSharesAvailable returns whether CPUShares setting is supported.
+// We need FSS to be set as default scheduling class to support CPU Shares
+func IsCPUSharesAvailable() bool {
+ cmd := exec.Command("/usr/sbin/dispadmin", "-d")
+ outBuf := new(bytes.Buffer)
+ errBuf := new(bytes.Buffer)
+ cmd.Stderr = errBuf
+ cmd.Stdout = outBuf
+
+ if err := cmd.Run(); err != nil {
+ return false
+ }
+ return (strings.Contains(outBuf.String(), "FSS"))
+}
+
+// New returns a new SysInfo, using the filesystem to detect which features
+// the kernel supports.
+//NOTE Solaris: If we change the below capabilities be sure
+// to update verifyPlatformContainerSettings() in daemon_solaris.go
+func New(quiet bool) *SysInfo {
+ sysInfo := &SysInfo{}
+ sysInfo.cgroupMemInfo = setCgroupMem(quiet)
+ sysInfo.cgroupCPUInfo = setCgroupCPU(quiet)
+ sysInfo.cgroupBlkioInfo = setCgroupBlkioInfo(quiet)
+ sysInfo.cgroupCpusetInfo = setCgroupCPUsetInfo(quiet)
+
+ sysInfo.IPv4ForwardingDisabled = false
+
+ sysInfo.AppArmor = false
+
+ return sysInfo
+}
+
+// setCgroupMem reads the memory information for Solaris.
+func setCgroupMem(quiet bool) cgroupMemInfo {
+
+ return cgroupMemInfo{
+ MemoryLimit: true,
+ SwapLimit: true,
+ MemoryReservation: false,
+ OomKillDisable: false,
+ MemorySwappiness: false,
+ KernelMemory: false,
+ }
+}
+
+// setCgroupCPU reads the cpu information for Solaris.
+func setCgroupCPU(quiet bool) cgroupCPUInfo {
+
+ return cgroupCPUInfo{
+ CPUShares: true,
+ CPUCfsPeriod: false,
+ CPUCfsQuota: true,
+ CPURealtimePeriod: false,
+ CPURealtimeRuntime: false,
+ }
+}
+
+// blkio switches are not supported in Solaris.
+func setCgroupBlkioInfo(quiet bool) cgroupBlkioInfo {
+
+ return cgroupBlkioInfo{
+ BlkioWeight: false,
+ BlkioWeightDevice: false,
+ }
+}
+
+// setCgroupCPUsetInfo reads the cpuset information for Solaris.
+func setCgroupCPUsetInfo(quiet bool) cgroupCpusetInfo {
+
+ return cgroupCpusetInfo{
+ Cpuset: true,
+ Cpus: getCPUCount(),
+ Mems: getLgrpCount(),
+ }
+}
+
+func getCPUCount() string {
+ ncpus := C.sysconf(C._SC_NPROCESSORS_ONLN)
+ if ncpus <= 0 {
+ return ""
+ }
+ return strconv.FormatInt(int64(ncpus), 16)
+}
+
+func getLgrpCount() string {
+ nlgrps := C.getLgrpCount()
+ if nlgrps <= 0 {
+ return ""
+ }
+ return strconv.FormatInt(int64(nlgrps), 16)
+}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go
new file mode 100644
index 000000000000..45f3ef1c65f9
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_unix.go
@@ -0,0 +1,9 @@
+// +build !linux,!solaris,!windows
+
+package sysinfo
+
+// New returns an empty SysInfo for non linux nor solaris for now.
+func New(quiet bool) *SysInfo {
+ sysInfo := &SysInfo{}
+ return sysInfo
+}
diff --git a/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go
new file mode 100644
index 000000000000..4e6255bc5928
--- /dev/null
+++ b/vendor/github.com/docker/docker/pkg/sysinfo/sysinfo_windows.go
@@ -0,0 +1,9 @@
+// +build windows
+
+package sysinfo
+
+// New returns an empty SysInfo for windows for now.
+func New(quiet bool) *SysInfo {
+ sysInfo := &SysInfo{}
+ return sysInfo
+}
diff --git a/vendor/github.com/go-openapi/spec/expander.go b/vendor/github.com/go-openapi/spec/expander.go
index b4429a21c825..5054a7be670d 100644
--- a/vendor/github.com/go-openapi/spec/expander.go
+++ b/vendor/github.com/go-openapi/spec/expander.go
@@ -20,6 +20,7 @@ import (
"log"
"net/url"
"os"
+ "path"
"path/filepath"
"reflect"
"strings"
@@ -83,21 +84,43 @@ func (s *simpleCache) Set(uri string, data interface{}) {
// ResolveRefWithBase resolves a reference against a context root with preservation of base path
func ResolveRefWithBase(root interface{}, ref *Ref, opts *ExpandOptions) (*Schema, error) {
- resolver, err := defaultSchemaLoader(root, nil, opts, nil)
+ resolver, err := defaultSchemaLoader(root, opts, nil)
if err != nil {
return nil, err
}
+ specBasePath := ""
+ if opts != nil && opts.RelativeBase != "" {
+ specBasePath, _ = absPath(opts.RelativeBase)
+ }
result := new(Schema)
- if err := resolver.Resolve(ref, result); err != nil {
+ if err := resolver.Resolve(ref, result, specBasePath); err != nil {
return nil, err
}
return result, nil
}
// ResolveRef resolves a reference against a context root
+// ref is guaranteed to be in root (no need to go to external files)
+// ResolveRef is ONLY called from the code generation module
func ResolveRef(root interface{}, ref *Ref) (*Schema, error) {
- return ResolveRefWithBase(root, ref, nil)
+ res, _, err := ref.GetPointer().Get(root)
+ if err != nil {
+ panic(err)
+ }
+ switch sch := res.(type) {
+ case Schema:
+ return &sch, nil
+ case *Schema:
+ return sch, nil
+ case map[string]interface{}:
+ b, _ := json.Marshal(sch)
+ newSch := new(Schema)
+ json.Unmarshal(b, newSch)
+ return newSch, nil
+ default:
+ return nil, fmt.Errorf("unknown type for the resolved reference")
+ }
}
// ResolveParameter resolves a paramter reference against a context root
@@ -107,13 +130,13 @@ func ResolveParameter(root interface{}, ref Ref) (*Parameter, error) {
// ResolveParameterWithBase resolves a paramter reference against a context root and base path
func ResolveParameterWithBase(root interface{}, ref Ref, opts *ExpandOptions) (*Parameter, error) {
- resolver, err := defaultSchemaLoader(root, nil, opts, nil)
+ resolver, err := defaultSchemaLoader(root, opts, nil)
if err != nil {
return nil, err
}
result := new(Parameter)
- if err := resolver.Resolve(&ref, result); err != nil {
+ if err := resolver.Resolve(&ref, result, ""); err != nil {
return nil, err
}
return result, nil
@@ -126,13 +149,13 @@ func ResolveResponse(root interface{}, ref Ref) (*Response, error) {
// ResolveResponseWithBase resolves response a reference against a context root and base path
func ResolveResponseWithBase(root interface{}, ref Ref, opts *ExpandOptions) (*Response, error) {
- resolver, err := defaultSchemaLoader(root, nil, opts, nil)
+ resolver, err := defaultSchemaLoader(root, opts, nil)
if err != nil {
return nil, err
}
result := new(Response)
- if err := resolver.Resolve(&ref, result); err != nil {
+ if err := resolver.Resolve(&ref, result, ""); err != nil {
return nil, err
}
return result, nil
@@ -140,13 +163,16 @@ func ResolveResponseWithBase(root interface{}, ref Ref, opts *ExpandOptions) (*R
// ResolveItems resolves header and parameter items reference against a context root and base path
func ResolveItems(root interface{}, ref Ref, opts *ExpandOptions) (*Items, error) {
- resolver, err := defaultSchemaLoader(root, nil, opts, nil)
+ resolver, err := defaultSchemaLoader(root, opts, nil)
if err != nil {
return nil, err
}
-
+ basePath := ""
+ if opts.RelativeBase != "" {
+ basePath = opts.RelativeBase
+ }
result := new(Items)
- if err := resolver.Resolve(&ref, result); err != nil {
+ if err := resolver.Resolve(&ref, result, basePath); err != nil {
return nil, err
}
return result, nil
@@ -154,26 +180,26 @@ func ResolveItems(root interface{}, ref Ref, opts *ExpandOptions) (*Items, error
// ResolvePathItem resolves response a path item against a context root and base path
func ResolvePathItem(root interface{}, ref Ref, opts *ExpandOptions) (*PathItem, error) {
- resolver, err := defaultSchemaLoader(root, nil, opts, nil)
+ resolver, err := defaultSchemaLoader(root, opts, nil)
if err != nil {
return nil, err
}
-
+ basePath := ""
+ if opts.RelativeBase != "" {
+ basePath = opts.RelativeBase
+ }
result := new(PathItem)
- if err := resolver.Resolve(&ref, result); err != nil {
+ if err := resolver.Resolve(&ref, result, basePath); err != nil {
return nil, err
}
return result, nil
}
type schemaLoader struct {
- loadingRef *Ref
- startingRef *Ref
- currentRef *Ref
- root interface{}
- options *ExpandOptions
- cache ResolutionCache
- loadDoc func(string) (json.RawMessage, error)
+ root interface{}
+ options *ExpandOptions
+ cache ResolutionCache
+ loadDoc func(string) (json.RawMessage, error)
}
var idPtr, _ = jsonpointer.New("/id")
@@ -194,7 +220,6 @@ func init() {
func defaultSchemaLoader(
root interface{},
- ref *Ref,
expandOptions *ExpandOptions,
cache ResolutionCache) (*schemaLoader, error) {
@@ -205,20 +230,10 @@ func defaultSchemaLoader(
expandOptions = &ExpandOptions{}
}
- var ptr *jsonpointer.Pointer
- if ref != nil {
- ptr = ref.GetPointer()
- }
-
- currentRef := nextRef(root, ref, ptr)
-
return &schemaLoader{
- loadingRef: ref,
- startingRef: ref,
- currentRef: currentRef,
- root: root,
- options: expandOptions,
- cache: cache,
+ root: root,
+ options: expandOptions,
+ cache: cache,
loadDoc: func(path string) (json.RawMessage, error) {
debugLog("fetching document at %q", path)
return PathLoader(path)
@@ -303,172 +318,110 @@ func debugLog(msg string, args ...interface{}) {
}
}
-func normalizeFileRef(ref *Ref, relativeBase string) *Ref {
- refURL := ref.GetURL()
- debugLog("normalizing %s against %s (%s)", ref.String(), relativeBase, refURL.String())
- if strings.HasPrefix(refURL.String(), "#") {
- return ref
+// normalize absolute path for cache.
+// on Windows, drive letters should be converted to lower as scheme in net/url.URL
+func normalizeAbsPath(path string) string {
+ u, err := url.Parse(path)
+ if err != nil {
+ debugLog("normalize absolute path failed: %s", err)
+ return path
}
+ return u.String()
+}
- if refURL.Scheme == "file" || (refURL.Scheme == "" && refURL.Host == "") {
- filePath := refURL.Path
- debugLog("normalizing file path: %s", filePath)
-
- if !filepath.IsAbs(filepath.FromSlash(filePath)) && len(relativeBase) != 0 {
- debugLog("joining %s with %s", relativeBase, filePath)
- if fi, err := os.Stat(filepath.FromSlash(relativeBase)); err == nil {
- if !fi.IsDir() {
- relativeBase = filepath.Dir(filepath.FromSlash(relativeBase))
- }
- }
- filePath = filepath.Join(filepath.FromSlash(relativeBase), filepath.FromSlash(filePath))
- }
- if !filepath.IsAbs(filepath.FromSlash(filePath)) {
- pwd, err := os.Getwd()
- if err == nil {
- debugLog("joining cwd %s with %s", pwd, filePath)
- filePath = filepath.Join(pwd, filepath.FromSlash(filePath))
- }
+// base or refPath could be a file path or a URL
+// given a base absolute path and a ref path, return the absolute path of refPath
+// 1) if refPath is absolute, return it
+// 2) if refPath is relative, join it with basePath keeping the scheme, hosts, and ports if exists
+// base could be a directory or a full file path
+func normalizePaths(refPath, base string) string {
+ refURL, _ := url.Parse(refPath)
+ if path.IsAbs(refURL.Path) {
+ // refPath is actually absolute
+ if refURL.Host != "" {
+ return refPath
}
+ return filepath.FromSlash(refPath)
+ }
- debugLog("cleaning %s", filePath)
- filePath = filepath.Clean(filepath.FromSlash(filePath))
- _, err := os.Stat(filepath.FromSlash(filePath))
- if err == nil {
- debugLog("rewriting url %s to scheme \"\" path %s", refURL.String(), filePath)
- slp := filepath.FromSlash(filePath)
- if filepath.IsAbs(slp) && filepath.Separator == '\\' && len(slp) > 1 && slp[1] == ':' && ('a' <= slp[0] && slp[0] <= 'z' || 'A' <= slp[0] && slp[0] <= 'Z') {
- slp = slp[2:]
- }
- refURL.Scheme = ""
- refURL.Path = filepath.ToSlash(slp)
- debugLog("new url with joined filepath: %s", refURL.String())
- *ref = MustCreateRef(refURL.String())
+ // relative refPath
+ baseURL, _ := url.Parse(base)
+ if !strings.HasPrefix(refPath, "#") {
+ // combining paths
+ if baseURL.Host != "" {
+ baseURL.Path = path.Join(path.Dir(baseURL.Path), refURL.Path)
+ } else { // base is a file
+ newBase := fmt.Sprintf("%s#%s", filepath.Join(filepath.Dir(base), filepath.FromSlash(refURL.Path)), refURL.Fragment)
+ return newBase
}
- }
- debugLog("refurl: %s", ref.GetURL().String())
- return ref
+ }
+ // copying fragment from ref to base
+ baseURL.Fragment = refURL.Fragment
+ return baseURL.String()
}
-func (r *schemaLoader) resolveRef(currentRef, ref *Ref, node, target interface{}) error {
-
- tgt := reflect.ValueOf(target)
- if tgt.Kind() != reflect.Ptr {
- return fmt.Errorf("resolve ref: target needs to be a pointer")
+// relativeBase could be an ABSOLUTE file path or an ABSOLUTE URL
+func normalizeFileRef(ref *Ref, relativeBase string) *Ref {
+ // This is important for when the reference is pointing to the root schema
+ if ref.String() == "" {
+ r, _ := NewRef(relativeBase)
+ return &r
}
- oldRef := currentRef
+ refURL := ref.GetURL()
+ debugLog("normalizing %s against %s (%s)", ref.String(), relativeBase, refURL.String())
- if currentRef != nil {
- debugLog("resolve ref current %s new %s", currentRef.String(), ref.String())
- nextRef := nextRef(node, ref, currentRef.GetPointer())
- if nextRef == nil || nextRef.GetURL() == nil {
- return nil
- }
- var err error
- currentRef, err = currentRef.Inherits(*nextRef)
- debugLog("resolved ref current %s", currentRef.String())
- if err != nil {
- return err
- }
- }
+ s := normalizePaths(ref.String(), relativeBase)
+ r, _ := NewRef(s)
+ return &r
+}
- if currentRef == nil {
- currentRef = ref
+func (r *schemaLoader) resolveRef(ref *Ref, target interface{}, basePath string) error {
+ tgt := reflect.ValueOf(target)
+ if tgt.Kind() != reflect.Ptr {
+ return fmt.Errorf("resolve ref: target needs to be a pointer")
}
- refURL := currentRef.GetURL()
+ refURL := ref.GetURL()
if refURL == nil {
return nil
}
- if currentRef.IsRoot() {
- nv := reflect.ValueOf(node)
- reflect.Indirect(tgt).Set(reflect.Indirect(nv))
- return nil
- }
- if strings.HasPrefix(refURL.String(), "#") {
- res, _, err := ref.GetPointer().Get(node)
+ var res interface{}
+ var data interface{}
+ var err error
+ // Resolve against the root if it isn't nil, and if ref is pointing at the root, or has a fragment only which means
+ // it is pointing somewhere in the root.
+ root := r.root
+ if (ref.IsRoot() || ref.HasFragmentOnly) && root == nil && basePath != "" {
+ if baseRef, err := NewRef(basePath); err == nil {
+ root, _, _, _ = r.load(baseRef.GetURL())
+ }
+ }
+ if (ref.IsRoot() || ref.HasFragmentOnly) && root != nil {
+ data = root
+ } else {
+ baseRef := normalizeFileRef(ref, basePath)
+ debugLog("current ref is: %s", ref.String())
+ debugLog("current ref normalized file: %s", baseRef.String())
+ data, _, _, err = r.load(baseRef.GetURL())
if err != nil {
- res, _, err = ref.GetPointer().Get(r.root)
- if err != nil {
- return err
- }
- }
- rv := reflect.Indirect(reflect.ValueOf(res))
- tgtType := reflect.Indirect(tgt).Type()
- if rv.Type().AssignableTo(tgtType) {
- reflect.Indirect(tgt).Set(reflect.Indirect(reflect.ValueOf(res)))
- } else {
- if err := swag.DynamicJSONToStruct(rv.Interface(), target); err != nil {
- return err
- }
+ return err
}
-
- return nil
}
- relativeBase := ""
- if r.options != nil && r.options.RelativeBase != "" {
- relativeBase = r.options.RelativeBase
- }
- normalizeFileRef(currentRef, relativeBase)
- debugLog("current ref normalized file: %s", currentRef.String())
- normalizeFileRef(ref, relativeBase)
- debugLog("ref normalized file: %s", currentRef.String())
-
- data, _, _, err := r.load(currentRef.GetURL())
- if err != nil {
- return err
- }
-
- if ((oldRef == nil && currentRef != nil) ||
- (oldRef != nil && currentRef == nil) ||
- oldRef.String() != currentRef.String()) &&
- ((oldRef == nil && ref != nil) ||
- (oldRef != nil && ref == nil) ||
- (oldRef.String() != ref.String())) {
-
- return r.resolveRef(currentRef, ref, data, target)
- }
-
- var res interface{}
- if currentRef.String() != "" {
- res, _, err = currentRef.GetPointer().Get(data)
+ res = data
+ if ref.String() != "" {
+ res, _, err = ref.GetPointer().Get(data)
if err != nil {
- if strings.HasPrefix(ref.String(), "#") {
- if r.loadingRef != nil {
- rr, er := r.loadingRef.Inherits(*ref)
- if er != nil {
- return er
- }
- refURL = rr.GetURL()
-
- data, _, _, err = r.load(refURL)
- if err != nil {
- return err
- }
- } else {
- data = r.root
- }
- }
-
- res, _, err = ref.GetPointer().Get(data)
- if err != nil {
- return err
- }
+ return err
}
- } else {
- res = data
}
-
if err := swag.DynamicJSONToStruct(res, target); err != nil {
return err
}
- r.currentRef = currentRef
-
return nil
}
@@ -493,50 +446,62 @@ func (r *schemaLoader) load(refURL *url.URL) (interface{}, url.URL, bool, error)
return data, toFetch, fromCache, nil
}
-func (r *schemaLoader) Resolve(ref *Ref, target interface{}) error {
- return r.resolveRef(r.currentRef, ref, r.root, target)
+// Resolve resolves a reference against basePath and stores the result in target
+// Resolve is not in charge of following references, it only resolves ref by following its URL
+// if the schema that ref is referring to has more refs in it. Resolve doesn't resolve them
+// if basePath is an empty string, ref is resolved against the root schema stored in the schemaLoader struct
+func (r *schemaLoader) Resolve(ref *Ref, target interface{}, basePath string) error {
+ return r.resolveRef(ref, target, basePath)
}
-func (r *schemaLoader) reset() {
- ref := r.startingRef
-
- var ptr *jsonpointer.Pointer
- if ref != nil {
- ptr = ref.GetPointer()
+// absPath returns the absolute path of a file
+func absPath(fname string) (string, error) {
+ if strings.HasPrefix(fname, "http") {
+ return fname, nil
}
-
- r.currentRef = nextRef(r.root, ref, ptr)
+ if filepath.IsAbs(fname) {
+ return fname, nil
+ }
+ wd, err := os.Getwd()
+ return filepath.Join(wd, fname), err
}
// ExpandSpec expands the references in a swagger spec
func ExpandSpec(spec *Swagger, options *ExpandOptions) error {
- resolver, err := defaultSchemaLoader(spec, nil, options, nil)
+ resolver, err := defaultSchemaLoader(spec, options, nil)
// Just in case this ever returns an error.
if shouldStopOnError(err, resolver.options) {
return err
}
+ // getting the base path of the spec to adjust all subsequent reference resolutions
+ specBasePath := ""
+ if options != nil && options.RelativeBase != "" {
+ specBasePath, _ = absPath(options.RelativeBase)
+ }
+
if options == nil || !options.SkipSchemas {
for key, definition := range spec.Definitions {
var def *Schema
var err error
- if def, err = expandSchema(definition, []string{"#/definitions/" + key}, resolver); shouldStopOnError(err, resolver.options) {
+ if def, err = expandSchema(definition, []string{fmt.Sprintf("#/defintions/%s", key)}, resolver, specBasePath); shouldStopOnError(err, resolver.options) {
return err
}
- resolver.reset()
- spec.Definitions[key] = *def
+ if def != nil {
+ spec.Definitions[key] = *def
+ }
}
}
for key, parameter := range spec.Parameters {
- if err := expandParameter(¶meter, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandParameter(¶meter, resolver, specBasePath); shouldStopOnError(err, resolver.options) {
return err
}
spec.Parameters[key] = parameter
}
for key, response := range spec.Responses {
- if err := expandResponse(&response, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandResponse(&response, resolver, specBasePath); shouldStopOnError(err, resolver.options) {
return err
}
spec.Responses[key] = response
@@ -544,7 +509,7 @@ func ExpandSpec(spec *Swagger, options *ExpandOptions) error {
if spec.Paths != nil {
for key, path := range spec.Paths.Paths {
- if err := expandPathItem(&path, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandPathItem(&path, resolver, specBasePath); shouldStopOnError(err, resolver.options) {
return err
}
spec.Paths.Paths[key] = path
@@ -566,69 +531,65 @@ func shouldStopOnError(err error, opts *ExpandOptions) bool {
return false
}
-// ExpandSchema expands the refs in the schema object
+// ExpandSchema expands the refs in the schema object with reference to the root object
+// go-openapi/validate uses this function
+// notice that it is impossible to reference a json scema in a different file other than root
func ExpandSchema(schema *Schema, root interface{}, cache ResolutionCache) error {
- return ExpandSchemaWithBasePath(schema, root, cache, nil)
+ // Only save the root to a tmp file if it isn't nil.
+ var base string
+ if root != nil {
+ base, _ = absPath("root")
+ if cache == nil {
+ cache = resCache
+ }
+ cache.Set(normalizeAbsPath(base), root)
+ base = "root"
+ }
+
+ opts := &ExpandOptions{
+ RelativeBase: base,
+ SkipSchemas: false,
+ ContinueOnError: false,
+ }
+ return ExpandSchemaWithBasePath(schema, cache, opts)
}
// ExpandSchemaWithBasePath expands the refs in the schema object, base path configured through expand options
-func ExpandSchemaWithBasePath(schema *Schema, root interface{}, cache ResolutionCache, opts *ExpandOptions) error {
+func ExpandSchemaWithBasePath(schema *Schema, cache ResolutionCache, opts *ExpandOptions) error {
if schema == nil {
return nil
}
- if root == nil {
- root = schema
- }
- nrr, _ := NewRef(schema.ID)
- var rrr *Ref
- if nrr.String() != "" {
- switch rt := root.(type) {
- case *Schema:
- rid, _ := NewRef(rt.ID)
- rrr, _ = rid.Inherits(nrr)
- case *Swagger:
- rid, _ := NewRef(rt.ID)
- rrr, _ = rid.Inherits(nrr)
- }
+ var basePath string
+ if opts.RelativeBase != "" {
+ basePath, _ = absPath(opts.RelativeBase)
}
- resolver, err := defaultSchemaLoader(root, rrr, opts, cache)
+ resolver, err := defaultSchemaLoader(nil, opts, cache)
if err != nil {
return err
}
refs := []string{""}
- if rrr != nil {
- refs[0] = rrr.String()
- }
var s *Schema
- if s, err = expandSchema(*schema, refs, resolver); err != nil {
+ if s, err = expandSchema(*schema, refs, resolver, basePath); err != nil {
return err
}
*schema = *s
return nil
}
-func expandItems(target Schema, parentRefs []string, resolver *schemaLoader) (*Schema, error) {
+func expandItems(target Schema, parentRefs []string, resolver *schemaLoader, basePath string) (*Schema, error) {
if target.Items != nil {
if target.Items.Schema != nil {
- t, err := expandSchema(*target.Items.Schema, parentRefs, resolver)
+ t, err := expandSchema(*target.Items.Schema, parentRefs, resolver, basePath)
if err != nil {
- if target.Items.Schema.ID == "" {
- target.Items.Schema.ID = target.ID
- if err != nil {
- t, err = expandSchema(*target.Items.Schema, parentRefs, resolver)
- if err != nil {
- return nil, err
- }
- }
- }
+ return nil, err
}
*target.Items.Schema = *t
}
for i := range target.Items.Schemas {
- t, err := expandSchema(target.Items.Schemas[i], parentRefs, resolver)
+ t, err := expandSchema(target.Items.Schemas[i], parentRefs, resolver, basePath)
if err != nil {
return nil, err
}
@@ -638,36 +599,84 @@ func expandItems(target Schema, parentRefs []string, resolver *schemaLoader) (*S
return &target, nil
}
-func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*Schema, error) {
+// basePathFromSchemaID returns a new basePath based on an existing basePath and a schema ID
+func basePathFromSchemaID(oldBasePath, id string) string {
+ u, err := url.Parse(oldBasePath)
+ if err != nil {
+ panic(err)
+ }
+ uid, err := url.Parse(id)
+ if err != nil {
+ panic(err)
+ }
+
+ if path.IsAbs(uid.Path) {
+ return id
+ }
+ u.Path = path.Join(path.Dir(u.Path), uid.Path)
+ return u.String()
+}
+
+func isCircular(ref *Ref, basePath string, parentRefs ...string) bool {
+ return basePath != "" && swag.ContainsStringsCI(parentRefs, ref.String())
+}
+
+func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader, basePath string) (*Schema, error) {
if target.Ref.String() == "" && target.Ref.IsRoot() {
- debugLog("skipping expand schema for no ref and root: %v", resolver.root)
+ // normalizing is important
+ newRef := normalizeFileRef(&target.Ref, basePath)
+ target.Ref = *newRef
+ return &target, nil
- return resolver.root.(*Schema), nil
}
- // t is the new expanded schema
- var t *Schema
+ /* change the base path of resolution when an ID is encountered
+ otherwise the basePath should inherit the parent's */
+ // important: ID can be relative path
+ if target.ID != "" {
+ // handling the case when id is a folder
+ // remember that basePath has to be a file
+ refPath := target.ID
+ if strings.HasSuffix(target.ID, "/") {
+ // path.Clean here would not work correctly if basepath is http
+ refPath = fmt.Sprintf("%s%s", refPath, "placeholder.json")
+ }
+ basePath = normalizePaths(refPath, basePath)
+ }
+
+ /* Explain here what this function does */
- for target.Ref.String() != "" {
- if swag.ContainsStringsCI(parentRefs, target.Ref.String()) {
+ var t *Schema
+ /* if Ref is found, everything else doesn't matter */
+ /* Ref also changes the resolution scope of children expandSchema */
+ if target.Ref.String() != "" {
+ /* Here the resolution scope is changed because a $ref was encountered */
+ normalizedRef := normalizeFileRef(&target.Ref, basePath)
+ normalizedBasePath := normalizedRef.RemoteURI()
+
+ /* this means there is a circle in the recursion tree */
+ /* return the Ref */
+ if isCircular(normalizedRef, basePath, parentRefs...) {
+ target.Ref = *normalizedRef
return &target, nil
}
- if err := resolver.Resolve(&target.Ref, &t); shouldStopOnError(err, resolver.options) {
- return &target, err
+ debugLog("\nbasePath: %s", basePath)
+ if Debug {
+ b, _ := json.Marshal(target)
+ debugLog("calling Resolve with target: %s", string(b))
}
-
- if swag.ContainsStringsCI(parentRefs, target.Ref.String()) {
- debugLog("ref already exists in parent")
- return &target, nil
+ if err := resolver.Resolve(&target.Ref, &t, basePath); shouldStopOnError(err, resolver.options) {
+ return nil, err
}
- parentRefs = append(parentRefs, target.Ref.String())
+
if t != nil {
- target = *t
+ parentRefs = append(parentRefs, normalizedRef.String())
+ return expandSchema(*t, parentRefs, resolver, normalizedBasePath)
}
}
- t, err := expandItems(target, parentRefs, resolver)
+ t, err := expandItems(target, parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -676,23 +685,21 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
for i := range target.AllOf {
- t, err := expandSchema(target.AllOf[i], parentRefs, resolver)
+ t, err := expandSchema(target.AllOf[i], parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
- if t != nil {
- target.AllOf[i] = *t
- }
+ target.AllOf[i] = *t
}
for i := range target.AnyOf {
- t, err := expandSchema(target.AnyOf[i], parentRefs, resolver)
+ t, err := expandSchema(target.AnyOf[i], parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
target.AnyOf[i] = *t
}
for i := range target.OneOf {
- t, err := expandSchema(target.OneOf[i], parentRefs, resolver)
+ t, err := expandSchema(target.OneOf[i], parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -701,7 +708,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
}
if target.Not != nil {
- t, err := expandSchema(*target.Not, parentRefs, resolver)
+ t, err := expandSchema(*target.Not, parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -710,7 +717,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
}
for k := range target.Properties {
- t, err := expandSchema(target.Properties[k], parentRefs, resolver)
+ t, err := expandSchema(target.Properties[k], parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -719,7 +726,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
}
if target.AdditionalProperties != nil && target.AdditionalProperties.Schema != nil {
- t, err := expandSchema(*target.AdditionalProperties.Schema, parentRefs, resolver)
+ t, err := expandSchema(*target.AdditionalProperties.Schema, parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -728,7 +735,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
}
for k := range target.PatternProperties {
- t, err := expandSchema(target.PatternProperties[k], parentRefs, resolver)
+ t, err := expandSchema(target.PatternProperties[k], parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -738,7 +745,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
for k := range target.Dependencies {
if target.Dependencies[k].Schema != nil {
- t, err := expandSchema(*target.Dependencies[k].Schema, parentRefs, resolver)
+ t, err := expandSchema(*target.Dependencies[k].Schema, parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -748,7 +755,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
}
if target.AdditionalItems != nil && target.AdditionalItems.Schema != nil {
- t, err := expandSchema(*target.AdditionalItems.Schema, parentRefs, resolver)
+ t, err := expandSchema(*target.AdditionalItems.Schema, parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -757,7 +764,7 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
}
}
for k := range target.Definitions {
- t, err := expandSchema(target.Definitions[k], parentRefs, resolver)
+ t, err := expandSchema(target.Definitions[k], parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return &target, err
}
@@ -768,55 +775,78 @@ func expandSchema(target Schema, parentRefs []string, resolver *schemaLoader) (*
return &target, nil
}
-func expandPathItem(pathItem *PathItem, resolver *schemaLoader) error {
+func derefPathItem(pathItem *PathItem, parentRefs []string, resolver *schemaLoader, basePath string) error {
+ curRef := pathItem.Ref.String()
+ if curRef != "" {
+ normalizedRef := normalizeFileRef(&pathItem.Ref, basePath)
+ normalizedBasePath := normalizedRef.RemoteURI()
+
+ if isCircular(normalizedRef, basePath, parentRefs...) {
+ return nil
+ }
+
+ if err := resolver.Resolve(&pathItem.Ref, pathItem, basePath); shouldStopOnError(err, resolver.options) {
+ return err
+ }
+
+ if pathItem.Ref.String() != "" && pathItem.Ref.String() != curRef && basePath != normalizedBasePath {
+ parentRefs = append(parentRefs, normalizedRef.String())
+ return derefPathItem(pathItem, parentRefs, resolver, normalizedBasePath)
+ }
+ }
+
+ return nil
+}
+
+func expandPathItem(pathItem *PathItem, resolver *schemaLoader, basePath string) error {
if pathItem == nil {
return nil
}
- if pathItem.Ref.String() != "" {
- if err := resolver.Resolve(&pathItem.Ref, &pathItem); err != nil {
- return err
- }
- resolver.reset()
- pathItem.Ref = Ref{}
+ parentRefs := []string{}
+ if err := derefPathItem(pathItem, parentRefs, resolver, basePath); shouldStopOnError(err, resolver.options) {
+ return err
}
+ pathItem.Ref = Ref{}
+
+ parentRefs = parentRefs[0:]
for idx := range pathItem.Parameters {
- if err := expandParameter(&(pathItem.Parameters[idx]), resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandParameter(&(pathItem.Parameters[idx]), resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
}
- if err := expandOperation(pathItem.Get, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandOperation(pathItem.Get, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Head, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandOperation(pathItem.Head, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Options, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandOperation(pathItem.Options, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Put, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandOperation(pathItem.Put, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Post, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandOperation(pathItem.Post, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Patch, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandOperation(pathItem.Patch, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- if err := expandOperation(pathItem.Delete, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandOperation(pathItem.Delete, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
return nil
}
-func expandOperation(op *Operation, resolver *schemaLoader) error {
+func expandOperation(op *Operation, resolver *schemaLoader, basePath string) error {
if op == nil {
return nil
}
for i, param := range op.Parameters {
- if err := expandParameter(¶m, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandParameter(¶m, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
op.Parameters[i] = param
@@ -824,11 +854,11 @@ func expandOperation(op *Operation, resolver *schemaLoader) error {
if op.Responses != nil {
responses := op.Responses
- if err := expandResponse(responses.Default, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandResponse(responses.Default, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
for code, response := range responses.StatusCodeResponses {
- if err := expandResponse(&response, resolver); shouldStopOnError(err, resolver.options) {
+ if err := expandResponse(&response, resolver, basePath); shouldStopOnError(err, resolver.options) {
return err
}
responses.StatusCodeResponses[code] = response
@@ -837,63 +867,125 @@ func expandOperation(op *Operation, resolver *schemaLoader) error {
return nil
}
-func expandResponse(response *Response, resolver *schemaLoader) error {
- if response == nil {
- return nil
+// ExpandResponse expands a response based on a basepath
+// This is the exported version of expandResponse
+// all refs inside response will be resolved relative to basePath
+func ExpandResponse(response *Response, basePath string) error {
+ opts := &ExpandOptions{
+ RelativeBase: basePath,
}
+ resolver, err := defaultSchemaLoader(nil, opts, nil)
+ if err != nil {
+ return err
+ }
+
+ return expandResponse(response, resolver, basePath)
+}
- var parentRefs []string
+func derefResponse(response *Response, parentRefs []string, resolver *schemaLoader, basePath string) error {
+ curRef := response.Ref.String()
+ if curRef != "" {
+ /* Here the resolution scope is changed because a $ref was encountered */
+ normalizedRef := normalizeFileRef(&response.Ref, basePath)
+ normalizedBasePath := normalizedRef.RemoteURI()
+
+ if isCircular(normalizedRef, basePath, parentRefs...) {
+ return nil
+ }
- if response.Ref.String() != "" {
- parentRefs = append(parentRefs, response.Ref.String())
- if err := resolver.Resolve(&response.Ref, response); shouldStopOnError(err, resolver.options) {
+ if err := resolver.Resolve(&response.Ref, response, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- resolver.reset()
- response.Ref = Ref{}
+
+ if response.Ref.String() != "" && response.Ref.String() != curRef && basePath != normalizedBasePath {
+ parentRefs = append(parentRefs, normalizedRef.String())
+ return derefResponse(response, parentRefs, resolver, normalizedBasePath)
+ }
}
+ return nil
+}
+
+func expandResponse(response *Response, resolver *schemaLoader, basePath string) error {
+ if response == nil {
+ return nil
+ }
+
+ parentRefs := []string{}
+ if err := derefResponse(response, parentRefs, resolver, basePath); shouldStopOnError(err, resolver.options) {
+ return err
+ }
+ response.Ref = Ref{}
+
+ parentRefs = parentRefs[0:]
if !resolver.options.SkipSchemas && response.Schema != nil {
parentRefs = append(parentRefs, response.Schema.Ref.String())
- debugLog("response ref: %s", response.Schema.Ref)
- if err := resolver.Resolve(&response.Schema.Ref, &response.Schema); shouldStopOnError(err, resolver.options) {
- return err
- }
- s, err := expandSchema(*response.Schema, parentRefs, resolver)
+ s, err := expandSchema(*response.Schema, parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return err
}
- resolver.reset()
*response.Schema = *s
}
+
return nil
}
-func expandParameter(parameter *Parameter, resolver *schemaLoader) error {
- if parameter == nil {
- return nil
+// ExpandParameter expands a parameter based on a basepath
+// This is the exported version of expandParameter
+// all refs inside parameter will be resolved relative to basePath
+func ExpandParameter(parameter *Parameter, basePath string) error {
+ opts := &ExpandOptions{
+ RelativeBase: basePath,
}
+ resolver, err := defaultSchemaLoader(nil, opts, nil)
+ if err != nil {
+ return err
+ }
+
+ return expandParameter(parameter, resolver, basePath)
+}
+
+func derefParameter(parameter *Parameter, parentRefs []string, resolver *schemaLoader, basePath string) error {
+ curRef := parameter.Ref.String()
+ if curRef != "" {
+ normalizedRef := normalizeFileRef(¶meter.Ref, basePath)
+ normalizedBasePath := normalizedRef.RemoteURI()
- var parentRefs []string
+ if isCircular(normalizedRef, basePath, parentRefs...) {
+ return nil
+ }
- if parameter.Ref.String() != "" {
- parentRefs = append(parentRefs, parameter.Ref.String())
- if err := resolver.Resolve(¶meter.Ref, parameter); shouldStopOnError(err, resolver.options) {
+ if err := resolver.Resolve(¶meter.Ref, parameter, basePath); shouldStopOnError(err, resolver.options) {
return err
}
- resolver.reset()
- parameter.Ref = Ref{}
+
+ if parameter.Ref.String() != "" && parameter.Ref.String() != curRef && basePath != normalizedBasePath {
+ parentRefs = append(parentRefs, normalizedRef.String())
+ return derefParameter(parameter, parentRefs, resolver, normalizedBasePath)
+ }
}
+
+ return nil
+}
+
+func expandParameter(parameter *Parameter, resolver *schemaLoader, basePath string) error {
+ if parameter == nil {
+ return nil
+ }
+
+ parentRefs := []string{}
+ if err := derefParameter(parameter, parentRefs, resolver, basePath); shouldStopOnError(err, resolver.options) {
+ return err
+ }
+ parameter.Ref = Ref{}
+
+ parentRefs = parentRefs[0:]
if !resolver.options.SkipSchemas && parameter.Schema != nil {
parentRefs = append(parentRefs, parameter.Schema.Ref.String())
- if err := resolver.Resolve(¶meter.Schema.Ref, ¶meter.Schema); shouldStopOnError(err, resolver.options) {
- return err
- }
- s, err := expandSchema(*parameter.Schema, parentRefs, resolver)
+ s, err := expandSchema(*parameter.Schema, parentRefs, resolver, basePath)
if shouldStopOnError(err, resolver.options) {
return err
}
- resolver.reset()
*parameter.Schema = *s
}
return nil
diff --git a/vendor/github.com/go-openapi/spec/items.go b/vendor/github.com/go-openapi/spec/items.go
index 46944fb699f3..492423ef7fd5 100644
--- a/vendor/github.com/go-openapi/spec/items.go
+++ b/vendor/github.com/go-openapi/spec/items.go
@@ -28,6 +28,7 @@ type SimpleSchema struct {
Items *Items `json:"items,omitempty"`
CollectionFormat string `json:"collectionFormat,omitempty"`
Default interface{} `json:"default,omitempty"`
+ Example interface{} `json:"example,omitempty"`
}
func (s *SimpleSchema) TypeName() string {
@@ -178,9 +179,14 @@ func (i *Items) UnmarshalJSON(data []byte) error {
if err := json.Unmarshal(data, &simpleSchema); err != nil {
return err
}
+ var vendorExtensible VendorExtensible
+ if err := json.Unmarshal(data, &vendorExtensible); err != nil {
+ return err
+ }
i.Refable = ref
i.CommonValidations = validations
i.SimpleSchema = simpleSchema
+ i.VendorExtensible = vendorExtensible
return nil
}
@@ -198,7 +204,11 @@ func (i Items) MarshalJSON() ([]byte, error) {
if err != nil {
return nil, err
}
- return swag.ConcatJSON(b3, b1, b2), nil
+ b4, err := json.Marshal(i.VendorExtensible)
+ if err != nil {
+ return nil, err
+ }
+ return swag.ConcatJSON(b4, b3, b1, b2), nil
}
// JSONLookup look up a value by the json property name
diff --git a/vendor/github.com/go-openapi/spec/operation.go b/vendor/github.com/go-openapi/spec/operation.go
index de1db6f0201f..e698f9e8acfb 100644
--- a/vendor/github.com/go-openapi/spec/operation.go
+++ b/vendor/github.com/go-openapi/spec/operation.go
@@ -31,11 +31,36 @@ type OperationProps struct {
ExternalDocs *ExternalDocumentation `json:"externalDocs,omitempty"`
ID string `json:"operationId,omitempty"`
Deprecated bool `json:"deprecated,omitempty"`
- Security []map[string][]string `json:"security,omitempty"`
+ Security []map[string][]string `json:"security,omitempty"` //Special case, see MarshalJSON function
Parameters []Parameter `json:"parameters,omitempty"`
Responses *Responses `json:"responses,omitempty"`
}
+// MarshalJSON takes care of serializing operation properties to JSON
+//
+// We use a custom marhaller here to handle a special cases related
+// the Security field. We need to preserve zero length slice
+// while omiting the field when the value is nil/unset.
+func (op OperationProps) MarshalJSON() ([]byte, error) {
+ type Alias OperationProps
+ if op.Security == nil {
+ return json.Marshal(&struct {
+ Security []map[string][]string `json:"security,omitempty"`
+ *Alias
+ }{
+ Security: op.Security,
+ Alias: (*Alias)(&op),
+ })
+ }
+ return json.Marshal(&struct {
+ Security []map[string][]string `json:"security"`
+ *Alias
+ }{
+ Security: op.Security,
+ Alias: (*Alias)(&op),
+ })
+}
+
// Operation describes a single API operation on a path.
//
// For more information: http://goo.gl/8us55a#operationObject
diff --git a/vendor/github.com/go-openapi/spec/ref.go b/vendor/github.com/go-openapi/spec/ref.go
index 4833b87e2fef..1405bfd8ee2b 100644
--- a/vendor/github.com/go-openapi/spec/ref.go
+++ b/vendor/github.com/go-openapi/spec/ref.go
@@ -145,7 +145,10 @@ func (r *Ref) UnmarshalJSON(d []byte) error {
if err := json.Unmarshal(d, &v); err != nil {
return err
}
+ return r.fromMap(v)
+}
+func (r *Ref) fromMap(v map[string]interface{}) error {
if v == nil {
return nil
}
diff --git a/vendor/github.com/go-openapi/spec/schema.go b/vendor/github.com/go-openapi/spec/schema.go
index 1cdcc163f1b6..05c1a4aa0eef 100644
--- a/vendor/github.com/go-openapi/spec/schema.go
+++ b/vendor/github.com/go-openapi/spec/schema.go
@@ -135,6 +135,10 @@ func (r *SchemaURL) UnmarshalJSON(data []byte) error {
if err := json.Unmarshal(data, &v); err != nil {
return err
}
+ return r.fromMap(v)
+}
+
+func (r *SchemaURL) fromMap(v map[string]interface{}) error {
if v == nil {
return nil
}
@@ -582,18 +586,17 @@ func (s Schema) MarshalJSON() ([]byte, error) {
// UnmarshalJSON marshal this from JSON
func (s *Schema) UnmarshalJSON(data []byte) error {
- var sch Schema
- if err := json.Unmarshal(data, &sch.SchemaProps); err != nil {
+ props := struct {
+ SchemaProps
+ SwaggerSchemaProps
+ }{}
+ if err := json.Unmarshal(data, &props); err != nil {
return err
}
- if err := json.Unmarshal(data, &sch.Ref); err != nil {
- return err
- }
- if err := json.Unmarshal(data, &sch.Schema); err != nil {
- return err
- }
- if err := json.Unmarshal(data, &sch.SwaggerSchemaProps); err != nil {
- return err
+
+ sch := Schema{
+ SchemaProps: props.SchemaProps,
+ SwaggerSchemaProps: props.SwaggerSchemaProps,
}
var d map[string]interface{}
@@ -601,6 +604,9 @@ func (s *Schema) UnmarshalJSON(data []byte) error {
return err
}
+ sch.Ref.fromMap(d)
+ sch.Schema.fromMap(d)
+
delete(d, "$ref")
delete(d, "$schema")
for _, pn := range swag.DefaultJSONNameProvider.GetJSONNames(s) {
diff --git a/vendor/github.com/go-openapi/validate/.drone.sec b/vendor/github.com/go-openapi/validate/.drone.sec
deleted file mode 100644
index 64bfa2ef6e96..000000000000
--- a/vendor/github.com/go-openapi/validate/.drone.sec
+++ /dev/null
@@ -1 +0,0 @@
-eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.lisG21ATunZSCBP6vaqK_AZCIR18tN563RdqkAb6PGOipqTeg8R7VwZQIeDqS-2Vond6NX_KSC_D_uxxv0hBf2DiGXmwMUmP4nRXrsmbzT2qQKKIHYRDC_6jb2-FSfK14ezIe1Q07UiiJecDsN3CFEccS8E68Tdnp78p7yDwbTvpumnZmwYfyhlImtjFQv2YpyFVsjEHWK0R4e9T3ONQWcx6D2rSoxABbutrS03QwsJhHCeD9joL_gxfkFKm3CW8yWPSk2QYtx_Q1hu-tZR4IPb2tQPXPX3mtyhwBqziWgmJRDFCEjlCO5aCobiMm_9K5X05gue_DcgW163zh1P9jg.nleER2An8CUn_OuR.b77RFEFp0gC8j5yCAoARNKYmQIvWq99ibmf5ffJgdhQBF3sRYJLt_XflJ_2lsaiFOxvc45T2fnkMVy2lHFcri7F9f1BRiT_0AcDthxsecGzG8BZ9QvaM6b4Dn0rhjrOq8rsF0m3ZnbPBkkg3LV5EkbHWstMo2fgJPJhJswlGWhqJPJBDecG1nMBC8SMH32X-zVlSM-BLiaghvOGNxyb_RLZJZ3CLczIdQ2JO2UeYkOGCPGzernvkHDMpqQXc-8cmulDdHgCy87qFLy5ttGFgYbnTm92h_ChOGKZixeX0PL0pQY5wXd2xTO7Tg_Ov5E5FoVwIkwOextedVsF9iz_b_mwtCY3LXrvbJTW7zWrwBVsVyAXxT5iu0HyQ3tBVxT2GxS-yM5ApqLozcZCQg9flMyfSgThu82FfzEr0fI5vKw8zo0GdO4GBuVSppM9m6ToG6hlwyHD9g2YTZw9068hyq1_kZQhugJRjgGbpa2gyGqzx16fg0zVoupVIiq5KfvRlAQFeOVVjQwb0BWf25tJUj5tV3O9ge6dbKSXizEca33FJJwJWoXhd7DCREXUU9pBz06NCCf495BGoVbq3oLPDQc2mpcuy0XAPxSwXcc5Ts8DNs7MrxBlYdw81wMXuztIpOY4.XjKlMWl_H40XszToi2VU5g
\ No newline at end of file
diff --git a/vendor/github.com/go-openapi/validate/.drone.yml b/vendor/github.com/go-openapi/validate/.drone.yml
deleted file mode 100644
index cfe9c7c30055..000000000000
--- a/vendor/github.com/go-openapi/validate/.drone.yml
+++ /dev/null
@@ -1,40 +0,0 @@
-clone:
- path: github.com/go-openapi/validate
-
-matrix:
- GO_VERSION:
- - "1.6"
-
-build:
- integration:
- image: golang:$$GO_VERSION
- pull: true
- commands:
- - go get -u github.com/axw/gocov/gocov
- - go get -u gopkg.in/matm/v1/gocov-html
- - go get -u github.com/cee-dub/go-junit-report
- - go get -u github.com/stretchr/testify/assert
- - go get -u gopkg.in/yaml.v2
- - go get -u github.com/go-openapi/analysis
- - go get -u github.com/go-openapi/errors
- - go get -u github.com/go-openapi/loads
- - go get -u github.com/go-openapi/strfmt
- - go get -u github.com/go-openapi/runtime
- - go test -race
- - go test -v -cover -coverprofile=coverage.out -covermode=count
-
-notify:
- slack:
- channel: bots
- webhook_url: $$SLACK_URL
- username: drone
-
-publish:
- coverage:
- server: https://coverage.vmware.run
- token: $$GITHUB_TOKEN
- # threshold: 70
- # must_increase: true
- when:
- matrix:
- GO_VERSION: "1.6"
diff --git a/vendor/github.com/go-openapi/validate/.pullapprove.yml b/vendor/github.com/go-openapi/validate/.pullapprove.yml
deleted file mode 100644
index 5ec183e22442..000000000000
--- a/vendor/github.com/go-openapi/validate/.pullapprove.yml
+++ /dev/null
@@ -1,13 +0,0 @@
-approve_by_comment: true
-approve_regex: '^(:shipit:|:\+1:|\+1|LGTM|lgtm|Approved)'
-reject_regex: ^[Rr]ejected
-reset_on_push: false
-reviewers:
- members:
- - casualjim
- - chancez
- - frapposelli
- - vburenin
- - pytlesk4
- name: pullapprove
- required: 1
diff --git a/vendor/github.com/go-openapi/validate/.travis.yml b/vendor/github.com/go-openapi/validate/.travis.yml
new file mode 100644
index 000000000000..6eeb6f626757
--- /dev/null
+++ b/vendor/github.com/go-openapi/validate/.travis.yml
@@ -0,0 +1,22 @@
+language: go
+go:
+- 1.7
+install:
+- go get -u github.com/axw/gocov/gocov
+- go get -u gopkg.in/matm/v1/gocov-html
+- go get -u github.com/cee-dub/go-junit-report
+- go get -u github.com/stretchr/testify/assert
+- go get -u github.com/kr/pretty
+- go get -u gopkg.in/yaml.v2
+- go get -u github.com/go-openapi/analysis
+- go get -u github.com/go-openapi/errors
+- go get -u github.com/go-openapi/loads
+- go get -u github.com/go-openapi/strfmt
+- go get -u github.com/go-openapi/runtime
+script:
+- go test -v -race -cover -coverprofile=coverage.txt -covermode=atomic
+after_success:
+- bash <(curl -s https://codecov.io/bash)
+notifications:
+ slack:
+ secure: EmObnQuM9Mw8J9vpFaKKHqSMN4Wsr/A9+v7ewAD5cEhA0T1P4m7MbJMiJOhxUhj/X+BFh2DamW+P2lT8mybj5wg8wnkQ2BteKA8Tawi6f9PRw2NRheO8tAi8o/npLnlmet0kc93mn+oLuqHw36w4+j5mkOl2FghkfGiUVhwrhkCP7KXQN+3TU87e+/HzQumlJ3nsE+6terVxkH3PmaUTsS5ONaODZfuxFpfb7RsoEl3skHf6d+tr+1nViLxxly7558Nc33C+W1mr0qiEvMLZ+kJ/CpGWBJ6CUJM3jm6hNe2eMuIPwEK2hxZob8c7n22VPap4K6a0bBRoydoDXaba+2sD7Ym6ivDO/DVyL44VeBBLyIiIBylDGQdZH+6SoWm90Qe/i7tnY/T5Ao5igT8f3cfQY1c3EsTfqmlDfrhmACBmwSlgkdVBLTprHL63JMY24LWmh4jhxsmMRZhCL4dze8su1w6pLN/pD1pGHtKYCEVbdTmaM3PblNRFf12XB7qosmQsgUndH4Vq3bTbU0s1pKjeDhRyLvFzvR0TBbo0pDLEoF1A/i5GVFWa7yLZNUDudQERRh7qv/xBl2excIaQ1sV4DSVm7bAE9l6Kp+yeHQJW2uN6Y3X8wu9gB9nv9l5HBze7wh8KE6PyWAOLYYqZg9/sAtsv/2GcQqXcKFF1zcA=
diff --git a/vendor/github.com/go-openapi/validate/README.md b/vendor/github.com/go-openapi/validate/README.md
index 7e7831c9ea41..e3bfc622be26 100644
--- a/vendor/github.com/go-openapi/validate/README.md
+++ b/vendor/github.com/go-openapi/validate/README.md
@@ -1,3 +1,3 @@
-# Validation helpers [![Build Status](https://ci.vmware.run/api/badges/go-openapi/validate/status.svg)](https://ci.vmware.run/go-openapi/validate) [![Coverage](https://coverage.vmware.run/badges/go-openapi/validate/coverage.svg)](https://coverage.vmware.run/go-openapi/validate) [![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io)
+# Validation helpers [![Build Status](https://travis-ci.org/go-openapi/validate.svg?branch=master)](https://travis-ci.org/go-openapi/validate) [![codecov](https://codecov.io/gh/go-openapi/validate/branch/master/graph/badge.svg)](https://codecov.io/gh/go-openapi/validate) [![Slack Status](https://slackin.goswagger.io/badge.svg)](https://slackin.goswagger.io)
[![license](http://img.shields.io/badge/license-Apache%20v2-orange.svg)](https://raw.githubusercontent.com/go-openapi/validate/master/LICENSE) [![GoDoc](https://godoc.org/github.com/go-openapi/validate?status.svg)](http://godoc.org/github.com/go-openapi/validate)
diff --git a/vendor/github.com/go-openapi/validate/formats.go b/vendor/github.com/go-openapi/validate/formats.go
index f0e9f9039a14..294845aff387 100644
--- a/vendor/github.com/go-openapi/validate/formats.go
+++ b/vendor/github.com/go-openapi/validate/formats.go
@@ -15,6 +15,7 @@
package validate
import (
+ "log"
"reflect"
"github.com/go-openapi/spec"
@@ -51,7 +52,9 @@ func (f *formatValidator) Applies(source interface{}, kind reflect.Kind) bool {
return false
}
r := doit()
- // fmt.Printf("schema props validator for %q applies %t for %T (kind: %v)\n", f.Path, r, source, kind)
+ if Debug {
+ log.Printf("format validator for %q applies %t for %T (kind: %v)\n", f.Path, r, source, kind)
+ }
return r
}
diff --git a/vendor/github.com/go-openapi/validate/object_validator.go b/vendor/github.com/go-openapi/validate/object_validator.go
index 7caff230c514..0dd580288dfe 100644
--- a/vendor/github.com/go-openapi/validate/object_validator.go
+++ b/vendor/github.com/go-openapi/validate/object_validator.go
@@ -15,8 +15,10 @@
package validate
import (
+ "log"
"reflect"
"regexp"
+ "strings"
"github.com/go-openapi/errors"
"github.com/go-openapi/spec"
@@ -45,10 +47,45 @@ func (o *objectValidator) Applies(source interface{}, kind reflect.Kind) bool {
// there is a problem in the type validator where it will be unhappy about null values
// so that requires more testing
r := reflect.TypeOf(source) == specSchemaType && (kind == reflect.Map || kind == reflect.Struct)
- //fmt.Printf("object validator for %q applies %t for %T (kind: %v)\n", o.Path, r, source, kind)
+ if Debug {
+ log.Printf("object validator for %q applies %t for %T (kind: %v)\n", o.Path, r, source, kind)
+ }
return r
}
+func (o *objectValidator) isPropertyName() bool {
+ p := strings.Split(o.Path, ".")
+ return p[len(p)-1] == "properties" && p[len(p)-2] != "properties"
+}
+func (o *objectValidator) checkArrayMustHaveItems(res *Result, val map[string]interface{}) {
+ if t, typeFound := val["type"]; typeFound {
+ if tpe, ok := t.(string); ok && tpe == "array" {
+ if _, itemsKeyFound := val["items"]; !itemsKeyFound {
+ res.AddErrors(errors.Required("items", o.Path))
+ }
+ }
+ }
+}
+
+func (o *objectValidator) checkItemsMustBeTypeArray(res *Result, val map[string]interface{}) {
+ if !o.isPropertyName() {
+ if _, itemsKeyFound := val["items"]; itemsKeyFound {
+ t, typeFound := val["type"]
+ if typeFound {
+ if tpe, ok := t.(string); !ok || tpe != "array" {
+ res.AddErrors(errors.InvalidType(o.Path, o.In, "array", nil))
+ }
+ } else {
+ // there is no type
+ res.AddErrors(errors.Required("type", o.Path))
+ }
+ }
+ }
+}
+func (o *objectValidator) precheck(res *Result, val map[string]interface{}) {
+ o.checkArrayMustHaveItems(res, val)
+ o.checkItemsMustBeTypeArray(res, val)
+}
func (o *objectValidator) Validate(data interface{}) *Result {
val := data.(map[string]interface{})
numKeys := int64(len(val))
@@ -61,14 +98,8 @@ func (o *objectValidator) Validate(data interface{}) *Result {
}
res := new(Result)
- if len(o.Required) > 0 {
- for _, k := range o.Required {
- if _, ok := val[k]; !ok {
- res.AddErrors(errors.Required(o.Path+"."+k, o.In))
- continue
- }
- }
- }
+
+ o.precheck(res, val)
if o.AdditionalProperties != nil && !o.AdditionalProperties.Allows {
for k := range val {
@@ -99,6 +130,8 @@ func (o *objectValidator) Validate(data interface{}) *Result {
}
}
+ createdFromDefaults := map[string]bool{}
+
for pName, pSchema := range o.Properties {
rName := pName
if o.Path != "" {
@@ -106,7 +139,24 @@ func (o *objectValidator) Validate(data interface{}) *Result {
}
if v, ok := val[pName]; ok {
- res.Merge(NewSchemaValidator(&pSchema, o.Root, rName, o.KnownFormats).Validate(v))
+ r := NewSchemaValidator(&pSchema, o.Root, rName, o.KnownFormats).Validate(v)
+ res.Merge(r)
+ } else if pSchema.Default != nil {
+ createdFromDefaults[pName] = true
+ pName := pName // shaddow
+ def := pSchema.Default
+ res.Defaulters = append(res.Defaulters, DefaulterFunc(func() {
+ val[pName] = def
+ }))
+ }
+ }
+
+ if len(o.Required) > 0 {
+ for _, k := range o.Required {
+ if _, ok := val[k]; !ok && !createdFromDefaults[k] {
+ res.AddErrors(errors.Required(o.Path+"."+k, o.In))
+ continue
+ }
}
}
@@ -137,9 +187,6 @@ func (o *objectValidator) validatePatternProperty(key string, value interface{},
res := validator.Validate(value)
result.Merge(res)
- if res.IsValid() {
- succeededOnce = true
- }
}
}
diff --git a/vendor/github.com/go-openapi/validate/result.go b/vendor/github.com/go-openapi/validate/result.go
index d8f71e9468bd..7b58e50df717 100644
--- a/vendor/github.com/go-openapi/validate/result.go
+++ b/vendor/github.com/go-openapi/validate/result.go
@@ -14,12 +14,32 @@
package validate
-import "github.com/go-openapi/errors"
+import (
+ "os"
+
+ "github.com/go-openapi/errors"
+)
+
+var (
+ // Debug is true when the SWAGGER_DEBUG env var is not empty
+ Debug = os.Getenv("SWAGGER_DEBUG") != ""
+)
+
+type Defaulter interface {
+ Apply()
+}
+
+type DefaulterFunc func()
+
+func (f DefaulterFunc) Apply() {
+ f()
+}
// Result represents a validation result
type Result struct {
Errors []error
MatchCount int
+ Defaulters []Defaulter
}
// Merge merges this result with the other one, preserving match counts etc
@@ -29,11 +49,13 @@ func (r *Result) Merge(other *Result) *Result {
}
r.AddErrors(other.Errors...)
r.MatchCount += other.MatchCount
+ r.Defaulters = append(r.Defaulters, other.Defaulters...)
return r
}
// AddErrors adds errors to this validation result
func (r *Result) AddErrors(errors ...error) {
+ // TODO: filter already existing errors
r.Errors = append(r.Errors, errors...)
}
@@ -59,3 +81,9 @@ func (r *Result) AsError() error {
}
return errors.CompositeValidationError(r.Errors...)
}
+
+func (r *Result) ApplyDefaults() {
+ for _, d := range r.Defaulters {
+ d.Apply()
+ }
+}
diff --git a/vendor/github.com/go-openapi/validate/schema.go b/vendor/github.com/go-openapi/validate/schema.go
index 8bf7d3bcc9bb..f859c6d6309e 100644
--- a/vendor/github.com/go-openapi/validate/schema.go
+++ b/vendor/github.com/go-openapi/validate/schema.go
@@ -15,6 +15,8 @@
package validate
import (
+ "encoding/json"
+ "log"
"reflect"
"github.com/go-openapi/spec"
@@ -80,12 +82,16 @@ func (s *SchemaValidator) Applies(source interface{}, kind reflect.Kind) bool {
// Validate validates the data against the schema
func (s *SchemaValidator) Validate(data interface{}) *Result {
+ result := new(Result)
+ if s == nil {
+ return result
+ }
+
if data == nil {
v := s.validators[0].Validate(data)
v.Merge(s.validators[6].Validate(data))
return v
}
- result := new(Result)
tpe := reflect.TypeOf(data)
kind := tpe.Kind()
@@ -98,8 +104,35 @@ func (s *SchemaValidator) Validate(data interface{}) *Result {
d = swag.ToDynamicJSON(data)
}
+ isnumber := s.Schema.Type.Contains("number") || s.Schema.Type.Contains("integer")
+ if num, ok := data.(json.Number); ok && isnumber {
+ if s.Schema.Type.Contains("integer") { // avoid lossy conversion
+ in, erri := num.Int64()
+ if erri != nil {
+ result.AddErrors(erri)
+ result.Inc()
+ return result
+ }
+ d = in
+ } else {
+ nf, errf := num.Float64()
+ if errf != nil {
+ result.AddErrors(errf)
+ result.Inc()
+ return result
+ }
+ d = nf
+ }
+
+ tpe = reflect.TypeOf(d)
+ kind = tpe.Kind()
+ }
+
for _, v := range s.validators {
if !v.Applies(s.Schema, kind) {
+ if Debug {
+ log.Printf("%T does not apply for %v", v, kind)
+ }
continue
}
@@ -117,10 +150,9 @@ func (s *SchemaValidator) typeValidator() valueValidator {
func (s *SchemaValidator) commonValidator() valueValidator {
return &basicCommonValidator{
- Path: s.Path,
- In: s.in,
- Default: s.Schema.Default,
- Enum: s.Schema.Enum,
+ Path: s.Path,
+ In: s.in,
+ Enum: s.Schema.Enum,
}
}
@@ -155,7 +187,6 @@ func (s *SchemaValidator) stringValidator() valueValidator {
return &stringValidator{
Path: s.Path,
In: s.in,
- Default: s.Schema.Default,
MaxLength: s.Schema.MaxLength,
MinLength: s.Schema.MinLength,
Pattern: s.Schema.Pattern,
@@ -164,9 +195,8 @@ func (s *SchemaValidator) stringValidator() valueValidator {
func (s *SchemaValidator) formatValidator() valueValidator {
return &formatValidator{
- Path: s.Path,
- In: s.in,
- //Default: s.Schema.Default,
+ Path: s.Path,
+ In: s.in,
Format: s.Schema.Format,
KnownFormats: s.KnownFormats,
}
diff --git a/vendor/github.com/go-openapi/validate/schema_props.go b/vendor/github.com/go-openapi/validate/schema_props.go
index feff6d6a37a6..5d8ed404521c 100644
--- a/vendor/github.com/go-openapi/validate/schema_props.go
+++ b/vendor/github.com/go-openapi/validate/schema_props.go
@@ -15,6 +15,7 @@
package validate
import (
+ "log"
"reflect"
"github.com/go-openapi/errors"
@@ -80,12 +81,15 @@ func newSchemaPropsValidator(path string, in string, allOf, oneOf, anyOf []spec.
func (s *schemaPropsValidator) Applies(source interface{}, kind reflect.Kind) bool {
r := reflect.TypeOf(source) == specSchemaType
- // fmt.Printf("schema props validator for %q applies %t for %T (kind: %v)\n", s.Path, r, source, kind)
+ if Debug {
+ log.Printf("schema props validator for %q applies %t for %T (kind: %v)\n", s.Path, r, source, kind)
+ }
return r
}
func (s *schemaPropsValidator) Validate(data interface{}) *Result {
mainResult := new(Result)
+ var firstSuccess *Result
if len(s.anyOfValidators) > 0 {
var bestFailures *Result
succeededOnce := false
@@ -94,6 +98,9 @@ func (s *schemaPropsValidator) Validate(data interface{}) *Result {
if result.IsValid() {
bestFailures = nil
succeededOnce = true
+ if firstSuccess == nil {
+ firstSuccess = result
+ }
break
}
if bestFailures == nil || result.MatchCount > bestFailures.MatchCount {
@@ -106,11 +113,14 @@ func (s *schemaPropsValidator) Validate(data interface{}) *Result {
}
if bestFailures != nil {
mainResult.Merge(bestFailures)
+ } else if firstSuccess != nil {
+ mainResult.Merge(firstSuccess)
}
}
if len(s.oneOfValidators) > 0 {
var bestFailures *Result
+ var firstSuccess *Result
validated := 0
for _, oneOfSchema := range s.oneOfValidators {
@@ -118,6 +128,9 @@ func (s *schemaPropsValidator) Validate(data interface{}) *Result {
if result.IsValid() {
validated++
bestFailures = nil
+ if firstSuccess == nil {
+ firstSuccess = result
+ }
continue
}
if validated == 0 && (bestFailures == nil || result.MatchCount > bestFailures.MatchCount) {
@@ -130,6 +143,8 @@ func (s *schemaPropsValidator) Validate(data interface{}) *Result {
if bestFailures != nil {
mainResult.Merge(bestFailures)
}
+ } else if firstSuccess != nil {
+ mainResult.Merge(firstSuccess)
}
}
diff --git a/vendor/github.com/go-openapi/validate/slice_validator.go b/vendor/github.com/go-openapi/validate/slice_validator.go
index 8371061535d2..2665a0ffe99b 100644
--- a/vendor/github.com/go-openapi/validate/slice_validator.go
+++ b/vendor/github.com/go-openapi/validate/slice_validator.go
@@ -67,6 +67,9 @@ func (s *schemaSliceValidator) Validate(data interface{}) *Result {
itemsSize = int64(len(s.Items.Schemas))
for i := int64(0); i < itemsSize; i++ {
validator := NewSchemaValidator(&s.Items.Schemas[i], s.Root, fmt.Sprintf("%s.%d", s.Path, i), s.KnownFormats)
+ if val.Len() <= int(i) {
+ break
+ }
result.Merge(validator.Validate(val.Index(int(i)).Interface()))
}
diff --git a/vendor/github.com/go-openapi/validate/spec.go b/vendor/github.com/go-openapi/validate/spec.go
index 938bc5bf907f..2f1d7028695c 100644
--- a/vendor/github.com/go-openapi/validate/spec.go
+++ b/vendor/github.com/go-openapi/validate/spec.go
@@ -19,6 +19,7 @@ import (
"fmt"
"log"
"regexp"
+ "strconv"
"strings"
"github.com/go-openapi/analysis"
@@ -193,6 +194,13 @@ func (s *SpecValidator) validateDuplicatePropertyNames() *Result {
return res
}
+func (s *SpecValidator) resolveRef(ref *spec.Ref) (*spec.Schema, error) {
+ if s.spec.SpecFilePath() != "" {
+ return spec.ResolveRefWithBase(s.spec.Spec(), ref, &spec.ExpandOptions{RelativeBase: s.spec.SpecFilePath()})
+ }
+ return spec.ResolveRef(s.spec.Spec(), ref)
+}
+
func (s *SpecValidator) validateSchemaPropertyNames(nm string, sch spec.Schema, knowns map[string]struct{}) []dupProp {
var dups []dupProp
@@ -200,7 +208,7 @@ func (s *SpecValidator) validateSchemaPropertyNames(nm string, sch spec.Schema,
schc := &sch
for schc.Ref.String() != "" {
// gather property names
- reso, err := spec.ResolveRef(s.spec.Spec(), &schc.Ref)
+ reso, err := s.resolveRef(&schc.Ref)
if err != nil {
panic(err)
}
@@ -236,7 +244,7 @@ func (s *SpecValidator) validateCircularAncestry(nm string, sch spec.Schema, kno
schn := nm
schc := &sch
for schc.Ref.String() != "" {
- reso, err := spec.ResolveRef(s.spec.Spec(), &schc.Ref)
+ reso, err := s.resolveRef(&schc.Ref)
if err != nil {
panic(err)
}
@@ -335,15 +343,15 @@ func (s *SpecValidator) validateSchemaItems(schema spec.Schema, prefix, opID str
return errors.New(422, "%s for %q is a collection without an element type", prefix, opID)
}
- schemas := schema.Items.Schemas
if schema.Items.Schema != nil {
- schemas = []spec.Schema{*schema.Items.Schema}
- }
- for _, sch := range schemas {
- if err := s.validateSchemaItems(sch, prefix, opID); err != nil {
- return err
+ schema = *schema.Items.Schema
+ if _, err := regexp.Compile(schema.Pattern); err != nil {
+ return errors.New(422, "%s for %q has invalid items pattern: %q", prefix, opID, schema.Pattern)
}
+
+ return s.validateSchemaItems(schema, prefix, opID)
}
+
return nil
}
@@ -524,8 +532,15 @@ func (s *SpecValidator) validateParameters() *Result {
}
var fromPath []string
for _, i := range params {
- fromPath = append(fromPath, knowns[i])
- knowns[i] = "!"
+ knownsi := knowns[i]
+ iparams := extractPathParams(knownsi)
+ if len(iparams) > 0 {
+ fromPath = append(fromPath, iparams...)
+ for _, iparam := range iparams {
+ knownsi = strings.Replace(knownsi, iparam, "!", 1)
+ }
+ knowns[i] = knownsi
+ }
}
knownPath := strings.Join(knowns, "/")
if orig, ok := knownPaths[knownPath]; ok {
@@ -544,7 +559,9 @@ func (s *SpecValidator) validateParameters() *Result {
for pr.Ref.String() != "" {
obj, _, err := pr.Ref.GetPointer().Get(sw)
if err != nil {
- log.Println(err)
+ if Debug {
+ log.Println(err)
+ }
res.AddErrors(err)
break PARAMETERS
}
@@ -575,6 +592,10 @@ func (s *SpecValidator) validateParameters() *Result {
pr = obj.(spec.Parameter)
}
+ if _, err := regexp.Compile(pr.Pattern); err != nil {
+ res.AddErrors(errors.New(422, "operation %q has invalid pattern in param %q: %q", op.ID, pr.Name, pr.Pattern))
+ }
+
if pr.In == "body" {
if firstBodyParam != "" {
res.AddErrors(errors.New(422, "operation %q has more than 1 body param (accepted: %q, dropped: %q)", op.ID, firstBodyParam, pr.Name))
@@ -595,18 +616,35 @@ func (s *SpecValidator) validateParameters() *Result {
func parsePath(path string) (segments []string, params []int) {
for i, p := range strings.Split(path, "/") {
segments = append(segments, p)
- if len(p) > 0 && p[0] == '{' && p[len(p)-1] == '}' {
+ if d0 := strings.Index(p, "{"); d0 >= 0 && d0 < strings.Index(p, "}") {
params = append(params, i)
}
}
return
}
+func extractPathParams(segment string) (params []string) {
+ for {
+ d0 := strings.IndexByte(segment, '{')
+ if d0 < 0 {
+ break
+ }
+ d1 := strings.IndexByte(segment[d0:], '}')
+ if d1 > 0 {
+ params = append(params, segment[d0:d0+d1+1])
+ } else {
+ break
+ }
+ segment = segment[d1:]
+ }
+ return params
+}
+
func (s *SpecValidator) validateReferencesValid() *Result {
// each reference must point to a valid object
res := new(Result)
for _, r := range s.analyzer.AllRefs() {
- if !r.IsValidURI() {
+ if !r.IsValidURI(s.spec.SpecFilePath()) {
res.AddErrors(errors.New(404, "invalid ref %q", r.String()))
}
}
@@ -698,7 +736,9 @@ func (s *SpecValidator) validateDefaultValueValidAgainstSchema() *Result {
}
// check simple paramters first
if param.Default != nil && param.Schema == nil {
- //fmt.Println(param.Name, "in", param.In, "has a default without a schema")
+ if Debug {
+ log.Println(param.Name, "in", param.In, "has a default without a schema")
+ }
// check param valid
res.Merge(NewParamValidator(¶m, s.KnownFormats).Validate(param.Default))
}
@@ -721,9 +761,15 @@ func (s *SpecValidator) validateDefaultValueValidAgainstSchema() *Result {
if h.Items != nil {
res.Merge(s.validateDefaultValueItemsAgainstSchema(nm, "header", &h, h.Items))
}
+ if _, err := regexp.Compile(h.Pattern); err != nil {
+ res.AddErrors(errors.New(422, "operation %q has invalid pattern in default header %q: %q", op.ID, nm, h.Pattern))
+ }
+ }
+ if dr.Schema != nil {
+ res.Merge(s.validateDefaultValueSchemaAgainstSchema("default", "response", dr.Schema))
}
}
- for _, r := range op.Responses.StatusCodeResponses {
+ for code, r := range op.Responses.StatusCodeResponses {
for nm, h := range r.Headers {
if h.Default != nil {
res.Merge(NewHeaderValidator(nm, &h, s.KnownFormats).Validate(h.Default))
@@ -731,6 +777,12 @@ func (s *SpecValidator) validateDefaultValueValidAgainstSchema() *Result {
if h.Items != nil {
res.Merge(s.validateDefaultValueItemsAgainstSchema(nm, "header", &h, h.Items))
}
+ if _, err := regexp.Compile(h.Pattern); err != nil {
+ res.AddErrors(errors.New(422, "operation %q has invalid pattern in %v's header %q: %q", op.ID, code, nm, h.Pattern))
+ }
+ }
+ if r.Schema != nil {
+ res.Merge(s.validateDefaultValueSchemaAgainstSchema(strconv.Itoa(code), "response", r.Schema))
}
}
@@ -758,6 +810,9 @@ func (s *SpecValidator) validateDefaultValueSchemaAgainstSchema(path, in string,
res.Merge(s.validateDefaultValueSchemaAgainstSchema(fmt.Sprintf("%s.items[%d]", path, i), in, &sch))
}
}
+ if _, err := regexp.Compile(schema.Pattern); err != nil {
+ res.AddErrors(errors.New(422, "%s in %s has invalid pattern: %q", path, in, schema.Pattern))
+ }
if schema.AdditionalItems != nil && schema.AdditionalItems.Schema != nil {
res.Merge(s.validateDefaultValueSchemaAgainstSchema(fmt.Sprintf("%s.additionalItems", path), in, schema.AdditionalItems.Schema))
}
@@ -787,6 +842,9 @@ func (s *SpecValidator) validateDefaultValueItemsAgainstSchema(path, in string,
if items.Items != nil {
res.Merge(s.validateDefaultValueItemsAgainstSchema(path+"[0]", in, root, items.Items))
}
+ if _, err := regexp.Compile(items.Pattern); err != nil {
+ res.AddErrors(errors.New(422, "%s in %s has invalid pattern: %q", path, in, items.Pattern))
+ }
}
return res
}
diff --git a/vendor/github.com/go-openapi/validate/type.go b/vendor/github.com/go-openapi/validate/type.go
index 0a5f4a2932ae..3ae31f087a51 100644
--- a/vendor/github.com/go-openapi/validate/type.go
+++ b/vendor/github.com/go-openapi/validate/type.go
@@ -15,6 +15,7 @@
package validate
import (
+ "log"
"reflect"
"strings"
@@ -32,16 +33,6 @@ type typeValidator struct {
Path string
}
-var jsonTypeNames = map[string]struct{}{
- "array": struct{}{},
- "boolean": struct{}{},
- "integer": struct{}{},
- "null": struct{}{},
- "number": struct{}{},
- "object": struct{}{},
- "string": struct{}{},
-}
-
func (t *typeValidator) schemaInfoForType(data interface{}) (string, string) {
switch data.(type) {
case []byte:
@@ -121,7 +112,9 @@ func (t *typeValidator) SetPath(path string) {
func (t *typeValidator) Applies(source interface{}, kind reflect.Kind) bool {
stpe := reflect.TypeOf(source)
r := (len(t.Type) > 0 || t.Format != "") && (stpe == specSchemaType || stpe == specParameterType || stpe == specHeaderType)
- //fmt.Printf("type validator for %q applies %t for %T (kind: %v)\n", t.Path, r, source, kind)
+ if Debug {
+ log.Printf("type validator for %q applies %t for %T (kind: %v)\n", t.Path, r, source, kind)
+ }
return r
}
@@ -140,7 +133,9 @@ func (t *typeValidator) Validate(data interface{}) *Result {
kind := val.Kind()
schType, format := t.schemaInfoForType(data)
- //fmt.Println("path:", t.Path, "schType:", schType, "format:", format, "expType:", t.Type, "expFmt:", t.Format, "kind:", val.Kind().String())
+ if Debug {
+ log.Println("path:", t.Path, "schType:", schType, "format:", format, "expType:", t.Type, "expFmt:", t.Format, "kind:", val.Kind().String())
+ }
isLowerInt := t.Format == "int64" && format == "int32"
isLowerFloat := t.Format == "float64" && format == "float32"
isFloatInt := schType == "number" && swag.IsFloat64AJSONInteger(val.Float()) && t.Type.Contains("integer")
diff --git a/vendor/github.com/go-openapi/validate/update-fixtures.sh b/vendor/github.com/go-openapi/validate/update-fixtures.sh
new file mode 100755
index 000000000000..21b06e2b09a1
--- /dev/null
+++ b/vendor/github.com/go-openapi/validate/update-fixtures.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+
+set -eu -o pipefail
+dir=$(git rev-parse --show-toplevel)
+scratch=$(mktemp -d -t tmp.XXXXXXXXXX)
+
+function finish {
+ rm -rf "$scratch"
+}
+trap finish EXIT SIGHUP SIGINT SIGTERM
+
+cd "$scratch"
+git clone https://github.com/json-schema-org/JSON-Schema-Test-Suite Suite
+cp -r Suite/tests/draft4/* "$dir/fixtures/jsonschema_suite"
+cp -a Suite/remotes "$dir/fixtures/jsonschema_suite"
diff --git a/vendor/github.com/go-openapi/validate/validator.go b/vendor/github.com/go-openapi/validate/validator.go
index 45675d28f31c..64a379fcde14 100644
--- a/vendor/github.com/go-openapi/validate/validator.go
+++ b/vendor/github.com/go-openapi/validate/validator.go
@@ -16,6 +16,7 @@ package validate
import (
"fmt"
+ "log"
"reflect"
"github.com/go-openapi/errors"
@@ -156,8 +157,15 @@ func (b *basicCommonValidator) Applies(source interface{}, kind reflect.Kind) bo
func (b *basicCommonValidator) Validate(data interface{}) (res *Result) {
if len(b.Enum) > 0 {
for _, enumValue := range b.Enum {
- if data != nil && reflect.DeepEqual(enumValue, data) {
- return nil
+ actualType := reflect.TypeOf(enumValue)
+ if actualType == nil {
+ continue
+ }
+ expectedValue := reflect.ValueOf(data)
+ if expectedValue.IsValid() && expectedValue.Type().ConvertibleTo(actualType) {
+ if reflect.DeepEqual(expectedValue.Convert(actualType).Interface(), enumValue) {
+ return nil
+ }
}
}
return sErr(errors.EnumFail(b.Path, b.In, data, b.Enum))
@@ -474,10 +482,14 @@ func (n *numberValidator) Applies(source interface{}, kind reflect.Kind) bool {
isInt := kind >= reflect.Int && kind <= reflect.Uint64
isFloat := kind == reflect.Float32 || kind == reflect.Float64
r := isInt || isFloat
- // fmt.Printf("schema props validator for %q applies %t for %T (kind: %v)\n", n.Path, r, source, kind)
+ if Debug {
+ log.Printf("schema props validator for %q applies %t for %T (kind: %v)\n", n.Path, r, source, kind)
+ }
return r
}
- // fmt.Printf("schema props validator for %q applies %t for %T (kind: %v)\n", n.Path, false, source, kind)
+ if Debug {
+ log.Printf("schema props validator for %q applies %t for %T (kind: %v)\n", n.Path, false, source, kind)
+ }
return false
}
@@ -536,15 +548,22 @@ func (s *stringValidator) Applies(source interface{}, kind reflect.Kind) bool {
switch source.(type) {
case *spec.Parameter, *spec.Schema, *spec.Items, *spec.Header:
r := kind == reflect.String
- // fmt.Printf("string validator for %q applies %t for %T (kind: %v)\n", s.Path, r, source, kind)
+ if Debug {
+ log.Printf("string validator for %q applies %t for %T (kind: %v)\n", s.Path, r, source, kind)
+ }
return r
}
- // fmt.Printf("string validator for %q applies %t for %T (kind: %v)\n", s.Path, false, source, kind)
+ if Debug {
+ log.Printf("string validator for %q applies %t for %T (kind: %v)\n", s.Path, false, source, kind)
+ }
return false
}
func (s *stringValidator) Validate(val interface{}) *Result {
- data := val.(string)
+ data, ok := val.(string)
+ if !ok {
+ return sErr(errors.InvalidType(s.Path, s.In, "string", val))
+ }
if s.Required && !s.AllowEmptyValue && (s.Default == nil || s.Default == "") {
if err := RequiredString(s.Path, s.In, data); err != nil {
diff --git a/vendor/github.com/go-openapi/validate/values.go b/vendor/github.com/go-openapi/validate/values.go
index ab5ce8af5084..67895d1ec608 100644
--- a/vendor/github.com/go-openapi/validate/values.go
+++ b/vendor/github.com/go-openapi/validate/values.go
@@ -196,7 +196,11 @@ func MinimumUint(path, in string, data, min uint64, exclusive bool) *errors.Vali
// MultipleOf validates if the provided number is a multiple of the factor
func MultipleOf(path, in string, data, factor float64) *errors.Validation {
- if !swag.IsFloat64AJSONInteger(data / factor) {
+ mult := data / factor
+ if factor < 1 {
+ mult = 1 / factor * data
+ }
+ if !swag.IsFloat64AJSONInteger(mult) {
return errors.NotMultipleOf(path, in, factor)
}
return nil
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile
new file mode 100644
index 000000000000..f706871a6fa4
--- /dev/null
+++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/Makefile
@@ -0,0 +1,37 @@
+# Go support for Protocol Buffers - Google's data interchange format
+#
+# Copyright 2010 The Go Authors. All rights reserved.
+# https://github.com/golang/protobuf
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above
+# copyright notice, this list of conditions and the following disclaimer
+# in the documentation and/or other materials provided with the
+# distribution.
+# * Neither the name of Google Inc. nor the names of its
+# contributors may be used to endorse or promote products derived from
+# this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# Not stored here, but descriptor.proto is in https://github.com/google/protobuf/
+# at src/google/protobuf/descriptor.proto
+regenerate:
+ @echo WARNING! THIS RULE IS PROBABLY NOT RIGHT FOR YOUR INSTALLATION
+ cp $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto .
+ protoc --go_out=../../../../.. -I$(HOME)/src/protobuf/include $(HOME)/src/protobuf/include/google/protobuf/descriptor.proto
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go
new file mode 100644
index 000000000000..c6a91bcab9c2
--- /dev/null
+++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.pb.go
@@ -0,0 +1,2215 @@
+// Code generated by protoc-gen-go. DO NOT EDIT.
+// source: google/protobuf/descriptor.proto
+
+/*
+Package descriptor is a generated protocol buffer package.
+
+It is generated from these files:
+ google/protobuf/descriptor.proto
+
+It has these top-level messages:
+ FileDescriptorSet
+ FileDescriptorProto
+ DescriptorProto
+ ExtensionRangeOptions
+ FieldDescriptorProto
+ OneofDescriptorProto
+ EnumDescriptorProto
+ EnumValueDescriptorProto
+ ServiceDescriptorProto
+ MethodDescriptorProto
+ FileOptions
+ MessageOptions
+ FieldOptions
+ OneofOptions
+ EnumOptions
+ EnumValueOptions
+ ServiceOptions
+ MethodOptions
+ UninterpretedOption
+ SourceCodeInfo
+ GeneratedCodeInfo
+*/
+package descriptor
+
+import proto "github.com/golang/protobuf/proto"
+import fmt "fmt"
+import math "math"
+
+// Reference imports to suppress errors if they are not otherwise used.
+var _ = proto.Marshal
+var _ = fmt.Errorf
+var _ = math.Inf
+
+// This is a compile-time assertion to ensure that this generated file
+// is compatible with the proto package it is being compiled against.
+// A compilation error at this line likely means your copy of the
+// proto package needs to be updated.
+const _ = proto.ProtoPackageIsVersion2 // please upgrade the proto package
+
+type FieldDescriptorProto_Type int32
+
+const (
+ // 0 is reserved for errors.
+ // Order is weird for historical reasons.
+ FieldDescriptorProto_TYPE_DOUBLE FieldDescriptorProto_Type = 1
+ FieldDescriptorProto_TYPE_FLOAT FieldDescriptorProto_Type = 2
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
+ // negative values are likely.
+ FieldDescriptorProto_TYPE_INT64 FieldDescriptorProto_Type = 3
+ FieldDescriptorProto_TYPE_UINT64 FieldDescriptorProto_Type = 4
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
+ // negative values are likely.
+ FieldDescriptorProto_TYPE_INT32 FieldDescriptorProto_Type = 5
+ FieldDescriptorProto_TYPE_FIXED64 FieldDescriptorProto_Type = 6
+ FieldDescriptorProto_TYPE_FIXED32 FieldDescriptorProto_Type = 7
+ FieldDescriptorProto_TYPE_BOOL FieldDescriptorProto_Type = 8
+ FieldDescriptorProto_TYPE_STRING FieldDescriptorProto_Type = 9
+ // Tag-delimited aggregate.
+ // Group type is deprecated and not supported in proto3. However, Proto3
+ // implementations should still be able to parse the group wire format and
+ // treat group fields as unknown fields.
+ FieldDescriptorProto_TYPE_GROUP FieldDescriptorProto_Type = 10
+ FieldDescriptorProto_TYPE_MESSAGE FieldDescriptorProto_Type = 11
+ // New in version 2.
+ FieldDescriptorProto_TYPE_BYTES FieldDescriptorProto_Type = 12
+ FieldDescriptorProto_TYPE_UINT32 FieldDescriptorProto_Type = 13
+ FieldDescriptorProto_TYPE_ENUM FieldDescriptorProto_Type = 14
+ FieldDescriptorProto_TYPE_SFIXED32 FieldDescriptorProto_Type = 15
+ FieldDescriptorProto_TYPE_SFIXED64 FieldDescriptorProto_Type = 16
+ FieldDescriptorProto_TYPE_SINT32 FieldDescriptorProto_Type = 17
+ FieldDescriptorProto_TYPE_SINT64 FieldDescriptorProto_Type = 18
+)
+
+var FieldDescriptorProto_Type_name = map[int32]string{
+ 1: "TYPE_DOUBLE",
+ 2: "TYPE_FLOAT",
+ 3: "TYPE_INT64",
+ 4: "TYPE_UINT64",
+ 5: "TYPE_INT32",
+ 6: "TYPE_FIXED64",
+ 7: "TYPE_FIXED32",
+ 8: "TYPE_BOOL",
+ 9: "TYPE_STRING",
+ 10: "TYPE_GROUP",
+ 11: "TYPE_MESSAGE",
+ 12: "TYPE_BYTES",
+ 13: "TYPE_UINT32",
+ 14: "TYPE_ENUM",
+ 15: "TYPE_SFIXED32",
+ 16: "TYPE_SFIXED64",
+ 17: "TYPE_SINT32",
+ 18: "TYPE_SINT64",
+}
+var FieldDescriptorProto_Type_value = map[string]int32{
+ "TYPE_DOUBLE": 1,
+ "TYPE_FLOAT": 2,
+ "TYPE_INT64": 3,
+ "TYPE_UINT64": 4,
+ "TYPE_INT32": 5,
+ "TYPE_FIXED64": 6,
+ "TYPE_FIXED32": 7,
+ "TYPE_BOOL": 8,
+ "TYPE_STRING": 9,
+ "TYPE_GROUP": 10,
+ "TYPE_MESSAGE": 11,
+ "TYPE_BYTES": 12,
+ "TYPE_UINT32": 13,
+ "TYPE_ENUM": 14,
+ "TYPE_SFIXED32": 15,
+ "TYPE_SFIXED64": 16,
+ "TYPE_SINT32": 17,
+ "TYPE_SINT64": 18,
+}
+
+func (x FieldDescriptorProto_Type) Enum() *FieldDescriptorProto_Type {
+ p := new(FieldDescriptorProto_Type)
+ *p = x
+ return p
+}
+func (x FieldDescriptorProto_Type) String() string {
+ return proto.EnumName(FieldDescriptorProto_Type_name, int32(x))
+}
+func (x *FieldDescriptorProto_Type) UnmarshalJSON(data []byte) error {
+ value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Type_value, data, "FieldDescriptorProto_Type")
+ if err != nil {
+ return err
+ }
+ *x = FieldDescriptorProto_Type(value)
+ return nil
+}
+func (FieldDescriptorProto_Type) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{4, 0} }
+
+type FieldDescriptorProto_Label int32
+
+const (
+ // 0 is reserved for errors
+ FieldDescriptorProto_LABEL_OPTIONAL FieldDescriptorProto_Label = 1
+ FieldDescriptorProto_LABEL_REQUIRED FieldDescriptorProto_Label = 2
+ FieldDescriptorProto_LABEL_REPEATED FieldDescriptorProto_Label = 3
+)
+
+var FieldDescriptorProto_Label_name = map[int32]string{
+ 1: "LABEL_OPTIONAL",
+ 2: "LABEL_REQUIRED",
+ 3: "LABEL_REPEATED",
+}
+var FieldDescriptorProto_Label_value = map[string]int32{
+ "LABEL_OPTIONAL": 1,
+ "LABEL_REQUIRED": 2,
+ "LABEL_REPEATED": 3,
+}
+
+func (x FieldDescriptorProto_Label) Enum() *FieldDescriptorProto_Label {
+ p := new(FieldDescriptorProto_Label)
+ *p = x
+ return p
+}
+func (x FieldDescriptorProto_Label) String() string {
+ return proto.EnumName(FieldDescriptorProto_Label_name, int32(x))
+}
+func (x *FieldDescriptorProto_Label) UnmarshalJSON(data []byte) error {
+ value, err := proto.UnmarshalJSONEnum(FieldDescriptorProto_Label_value, data, "FieldDescriptorProto_Label")
+ if err != nil {
+ return err
+ }
+ *x = FieldDescriptorProto_Label(value)
+ return nil
+}
+func (FieldDescriptorProto_Label) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{4, 1}
+}
+
+// Generated classes can be optimized for speed or code size.
+type FileOptions_OptimizeMode int32
+
+const (
+ FileOptions_SPEED FileOptions_OptimizeMode = 1
+ // etc.
+ FileOptions_CODE_SIZE FileOptions_OptimizeMode = 2
+ FileOptions_LITE_RUNTIME FileOptions_OptimizeMode = 3
+)
+
+var FileOptions_OptimizeMode_name = map[int32]string{
+ 1: "SPEED",
+ 2: "CODE_SIZE",
+ 3: "LITE_RUNTIME",
+}
+var FileOptions_OptimizeMode_value = map[string]int32{
+ "SPEED": 1,
+ "CODE_SIZE": 2,
+ "LITE_RUNTIME": 3,
+}
+
+func (x FileOptions_OptimizeMode) Enum() *FileOptions_OptimizeMode {
+ p := new(FileOptions_OptimizeMode)
+ *p = x
+ return p
+}
+func (x FileOptions_OptimizeMode) String() string {
+ return proto.EnumName(FileOptions_OptimizeMode_name, int32(x))
+}
+func (x *FileOptions_OptimizeMode) UnmarshalJSON(data []byte) error {
+ value, err := proto.UnmarshalJSONEnum(FileOptions_OptimizeMode_value, data, "FileOptions_OptimizeMode")
+ if err != nil {
+ return err
+ }
+ *x = FileOptions_OptimizeMode(value)
+ return nil
+}
+func (FileOptions_OptimizeMode) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{10, 0} }
+
+type FieldOptions_CType int32
+
+const (
+ // Default mode.
+ FieldOptions_STRING FieldOptions_CType = 0
+ FieldOptions_CORD FieldOptions_CType = 1
+ FieldOptions_STRING_PIECE FieldOptions_CType = 2
+)
+
+var FieldOptions_CType_name = map[int32]string{
+ 0: "STRING",
+ 1: "CORD",
+ 2: "STRING_PIECE",
+}
+var FieldOptions_CType_value = map[string]int32{
+ "STRING": 0,
+ "CORD": 1,
+ "STRING_PIECE": 2,
+}
+
+func (x FieldOptions_CType) Enum() *FieldOptions_CType {
+ p := new(FieldOptions_CType)
+ *p = x
+ return p
+}
+func (x FieldOptions_CType) String() string {
+ return proto.EnumName(FieldOptions_CType_name, int32(x))
+}
+func (x *FieldOptions_CType) UnmarshalJSON(data []byte) error {
+ value, err := proto.UnmarshalJSONEnum(FieldOptions_CType_value, data, "FieldOptions_CType")
+ if err != nil {
+ return err
+ }
+ *x = FieldOptions_CType(value)
+ return nil
+}
+func (FieldOptions_CType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{12, 0} }
+
+type FieldOptions_JSType int32
+
+const (
+ // Use the default type.
+ FieldOptions_JS_NORMAL FieldOptions_JSType = 0
+ // Use JavaScript strings.
+ FieldOptions_JS_STRING FieldOptions_JSType = 1
+ // Use JavaScript numbers.
+ FieldOptions_JS_NUMBER FieldOptions_JSType = 2
+)
+
+var FieldOptions_JSType_name = map[int32]string{
+ 0: "JS_NORMAL",
+ 1: "JS_STRING",
+ 2: "JS_NUMBER",
+}
+var FieldOptions_JSType_value = map[string]int32{
+ "JS_NORMAL": 0,
+ "JS_STRING": 1,
+ "JS_NUMBER": 2,
+}
+
+func (x FieldOptions_JSType) Enum() *FieldOptions_JSType {
+ p := new(FieldOptions_JSType)
+ *p = x
+ return p
+}
+func (x FieldOptions_JSType) String() string {
+ return proto.EnumName(FieldOptions_JSType_name, int32(x))
+}
+func (x *FieldOptions_JSType) UnmarshalJSON(data []byte) error {
+ value, err := proto.UnmarshalJSONEnum(FieldOptions_JSType_value, data, "FieldOptions_JSType")
+ if err != nil {
+ return err
+ }
+ *x = FieldOptions_JSType(value)
+ return nil
+}
+func (FieldOptions_JSType) EnumDescriptor() ([]byte, []int) { return fileDescriptor0, []int{12, 1} }
+
+// Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
+// or neither? HTTP based RPC implementation may choose GET verb for safe
+// methods, and PUT verb for idempotent methods instead of the default POST.
+type MethodOptions_IdempotencyLevel int32
+
+const (
+ MethodOptions_IDEMPOTENCY_UNKNOWN MethodOptions_IdempotencyLevel = 0
+ MethodOptions_NO_SIDE_EFFECTS MethodOptions_IdempotencyLevel = 1
+ MethodOptions_IDEMPOTENT MethodOptions_IdempotencyLevel = 2
+)
+
+var MethodOptions_IdempotencyLevel_name = map[int32]string{
+ 0: "IDEMPOTENCY_UNKNOWN",
+ 1: "NO_SIDE_EFFECTS",
+ 2: "IDEMPOTENT",
+}
+var MethodOptions_IdempotencyLevel_value = map[string]int32{
+ "IDEMPOTENCY_UNKNOWN": 0,
+ "NO_SIDE_EFFECTS": 1,
+ "IDEMPOTENT": 2,
+}
+
+func (x MethodOptions_IdempotencyLevel) Enum() *MethodOptions_IdempotencyLevel {
+ p := new(MethodOptions_IdempotencyLevel)
+ *p = x
+ return p
+}
+func (x MethodOptions_IdempotencyLevel) String() string {
+ return proto.EnumName(MethodOptions_IdempotencyLevel_name, int32(x))
+}
+func (x *MethodOptions_IdempotencyLevel) UnmarshalJSON(data []byte) error {
+ value, err := proto.UnmarshalJSONEnum(MethodOptions_IdempotencyLevel_value, data, "MethodOptions_IdempotencyLevel")
+ if err != nil {
+ return err
+ }
+ *x = MethodOptions_IdempotencyLevel(value)
+ return nil
+}
+func (MethodOptions_IdempotencyLevel) EnumDescriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{17, 0}
+}
+
+// The protocol compiler can output a FileDescriptorSet containing the .proto
+// files it parses.
+type FileDescriptorSet struct {
+ File []*FileDescriptorProto `protobuf:"bytes,1,rep,name=file" json:"file,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *FileDescriptorSet) Reset() { *m = FileDescriptorSet{} }
+func (m *FileDescriptorSet) String() string { return proto.CompactTextString(m) }
+func (*FileDescriptorSet) ProtoMessage() {}
+func (*FileDescriptorSet) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+
+func (m *FileDescriptorSet) GetFile() []*FileDescriptorProto {
+ if m != nil {
+ return m.File
+ }
+ return nil
+}
+
+// Describes a complete .proto file.
+type FileDescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Package *string `protobuf:"bytes,2,opt,name=package" json:"package,omitempty"`
+ // Names of files imported by this file.
+ Dependency []string `protobuf:"bytes,3,rep,name=dependency" json:"dependency,omitempty"`
+ // Indexes of the public imported files in the dependency list above.
+ PublicDependency []int32 `protobuf:"varint,10,rep,name=public_dependency,json=publicDependency" json:"public_dependency,omitempty"`
+ // Indexes of the weak imported files in the dependency list.
+ // For Google-internal migration only. Do not use.
+ WeakDependency []int32 `protobuf:"varint,11,rep,name=weak_dependency,json=weakDependency" json:"weak_dependency,omitempty"`
+ // All top-level definitions in this file.
+ MessageType []*DescriptorProto `protobuf:"bytes,4,rep,name=message_type,json=messageType" json:"message_type,omitempty"`
+ EnumType []*EnumDescriptorProto `protobuf:"bytes,5,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"`
+ Service []*ServiceDescriptorProto `protobuf:"bytes,6,rep,name=service" json:"service,omitempty"`
+ Extension []*FieldDescriptorProto `protobuf:"bytes,7,rep,name=extension" json:"extension,omitempty"`
+ Options *FileOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"`
+ // This field contains optional information about the original source code.
+ // You may safely remove this entire field without harming runtime
+ // functionality of the descriptors -- the information is needed only by
+ // development tools.
+ SourceCodeInfo *SourceCodeInfo `protobuf:"bytes,9,opt,name=source_code_info,json=sourceCodeInfo" json:"source_code_info,omitempty"`
+ // The syntax of the proto file.
+ // The supported values are "proto2" and "proto3".
+ Syntax *string `protobuf:"bytes,12,opt,name=syntax" json:"syntax,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *FileDescriptorProto) Reset() { *m = FileDescriptorProto{} }
+func (m *FileDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*FileDescriptorProto) ProtoMessage() {}
+func (*FileDescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{1} }
+
+func (m *FileDescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *FileDescriptorProto) GetPackage() string {
+ if m != nil && m.Package != nil {
+ return *m.Package
+ }
+ return ""
+}
+
+func (m *FileDescriptorProto) GetDependency() []string {
+ if m != nil {
+ return m.Dependency
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetPublicDependency() []int32 {
+ if m != nil {
+ return m.PublicDependency
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetWeakDependency() []int32 {
+ if m != nil {
+ return m.WeakDependency
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetMessageType() []*DescriptorProto {
+ if m != nil {
+ return m.MessageType
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetEnumType() []*EnumDescriptorProto {
+ if m != nil {
+ return m.EnumType
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetService() []*ServiceDescriptorProto {
+ if m != nil {
+ return m.Service
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetExtension() []*FieldDescriptorProto {
+ if m != nil {
+ return m.Extension
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetOptions() *FileOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetSourceCodeInfo() *SourceCodeInfo {
+ if m != nil {
+ return m.SourceCodeInfo
+ }
+ return nil
+}
+
+func (m *FileDescriptorProto) GetSyntax() string {
+ if m != nil && m.Syntax != nil {
+ return *m.Syntax
+ }
+ return ""
+}
+
+// Describes a message type.
+type DescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Field []*FieldDescriptorProto `protobuf:"bytes,2,rep,name=field" json:"field,omitempty"`
+ Extension []*FieldDescriptorProto `protobuf:"bytes,6,rep,name=extension" json:"extension,omitempty"`
+ NestedType []*DescriptorProto `protobuf:"bytes,3,rep,name=nested_type,json=nestedType" json:"nested_type,omitempty"`
+ EnumType []*EnumDescriptorProto `protobuf:"bytes,4,rep,name=enum_type,json=enumType" json:"enum_type,omitempty"`
+ ExtensionRange []*DescriptorProto_ExtensionRange `protobuf:"bytes,5,rep,name=extension_range,json=extensionRange" json:"extension_range,omitempty"`
+ OneofDecl []*OneofDescriptorProto `protobuf:"bytes,8,rep,name=oneof_decl,json=oneofDecl" json:"oneof_decl,omitempty"`
+ Options *MessageOptions `protobuf:"bytes,7,opt,name=options" json:"options,omitempty"`
+ ReservedRange []*DescriptorProto_ReservedRange `protobuf:"bytes,9,rep,name=reserved_range,json=reservedRange" json:"reserved_range,omitempty"`
+ // Reserved field names, which may not be used by fields in the same message.
+ // A given name may only be reserved once.
+ ReservedName []string `protobuf:"bytes,10,rep,name=reserved_name,json=reservedName" json:"reserved_name,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *DescriptorProto) Reset() { *m = DescriptorProto{} }
+func (m *DescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*DescriptorProto) ProtoMessage() {}
+func (*DescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{2} }
+
+func (m *DescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *DescriptorProto) GetField() []*FieldDescriptorProto {
+ if m != nil {
+ return m.Field
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetExtension() []*FieldDescriptorProto {
+ if m != nil {
+ return m.Extension
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetNestedType() []*DescriptorProto {
+ if m != nil {
+ return m.NestedType
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetEnumType() []*EnumDescriptorProto {
+ if m != nil {
+ return m.EnumType
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetExtensionRange() []*DescriptorProto_ExtensionRange {
+ if m != nil {
+ return m.ExtensionRange
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetOneofDecl() []*OneofDescriptorProto {
+ if m != nil {
+ return m.OneofDecl
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetOptions() *MessageOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetReservedRange() []*DescriptorProto_ReservedRange {
+ if m != nil {
+ return m.ReservedRange
+ }
+ return nil
+}
+
+func (m *DescriptorProto) GetReservedName() []string {
+ if m != nil {
+ return m.ReservedName
+ }
+ return nil
+}
+
+type DescriptorProto_ExtensionRange struct {
+ Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"`
+ End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
+ Options *ExtensionRangeOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *DescriptorProto_ExtensionRange) Reset() { *m = DescriptorProto_ExtensionRange{} }
+func (m *DescriptorProto_ExtensionRange) String() string { return proto.CompactTextString(m) }
+func (*DescriptorProto_ExtensionRange) ProtoMessage() {}
+func (*DescriptorProto_ExtensionRange) Descriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{2, 0}
+}
+
+func (m *DescriptorProto_ExtensionRange) GetStart() int32 {
+ if m != nil && m.Start != nil {
+ return *m.Start
+ }
+ return 0
+}
+
+func (m *DescriptorProto_ExtensionRange) GetEnd() int32 {
+ if m != nil && m.End != nil {
+ return *m.End
+ }
+ return 0
+}
+
+func (m *DescriptorProto_ExtensionRange) GetOptions() *ExtensionRangeOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// Range of reserved tag numbers. Reserved tag numbers may not be used by
+// fields or extension ranges in the same message. Reserved ranges may
+// not overlap.
+type DescriptorProto_ReservedRange struct {
+ Start *int32 `protobuf:"varint,1,opt,name=start" json:"start,omitempty"`
+ End *int32 `protobuf:"varint,2,opt,name=end" json:"end,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *DescriptorProto_ReservedRange) Reset() { *m = DescriptorProto_ReservedRange{} }
+func (m *DescriptorProto_ReservedRange) String() string { return proto.CompactTextString(m) }
+func (*DescriptorProto_ReservedRange) ProtoMessage() {}
+func (*DescriptorProto_ReservedRange) Descriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{2, 1}
+}
+
+func (m *DescriptorProto_ReservedRange) GetStart() int32 {
+ if m != nil && m.Start != nil {
+ return *m.Start
+ }
+ return 0
+}
+
+func (m *DescriptorProto_ReservedRange) GetEnd() int32 {
+ if m != nil && m.End != nil {
+ return *m.End
+ }
+ return 0
+}
+
+type ExtensionRangeOptions struct {
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *ExtensionRangeOptions) Reset() { *m = ExtensionRangeOptions{} }
+func (m *ExtensionRangeOptions) String() string { return proto.CompactTextString(m) }
+func (*ExtensionRangeOptions) ProtoMessage() {}
+func (*ExtensionRangeOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{3} }
+
+var extRange_ExtensionRangeOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*ExtensionRangeOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_ExtensionRangeOptions
+}
+
+func (m *ExtensionRangeOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+// Describes a field within a message.
+type FieldDescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Number *int32 `protobuf:"varint,3,opt,name=number" json:"number,omitempty"`
+ Label *FieldDescriptorProto_Label `protobuf:"varint,4,opt,name=label,enum=google.protobuf.FieldDescriptorProto_Label" json:"label,omitempty"`
+ // If type_name is set, this need not be set. If both this and type_name
+ // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+ Type *FieldDescriptorProto_Type `protobuf:"varint,5,opt,name=type,enum=google.protobuf.FieldDescriptorProto_Type" json:"type,omitempty"`
+ // For message and enum types, this is the name of the type. If the name
+ // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
+ // rules are used to find the type (i.e. first the nested types within this
+ // message are searched, then within the parent, on up to the root
+ // namespace).
+ TypeName *string `protobuf:"bytes,6,opt,name=type_name,json=typeName" json:"type_name,omitempty"`
+ // For extensions, this is the name of the type being extended. It is
+ // resolved in the same manner as type_name.
+ Extendee *string `protobuf:"bytes,2,opt,name=extendee" json:"extendee,omitempty"`
+ // For numeric types, contains the original text representation of the value.
+ // For booleans, "true" or "false".
+ // For strings, contains the default text contents (not escaped in any way).
+ // For bytes, contains the C escaped value. All bytes >= 128 are escaped.
+ // TODO(kenton): Base-64 encode?
+ DefaultValue *string `protobuf:"bytes,7,opt,name=default_value,json=defaultValue" json:"default_value,omitempty"`
+ // If set, gives the index of a oneof in the containing type's oneof_decl
+ // list. This field is a member of that oneof.
+ OneofIndex *int32 `protobuf:"varint,9,opt,name=oneof_index,json=oneofIndex" json:"oneof_index,omitempty"`
+ // JSON name of this field. The value is set by protocol compiler. If the
+ // user has set a "json_name" option on this field, that option's value
+ // will be used. Otherwise, it's deduced from the field's name by converting
+ // it to camelCase.
+ JsonName *string `protobuf:"bytes,10,opt,name=json_name,json=jsonName" json:"json_name,omitempty"`
+ Options *FieldOptions `protobuf:"bytes,8,opt,name=options" json:"options,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *FieldDescriptorProto) Reset() { *m = FieldDescriptorProto{} }
+func (m *FieldDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*FieldDescriptorProto) ProtoMessage() {}
+func (*FieldDescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{4} }
+
+func (m *FieldDescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *FieldDescriptorProto) GetNumber() int32 {
+ if m != nil && m.Number != nil {
+ return *m.Number
+ }
+ return 0
+}
+
+func (m *FieldDescriptorProto) GetLabel() FieldDescriptorProto_Label {
+ if m != nil && m.Label != nil {
+ return *m.Label
+ }
+ return FieldDescriptorProto_LABEL_OPTIONAL
+}
+
+func (m *FieldDescriptorProto) GetType() FieldDescriptorProto_Type {
+ if m != nil && m.Type != nil {
+ return *m.Type
+ }
+ return FieldDescriptorProto_TYPE_DOUBLE
+}
+
+func (m *FieldDescriptorProto) GetTypeName() string {
+ if m != nil && m.TypeName != nil {
+ return *m.TypeName
+ }
+ return ""
+}
+
+func (m *FieldDescriptorProto) GetExtendee() string {
+ if m != nil && m.Extendee != nil {
+ return *m.Extendee
+ }
+ return ""
+}
+
+func (m *FieldDescriptorProto) GetDefaultValue() string {
+ if m != nil && m.DefaultValue != nil {
+ return *m.DefaultValue
+ }
+ return ""
+}
+
+func (m *FieldDescriptorProto) GetOneofIndex() int32 {
+ if m != nil && m.OneofIndex != nil {
+ return *m.OneofIndex
+ }
+ return 0
+}
+
+func (m *FieldDescriptorProto) GetJsonName() string {
+ if m != nil && m.JsonName != nil {
+ return *m.JsonName
+ }
+ return ""
+}
+
+func (m *FieldDescriptorProto) GetOptions() *FieldOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// Describes a oneof.
+type OneofDescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Options *OneofOptions `protobuf:"bytes,2,opt,name=options" json:"options,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *OneofDescriptorProto) Reset() { *m = OneofDescriptorProto{} }
+func (m *OneofDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*OneofDescriptorProto) ProtoMessage() {}
+func (*OneofDescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{5} }
+
+func (m *OneofDescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *OneofDescriptorProto) GetOptions() *OneofOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// Describes an enum type.
+type EnumDescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Value []*EnumValueDescriptorProto `protobuf:"bytes,2,rep,name=value" json:"value,omitempty"`
+ Options *EnumOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *EnumDescriptorProto) Reset() { *m = EnumDescriptorProto{} }
+func (m *EnumDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*EnumDescriptorProto) ProtoMessage() {}
+func (*EnumDescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{6} }
+
+func (m *EnumDescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *EnumDescriptorProto) GetValue() []*EnumValueDescriptorProto {
+ if m != nil {
+ return m.Value
+ }
+ return nil
+}
+
+func (m *EnumDescriptorProto) GetOptions() *EnumOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// Describes a value within an enum.
+type EnumValueDescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Number *int32 `protobuf:"varint,2,opt,name=number" json:"number,omitempty"`
+ Options *EnumValueOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *EnumValueDescriptorProto) Reset() { *m = EnumValueDescriptorProto{} }
+func (m *EnumValueDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*EnumValueDescriptorProto) ProtoMessage() {}
+func (*EnumValueDescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{7} }
+
+func (m *EnumValueDescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *EnumValueDescriptorProto) GetNumber() int32 {
+ if m != nil && m.Number != nil {
+ return *m.Number
+ }
+ return 0
+}
+
+func (m *EnumValueDescriptorProto) GetOptions() *EnumValueOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// Describes a service.
+type ServiceDescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ Method []*MethodDescriptorProto `protobuf:"bytes,2,rep,name=method" json:"method,omitempty"`
+ Options *ServiceOptions `protobuf:"bytes,3,opt,name=options" json:"options,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *ServiceDescriptorProto) Reset() { *m = ServiceDescriptorProto{} }
+func (m *ServiceDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*ServiceDescriptorProto) ProtoMessage() {}
+func (*ServiceDescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{8} }
+
+func (m *ServiceDescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *ServiceDescriptorProto) GetMethod() []*MethodDescriptorProto {
+ if m != nil {
+ return m.Method
+ }
+ return nil
+}
+
+func (m *ServiceDescriptorProto) GetOptions() *ServiceOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+// Describes a method of a service.
+type MethodDescriptorProto struct {
+ Name *string `protobuf:"bytes,1,opt,name=name" json:"name,omitempty"`
+ // Input and output type names. These are resolved in the same way as
+ // FieldDescriptorProto.type_name, but must refer to a message type.
+ InputType *string `protobuf:"bytes,2,opt,name=input_type,json=inputType" json:"input_type,omitempty"`
+ OutputType *string `protobuf:"bytes,3,opt,name=output_type,json=outputType" json:"output_type,omitempty"`
+ Options *MethodOptions `protobuf:"bytes,4,opt,name=options" json:"options,omitempty"`
+ // Identifies if client streams multiple client messages
+ ClientStreaming *bool `protobuf:"varint,5,opt,name=client_streaming,json=clientStreaming,def=0" json:"client_streaming,omitempty"`
+ // Identifies if server streams multiple server messages
+ ServerStreaming *bool `protobuf:"varint,6,opt,name=server_streaming,json=serverStreaming,def=0" json:"server_streaming,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *MethodDescriptorProto) Reset() { *m = MethodDescriptorProto{} }
+func (m *MethodDescriptorProto) String() string { return proto.CompactTextString(m) }
+func (*MethodDescriptorProto) ProtoMessage() {}
+func (*MethodDescriptorProto) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{9} }
+
+const Default_MethodDescriptorProto_ClientStreaming bool = false
+const Default_MethodDescriptorProto_ServerStreaming bool = false
+
+func (m *MethodDescriptorProto) GetName() string {
+ if m != nil && m.Name != nil {
+ return *m.Name
+ }
+ return ""
+}
+
+func (m *MethodDescriptorProto) GetInputType() string {
+ if m != nil && m.InputType != nil {
+ return *m.InputType
+ }
+ return ""
+}
+
+func (m *MethodDescriptorProto) GetOutputType() string {
+ if m != nil && m.OutputType != nil {
+ return *m.OutputType
+ }
+ return ""
+}
+
+func (m *MethodDescriptorProto) GetOptions() *MethodOptions {
+ if m != nil {
+ return m.Options
+ }
+ return nil
+}
+
+func (m *MethodDescriptorProto) GetClientStreaming() bool {
+ if m != nil && m.ClientStreaming != nil {
+ return *m.ClientStreaming
+ }
+ return Default_MethodDescriptorProto_ClientStreaming
+}
+
+func (m *MethodDescriptorProto) GetServerStreaming() bool {
+ if m != nil && m.ServerStreaming != nil {
+ return *m.ServerStreaming
+ }
+ return Default_MethodDescriptorProto_ServerStreaming
+}
+
+type FileOptions struct {
+ // Sets the Java package where classes generated from this .proto will be
+ // placed. By default, the proto package is used, but this is often
+ // inappropriate because proto packages do not normally start with backwards
+ // domain names.
+ JavaPackage *string `protobuf:"bytes,1,opt,name=java_package,json=javaPackage" json:"java_package,omitempty"`
+ // If set, all the classes from the .proto file are wrapped in a single
+ // outer class with the given name. This applies to both Proto1
+ // (equivalent to the old "--one_java_file" option) and Proto2 (where
+ // a .proto always translates to a single class, but you may want to
+ // explicitly choose the class name).
+ JavaOuterClassname *string `protobuf:"bytes,8,opt,name=java_outer_classname,json=javaOuterClassname" json:"java_outer_classname,omitempty"`
+ // If set true, then the Java code generator will generate a separate .java
+ // file for each top-level message, enum, and service defined in the .proto
+ // file. Thus, these types will *not* be nested inside the outer class
+ // named by java_outer_classname. However, the outer class will still be
+ // generated to contain the file's getDescriptor() method as well as any
+ // top-level extensions defined in the file.
+ JavaMultipleFiles *bool `protobuf:"varint,10,opt,name=java_multiple_files,json=javaMultipleFiles,def=0" json:"java_multiple_files,omitempty"`
+ // This option does nothing.
+ JavaGenerateEqualsAndHash *bool `protobuf:"varint,20,opt,name=java_generate_equals_and_hash,json=javaGenerateEqualsAndHash" json:"java_generate_equals_and_hash,omitempty"`
+ // If set true, then the Java2 code generator will generate code that
+ // throws an exception whenever an attempt is made to assign a non-UTF-8
+ // byte sequence to a string field.
+ // Message reflection will do the same.
+ // However, an extension field still accepts non-UTF-8 byte sequences.
+ // This option has no effect on when used with the lite runtime.
+ JavaStringCheckUtf8 *bool `protobuf:"varint,27,opt,name=java_string_check_utf8,json=javaStringCheckUtf8,def=0" json:"java_string_check_utf8,omitempty"`
+ OptimizeFor *FileOptions_OptimizeMode `protobuf:"varint,9,opt,name=optimize_for,json=optimizeFor,enum=google.protobuf.FileOptions_OptimizeMode,def=1" json:"optimize_for,omitempty"`
+ // Sets the Go package where structs generated from this .proto will be
+ // placed. If omitted, the Go package will be derived from the following:
+ // - The basename of the package import path, if provided.
+ // - Otherwise, the package statement in the .proto file, if present.
+ // - Otherwise, the basename of the .proto file, without extension.
+ GoPackage *string `protobuf:"bytes,11,opt,name=go_package,json=goPackage" json:"go_package,omitempty"`
+ // Should generic services be generated in each language? "Generic" services
+ // are not specific to any particular RPC system. They are generated by the
+ // main code generators in each language (without additional plugins).
+ // Generic services were the only kind of service generation supported by
+ // early versions of google.protobuf.
+ //
+ // Generic services are now considered deprecated in favor of using plugins
+ // that generate code specific to your particular RPC system. Therefore,
+ // these default to false. Old code which depends on generic services should
+ // explicitly set them to true.
+ CcGenericServices *bool `protobuf:"varint,16,opt,name=cc_generic_services,json=ccGenericServices,def=0" json:"cc_generic_services,omitempty"`
+ JavaGenericServices *bool `protobuf:"varint,17,opt,name=java_generic_services,json=javaGenericServices,def=0" json:"java_generic_services,omitempty"`
+ PyGenericServices *bool `protobuf:"varint,18,opt,name=py_generic_services,json=pyGenericServices,def=0" json:"py_generic_services,omitempty"`
+ PhpGenericServices *bool `protobuf:"varint,42,opt,name=php_generic_services,json=phpGenericServices,def=0" json:"php_generic_services,omitempty"`
+ // Is this file deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for everything in the file, or it will be completely ignored; in the very
+ // least, this is a formalization for deprecating files.
+ Deprecated *bool `protobuf:"varint,23,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+ // Enables the use of arenas for the proto messages in this file. This applies
+ // only to generated classes for C++.
+ CcEnableArenas *bool `protobuf:"varint,31,opt,name=cc_enable_arenas,json=ccEnableArenas,def=0" json:"cc_enable_arenas,omitempty"`
+ // Sets the objective c class prefix which is prepended to all objective c
+ // generated classes from this .proto. There is no default.
+ ObjcClassPrefix *string `protobuf:"bytes,36,opt,name=objc_class_prefix,json=objcClassPrefix" json:"objc_class_prefix,omitempty"`
+ // Namespace for generated classes; defaults to the package.
+ CsharpNamespace *string `protobuf:"bytes,37,opt,name=csharp_namespace,json=csharpNamespace" json:"csharp_namespace,omitempty"`
+ // By default Swift generators will take the proto package and CamelCase it
+ // replacing '.' with underscore and use that to prefix the types/symbols
+ // defined. When this options is provided, they will use this value instead
+ // to prefix the types/symbols defined.
+ SwiftPrefix *string `protobuf:"bytes,39,opt,name=swift_prefix,json=swiftPrefix" json:"swift_prefix,omitempty"`
+ // Sets the php class prefix which is prepended to all php generated classes
+ // from this .proto. Default is empty.
+ PhpClassPrefix *string `protobuf:"bytes,40,opt,name=php_class_prefix,json=phpClassPrefix" json:"php_class_prefix,omitempty"`
+ // Use this option to change the namespace of php generated classes. Default
+ // is empty. When this option is empty, the package name will be used for
+ // determining the namespace.
+ PhpNamespace *string `protobuf:"bytes,41,opt,name=php_namespace,json=phpNamespace" json:"php_namespace,omitempty"`
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *FileOptions) Reset() { *m = FileOptions{} }
+func (m *FileOptions) String() string { return proto.CompactTextString(m) }
+func (*FileOptions) ProtoMessage() {}
+func (*FileOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{10} }
+
+var extRange_FileOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*FileOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_FileOptions
+}
+
+const Default_FileOptions_JavaMultipleFiles bool = false
+const Default_FileOptions_JavaStringCheckUtf8 bool = false
+const Default_FileOptions_OptimizeFor FileOptions_OptimizeMode = FileOptions_SPEED
+const Default_FileOptions_CcGenericServices bool = false
+const Default_FileOptions_JavaGenericServices bool = false
+const Default_FileOptions_PyGenericServices bool = false
+const Default_FileOptions_PhpGenericServices bool = false
+const Default_FileOptions_Deprecated bool = false
+const Default_FileOptions_CcEnableArenas bool = false
+
+func (m *FileOptions) GetJavaPackage() string {
+ if m != nil && m.JavaPackage != nil {
+ return *m.JavaPackage
+ }
+ return ""
+}
+
+func (m *FileOptions) GetJavaOuterClassname() string {
+ if m != nil && m.JavaOuterClassname != nil {
+ return *m.JavaOuterClassname
+ }
+ return ""
+}
+
+func (m *FileOptions) GetJavaMultipleFiles() bool {
+ if m != nil && m.JavaMultipleFiles != nil {
+ return *m.JavaMultipleFiles
+ }
+ return Default_FileOptions_JavaMultipleFiles
+}
+
+func (m *FileOptions) GetJavaGenerateEqualsAndHash() bool {
+ if m != nil && m.JavaGenerateEqualsAndHash != nil {
+ return *m.JavaGenerateEqualsAndHash
+ }
+ return false
+}
+
+func (m *FileOptions) GetJavaStringCheckUtf8() bool {
+ if m != nil && m.JavaStringCheckUtf8 != nil {
+ return *m.JavaStringCheckUtf8
+ }
+ return Default_FileOptions_JavaStringCheckUtf8
+}
+
+func (m *FileOptions) GetOptimizeFor() FileOptions_OptimizeMode {
+ if m != nil && m.OptimizeFor != nil {
+ return *m.OptimizeFor
+ }
+ return Default_FileOptions_OptimizeFor
+}
+
+func (m *FileOptions) GetGoPackage() string {
+ if m != nil && m.GoPackage != nil {
+ return *m.GoPackage
+ }
+ return ""
+}
+
+func (m *FileOptions) GetCcGenericServices() bool {
+ if m != nil && m.CcGenericServices != nil {
+ return *m.CcGenericServices
+ }
+ return Default_FileOptions_CcGenericServices
+}
+
+func (m *FileOptions) GetJavaGenericServices() bool {
+ if m != nil && m.JavaGenericServices != nil {
+ return *m.JavaGenericServices
+ }
+ return Default_FileOptions_JavaGenericServices
+}
+
+func (m *FileOptions) GetPyGenericServices() bool {
+ if m != nil && m.PyGenericServices != nil {
+ return *m.PyGenericServices
+ }
+ return Default_FileOptions_PyGenericServices
+}
+
+func (m *FileOptions) GetPhpGenericServices() bool {
+ if m != nil && m.PhpGenericServices != nil {
+ return *m.PhpGenericServices
+ }
+ return Default_FileOptions_PhpGenericServices
+}
+
+func (m *FileOptions) GetDeprecated() bool {
+ if m != nil && m.Deprecated != nil {
+ return *m.Deprecated
+ }
+ return Default_FileOptions_Deprecated
+}
+
+func (m *FileOptions) GetCcEnableArenas() bool {
+ if m != nil && m.CcEnableArenas != nil {
+ return *m.CcEnableArenas
+ }
+ return Default_FileOptions_CcEnableArenas
+}
+
+func (m *FileOptions) GetObjcClassPrefix() string {
+ if m != nil && m.ObjcClassPrefix != nil {
+ return *m.ObjcClassPrefix
+ }
+ return ""
+}
+
+func (m *FileOptions) GetCsharpNamespace() string {
+ if m != nil && m.CsharpNamespace != nil {
+ return *m.CsharpNamespace
+ }
+ return ""
+}
+
+func (m *FileOptions) GetSwiftPrefix() string {
+ if m != nil && m.SwiftPrefix != nil {
+ return *m.SwiftPrefix
+ }
+ return ""
+}
+
+func (m *FileOptions) GetPhpClassPrefix() string {
+ if m != nil && m.PhpClassPrefix != nil {
+ return *m.PhpClassPrefix
+ }
+ return ""
+}
+
+func (m *FileOptions) GetPhpNamespace() string {
+ if m != nil && m.PhpNamespace != nil {
+ return *m.PhpNamespace
+ }
+ return ""
+}
+
+func (m *FileOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+type MessageOptions struct {
+ // Set true to use the old proto1 MessageSet wire format for extensions.
+ // This is provided for backwards-compatibility with the MessageSet wire
+ // format. You should not use this for any other reason: It's less
+ // efficient, has fewer features, and is more complicated.
+ //
+ // The message must be defined exactly as follows:
+ // message Foo {
+ // option message_set_wire_format = true;
+ // extensions 4 to max;
+ // }
+ // Note that the message cannot have any defined fields; MessageSets only
+ // have extensions.
+ //
+ // All extensions of your type must be singular messages; e.g. they cannot
+ // be int32s, enums, or repeated messages.
+ //
+ // Because this is an option, the above two restrictions are not enforced by
+ // the protocol compiler.
+ MessageSetWireFormat *bool `protobuf:"varint,1,opt,name=message_set_wire_format,json=messageSetWireFormat,def=0" json:"message_set_wire_format,omitempty"`
+ // Disables the generation of the standard "descriptor()" accessor, which can
+ // conflict with a field of the same name. This is meant to make migration
+ // from proto1 easier; new code should avoid fields named "descriptor".
+ NoStandardDescriptorAccessor *bool `protobuf:"varint,2,opt,name=no_standard_descriptor_accessor,json=noStandardDescriptorAccessor,def=0" json:"no_standard_descriptor_accessor,omitempty"`
+ // Is this message deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the message, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating messages.
+ Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+ // Whether the message is an automatically generated map entry type for the
+ // maps field.
+ //
+ // For maps fields:
+ // map map_field = 1;
+ // The parsed descriptor looks like:
+ // message MapFieldEntry {
+ // option map_entry = true;
+ // optional KeyType key = 1;
+ // optional ValueType value = 2;
+ // }
+ // repeated MapFieldEntry map_field = 1;
+ //
+ // Implementations may choose not to generate the map_entry=true message, but
+ // use a native map in the target language to hold the keys and values.
+ // The reflection APIs in such implementions still need to work as
+ // if the field is a repeated message field.
+ //
+ // NOTE: Do not set the option in .proto files. Always use the maps syntax
+ // instead. The option should only be implicitly set by the proto compiler
+ // parser.
+ MapEntry *bool `protobuf:"varint,7,opt,name=map_entry,json=mapEntry" json:"map_entry,omitempty"`
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *MessageOptions) Reset() { *m = MessageOptions{} }
+func (m *MessageOptions) String() string { return proto.CompactTextString(m) }
+func (*MessageOptions) ProtoMessage() {}
+func (*MessageOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{11} }
+
+var extRange_MessageOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*MessageOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_MessageOptions
+}
+
+const Default_MessageOptions_MessageSetWireFormat bool = false
+const Default_MessageOptions_NoStandardDescriptorAccessor bool = false
+const Default_MessageOptions_Deprecated bool = false
+
+func (m *MessageOptions) GetMessageSetWireFormat() bool {
+ if m != nil && m.MessageSetWireFormat != nil {
+ return *m.MessageSetWireFormat
+ }
+ return Default_MessageOptions_MessageSetWireFormat
+}
+
+func (m *MessageOptions) GetNoStandardDescriptorAccessor() bool {
+ if m != nil && m.NoStandardDescriptorAccessor != nil {
+ return *m.NoStandardDescriptorAccessor
+ }
+ return Default_MessageOptions_NoStandardDescriptorAccessor
+}
+
+func (m *MessageOptions) GetDeprecated() bool {
+ if m != nil && m.Deprecated != nil {
+ return *m.Deprecated
+ }
+ return Default_MessageOptions_Deprecated
+}
+
+func (m *MessageOptions) GetMapEntry() bool {
+ if m != nil && m.MapEntry != nil {
+ return *m.MapEntry
+ }
+ return false
+}
+
+func (m *MessageOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+type FieldOptions struct {
+ // The ctype option instructs the C++ code generator to use a different
+ // representation of the field than it normally would. See the specific
+ // options below. This option is not yet implemented in the open source
+ // release -- sorry, we'll try to include it in a future version!
+ Ctype *FieldOptions_CType `protobuf:"varint,1,opt,name=ctype,enum=google.protobuf.FieldOptions_CType,def=0" json:"ctype,omitempty"`
+ // The packed option can be enabled for repeated primitive fields to enable
+ // a more efficient representation on the wire. Rather than repeatedly
+ // writing the tag and type for each element, the entire array is encoded as
+ // a single length-delimited blob. In proto3, only explicit setting it to
+ // false will avoid using packed encoding.
+ Packed *bool `protobuf:"varint,2,opt,name=packed" json:"packed,omitempty"`
+ // The jstype option determines the JavaScript type used for values of the
+ // field. The option is permitted only for 64 bit integral and fixed types
+ // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
+ // is represented as JavaScript string, which avoids loss of precision that
+ // can happen when a large value is converted to a floating point JavaScript.
+ // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+ // use the JavaScript "number" type. The behavior of the default option
+ // JS_NORMAL is implementation dependent.
+ //
+ // This option is an enum to permit additional types to be added, e.g.
+ // goog.math.Integer.
+ Jstype *FieldOptions_JSType `protobuf:"varint,6,opt,name=jstype,enum=google.protobuf.FieldOptions_JSType,def=0" json:"jstype,omitempty"`
+ // Should this field be parsed lazily? Lazy applies only to message-type
+ // fields. It means that when the outer message is initially parsed, the
+ // inner message's contents will not be parsed but instead stored in encoded
+ // form. The inner message will actually be parsed when it is first accessed.
+ //
+ // This is only a hint. Implementations are free to choose whether to use
+ // eager or lazy parsing regardless of the value of this option. However,
+ // setting this option true suggests that the protocol author believes that
+ // using lazy parsing on this field is worth the additional bookkeeping
+ // overhead typically needed to implement it.
+ //
+ // This option does not affect the public interface of any generated code;
+ // all method signatures remain the same. Furthermore, thread-safety of the
+ // interface is not affected by this option; const methods remain safe to
+ // call from multiple threads concurrently, while non-const methods continue
+ // to require exclusive access.
+ //
+ //
+ // Note that implementations may choose not to check required fields within
+ // a lazy sub-message. That is, calling IsInitialized() on the outer message
+ // may return true even if the inner message has missing required fields.
+ // This is necessary because otherwise the inner message would have to be
+ // parsed in order to perform the check, defeating the purpose of lazy
+ // parsing. An implementation which chooses not to check required fields
+ // must be consistent about it. That is, for any particular sub-message, the
+ // implementation must either *always* check its required fields, or *never*
+ // check its required fields, regardless of whether or not the message has
+ // been parsed.
+ Lazy *bool `protobuf:"varint,5,opt,name=lazy,def=0" json:"lazy,omitempty"`
+ // Is this field deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for accessors, or it will be completely ignored; in the very least, this
+ // is a formalization for deprecating fields.
+ Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+ // For Google-internal migration only. Do not use.
+ Weak *bool `protobuf:"varint,10,opt,name=weak,def=0" json:"weak,omitempty"`
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *FieldOptions) Reset() { *m = FieldOptions{} }
+func (m *FieldOptions) String() string { return proto.CompactTextString(m) }
+func (*FieldOptions) ProtoMessage() {}
+func (*FieldOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{12} }
+
+var extRange_FieldOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*FieldOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_FieldOptions
+}
+
+const Default_FieldOptions_Ctype FieldOptions_CType = FieldOptions_STRING
+const Default_FieldOptions_Jstype FieldOptions_JSType = FieldOptions_JS_NORMAL
+const Default_FieldOptions_Lazy bool = false
+const Default_FieldOptions_Deprecated bool = false
+const Default_FieldOptions_Weak bool = false
+
+func (m *FieldOptions) GetCtype() FieldOptions_CType {
+ if m != nil && m.Ctype != nil {
+ return *m.Ctype
+ }
+ return Default_FieldOptions_Ctype
+}
+
+func (m *FieldOptions) GetPacked() bool {
+ if m != nil && m.Packed != nil {
+ return *m.Packed
+ }
+ return false
+}
+
+func (m *FieldOptions) GetJstype() FieldOptions_JSType {
+ if m != nil && m.Jstype != nil {
+ return *m.Jstype
+ }
+ return Default_FieldOptions_Jstype
+}
+
+func (m *FieldOptions) GetLazy() bool {
+ if m != nil && m.Lazy != nil {
+ return *m.Lazy
+ }
+ return Default_FieldOptions_Lazy
+}
+
+func (m *FieldOptions) GetDeprecated() bool {
+ if m != nil && m.Deprecated != nil {
+ return *m.Deprecated
+ }
+ return Default_FieldOptions_Deprecated
+}
+
+func (m *FieldOptions) GetWeak() bool {
+ if m != nil && m.Weak != nil {
+ return *m.Weak
+ }
+ return Default_FieldOptions_Weak
+}
+
+func (m *FieldOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+type OneofOptions struct {
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *OneofOptions) Reset() { *m = OneofOptions{} }
+func (m *OneofOptions) String() string { return proto.CompactTextString(m) }
+func (*OneofOptions) ProtoMessage() {}
+func (*OneofOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{13} }
+
+var extRange_OneofOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*OneofOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_OneofOptions
+}
+
+func (m *OneofOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+type EnumOptions struct {
+ // Set this option to true to allow mapping different tag names to the same
+ // value.
+ AllowAlias *bool `protobuf:"varint,2,opt,name=allow_alias,json=allowAlias" json:"allow_alias,omitempty"`
+ // Is this enum deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the enum, or it will be completely ignored; in the very least, this
+ // is a formalization for deprecating enums.
+ Deprecated *bool `protobuf:"varint,3,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *EnumOptions) Reset() { *m = EnumOptions{} }
+func (m *EnumOptions) String() string { return proto.CompactTextString(m) }
+func (*EnumOptions) ProtoMessage() {}
+func (*EnumOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{14} }
+
+var extRange_EnumOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*EnumOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_EnumOptions
+}
+
+const Default_EnumOptions_Deprecated bool = false
+
+func (m *EnumOptions) GetAllowAlias() bool {
+ if m != nil && m.AllowAlias != nil {
+ return *m.AllowAlias
+ }
+ return false
+}
+
+func (m *EnumOptions) GetDeprecated() bool {
+ if m != nil && m.Deprecated != nil {
+ return *m.Deprecated
+ }
+ return Default_EnumOptions_Deprecated
+}
+
+func (m *EnumOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+type EnumValueOptions struct {
+ // Is this enum value deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the enum value, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating enum values.
+ Deprecated *bool `protobuf:"varint,1,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *EnumValueOptions) Reset() { *m = EnumValueOptions{} }
+func (m *EnumValueOptions) String() string { return proto.CompactTextString(m) }
+func (*EnumValueOptions) ProtoMessage() {}
+func (*EnumValueOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{15} }
+
+var extRange_EnumValueOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*EnumValueOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_EnumValueOptions
+}
+
+const Default_EnumValueOptions_Deprecated bool = false
+
+func (m *EnumValueOptions) GetDeprecated() bool {
+ if m != nil && m.Deprecated != nil {
+ return *m.Deprecated
+ }
+ return Default_EnumValueOptions_Deprecated
+}
+
+func (m *EnumValueOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+type ServiceOptions struct {
+ // Is this service deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the service, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating services.
+ Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *ServiceOptions) Reset() { *m = ServiceOptions{} }
+func (m *ServiceOptions) String() string { return proto.CompactTextString(m) }
+func (*ServiceOptions) ProtoMessage() {}
+func (*ServiceOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{16} }
+
+var extRange_ServiceOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*ServiceOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_ServiceOptions
+}
+
+const Default_ServiceOptions_Deprecated bool = false
+
+func (m *ServiceOptions) GetDeprecated() bool {
+ if m != nil && m.Deprecated != nil {
+ return *m.Deprecated
+ }
+ return Default_ServiceOptions_Deprecated
+}
+
+func (m *ServiceOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+type MethodOptions struct {
+ // Is this method deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the method, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating methods.
+ Deprecated *bool `protobuf:"varint,33,opt,name=deprecated,def=0" json:"deprecated,omitempty"`
+ IdempotencyLevel *MethodOptions_IdempotencyLevel `protobuf:"varint,34,opt,name=idempotency_level,json=idempotencyLevel,enum=google.protobuf.MethodOptions_IdempotencyLevel,def=0" json:"idempotency_level,omitempty"`
+ // The parser stores options it doesn't recognize here. See above.
+ UninterpretedOption []*UninterpretedOption `protobuf:"bytes,999,rep,name=uninterpreted_option,json=uninterpretedOption" json:"uninterpreted_option,omitempty"`
+ proto.XXX_InternalExtensions `json:"-"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *MethodOptions) Reset() { *m = MethodOptions{} }
+func (m *MethodOptions) String() string { return proto.CompactTextString(m) }
+func (*MethodOptions) ProtoMessage() {}
+func (*MethodOptions) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{17} }
+
+var extRange_MethodOptions = []proto.ExtensionRange{
+ {1000, 536870911},
+}
+
+func (*MethodOptions) ExtensionRangeArray() []proto.ExtensionRange {
+ return extRange_MethodOptions
+}
+
+const Default_MethodOptions_Deprecated bool = false
+const Default_MethodOptions_IdempotencyLevel MethodOptions_IdempotencyLevel = MethodOptions_IDEMPOTENCY_UNKNOWN
+
+func (m *MethodOptions) GetDeprecated() bool {
+ if m != nil && m.Deprecated != nil {
+ return *m.Deprecated
+ }
+ return Default_MethodOptions_Deprecated
+}
+
+func (m *MethodOptions) GetIdempotencyLevel() MethodOptions_IdempotencyLevel {
+ if m != nil && m.IdempotencyLevel != nil {
+ return *m.IdempotencyLevel
+ }
+ return Default_MethodOptions_IdempotencyLevel
+}
+
+func (m *MethodOptions) GetUninterpretedOption() []*UninterpretedOption {
+ if m != nil {
+ return m.UninterpretedOption
+ }
+ return nil
+}
+
+// A message representing a option the parser does not recognize. This only
+// appears in options protos created by the compiler::Parser class.
+// DescriptorPool resolves these when building Descriptor objects. Therefore,
+// options protos in descriptor objects (e.g. returned by Descriptor::options(),
+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+// in them.
+type UninterpretedOption struct {
+ Name []*UninterpretedOption_NamePart `protobuf:"bytes,2,rep,name=name" json:"name,omitempty"`
+ // The value of the uninterpreted option, in whatever type the tokenizer
+ // identified it as during parsing. Exactly one of these should be set.
+ IdentifierValue *string `protobuf:"bytes,3,opt,name=identifier_value,json=identifierValue" json:"identifier_value,omitempty"`
+ PositiveIntValue *uint64 `protobuf:"varint,4,opt,name=positive_int_value,json=positiveIntValue" json:"positive_int_value,omitempty"`
+ NegativeIntValue *int64 `protobuf:"varint,5,opt,name=negative_int_value,json=negativeIntValue" json:"negative_int_value,omitempty"`
+ DoubleValue *float64 `protobuf:"fixed64,6,opt,name=double_value,json=doubleValue" json:"double_value,omitempty"`
+ StringValue []byte `protobuf:"bytes,7,opt,name=string_value,json=stringValue" json:"string_value,omitempty"`
+ AggregateValue *string `protobuf:"bytes,8,opt,name=aggregate_value,json=aggregateValue" json:"aggregate_value,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *UninterpretedOption) Reset() { *m = UninterpretedOption{} }
+func (m *UninterpretedOption) String() string { return proto.CompactTextString(m) }
+func (*UninterpretedOption) ProtoMessage() {}
+func (*UninterpretedOption) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{18} }
+
+func (m *UninterpretedOption) GetName() []*UninterpretedOption_NamePart {
+ if m != nil {
+ return m.Name
+ }
+ return nil
+}
+
+func (m *UninterpretedOption) GetIdentifierValue() string {
+ if m != nil && m.IdentifierValue != nil {
+ return *m.IdentifierValue
+ }
+ return ""
+}
+
+func (m *UninterpretedOption) GetPositiveIntValue() uint64 {
+ if m != nil && m.PositiveIntValue != nil {
+ return *m.PositiveIntValue
+ }
+ return 0
+}
+
+func (m *UninterpretedOption) GetNegativeIntValue() int64 {
+ if m != nil && m.NegativeIntValue != nil {
+ return *m.NegativeIntValue
+ }
+ return 0
+}
+
+func (m *UninterpretedOption) GetDoubleValue() float64 {
+ if m != nil && m.DoubleValue != nil {
+ return *m.DoubleValue
+ }
+ return 0
+}
+
+func (m *UninterpretedOption) GetStringValue() []byte {
+ if m != nil {
+ return m.StringValue
+ }
+ return nil
+}
+
+func (m *UninterpretedOption) GetAggregateValue() string {
+ if m != nil && m.AggregateValue != nil {
+ return *m.AggregateValue
+ }
+ return ""
+}
+
+// The name of the uninterpreted option. Each string represents a segment in
+// a dot-separated name. is_extension is true iff a segment represents an
+// extension (denoted with parentheses in options specs in .proto files).
+// E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+// "foo.(bar.baz).qux".
+type UninterpretedOption_NamePart struct {
+ NamePart *string `protobuf:"bytes,1,req,name=name_part,json=namePart" json:"name_part,omitempty"`
+ IsExtension *bool `protobuf:"varint,2,req,name=is_extension,json=isExtension" json:"is_extension,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *UninterpretedOption_NamePart) Reset() { *m = UninterpretedOption_NamePart{} }
+func (m *UninterpretedOption_NamePart) String() string { return proto.CompactTextString(m) }
+func (*UninterpretedOption_NamePart) ProtoMessage() {}
+func (*UninterpretedOption_NamePart) Descriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{18, 0}
+}
+
+func (m *UninterpretedOption_NamePart) GetNamePart() string {
+ if m != nil && m.NamePart != nil {
+ return *m.NamePart
+ }
+ return ""
+}
+
+func (m *UninterpretedOption_NamePart) GetIsExtension() bool {
+ if m != nil && m.IsExtension != nil {
+ return *m.IsExtension
+ }
+ return false
+}
+
+// Encapsulates information about the original source file from which a
+// FileDescriptorProto was generated.
+type SourceCodeInfo struct {
+ // A Location identifies a piece of source code in a .proto file which
+ // corresponds to a particular definition. This information is intended
+ // to be useful to IDEs, code indexers, documentation generators, and similar
+ // tools.
+ //
+ // For example, say we have a file like:
+ // message Foo {
+ // optional string foo = 1;
+ // }
+ // Let's look at just the field definition:
+ // optional string foo = 1;
+ // ^ ^^ ^^ ^ ^^^
+ // a bc de f ghi
+ // We have the following locations:
+ // span path represents
+ // [a,i) [ 4, 0, 2, 0 ] The whole field definition.
+ // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
+ // [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
+ // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
+ // [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
+ //
+ // Notes:
+ // - A location may refer to a repeated field itself (i.e. not to any
+ // particular index within it). This is used whenever a set of elements are
+ // logically enclosed in a single code segment. For example, an entire
+ // extend block (possibly containing multiple extension definitions) will
+ // have an outer location whose path refers to the "extensions" repeated
+ // field without an index.
+ // - Multiple locations may have the same path. This happens when a single
+ // logical declaration is spread out across multiple places. The most
+ // obvious example is the "extend" block again -- there may be multiple
+ // extend blocks in the same scope, each of which will have the same path.
+ // - A location's span is not always a subset of its parent's span. For
+ // example, the "extendee" of an extension declaration appears at the
+ // beginning of the "extend" block and is shared by all extensions within
+ // the block.
+ // - Just because a location's span is a subset of some other location's span
+ // does not mean that it is a descendent. For example, a "group" defines
+ // both a type and a field in a single declaration. Thus, the locations
+ // corresponding to the type and field and their components will overlap.
+ // - Code which tries to interpret locations should probably be designed to
+ // ignore those that it doesn't understand, as more types of locations could
+ // be recorded in the future.
+ Location []*SourceCodeInfo_Location `protobuf:"bytes,1,rep,name=location" json:"location,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *SourceCodeInfo) Reset() { *m = SourceCodeInfo{} }
+func (m *SourceCodeInfo) String() string { return proto.CompactTextString(m) }
+func (*SourceCodeInfo) ProtoMessage() {}
+func (*SourceCodeInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19} }
+
+func (m *SourceCodeInfo) GetLocation() []*SourceCodeInfo_Location {
+ if m != nil {
+ return m.Location
+ }
+ return nil
+}
+
+type SourceCodeInfo_Location struct {
+ // Identifies which part of the FileDescriptorProto was defined at this
+ // location.
+ //
+ // Each element is a field number or an index. They form a path from
+ // the root FileDescriptorProto to the place where the definition. For
+ // example, this path:
+ // [ 4, 3, 2, 7, 1 ]
+ // refers to:
+ // file.message_type(3) // 4, 3
+ // .field(7) // 2, 7
+ // .name() // 1
+ // This is because FileDescriptorProto.message_type has field number 4:
+ // repeated DescriptorProto message_type = 4;
+ // and DescriptorProto.field has field number 2:
+ // repeated FieldDescriptorProto field = 2;
+ // and FieldDescriptorProto.name has field number 1:
+ // optional string name = 1;
+ //
+ // Thus, the above path gives the location of a field name. If we removed
+ // the last element:
+ // [ 4, 3, 2, 7 ]
+ // this path refers to the whole field declaration (from the beginning
+ // of the label to the terminating semicolon).
+ Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
+ // Always has exactly three or four elements: start line, start column,
+ // end line (optional, otherwise assumed same as start line), end column.
+ // These are packed into a single field for efficiency. Note that line
+ // and column numbers are zero-based -- typically you will want to add
+ // 1 to each before displaying to a user.
+ Span []int32 `protobuf:"varint,2,rep,packed,name=span" json:"span,omitempty"`
+ // If this SourceCodeInfo represents a complete declaration, these are any
+ // comments appearing before and after the declaration which appear to be
+ // attached to the declaration.
+ //
+ // A series of line comments appearing on consecutive lines, with no other
+ // tokens appearing on those lines, will be treated as a single comment.
+ //
+ // leading_detached_comments will keep paragraphs of comments that appear
+ // before (but not connected to) the current element. Each paragraph,
+ // separated by empty lines, will be one comment element in the repeated
+ // field.
+ //
+ // Only the comment content is provided; comment markers (e.g. //) are
+ // stripped out. For block comments, leading whitespace and an asterisk
+ // will be stripped from the beginning of each line other than the first.
+ // Newlines are included in the output.
+ //
+ // Examples:
+ //
+ // optional int32 foo = 1; // Comment attached to foo.
+ // // Comment attached to bar.
+ // optional int32 bar = 2;
+ //
+ // optional string baz = 3;
+ // // Comment attached to baz.
+ // // Another line attached to baz.
+ //
+ // // Comment attached to qux.
+ // //
+ // // Another line attached to qux.
+ // optional double qux = 4;
+ //
+ // // Detached comment for corge. This is not leading or trailing comments
+ // // to qux or corge because there are blank lines separating it from
+ // // both.
+ //
+ // // Detached comment for corge paragraph 2.
+ //
+ // optional string corge = 5;
+ // /* Block comment attached
+ // * to corge. Leading asterisks
+ // * will be removed. */
+ // /* Block comment attached to
+ // * grault. */
+ // optional int32 grault = 6;
+ //
+ // // ignored detached comments.
+ LeadingComments *string `protobuf:"bytes,3,opt,name=leading_comments,json=leadingComments" json:"leading_comments,omitempty"`
+ TrailingComments *string `protobuf:"bytes,4,opt,name=trailing_comments,json=trailingComments" json:"trailing_comments,omitempty"`
+ LeadingDetachedComments []string `protobuf:"bytes,6,rep,name=leading_detached_comments,json=leadingDetachedComments" json:"leading_detached_comments,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *SourceCodeInfo_Location) Reset() { *m = SourceCodeInfo_Location{} }
+func (m *SourceCodeInfo_Location) String() string { return proto.CompactTextString(m) }
+func (*SourceCodeInfo_Location) ProtoMessage() {}
+func (*SourceCodeInfo_Location) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{19, 0} }
+
+func (m *SourceCodeInfo_Location) GetPath() []int32 {
+ if m != nil {
+ return m.Path
+ }
+ return nil
+}
+
+func (m *SourceCodeInfo_Location) GetSpan() []int32 {
+ if m != nil {
+ return m.Span
+ }
+ return nil
+}
+
+func (m *SourceCodeInfo_Location) GetLeadingComments() string {
+ if m != nil && m.LeadingComments != nil {
+ return *m.LeadingComments
+ }
+ return ""
+}
+
+func (m *SourceCodeInfo_Location) GetTrailingComments() string {
+ if m != nil && m.TrailingComments != nil {
+ return *m.TrailingComments
+ }
+ return ""
+}
+
+func (m *SourceCodeInfo_Location) GetLeadingDetachedComments() []string {
+ if m != nil {
+ return m.LeadingDetachedComments
+ }
+ return nil
+}
+
+// Describes the relationship between generated code and its original source
+// file. A GeneratedCodeInfo message is associated with only one generated
+// source file, but may contain references to different source .proto files.
+type GeneratedCodeInfo struct {
+ // An Annotation connects some span of text in generated code to an element
+ // of its generating .proto file.
+ Annotation []*GeneratedCodeInfo_Annotation `protobuf:"bytes,1,rep,name=annotation" json:"annotation,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *GeneratedCodeInfo) Reset() { *m = GeneratedCodeInfo{} }
+func (m *GeneratedCodeInfo) String() string { return proto.CompactTextString(m) }
+func (*GeneratedCodeInfo) ProtoMessage() {}
+func (*GeneratedCodeInfo) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{20} }
+
+func (m *GeneratedCodeInfo) GetAnnotation() []*GeneratedCodeInfo_Annotation {
+ if m != nil {
+ return m.Annotation
+ }
+ return nil
+}
+
+type GeneratedCodeInfo_Annotation struct {
+ // Identifies the element in the original source .proto file. This field
+ // is formatted the same as SourceCodeInfo.Location.path.
+ Path []int32 `protobuf:"varint,1,rep,packed,name=path" json:"path,omitempty"`
+ // Identifies the filesystem path to the original source .proto.
+ SourceFile *string `protobuf:"bytes,2,opt,name=source_file,json=sourceFile" json:"source_file,omitempty"`
+ // Identifies the starting offset in bytes in the generated code
+ // that relates to the identified object.
+ Begin *int32 `protobuf:"varint,3,opt,name=begin" json:"begin,omitempty"`
+ // Identifies the ending offset in bytes in the generated code that
+ // relates to the identified offset. The end offset should be one past
+ // the last relevant byte (so the length of the text = end - begin).
+ End *int32 `protobuf:"varint,4,opt,name=end" json:"end,omitempty"`
+ XXX_unrecognized []byte `json:"-"`
+}
+
+func (m *GeneratedCodeInfo_Annotation) Reset() { *m = GeneratedCodeInfo_Annotation{} }
+func (m *GeneratedCodeInfo_Annotation) String() string { return proto.CompactTextString(m) }
+func (*GeneratedCodeInfo_Annotation) ProtoMessage() {}
+func (*GeneratedCodeInfo_Annotation) Descriptor() ([]byte, []int) {
+ return fileDescriptor0, []int{20, 0}
+}
+
+func (m *GeneratedCodeInfo_Annotation) GetPath() []int32 {
+ if m != nil {
+ return m.Path
+ }
+ return nil
+}
+
+func (m *GeneratedCodeInfo_Annotation) GetSourceFile() string {
+ if m != nil && m.SourceFile != nil {
+ return *m.SourceFile
+ }
+ return ""
+}
+
+func (m *GeneratedCodeInfo_Annotation) GetBegin() int32 {
+ if m != nil && m.Begin != nil {
+ return *m.Begin
+ }
+ return 0
+}
+
+func (m *GeneratedCodeInfo_Annotation) GetEnd() int32 {
+ if m != nil && m.End != nil {
+ return *m.End
+ }
+ return 0
+}
+
+func init() {
+ proto.RegisterType((*FileDescriptorSet)(nil), "google.protobuf.FileDescriptorSet")
+ proto.RegisterType((*FileDescriptorProto)(nil), "google.protobuf.FileDescriptorProto")
+ proto.RegisterType((*DescriptorProto)(nil), "google.protobuf.DescriptorProto")
+ proto.RegisterType((*DescriptorProto_ExtensionRange)(nil), "google.protobuf.DescriptorProto.ExtensionRange")
+ proto.RegisterType((*DescriptorProto_ReservedRange)(nil), "google.protobuf.DescriptorProto.ReservedRange")
+ proto.RegisterType((*ExtensionRangeOptions)(nil), "google.protobuf.ExtensionRangeOptions")
+ proto.RegisterType((*FieldDescriptorProto)(nil), "google.protobuf.FieldDescriptorProto")
+ proto.RegisterType((*OneofDescriptorProto)(nil), "google.protobuf.OneofDescriptorProto")
+ proto.RegisterType((*EnumDescriptorProto)(nil), "google.protobuf.EnumDescriptorProto")
+ proto.RegisterType((*EnumValueDescriptorProto)(nil), "google.protobuf.EnumValueDescriptorProto")
+ proto.RegisterType((*ServiceDescriptorProto)(nil), "google.protobuf.ServiceDescriptorProto")
+ proto.RegisterType((*MethodDescriptorProto)(nil), "google.protobuf.MethodDescriptorProto")
+ proto.RegisterType((*FileOptions)(nil), "google.protobuf.FileOptions")
+ proto.RegisterType((*MessageOptions)(nil), "google.protobuf.MessageOptions")
+ proto.RegisterType((*FieldOptions)(nil), "google.protobuf.FieldOptions")
+ proto.RegisterType((*OneofOptions)(nil), "google.protobuf.OneofOptions")
+ proto.RegisterType((*EnumOptions)(nil), "google.protobuf.EnumOptions")
+ proto.RegisterType((*EnumValueOptions)(nil), "google.protobuf.EnumValueOptions")
+ proto.RegisterType((*ServiceOptions)(nil), "google.protobuf.ServiceOptions")
+ proto.RegisterType((*MethodOptions)(nil), "google.protobuf.MethodOptions")
+ proto.RegisterType((*UninterpretedOption)(nil), "google.protobuf.UninterpretedOption")
+ proto.RegisterType((*UninterpretedOption_NamePart)(nil), "google.protobuf.UninterpretedOption.NamePart")
+ proto.RegisterType((*SourceCodeInfo)(nil), "google.protobuf.SourceCodeInfo")
+ proto.RegisterType((*SourceCodeInfo_Location)(nil), "google.protobuf.SourceCodeInfo.Location")
+ proto.RegisterType((*GeneratedCodeInfo)(nil), "google.protobuf.GeneratedCodeInfo")
+ proto.RegisterType((*GeneratedCodeInfo_Annotation)(nil), "google.protobuf.GeneratedCodeInfo.Annotation")
+ proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Type", FieldDescriptorProto_Type_name, FieldDescriptorProto_Type_value)
+ proto.RegisterEnum("google.protobuf.FieldDescriptorProto_Label", FieldDescriptorProto_Label_name, FieldDescriptorProto_Label_value)
+ proto.RegisterEnum("google.protobuf.FileOptions_OptimizeMode", FileOptions_OptimizeMode_name, FileOptions_OptimizeMode_value)
+ proto.RegisterEnum("google.protobuf.FieldOptions_CType", FieldOptions_CType_name, FieldOptions_CType_value)
+ proto.RegisterEnum("google.protobuf.FieldOptions_JSType", FieldOptions_JSType_name, FieldOptions_JSType_value)
+ proto.RegisterEnum("google.protobuf.MethodOptions_IdempotencyLevel", MethodOptions_IdempotencyLevel_name, MethodOptions_IdempotencyLevel_value)
+}
+
+func init() { proto.RegisterFile("google/protobuf/descriptor.proto", fileDescriptor0) }
+
+var fileDescriptor0 = []byte{
+ // 2519 bytes of a gzipped FileDescriptorProto
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0xc4, 0x59, 0xdd, 0x6e, 0x1b, 0xc7,
+ 0x15, 0x0e, 0x7f, 0x45, 0x1e, 0x52, 0xd4, 0x68, 0xa4, 0xd8, 0x6b, 0xe5, 0xc7, 0x32, 0xf3, 0x63,
+ 0xd9, 0x69, 0xa8, 0x40, 0xb1, 0x1d, 0x47, 0x29, 0xd2, 0x52, 0xe4, 0x5a, 0xa1, 0x4a, 0x91, 0xec,
+ 0x92, 0x6a, 0x7e, 0x6e, 0x16, 0xa3, 0xdd, 0x21, 0xb9, 0xf6, 0x72, 0x77, 0xb3, 0xbb, 0xb4, 0xad,
+ 0xa0, 0x17, 0x06, 0x7a, 0x55, 0xa0, 0x0f, 0x50, 0x14, 0x45, 0x2f, 0x72, 0x13, 0xa0, 0x0f, 0x50,
+ 0x20, 0x77, 0x7d, 0x82, 0x02, 0x79, 0x83, 0xa2, 0x28, 0xd0, 0x3e, 0x46, 0x31, 0x33, 0xbb, 0xcb,
+ 0x5d, 0xfe, 0xc4, 0x6a, 0x80, 0x38, 0x57, 0xe4, 0x7c, 0xe7, 0x3b, 0x67, 0xce, 0x9c, 0x39, 0x33,
+ 0x73, 0x66, 0x16, 0x76, 0x47, 0xb6, 0x3d, 0x32, 0xe9, 0xbe, 0xe3, 0xda, 0xbe, 0x7d, 0x3e, 0x1d,
+ 0xee, 0xeb, 0xd4, 0xd3, 0x5c, 0xc3, 0xf1, 0x6d, 0xb7, 0xc6, 0x31, 0xbc, 0x21, 0x18, 0xb5, 0x90,
+ 0x51, 0x3d, 0x85, 0xcd, 0x07, 0x86, 0x49, 0x9b, 0x11, 0xb1, 0x4f, 0x7d, 0x7c, 0x1f, 0xb2, 0x43,
+ 0xc3, 0xa4, 0x52, 0x6a, 0x37, 0xb3, 0x57, 0x3a, 0x78, 0xb3, 0x36, 0xa7, 0x54, 0x4b, 0x6a, 0xf4,
+ 0x18, 0xac, 0x70, 0x8d, 0xea, 0xbf, 0xb3, 0xb0, 0xb5, 0x44, 0x8a, 0x31, 0x64, 0x2d, 0x32, 0x61,
+ 0x16, 0x53, 0x7b, 0x45, 0x85, 0xff, 0xc7, 0x12, 0xac, 0x39, 0x44, 0x7b, 0x44, 0x46, 0x54, 0x4a,
+ 0x73, 0x38, 0x6c, 0xe2, 0xd7, 0x01, 0x74, 0xea, 0x50, 0x4b, 0xa7, 0x96, 0x76, 0x21, 0x65, 0x76,
+ 0x33, 0x7b, 0x45, 0x25, 0x86, 0xe0, 0x77, 0x60, 0xd3, 0x99, 0x9e, 0x9b, 0x86, 0xa6, 0xc6, 0x68,
+ 0xb0, 0x9b, 0xd9, 0xcb, 0x29, 0x48, 0x08, 0x9a, 0x33, 0xf2, 0x4d, 0xd8, 0x78, 0x42, 0xc9, 0xa3,
+ 0x38, 0xb5, 0xc4, 0xa9, 0x15, 0x06, 0xc7, 0x88, 0x0d, 0x28, 0x4f, 0xa8, 0xe7, 0x91, 0x11, 0x55,
+ 0xfd, 0x0b, 0x87, 0x4a, 0x59, 0x3e, 0xfa, 0xdd, 0x85, 0xd1, 0xcf, 0x8f, 0xbc, 0x14, 0x68, 0x0d,
+ 0x2e, 0x1c, 0x8a, 0xeb, 0x50, 0xa4, 0xd6, 0x74, 0x22, 0x2c, 0xe4, 0x56, 0xc4, 0x4f, 0xb6, 0xa6,
+ 0x93, 0x79, 0x2b, 0x05, 0xa6, 0x16, 0x98, 0x58, 0xf3, 0xa8, 0xfb, 0xd8, 0xd0, 0xa8, 0x94, 0xe7,
+ 0x06, 0x6e, 0x2e, 0x18, 0xe8, 0x0b, 0xf9, 0xbc, 0x8d, 0x50, 0x0f, 0x37, 0xa0, 0x48, 0x9f, 0xfa,
+ 0xd4, 0xf2, 0x0c, 0xdb, 0x92, 0xd6, 0xb8, 0x91, 0xb7, 0x96, 0xcc, 0x22, 0x35, 0xf5, 0x79, 0x13,
+ 0x33, 0x3d, 0x7c, 0x0f, 0xd6, 0x6c, 0xc7, 0x37, 0x6c, 0xcb, 0x93, 0x0a, 0xbb, 0xa9, 0xbd, 0xd2,
+ 0xc1, 0xab, 0x4b, 0x13, 0xa1, 0x2b, 0x38, 0x4a, 0x48, 0xc6, 0x2d, 0x40, 0x9e, 0x3d, 0x75, 0x35,
+ 0xaa, 0x6a, 0xb6, 0x4e, 0x55, 0xc3, 0x1a, 0xda, 0x52, 0x91, 0x1b, 0xb8, 0xbe, 0x38, 0x10, 0x4e,
+ 0x6c, 0xd8, 0x3a, 0x6d, 0x59, 0x43, 0x5b, 0xa9, 0x78, 0x89, 0x36, 0xbe, 0x02, 0x79, 0xef, 0xc2,
+ 0xf2, 0xc9, 0x53, 0xa9, 0xcc, 0x33, 0x24, 0x68, 0x55, 0xbf, 0xcd, 0xc3, 0xc6, 0x65, 0x52, 0xec,
+ 0x23, 0xc8, 0x0d, 0xd9, 0x28, 0xa5, 0xf4, 0xff, 0x13, 0x03, 0xa1, 0x93, 0x0c, 0x62, 0xfe, 0x07,
+ 0x06, 0xb1, 0x0e, 0x25, 0x8b, 0x7a, 0x3e, 0xd5, 0x45, 0x46, 0x64, 0x2e, 0x99, 0x53, 0x20, 0x94,
+ 0x16, 0x53, 0x2a, 0xfb, 0x83, 0x52, 0xea, 0x33, 0xd8, 0x88, 0x5c, 0x52, 0x5d, 0x62, 0x8d, 0xc2,
+ 0xdc, 0xdc, 0x7f, 0x9e, 0x27, 0x35, 0x39, 0xd4, 0x53, 0x98, 0x9a, 0x52, 0xa1, 0x89, 0x36, 0x6e,
+ 0x02, 0xd8, 0x16, 0xb5, 0x87, 0xaa, 0x4e, 0x35, 0x53, 0x2a, 0xac, 0x88, 0x52, 0x97, 0x51, 0x16,
+ 0xa2, 0x64, 0x0b, 0x54, 0x33, 0xf1, 0x87, 0xb3, 0x54, 0x5b, 0x5b, 0x91, 0x29, 0xa7, 0x62, 0x91,
+ 0x2d, 0x64, 0xdb, 0x19, 0x54, 0x5c, 0xca, 0xf2, 0x9e, 0xea, 0xc1, 0xc8, 0x8a, 0xdc, 0x89, 0xda,
+ 0x73, 0x47, 0xa6, 0x04, 0x6a, 0x62, 0x60, 0xeb, 0x6e, 0xbc, 0x89, 0xdf, 0x80, 0x08, 0x50, 0x79,
+ 0x5a, 0x01, 0xdf, 0x85, 0xca, 0x21, 0xd8, 0x21, 0x13, 0xba, 0xf3, 0x15, 0x54, 0x92, 0xe1, 0xc1,
+ 0xdb, 0x90, 0xf3, 0x7c, 0xe2, 0xfa, 0x3c, 0x0b, 0x73, 0x8a, 0x68, 0x60, 0x04, 0x19, 0x6a, 0xe9,
+ 0x7c, 0x97, 0xcb, 0x29, 0xec, 0x2f, 0xfe, 0xe5, 0x6c, 0xc0, 0x19, 0x3e, 0xe0, 0xb7, 0x17, 0x67,
+ 0x34, 0x61, 0x79, 0x7e, 0xdc, 0x3b, 0x1f, 0xc0, 0x7a, 0x62, 0x00, 0x97, 0xed, 0xba, 0xfa, 0x5b,
+ 0x78, 0x79, 0xa9, 0x69, 0xfc, 0x19, 0x6c, 0x4f, 0x2d, 0xc3, 0xf2, 0xa9, 0xeb, 0xb8, 0x94, 0x65,
+ 0xac, 0xe8, 0x4a, 0xfa, 0xcf, 0xda, 0x8a, 0x9c, 0x3b, 0x8b, 0xb3, 0x85, 0x15, 0x65, 0x6b, 0xba,
+ 0x08, 0xde, 0x2e, 0x16, 0xfe, 0xbb, 0x86, 0x9e, 0x3d, 0x7b, 0xf6, 0x2c, 0x5d, 0xfd, 0x63, 0x1e,
+ 0xb6, 0x97, 0xad, 0x99, 0xa5, 0xcb, 0xf7, 0x0a, 0xe4, 0xad, 0xe9, 0xe4, 0x9c, 0xba, 0x3c, 0x48,
+ 0x39, 0x25, 0x68, 0xe1, 0x3a, 0xe4, 0x4c, 0x72, 0x4e, 0x4d, 0x29, 0xbb, 0x9b, 0xda, 0xab, 0x1c,
+ 0xbc, 0x73, 0xa9, 0x55, 0x59, 0x6b, 0x33, 0x15, 0x45, 0x68, 0xe2, 0x8f, 0x21, 0x1b, 0x6c, 0xd1,
+ 0xcc, 0xc2, 0xed, 0xcb, 0x59, 0x60, 0x6b, 0x49, 0xe1, 0x7a, 0xf8, 0x15, 0x28, 0xb2, 0x5f, 0x91,
+ 0x1b, 0x79, 0xee, 0x73, 0x81, 0x01, 0x2c, 0x2f, 0xf0, 0x0e, 0x14, 0xf8, 0x32, 0xd1, 0x69, 0x78,
+ 0xb4, 0x45, 0x6d, 0x96, 0x58, 0x3a, 0x1d, 0x92, 0xa9, 0xe9, 0xab, 0x8f, 0x89, 0x39, 0xa5, 0x3c,
+ 0xe1, 0x8b, 0x4a, 0x39, 0x00, 0x7f, 0xc3, 0x30, 0x7c, 0x1d, 0x4a, 0x62, 0x55, 0x19, 0x96, 0x4e,
+ 0x9f, 0xf2, 0xdd, 0x33, 0xa7, 0x88, 0x85, 0xd6, 0x62, 0x08, 0xeb, 0xfe, 0xa1, 0x67, 0x5b, 0x61,
+ 0x6a, 0xf2, 0x2e, 0x18, 0xc0, 0xbb, 0xff, 0x60, 0x7e, 0xe3, 0x7e, 0x6d, 0xf9, 0xf0, 0xe6, 0x73,
+ 0xaa, 0xfa, 0xb7, 0x34, 0x64, 0xf9, 0x7e, 0xb1, 0x01, 0xa5, 0xc1, 0xe7, 0x3d, 0x59, 0x6d, 0x76,
+ 0xcf, 0x8e, 0xda, 0x32, 0x4a, 0xe1, 0x0a, 0x00, 0x07, 0x1e, 0xb4, 0xbb, 0xf5, 0x01, 0x4a, 0x47,
+ 0xed, 0x56, 0x67, 0x70, 0xef, 0x0e, 0xca, 0x44, 0x0a, 0x67, 0x02, 0xc8, 0xc6, 0x09, 0xef, 0x1f,
+ 0xa0, 0x1c, 0x46, 0x50, 0x16, 0x06, 0x5a, 0x9f, 0xc9, 0xcd, 0x7b, 0x77, 0x50, 0x3e, 0x89, 0xbc,
+ 0x7f, 0x80, 0xd6, 0xf0, 0x3a, 0x14, 0x39, 0x72, 0xd4, 0xed, 0xb6, 0x51, 0x21, 0xb2, 0xd9, 0x1f,
+ 0x28, 0xad, 0xce, 0x31, 0x2a, 0x46, 0x36, 0x8f, 0x95, 0xee, 0x59, 0x0f, 0x41, 0x64, 0xe1, 0x54,
+ 0xee, 0xf7, 0xeb, 0xc7, 0x32, 0x2a, 0x45, 0x8c, 0xa3, 0xcf, 0x07, 0x72, 0x1f, 0x95, 0x13, 0x6e,
+ 0xbd, 0x7f, 0x80, 0xd6, 0xa3, 0x2e, 0xe4, 0xce, 0xd9, 0x29, 0xaa, 0xe0, 0x4d, 0x58, 0x17, 0x5d,
+ 0x84, 0x4e, 0x6c, 0xcc, 0x41, 0xf7, 0xee, 0x20, 0x34, 0x73, 0x44, 0x58, 0xd9, 0x4c, 0x00, 0xf7,
+ 0xee, 0x20, 0x5c, 0x6d, 0x40, 0x8e, 0x67, 0x17, 0xc6, 0x50, 0x69, 0xd7, 0x8f, 0xe4, 0xb6, 0xda,
+ 0xed, 0x0d, 0x5a, 0xdd, 0x4e, 0xbd, 0x8d, 0x52, 0x33, 0x4c, 0x91, 0x7f, 0x7d, 0xd6, 0x52, 0xe4,
+ 0x26, 0x4a, 0xc7, 0xb1, 0x9e, 0x5c, 0x1f, 0xc8, 0x4d, 0x94, 0xa9, 0x6a, 0xb0, 0xbd, 0x6c, 0x9f,
+ 0x5c, 0xba, 0x32, 0x62, 0x53, 0x9c, 0x5e, 0x31, 0xc5, 0xdc, 0xd6, 0xc2, 0x14, 0x7f, 0x9d, 0x82,
+ 0xad, 0x25, 0x67, 0xc5, 0xd2, 0x4e, 0x7e, 0x01, 0x39, 0x91, 0xa2, 0xe2, 0xf4, 0xbc, 0xb5, 0xf4,
+ 0xd0, 0xe1, 0x09, 0xbb, 0x70, 0x82, 0x72, 0xbd, 0x78, 0x05, 0x91, 0x59, 0x51, 0x41, 0x30, 0x13,
+ 0x0b, 0x4e, 0xfe, 0x2e, 0x05, 0xd2, 0x2a, 0xdb, 0xcf, 0xd9, 0x28, 0xd2, 0x89, 0x8d, 0xe2, 0xa3,
+ 0x79, 0x07, 0x6e, 0xac, 0x1e, 0xc3, 0x82, 0x17, 0xdf, 0xa4, 0xe0, 0xca, 0xf2, 0x42, 0x6b, 0xa9,
+ 0x0f, 0x1f, 0x43, 0x7e, 0x42, 0xfd, 0xb1, 0x1d, 0x16, 0x1b, 0x6f, 0x2f, 0x39, 0xc2, 0x98, 0x78,
+ 0x3e, 0x56, 0x81, 0x56, 0xfc, 0x0c, 0xcc, 0xac, 0xaa, 0x96, 0x84, 0x37, 0x0b, 0x9e, 0xfe, 0x3e,
+ 0x0d, 0x2f, 0x2f, 0x35, 0xbe, 0xd4, 0xd1, 0xd7, 0x00, 0x0c, 0xcb, 0x99, 0xfa, 0xa2, 0xa0, 0x10,
+ 0xfb, 0x53, 0x91, 0x23, 0x7c, 0xed, 0xb3, 0xbd, 0x67, 0xea, 0x47, 0xf2, 0x0c, 0x97, 0x83, 0x80,
+ 0x38, 0xe1, 0xfe, 0xcc, 0xd1, 0x2c, 0x77, 0xf4, 0xf5, 0x15, 0x23, 0x5d, 0x38, 0xab, 0xdf, 0x03,
+ 0xa4, 0x99, 0x06, 0xb5, 0x7c, 0xd5, 0xf3, 0x5d, 0x4a, 0x26, 0x86, 0x35, 0xe2, 0x1b, 0x70, 0xe1,
+ 0x30, 0x37, 0x24, 0xa6, 0x47, 0x95, 0x0d, 0x21, 0xee, 0x87, 0x52, 0xa6, 0xc1, 0xcf, 0x38, 0x37,
+ 0xa6, 0x91, 0x4f, 0x68, 0x08, 0x71, 0xa4, 0x51, 0xfd, 0xb6, 0x00, 0xa5, 0x58, 0x59, 0x8a, 0x6f,
+ 0x40, 0xf9, 0x21, 0x79, 0x4c, 0xd4, 0xf0, 0xaa, 0x21, 0x22, 0x51, 0x62, 0x58, 0x2f, 0xb8, 0x6e,
+ 0xbc, 0x07, 0xdb, 0x9c, 0x62, 0x4f, 0x7d, 0xea, 0xaa, 0x9a, 0x49, 0x3c, 0x8f, 0x07, 0xad, 0xc0,
+ 0xa9, 0x98, 0xc9, 0xba, 0x4c, 0xd4, 0x08, 0x25, 0xf8, 0x2e, 0x6c, 0x71, 0x8d, 0xc9, 0xd4, 0xf4,
+ 0x0d, 0xc7, 0xa4, 0x2a, 0xbb, 0xfc, 0x78, 0x7c, 0x23, 0x8e, 0x3c, 0xdb, 0x64, 0x8c, 0xd3, 0x80,
+ 0xc0, 0x3c, 0xf2, 0x70, 0x13, 0x5e, 0xe3, 0x6a, 0x23, 0x6a, 0x51, 0x97, 0xf8, 0x54, 0xa5, 0x5f,
+ 0x4e, 0x89, 0xe9, 0xa9, 0xc4, 0xd2, 0xd5, 0x31, 0xf1, 0xc6, 0xd2, 0x36, 0x33, 0x70, 0x94, 0x96,
+ 0x52, 0xca, 0x35, 0x46, 0x3c, 0x0e, 0x78, 0x32, 0xa7, 0xd5, 0x2d, 0xfd, 0x13, 0xe2, 0x8d, 0xf1,
+ 0x21, 0x5c, 0xe1, 0x56, 0x3c, 0xdf, 0x35, 0xac, 0x91, 0xaa, 0x8d, 0xa9, 0xf6, 0x48, 0x9d, 0xfa,
+ 0xc3, 0xfb, 0xd2, 0x2b, 0xf1, 0xfe, 0xb9, 0x87, 0x7d, 0xce, 0x69, 0x30, 0xca, 0x99, 0x3f, 0xbc,
+ 0x8f, 0xfb, 0x50, 0x66, 0x93, 0x31, 0x31, 0xbe, 0xa2, 0xea, 0xd0, 0x76, 0xf9, 0xc9, 0x52, 0x59,
+ 0xb2, 0xb2, 0x63, 0x11, 0xac, 0x75, 0x03, 0x85, 0x53, 0x5b, 0xa7, 0x87, 0xb9, 0x7e, 0x4f, 0x96,
+ 0x9b, 0x4a, 0x29, 0xb4, 0xf2, 0xc0, 0x76, 0x59, 0x42, 0x8d, 0xec, 0x28, 0xc0, 0x25, 0x91, 0x50,
+ 0x23, 0x3b, 0x0c, 0xef, 0x5d, 0xd8, 0xd2, 0x34, 0x31, 0x66, 0x43, 0x53, 0x83, 0x2b, 0x8a, 0x27,
+ 0xa1, 0x44, 0xb0, 0x34, 0xed, 0x58, 0x10, 0x82, 0x1c, 0xf7, 0xf0, 0x87, 0xf0, 0xf2, 0x2c, 0x58,
+ 0x71, 0xc5, 0xcd, 0x85, 0x51, 0xce, 0xab, 0xde, 0x85, 0x2d, 0xe7, 0x62, 0x51, 0x11, 0x27, 0x7a,
+ 0x74, 0x2e, 0xe6, 0xd5, 0x3e, 0x80, 0x6d, 0x67, 0xec, 0x2c, 0xea, 0xdd, 0x8e, 0xeb, 0x61, 0x67,
+ 0xec, 0xcc, 0x2b, 0xbe, 0xc5, 0xef, 0xab, 0x2e, 0xd5, 0x88, 0x4f, 0x75, 0xe9, 0x6a, 0x9c, 0x1e,
+ 0x13, 0xe0, 0x7d, 0x40, 0x9a, 0xa6, 0x52, 0x8b, 0x9c, 0x9b, 0x54, 0x25, 0x2e, 0xb5, 0x88, 0x27,
+ 0x5d, 0x8f, 0x93, 0x2b, 0x9a, 0x26, 0x73, 0x69, 0x9d, 0x0b, 0xf1, 0x6d, 0xd8, 0xb4, 0xcf, 0x1f,
+ 0x6a, 0x22, 0x25, 0x55, 0xc7, 0xa5, 0x43, 0xe3, 0xa9, 0xf4, 0x26, 0x8f, 0xef, 0x06, 0x13, 0xf0,
+ 0x84, 0xec, 0x71, 0x18, 0xdf, 0x02, 0xa4, 0x79, 0x63, 0xe2, 0x3a, 0xbc, 0x26, 0xf0, 0x1c, 0xa2,
+ 0x51, 0xe9, 0x2d, 0x41, 0x15, 0x78, 0x27, 0x84, 0xd9, 0x92, 0xf0, 0x9e, 0x18, 0x43, 0x3f, 0xb4,
+ 0x78, 0x53, 0x2c, 0x09, 0x8e, 0x05, 0xd6, 0xf6, 0x00, 0xb1, 0x50, 0x24, 0x3a, 0xde, 0xe3, 0xb4,
+ 0x8a, 0x33, 0x76, 0xe2, 0xfd, 0xbe, 0x01, 0xeb, 0x8c, 0x39, 0xeb, 0xf4, 0x96, 0xa8, 0x67, 0x9c,
+ 0x71, 0xac, 0xc7, 0x1f, 0xad, 0xb4, 0xac, 0x1e, 0x42, 0x39, 0x9e, 0x9f, 0xb8, 0x08, 0x22, 0x43,
+ 0x51, 0x8a, 0x9d, 0xf5, 0x8d, 0x6e, 0x93, 0x9d, 0xd2, 0x5f, 0xc8, 0x28, 0xcd, 0xaa, 0x85, 0x76,
+ 0x6b, 0x20, 0xab, 0xca, 0x59, 0x67, 0xd0, 0x3a, 0x95, 0x51, 0x26, 0x56, 0x96, 0x9e, 0x64, 0x0b,
+ 0x6f, 0xa3, 0x9b, 0xd5, 0xef, 0xd2, 0x50, 0x49, 0xde, 0x33, 0xf0, 0xcf, 0xe1, 0x6a, 0xf8, 0x28,
+ 0xe0, 0x51, 0x5f, 0x7d, 0x62, 0xb8, 0x7c, 0xe1, 0x4c, 0x88, 0xa8, 0xb3, 0xa3, 0xa9, 0xdb, 0x0e,
+ 0x58, 0x7d, 0xea, 0x7f, 0x6a, 0xb8, 0x6c, 0x59, 0x4c, 0x88, 0x8f, 0xdb, 0x70, 0xdd, 0xb2, 0x55,
+ 0xcf, 0x27, 0x96, 0x4e, 0x5c, 0x5d, 0x9d, 0x3d, 0xc7, 0xa8, 0x44, 0xd3, 0xa8, 0xe7, 0xd9, 0xe2,
+ 0xc0, 0x8a, 0xac, 0xbc, 0x6a, 0xd9, 0xfd, 0x80, 0x3c, 0xdb, 0xc9, 0xeb, 0x01, 0x75, 0x2e, 0xcd,
+ 0x32, 0xab, 0xd2, 0xec, 0x15, 0x28, 0x4e, 0x88, 0xa3, 0x52, 0xcb, 0x77, 0x2f, 0x78, 0x75, 0x59,
+ 0x50, 0x0a, 0x13, 0xe2, 0xc8, 0xac, 0xfd, 0x42, 0x8a, 0xfc, 0x93, 0x6c, 0xa1, 0x80, 0x8a, 0x27,
+ 0xd9, 0x42, 0x11, 0x41, 0xf5, 0x5f, 0x19, 0x28, 0xc7, 0xab, 0x4d, 0x56, 0xbc, 0x6b, 0xfc, 0x64,
+ 0x49, 0xf1, 0xbd, 0xe7, 0x8d, 0xef, 0xad, 0x4d, 0x6b, 0x0d, 0x76, 0xe4, 0x1c, 0xe6, 0x45, 0x0d,
+ 0xa8, 0x08, 0x4d, 0x76, 0xdc, 0xb3, 0xdd, 0x86, 0x8a, 0x7b, 0x4d, 0x41, 0x09, 0x5a, 0xf8, 0x18,
+ 0xf2, 0x0f, 0x3d, 0x6e, 0x3b, 0xcf, 0x6d, 0xbf, 0xf9, 0xfd, 0xb6, 0x4f, 0xfa, 0xdc, 0x78, 0xf1,
+ 0xa4, 0xaf, 0x76, 0xba, 0xca, 0x69, 0xbd, 0xad, 0x04, 0xea, 0xf8, 0x1a, 0x64, 0x4d, 0xf2, 0xd5,
+ 0x45, 0xf2, 0x70, 0xe2, 0xd0, 0x65, 0x27, 0xe1, 0x1a, 0x64, 0x9f, 0x50, 0xf2, 0x28, 0x79, 0x24,
+ 0x70, 0xe8, 0x47, 0x5c, 0x0c, 0xfb, 0x90, 0xe3, 0xf1, 0xc2, 0x00, 0x41, 0xc4, 0xd0, 0x4b, 0xb8,
+ 0x00, 0xd9, 0x46, 0x57, 0x61, 0x0b, 0x02, 0x41, 0x59, 0xa0, 0x6a, 0xaf, 0x25, 0x37, 0x64, 0x94,
+ 0xae, 0xde, 0x85, 0xbc, 0x08, 0x02, 0x5b, 0x2c, 0x51, 0x18, 0xd0, 0x4b, 0x41, 0x33, 0xb0, 0x91,
+ 0x0a, 0xa5, 0x67, 0xa7, 0x47, 0xb2, 0x82, 0xd2, 0xc9, 0xa9, 0xce, 0xa2, 0x5c, 0xd5, 0x83, 0x72,
+ 0xbc, 0xdc, 0x7c, 0x31, 0x57, 0xc9, 0xbf, 0xa7, 0xa0, 0x14, 0x2b, 0x1f, 0x59, 0xe1, 0x42, 0x4c,
+ 0xd3, 0x7e, 0xa2, 0x12, 0xd3, 0x20, 0x5e, 0x90, 0x1a, 0xc0, 0xa1, 0x3a, 0x43, 0x2e, 0x3b, 0x75,
+ 0x2f, 0x68, 0x89, 0xe4, 0x50, 0xbe, 0xfa, 0x97, 0x14, 0xa0, 0xf9, 0x02, 0x74, 0xce, 0xcd, 0xd4,
+ 0x4f, 0xe9, 0x66, 0xf5, 0xcf, 0x29, 0xa8, 0x24, 0xab, 0xce, 0x39, 0xf7, 0x6e, 0xfc, 0xa4, 0xee,
+ 0xfd, 0x33, 0x0d, 0xeb, 0x89, 0x5a, 0xf3, 0xb2, 0xde, 0x7d, 0x09, 0x9b, 0x86, 0x4e, 0x27, 0x8e,
+ 0xed, 0x53, 0x4b, 0xbb, 0x50, 0x4d, 0xfa, 0x98, 0x9a, 0x52, 0x95, 0x6f, 0x1a, 0xfb, 0xdf, 0x5f,
+ 0xcd, 0xd6, 0x5a, 0x33, 0xbd, 0x36, 0x53, 0x3b, 0xdc, 0x6a, 0x35, 0xe5, 0xd3, 0x5e, 0x77, 0x20,
+ 0x77, 0x1a, 0x9f, 0xab, 0x67, 0x9d, 0x5f, 0x75, 0xba, 0x9f, 0x76, 0x14, 0x64, 0xcc, 0xd1, 0x7e,
+ 0xc4, 0x65, 0xdf, 0x03, 0x34, 0xef, 0x14, 0xbe, 0x0a, 0xcb, 0xdc, 0x42, 0x2f, 0xe1, 0x2d, 0xd8,
+ 0xe8, 0x74, 0xd5, 0x7e, 0xab, 0x29, 0xab, 0xf2, 0x83, 0x07, 0x72, 0x63, 0xd0, 0x17, 0xd7, 0xfb,
+ 0x88, 0x3d, 0x48, 0x2c, 0xf0, 0xea, 0x9f, 0x32, 0xb0, 0xb5, 0xc4, 0x13, 0x5c, 0x0f, 0x6e, 0x16,
+ 0xe2, 0xb2, 0xf3, 0xee, 0x65, 0xbc, 0xaf, 0xb1, 0x82, 0xa0, 0x47, 0x5c, 0x3f, 0xb8, 0x88, 0xdc,
+ 0x02, 0x16, 0x25, 0xcb, 0x37, 0x86, 0x06, 0x75, 0x83, 0xd7, 0x10, 0x71, 0xdd, 0xd8, 0x98, 0xe1,
+ 0xe2, 0x41, 0xe4, 0x67, 0x80, 0x1d, 0xdb, 0x33, 0x7c, 0xe3, 0x31, 0x55, 0x0d, 0x2b, 0x7c, 0x3a,
+ 0x61, 0xd7, 0x8f, 0xac, 0x82, 0x42, 0x49, 0xcb, 0xf2, 0x23, 0xb6, 0x45, 0x47, 0x64, 0x8e, 0xcd,
+ 0x36, 0xf3, 0x8c, 0x82, 0x42, 0x49, 0xc4, 0xbe, 0x01, 0x65, 0xdd, 0x9e, 0xb2, 0x9a, 0x4c, 0xf0,
+ 0xd8, 0xd9, 0x91, 0x52, 0x4a, 0x02, 0x8b, 0x28, 0x41, 0xb5, 0x3d, 0x7b, 0xb3, 0x29, 0x2b, 0x25,
+ 0x81, 0x09, 0xca, 0x4d, 0xd8, 0x20, 0xa3, 0x91, 0xcb, 0x8c, 0x87, 0x86, 0xc4, 0xfd, 0xa1, 0x12,
+ 0xc1, 0x9c, 0xb8, 0x73, 0x02, 0x85, 0x30, 0x0e, 0xec, 0xa8, 0x66, 0x91, 0x50, 0x1d, 0xf1, 0x6e,
+ 0x97, 0xde, 0x2b, 0x2a, 0x05, 0x2b, 0x14, 0xde, 0x80, 0xb2, 0xe1, 0xa9, 0xb3, 0x27, 0xe8, 0xf4,
+ 0x6e, 0x7a, 0xaf, 0xa0, 0x94, 0x0c, 0x2f, 0x7a, 0xbe, 0xab, 0x7e, 0x93, 0x86, 0x4a, 0xf2, 0x09,
+ 0x1d, 0x37, 0xa1, 0x60, 0xda, 0x1a, 0xe1, 0xa9, 0x25, 0xbe, 0xdf, 0xec, 0x3d, 0xe7, 0xd5, 0xbd,
+ 0xd6, 0x0e, 0xf8, 0x4a, 0xa4, 0xb9, 0xf3, 0x8f, 0x14, 0x14, 0x42, 0x18, 0x5f, 0x81, 0xac, 0x43,
+ 0xfc, 0x31, 0x37, 0x97, 0x3b, 0x4a, 0xa3, 0x94, 0xc2, 0xdb, 0x0c, 0xf7, 0x1c, 0x62, 0xf1, 0x14,
+ 0x08, 0x70, 0xd6, 0x66, 0xf3, 0x6a, 0x52, 0xa2, 0xf3, 0xcb, 0x89, 0x3d, 0x99, 0x50, 0xcb, 0xf7,
+ 0xc2, 0x79, 0x0d, 0xf0, 0x46, 0x00, 0xe3, 0x77, 0x60, 0xd3, 0x77, 0x89, 0x61, 0x26, 0xb8, 0x59,
+ 0xce, 0x45, 0xa1, 0x20, 0x22, 0x1f, 0xc2, 0xb5, 0xd0, 0xae, 0x4e, 0x7d, 0xa2, 0x8d, 0xa9, 0x3e,
+ 0x53, 0xca, 0xf3, 0xf7, 0xd9, 0xab, 0x01, 0xa1, 0x19, 0xc8, 0x43, 0xdd, 0xea, 0x77, 0x29, 0xd8,
+ 0x0c, 0xaf, 0x53, 0x7a, 0x14, 0xac, 0x53, 0x00, 0x62, 0x59, 0xb6, 0x1f, 0x0f, 0xd7, 0x62, 0x2a,
+ 0x2f, 0xe8, 0xd5, 0xea, 0x91, 0x92, 0x12, 0x33, 0xb0, 0x33, 0x01, 0x98, 0x49, 0x56, 0x86, 0xed,
+ 0x3a, 0x94, 0x82, 0xef, 0x23, 0xfc, 0x23, 0x9b, 0xb8, 0x80, 0x83, 0x80, 0xd8, 0xbd, 0x0b, 0x6f,
+ 0x43, 0xee, 0x9c, 0x8e, 0x0c, 0x2b, 0x78, 0xf5, 0x14, 0x8d, 0xf0, 0x25, 0x37, 0x1b, 0xbd, 0xe4,
+ 0x1e, 0xfd, 0x21, 0x05, 0x5b, 0x9a, 0x3d, 0x99, 0xf7, 0xf7, 0x08, 0xcd, 0xbd, 0x02, 0x78, 0x9f,
+ 0xa4, 0xbe, 0xf8, 0x78, 0x64, 0xf8, 0xe3, 0xe9, 0x79, 0x4d, 0xb3, 0x27, 0xfb, 0x23, 0xdb, 0x24,
+ 0xd6, 0x68, 0xf6, 0x95, 0x90, 0xff, 0xd1, 0xde, 0x1d, 0x51, 0xeb, 0xdd, 0x91, 0x1d, 0xfb, 0x66,
+ 0xf8, 0xd1, 0xec, 0xef, 0xd7, 0xe9, 0xcc, 0x71, 0xef, 0xe8, 0xaf, 0xe9, 0x9d, 0x63, 0xd1, 0x57,
+ 0x2f, 0x8c, 0x8d, 0x42, 0x87, 0x26, 0xd5, 0xd8, 0x78, 0xff, 0x17, 0x00, 0x00, 0xff, 0xff, 0x0c,
+ 0xab, 0xb6, 0x37, 0x7e, 0x1c, 0x00, 0x00,
+}
diff --git a/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto
new file mode 100644
index 000000000000..4d4fb378f505
--- /dev/null
+++ b/vendor/github.com/golang/protobuf/protoc-gen-go/descriptor/descriptor.proto
@@ -0,0 +1,849 @@
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc. All rights reserved.
+// https://developers.google.com/protocol-buffers/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+// * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+// * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+// * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+// Author: kenton@google.com (Kenton Varda)
+// Based on original Protocol Buffers design by
+// Sanjay Ghemawat, Jeff Dean, and others.
+//
+// The messages in this file describe the definitions found in .proto files.
+// A valid .proto file can be translated directly to a FileDescriptorProto
+// without any other information (e.g. without reading its imports).
+
+
+syntax = "proto2";
+
+package google.protobuf;
+option go_package = "github.com/golang/protobuf/protoc-gen-go/descriptor;descriptor";
+option java_package = "com.google.protobuf";
+option java_outer_classname = "DescriptorProtos";
+option csharp_namespace = "Google.Protobuf.Reflection";
+option objc_class_prefix = "GPB";
+
+// descriptor.proto must be optimized for speed because reflection-based
+// algorithms don't work during bootstrapping.
+option optimize_for = SPEED;
+
+// The protocol compiler can output a FileDescriptorSet containing the .proto
+// files it parses.
+message FileDescriptorSet {
+ repeated FileDescriptorProto file = 1;
+}
+
+// Describes a complete .proto file.
+message FileDescriptorProto {
+ optional string name = 1; // file name, relative to root of source tree
+ optional string package = 2; // e.g. "foo", "foo.bar", etc.
+
+ // Names of files imported by this file.
+ repeated string dependency = 3;
+ // Indexes of the public imported files in the dependency list above.
+ repeated int32 public_dependency = 10;
+ // Indexes of the weak imported files in the dependency list.
+ // For Google-internal migration only. Do not use.
+ repeated int32 weak_dependency = 11;
+
+ // All top-level definitions in this file.
+ repeated DescriptorProto message_type = 4;
+ repeated EnumDescriptorProto enum_type = 5;
+ repeated ServiceDescriptorProto service = 6;
+ repeated FieldDescriptorProto extension = 7;
+
+ optional FileOptions options = 8;
+
+ // This field contains optional information about the original source code.
+ // You may safely remove this entire field without harming runtime
+ // functionality of the descriptors -- the information is needed only by
+ // development tools.
+ optional SourceCodeInfo source_code_info = 9;
+
+ // The syntax of the proto file.
+ // The supported values are "proto2" and "proto3".
+ optional string syntax = 12;
+}
+
+// Describes a message type.
+message DescriptorProto {
+ optional string name = 1;
+
+ repeated FieldDescriptorProto field = 2;
+ repeated FieldDescriptorProto extension = 6;
+
+ repeated DescriptorProto nested_type = 3;
+ repeated EnumDescriptorProto enum_type = 4;
+
+ message ExtensionRange {
+ optional int32 start = 1;
+ optional int32 end = 2;
+
+ optional ExtensionRangeOptions options = 3;
+ }
+ repeated ExtensionRange extension_range = 5;
+
+ repeated OneofDescriptorProto oneof_decl = 8;
+
+ optional MessageOptions options = 7;
+
+ // Range of reserved tag numbers. Reserved tag numbers may not be used by
+ // fields or extension ranges in the same message. Reserved ranges may
+ // not overlap.
+ message ReservedRange {
+ optional int32 start = 1; // Inclusive.
+ optional int32 end = 2; // Exclusive.
+ }
+ repeated ReservedRange reserved_range = 9;
+ // Reserved field names, which may not be used by fields in the same message.
+ // A given name may only be reserved once.
+ repeated string reserved_name = 10;
+}
+
+message ExtensionRangeOptions {
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+}
+
+// Describes a field within a message.
+message FieldDescriptorProto {
+ enum Type {
+ // 0 is reserved for errors.
+ // Order is weird for historical reasons.
+ TYPE_DOUBLE = 1;
+ TYPE_FLOAT = 2;
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT64 if
+ // negative values are likely.
+ TYPE_INT64 = 3;
+ TYPE_UINT64 = 4;
+ // Not ZigZag encoded. Negative numbers take 10 bytes. Use TYPE_SINT32 if
+ // negative values are likely.
+ TYPE_INT32 = 5;
+ TYPE_FIXED64 = 6;
+ TYPE_FIXED32 = 7;
+ TYPE_BOOL = 8;
+ TYPE_STRING = 9;
+ // Tag-delimited aggregate.
+ // Group type is deprecated and not supported in proto3. However, Proto3
+ // implementations should still be able to parse the group wire format and
+ // treat group fields as unknown fields.
+ TYPE_GROUP = 10;
+ TYPE_MESSAGE = 11; // Length-delimited aggregate.
+
+ // New in version 2.
+ TYPE_BYTES = 12;
+ TYPE_UINT32 = 13;
+ TYPE_ENUM = 14;
+ TYPE_SFIXED32 = 15;
+ TYPE_SFIXED64 = 16;
+ TYPE_SINT32 = 17; // Uses ZigZag encoding.
+ TYPE_SINT64 = 18; // Uses ZigZag encoding.
+ };
+
+ enum Label {
+ // 0 is reserved for errors
+ LABEL_OPTIONAL = 1;
+ LABEL_REQUIRED = 2;
+ LABEL_REPEATED = 3;
+ };
+
+ optional string name = 1;
+ optional int32 number = 3;
+ optional Label label = 4;
+
+ // If type_name is set, this need not be set. If both this and type_name
+ // are set, this must be one of TYPE_ENUM, TYPE_MESSAGE or TYPE_GROUP.
+ optional Type type = 5;
+
+ // For message and enum types, this is the name of the type. If the name
+ // starts with a '.', it is fully-qualified. Otherwise, C++-like scoping
+ // rules are used to find the type (i.e. first the nested types within this
+ // message are searched, then within the parent, on up to the root
+ // namespace).
+ optional string type_name = 6;
+
+ // For extensions, this is the name of the type being extended. It is
+ // resolved in the same manner as type_name.
+ optional string extendee = 2;
+
+ // For numeric types, contains the original text representation of the value.
+ // For booleans, "true" or "false".
+ // For strings, contains the default text contents (not escaped in any way).
+ // For bytes, contains the C escaped value. All bytes >= 128 are escaped.
+ // TODO(kenton): Base-64 encode?
+ optional string default_value = 7;
+
+ // If set, gives the index of a oneof in the containing type's oneof_decl
+ // list. This field is a member of that oneof.
+ optional int32 oneof_index = 9;
+
+ // JSON name of this field. The value is set by protocol compiler. If the
+ // user has set a "json_name" option on this field, that option's value
+ // will be used. Otherwise, it's deduced from the field's name by converting
+ // it to camelCase.
+ optional string json_name = 10;
+
+ optional FieldOptions options = 8;
+}
+
+// Describes a oneof.
+message OneofDescriptorProto {
+ optional string name = 1;
+ optional OneofOptions options = 2;
+}
+
+// Describes an enum type.
+message EnumDescriptorProto {
+ optional string name = 1;
+
+ repeated EnumValueDescriptorProto value = 2;
+
+ optional EnumOptions options = 3;
+}
+
+// Describes a value within an enum.
+message EnumValueDescriptorProto {
+ optional string name = 1;
+ optional int32 number = 2;
+
+ optional EnumValueOptions options = 3;
+}
+
+// Describes a service.
+message ServiceDescriptorProto {
+ optional string name = 1;
+ repeated MethodDescriptorProto method = 2;
+
+ optional ServiceOptions options = 3;
+}
+
+// Describes a method of a service.
+message MethodDescriptorProto {
+ optional string name = 1;
+
+ // Input and output type names. These are resolved in the same way as
+ // FieldDescriptorProto.type_name, but must refer to a message type.
+ optional string input_type = 2;
+ optional string output_type = 3;
+
+ optional MethodOptions options = 4;
+
+ // Identifies if client streams multiple client messages
+ optional bool client_streaming = 5 [default=false];
+ // Identifies if server streams multiple server messages
+ optional bool server_streaming = 6 [default=false];
+}
+
+
+// ===================================================================
+// Options
+
+// Each of the definitions above may have "options" attached. These are
+// just annotations which may cause code to be generated slightly differently
+// or may contain hints for code that manipulates protocol messages.
+//
+// Clients may define custom options as extensions of the *Options messages.
+// These extensions may not yet be known at parsing time, so the parser cannot
+// store the values in them. Instead it stores them in a field in the *Options
+// message called uninterpreted_option. This field must have the same name
+// across all *Options messages. We then use this field to populate the
+// extensions when we build a descriptor, at which point all protos have been
+// parsed and so all extensions are known.
+//
+// Extension numbers for custom options may be chosen as follows:
+// * For options which will only be used within a single application or
+// organization, or for experimental options, use field numbers 50000
+// through 99999. It is up to you to ensure that you do not use the
+// same number for multiple options.
+// * For options which will be published and used publicly by multiple
+// independent entities, e-mail protobuf-global-extension-registry@google.com
+// to reserve extension numbers. Simply provide your project name (e.g.
+// Objective-C plugin) and your project website (if available) -- there's no
+// need to explain how you intend to use them. Usually you only need one
+// extension number. You can declare multiple options with only one extension
+// number by putting them in a sub-message. See the Custom Options section of
+// the docs for examples:
+// https://developers.google.com/protocol-buffers/docs/proto#options
+// If this turns out to be popular, a web service will be set up
+// to automatically assign option numbers.
+
+
+message FileOptions {
+
+ // Sets the Java package where classes generated from this .proto will be
+ // placed. By default, the proto package is used, but this is often
+ // inappropriate because proto packages do not normally start with backwards
+ // domain names.
+ optional string java_package = 1;
+
+
+ // If set, all the classes from the .proto file are wrapped in a single
+ // outer class with the given name. This applies to both Proto1
+ // (equivalent to the old "--one_java_file" option) and Proto2 (where
+ // a .proto always translates to a single class, but you may want to
+ // explicitly choose the class name).
+ optional string java_outer_classname = 8;
+
+ // If set true, then the Java code generator will generate a separate .java
+ // file for each top-level message, enum, and service defined in the .proto
+ // file. Thus, these types will *not* be nested inside the outer class
+ // named by java_outer_classname. However, the outer class will still be
+ // generated to contain the file's getDescriptor() method as well as any
+ // top-level extensions defined in the file.
+ optional bool java_multiple_files = 10 [default=false];
+
+ // This option does nothing.
+ optional bool java_generate_equals_and_hash = 20 [deprecated=true];
+
+ // If set true, then the Java2 code generator will generate code that
+ // throws an exception whenever an attempt is made to assign a non-UTF-8
+ // byte sequence to a string field.
+ // Message reflection will do the same.
+ // However, an extension field still accepts non-UTF-8 byte sequences.
+ // This option has no effect on when used with the lite runtime.
+ optional bool java_string_check_utf8 = 27 [default=false];
+
+
+ // Generated classes can be optimized for speed or code size.
+ enum OptimizeMode {
+ SPEED = 1; // Generate complete code for parsing, serialization,
+ // etc.
+ CODE_SIZE = 2; // Use ReflectionOps to implement these methods.
+ LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
+ }
+ optional OptimizeMode optimize_for = 9 [default=SPEED];
+
+ // Sets the Go package where structs generated from this .proto will be
+ // placed. If omitted, the Go package will be derived from the following:
+ // - The basename of the package import path, if provided.
+ // - Otherwise, the package statement in the .proto file, if present.
+ // - Otherwise, the basename of the .proto file, without extension.
+ optional string go_package = 11;
+
+
+
+ // Should generic services be generated in each language? "Generic" services
+ // are not specific to any particular RPC system. They are generated by the
+ // main code generators in each language (without additional plugins).
+ // Generic services were the only kind of service generation supported by
+ // early versions of google.protobuf.
+ //
+ // Generic services are now considered deprecated in favor of using plugins
+ // that generate code specific to your particular RPC system. Therefore,
+ // these default to false. Old code which depends on generic services should
+ // explicitly set them to true.
+ optional bool cc_generic_services = 16 [default=false];
+ optional bool java_generic_services = 17 [default=false];
+ optional bool py_generic_services = 18 [default=false];
+ optional bool php_generic_services = 42 [default=false];
+
+ // Is this file deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for everything in the file, or it will be completely ignored; in the very
+ // least, this is a formalization for deprecating files.
+ optional bool deprecated = 23 [default=false];
+
+ // Enables the use of arenas for the proto messages in this file. This applies
+ // only to generated classes for C++.
+ optional bool cc_enable_arenas = 31 [default=false];
+
+
+ // Sets the objective c class prefix which is prepended to all objective c
+ // generated classes from this .proto. There is no default.
+ optional string objc_class_prefix = 36;
+
+ // Namespace for generated classes; defaults to the package.
+ optional string csharp_namespace = 37;
+
+ // By default Swift generators will take the proto package and CamelCase it
+ // replacing '.' with underscore and use that to prefix the types/symbols
+ // defined. When this options is provided, they will use this value instead
+ // to prefix the types/symbols defined.
+ optional string swift_prefix = 39;
+
+ // Sets the php class prefix which is prepended to all php generated classes
+ // from this .proto. Default is empty.
+ optional string php_class_prefix = 40;
+
+ // Use this option to change the namespace of php generated classes. Default
+ // is empty. When this option is empty, the package name will be used for
+ // determining the namespace.
+ optional string php_namespace = 41;
+
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+
+ reserved 38;
+}
+
+message MessageOptions {
+ // Set true to use the old proto1 MessageSet wire format for extensions.
+ // This is provided for backwards-compatibility with the MessageSet wire
+ // format. You should not use this for any other reason: It's less
+ // efficient, has fewer features, and is more complicated.
+ //
+ // The message must be defined exactly as follows:
+ // message Foo {
+ // option message_set_wire_format = true;
+ // extensions 4 to max;
+ // }
+ // Note that the message cannot have any defined fields; MessageSets only
+ // have extensions.
+ //
+ // All extensions of your type must be singular messages; e.g. they cannot
+ // be int32s, enums, or repeated messages.
+ //
+ // Because this is an option, the above two restrictions are not enforced by
+ // the protocol compiler.
+ optional bool message_set_wire_format = 1 [default=false];
+
+ // Disables the generation of the standard "descriptor()" accessor, which can
+ // conflict with a field of the same name. This is meant to make migration
+ // from proto1 easier; new code should avoid fields named "descriptor".
+ optional bool no_standard_descriptor_accessor = 2 [default=false];
+
+ // Is this message deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the message, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating messages.
+ optional bool deprecated = 3 [default=false];
+
+ // Whether the message is an automatically generated map entry type for the
+ // maps field.
+ //
+ // For maps fields:
+ // map map_field = 1;
+ // The parsed descriptor looks like:
+ // message MapFieldEntry {
+ // option map_entry = true;
+ // optional KeyType key = 1;
+ // optional ValueType value = 2;
+ // }
+ // repeated MapFieldEntry map_field = 1;
+ //
+ // Implementations may choose not to generate the map_entry=true message, but
+ // use a native map in the target language to hold the keys and values.
+ // The reflection APIs in such implementions still need to work as
+ // if the field is a repeated message field.
+ //
+ // NOTE: Do not set the option in .proto files. Always use the maps syntax
+ // instead. The option should only be implicitly set by the proto compiler
+ // parser.
+ optional bool map_entry = 7;
+
+ reserved 8; // javalite_serializable
+ reserved 9; // javanano_as_lite
+
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+}
+
+message FieldOptions {
+ // The ctype option instructs the C++ code generator to use a different
+ // representation of the field than it normally would. See the specific
+ // options below. This option is not yet implemented in the open source
+ // release -- sorry, we'll try to include it in a future version!
+ optional CType ctype = 1 [default = STRING];
+ enum CType {
+ // Default mode.
+ STRING = 0;
+
+ CORD = 1;
+
+ STRING_PIECE = 2;
+ }
+ // The packed option can be enabled for repeated primitive fields to enable
+ // a more efficient representation on the wire. Rather than repeatedly
+ // writing the tag and type for each element, the entire array is encoded as
+ // a single length-delimited blob. In proto3, only explicit setting it to
+ // false will avoid using packed encoding.
+ optional bool packed = 2;
+
+ // The jstype option determines the JavaScript type used for values of the
+ // field. The option is permitted only for 64 bit integral and fixed types
+ // (int64, uint64, sint64, fixed64, sfixed64). A field with jstype JS_STRING
+ // is represented as JavaScript string, which avoids loss of precision that
+ // can happen when a large value is converted to a floating point JavaScript.
+ // Specifying JS_NUMBER for the jstype causes the generated JavaScript code to
+ // use the JavaScript "number" type. The behavior of the default option
+ // JS_NORMAL is implementation dependent.
+ //
+ // This option is an enum to permit additional types to be added, e.g.
+ // goog.math.Integer.
+ optional JSType jstype = 6 [default = JS_NORMAL];
+ enum JSType {
+ // Use the default type.
+ JS_NORMAL = 0;
+
+ // Use JavaScript strings.
+ JS_STRING = 1;
+
+ // Use JavaScript numbers.
+ JS_NUMBER = 2;
+ }
+
+ // Should this field be parsed lazily? Lazy applies only to message-type
+ // fields. It means that when the outer message is initially parsed, the
+ // inner message's contents will not be parsed but instead stored in encoded
+ // form. The inner message will actually be parsed when it is first accessed.
+ //
+ // This is only a hint. Implementations are free to choose whether to use
+ // eager or lazy parsing regardless of the value of this option. However,
+ // setting this option true suggests that the protocol author believes that
+ // using lazy parsing on this field is worth the additional bookkeeping
+ // overhead typically needed to implement it.
+ //
+ // This option does not affect the public interface of any generated code;
+ // all method signatures remain the same. Furthermore, thread-safety of the
+ // interface is not affected by this option; const methods remain safe to
+ // call from multiple threads concurrently, while non-const methods continue
+ // to require exclusive access.
+ //
+ //
+ // Note that implementations may choose not to check required fields within
+ // a lazy sub-message. That is, calling IsInitialized() on the outer message
+ // may return true even if the inner message has missing required fields.
+ // This is necessary because otherwise the inner message would have to be
+ // parsed in order to perform the check, defeating the purpose of lazy
+ // parsing. An implementation which chooses not to check required fields
+ // must be consistent about it. That is, for any particular sub-message, the
+ // implementation must either *always* check its required fields, or *never*
+ // check its required fields, regardless of whether or not the message has
+ // been parsed.
+ optional bool lazy = 5 [default=false];
+
+ // Is this field deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for accessors, or it will be completely ignored; in the very least, this
+ // is a formalization for deprecating fields.
+ optional bool deprecated = 3 [default=false];
+
+ // For Google-internal migration only. Do not use.
+ optional bool weak = 10 [default=false];
+
+
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+
+ reserved 4; // removed jtype
+}
+
+message OneofOptions {
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+}
+
+message EnumOptions {
+
+ // Set this option to true to allow mapping different tag names to the same
+ // value.
+ optional bool allow_alias = 2;
+
+ // Is this enum deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the enum, or it will be completely ignored; in the very least, this
+ // is a formalization for deprecating enums.
+ optional bool deprecated = 3 [default=false];
+
+ reserved 5; // javanano_as_lite
+
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+}
+
+message EnumValueOptions {
+ // Is this enum value deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the enum value, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating enum values.
+ optional bool deprecated = 1 [default=false];
+
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+}
+
+message ServiceOptions {
+
+ // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
+ // framework. We apologize for hoarding these numbers to ourselves, but
+ // we were already using them long before we decided to release Protocol
+ // Buffers.
+
+ // Is this service deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the service, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating services.
+ optional bool deprecated = 33 [default=false];
+
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+}
+
+message MethodOptions {
+
+ // Note: Field numbers 1 through 32 are reserved for Google's internal RPC
+ // framework. We apologize for hoarding these numbers to ourselves, but
+ // we were already using them long before we decided to release Protocol
+ // Buffers.
+
+ // Is this method deprecated?
+ // Depending on the target platform, this can emit Deprecated annotations
+ // for the method, or it will be completely ignored; in the very least,
+ // this is a formalization for deprecating methods.
+ optional bool deprecated = 33 [default=false];
+
+ // Is this method side-effect-free (or safe in HTTP parlance), or idempotent,
+ // or neither? HTTP based RPC implementation may choose GET verb for safe
+ // methods, and PUT verb for idempotent methods instead of the default POST.
+ enum IdempotencyLevel {
+ IDEMPOTENCY_UNKNOWN = 0;
+ NO_SIDE_EFFECTS = 1; // implies idempotent
+ IDEMPOTENT = 2; // idempotent, but may have side effects
+ }
+ optional IdempotencyLevel idempotency_level =
+ 34 [default=IDEMPOTENCY_UNKNOWN];
+
+ // The parser stores options it doesn't recognize here. See above.
+ repeated UninterpretedOption uninterpreted_option = 999;
+
+ // Clients can define custom options in extensions of this message. See above.
+ extensions 1000 to max;
+}
+
+
+// A message representing a option the parser does not recognize. This only
+// appears in options protos created by the compiler::Parser class.
+// DescriptorPool resolves these when building Descriptor objects. Therefore,
+// options protos in descriptor objects (e.g. returned by Descriptor::options(),
+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+// in them.
+message UninterpretedOption {
+ // The name of the uninterpreted option. Each string represents a segment in
+ // a dot-separated name. is_extension is true iff a segment represents an
+ // extension (denoted with parentheses in options specs in .proto files).
+ // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+ // "foo.(bar.baz).qux".
+ message NamePart {
+ required string name_part = 1;
+ required bool is_extension = 2;
+ }
+ repeated NamePart name = 2;
+
+ // The value of the uninterpreted option, in whatever type the tokenizer
+ // identified it as during parsing. Exactly one of these should be set.
+ optional string identifier_value = 3;
+ optional uint64 positive_int_value = 4;
+ optional int64 negative_int_value = 5;
+ optional double double_value = 6;
+ optional bytes string_value = 7;
+ optional string aggregate_value = 8;
+}
+
+// ===================================================================
+// Optional source code info
+
+// Encapsulates information about the original source file from which a
+// FileDescriptorProto was generated.
+message SourceCodeInfo {
+ // A Location identifies a piece of source code in a .proto file which
+ // corresponds to a particular definition. This information is intended
+ // to be useful to IDEs, code indexers, documentation generators, and similar
+ // tools.
+ //
+ // For example, say we have a file like:
+ // message Foo {
+ // optional string foo = 1;
+ // }
+ // Let's look at just the field definition:
+ // optional string foo = 1;
+ // ^ ^^ ^^ ^ ^^^
+ // a bc de f ghi
+ // We have the following locations:
+ // span path represents
+ // [a,i) [ 4, 0, 2, 0 ] The whole field definition.
+ // [a,b) [ 4, 0, 2, 0, 4 ] The label (optional).
+ // [c,d) [ 4, 0, 2, 0, 5 ] The type (string).
+ // [e,f) [ 4, 0, 2, 0, 1 ] The name (foo).
+ // [g,h) [ 4, 0, 2, 0, 3 ] The number (1).
+ //
+ // Notes:
+ // - A location may refer to a repeated field itself (i.e. not to any
+ // particular index within it). This is used whenever a set of elements are
+ // logically enclosed in a single code segment. For example, an entire
+ // extend block (possibly containing multiple extension definitions) will
+ // have an outer location whose path refers to the "extensions" repeated
+ // field without an index.
+ // - Multiple locations may have the same path. This happens when a single
+ // logical declaration is spread out across multiple places. The most
+ // obvious example is the "extend" block again -- there may be multiple
+ // extend blocks in the same scope, each of which will have the same path.
+ // - A location's span is not always a subset of its parent's span. For
+ // example, the "extendee" of an extension declaration appears at the
+ // beginning of the "extend" block and is shared by all extensions within
+ // the block.
+ // - Just because a location's span is a subset of some other location's span
+ // does not mean that it is a descendent. For example, a "group" defines
+ // both a type and a field in a single declaration. Thus, the locations
+ // corresponding to the type and field and their components will overlap.
+ // - Code which tries to interpret locations should probably be designed to
+ // ignore those that it doesn't understand, as more types of locations could
+ // be recorded in the future.
+ repeated Location location = 1;
+ message Location {
+ // Identifies which part of the FileDescriptorProto was defined at this
+ // location.
+ //
+ // Each element is a field number or an index. They form a path from
+ // the root FileDescriptorProto to the place where the definition. For
+ // example, this path:
+ // [ 4, 3, 2, 7, 1 ]
+ // refers to:
+ // file.message_type(3) // 4, 3
+ // .field(7) // 2, 7
+ // .name() // 1
+ // This is because FileDescriptorProto.message_type has field number 4:
+ // repeated DescriptorProto message_type = 4;
+ // and DescriptorProto.field has field number 2:
+ // repeated FieldDescriptorProto field = 2;
+ // and FieldDescriptorProto.name has field number 1:
+ // optional string name = 1;
+ //
+ // Thus, the above path gives the location of a field name. If we removed
+ // the last element:
+ // [ 4, 3, 2, 7 ]
+ // this path refers to the whole field declaration (from the beginning
+ // of the label to the terminating semicolon).
+ repeated int32 path = 1 [packed=true];
+
+ // Always has exactly three or four elements: start line, start column,
+ // end line (optional, otherwise assumed same as start line), end column.
+ // These are packed into a single field for efficiency. Note that line
+ // and column numbers are zero-based -- typically you will want to add
+ // 1 to each before displaying to a user.
+ repeated int32 span = 2 [packed=true];
+
+ // If this SourceCodeInfo represents a complete declaration, these are any
+ // comments appearing before and after the declaration which appear to be
+ // attached to the declaration.
+ //
+ // A series of line comments appearing on consecutive lines, with no other
+ // tokens appearing on those lines, will be treated as a single comment.
+ //
+ // leading_detached_comments will keep paragraphs of comments that appear
+ // before (but not connected to) the current element. Each paragraph,
+ // separated by empty lines, will be one comment element in the repeated
+ // field.
+ //
+ // Only the comment content is provided; comment markers (e.g. //) are
+ // stripped out. For block comments, leading whitespace and an asterisk
+ // will be stripped from the beginning of each line other than the first.
+ // Newlines are included in the output.
+ //
+ // Examples:
+ //
+ // optional int32 foo = 1; // Comment attached to foo.
+ // // Comment attached to bar.
+ // optional int32 bar = 2;
+ //
+ // optional string baz = 3;
+ // // Comment attached to baz.
+ // // Another line attached to baz.
+ //
+ // // Comment attached to qux.
+ // //
+ // // Another line attached to qux.
+ // optional double qux = 4;
+ //
+ // // Detached comment for corge. This is not leading or trailing comments
+ // // to qux or corge because there are blank lines separating it from
+ // // both.
+ //
+ // // Detached comment for corge paragraph 2.
+ //
+ // optional string corge = 5;
+ // /* Block comment attached
+ // * to corge. Leading asterisks
+ // * will be removed. */
+ // /* Block comment attached to
+ // * grault. */
+ // optional int32 grault = 6;
+ //
+ // // ignored detached comments.
+ optional string leading_comments = 3;
+ optional string trailing_comments = 4;
+ repeated string leading_detached_comments = 6;
+ }
+}
+
+// Describes the relationship between generated code and its original source
+// file. A GeneratedCodeInfo message is associated with only one generated
+// source file, but may contain references to different source .proto files.
+message GeneratedCodeInfo {
+ // An Annotation connects some span of text in generated code to an element
+ // of its generating .proto file.
+ repeated Annotation annotation = 1;
+ message Annotation {
+ // Identifies the element in the original source .proto file. This field
+ // is formatted the same as SourceCodeInfo.Location.path.
+ repeated int32 path = 1 [packed=true];
+
+ // Identifies the filesystem path to the original source .proto.
+ optional string source_file = 2;
+
+ // Identifies the starting offset in bytes in the generated code
+ // that relates to the identified object.
+ optional int32 begin = 3;
+
+ // Identifies the ending offset in bytes in the generated code that
+ // relates to the identified offset. The end offset should be one past
+ // the last relevant byte (so the length of the text = end - begin).
+ optional int32 end = 4;
+ }
+}
diff --git a/vendor/github.com/google/cadvisor/container/containerd/client.go b/vendor/github.com/google/cadvisor/container/containerd/client.go
index 182fd010b298..365f54a71ac5 100644
--- a/vendor/github.com/google/cadvisor/container/containerd/client.go
+++ b/vendor/github.com/google/cadvisor/container/containerd/client.go
@@ -16,6 +16,7 @@ package containerd
import (
"context"
+ "sync"
"time"
containersapi "github.com/containerd/containerd/api/services/containers/v1"
@@ -45,32 +46,38 @@ type containerdClient interface {
Version(ctx context.Context) (string, error)
}
+var once sync.Once
+var ctrdClient containerdClient = nil
+
// Client creates a containerd client
func Client() (containerdClient, error) {
- gopts := []grpc.DialOption{
- grpc.WithInsecure(),
- grpc.FailOnNonTempDialError(true),
- grpc.WithDialer(dialer.Dialer),
- grpc.WithBlock(),
- grpc.WithTimeout(2 * time.Second),
- grpc.WithBackoffMaxDelay(3 * time.Second),
- }
- unary, stream := newNSInterceptors(k8sNamespace)
- gopts = append(gopts,
- grpc.WithUnaryInterceptor(unary),
- grpc.WithStreamInterceptor(stream),
- )
+ var retErr error
+ once.Do(func() {
+ gopts := []grpc.DialOption{
+ grpc.WithInsecure(),
+ grpc.WithDialer(dialer.Dialer),
+ grpc.WithBlock(),
+ grpc.WithTimeout(2 * time.Second),
+ grpc.WithBackoffMaxDelay(3 * time.Second),
+ }
+ unary, stream := newNSInterceptors(k8sNamespace)
+ gopts = append(gopts,
+ grpc.WithUnaryInterceptor(unary),
+ grpc.WithStreamInterceptor(stream),
+ )
- conn, err := grpc.Dial(dialer.DialAddress("/var/run/containerd/containerd.sock"), gopts...)
- if err != nil {
- return nil, err
- }
- c := &client{
- containerService: containersapi.NewContainersClient(conn),
- taskService: tasksapi.NewTasksClient(conn),
- versionService: versionapi.NewVersionClient(conn),
- }
- return c, err
+ conn, err := grpc.Dial(dialer.DialAddress("/var/run/containerd/containerd.sock"), gopts...)
+ if err != nil {
+ retErr = err
+ return
+ }
+ ctrdClient = &client{
+ containerService: containersapi.NewContainersClient(conn),
+ taskService: tasksapi.NewTasksClient(conn),
+ versionService: versionapi.NewVersionClient(conn),
+ }
+ })
+ return ctrdClient, retErr
}
func (c *client) LoadContainer(ctx context.Context, id string) (*containers.Container, error) {
diff --git a/vendor/github.com/google/cadvisor/container/containerd/handler.go b/vendor/github.com/google/cadvisor/container/containerd/handler.go
index b369d9b133d1..52ab24018d33 100644
--- a/vendor/github.com/google/cadvisor/container/containerd/handler.go
+++ b/vendor/github.com/google/cadvisor/container/containerd/handler.go
@@ -22,6 +22,7 @@ import (
"strings"
"time"
+ "github.com/containerd/containerd/errdefs"
"github.com/opencontainers/runc/libcontainer/cgroups"
cgroupfs "github.com/opencontainers/runc/libcontainer/cgroups/fs"
libcontainerconfigs "github.com/opencontainers/runc/libcontainer/configs"
@@ -103,10 +104,28 @@ func newContainerdContainerHandler(
return nil, err
}
- taskPid, err := client.TaskPid(ctx, id)
- if err != nil {
- return nil, err
+ // Cgroup is created during task creation. When cadvisor sees the cgroup,
+ // task may not be fully created yet. Use a retry+backoff to tolerant the
+ // race condition.
+ // TODO(random-liu): Use cri-containerd client to talk with cri-containerd
+ // instead. cri-containerd has some internal synchronization to make sure
+ // `ContainerStatus` only returns result after `StartContainer` finishes.
+ var taskPid uint32
+ backoff := 100 * time.Millisecond
+ retry := 5
+ for {
+ taskPid, err = client.TaskPid(ctx, id)
+ if err == nil {
+ break
+ }
+ retry--
+ if !errdefs.IsNotFound(err) || retry == 0 {
+ return nil, err
+ }
+ time.Sleep(backoff)
+ backoff *= 2
}
+
rootfs := "/"
if !inHostNamespace {
rootfs = "/rootfs"
diff --git a/vendor/github.com/google/cadvisor/container/docker/docker.go b/vendor/github.com/google/cadvisor/container/docker/docker.go
index b0ed227dda0d..f1cda2be8f55 100644
--- a/vendor/github.com/google/cadvisor/container/docker/docker.go
+++ b/vendor/github.com/google/cadvisor/container/docker/docker.go
@@ -29,19 +29,27 @@ import (
"github.com/google/cadvisor/machine"
)
-const defaultTimeout = time.Second * 5
+var dockerTimeout = 10 * time.Second
func defaultContext() context.Context {
- ctx, _ := context.WithTimeout(context.Background(), defaultTimeout)
+ ctx, _ := context.WithTimeout(context.Background(), dockerTimeout)
return ctx
}
+func SetTimeout(timeout time.Duration) {
+ dockerTimeout = timeout
+}
+
func Status() (v1.DockerStatus, error) {
+ return StatusWithContext(defaultContext())
+}
+
+func StatusWithContext(ctx context.Context) (v1.DockerStatus, error) {
client, err := Client()
if err != nil {
return v1.DockerStatus{}, fmt.Errorf("unable to communicate with docker daemon: %v", err)
}
- dockerInfo, err := client.Info(defaultContext())
+ dockerInfo, err := client.Info(ctx)
if err != nil {
return v1.DockerStatus{}, err
}
diff --git a/vendor/github.com/google/cadvisor/container/docker/handler.go b/vendor/github.com/google/cadvisor/container/docker/handler.go
index 541df67c99da..8f63d02eb040 100644
--- a/vendor/github.com/google/cadvisor/container/docker/handler.go
+++ b/vendor/github.com/google/cadvisor/container/docker/handler.go
@@ -44,6 +44,7 @@ import (
const (
// The read write layers exist here.
aufsRWLayer = "diff"
+ overlayRWLayer = "upper"
overlay2RWLayer = "diff"
// Path to the directory where docker stores log files if the json logging driver is enabled.
@@ -197,7 +198,7 @@ func newDockerContainerHandler(
case aufsStorageDriver:
rootfsStorageDir = path.Join(storageDir, string(aufsStorageDriver), aufsRWLayer, rwLayerID)
case overlayStorageDriver:
- rootfsStorageDir = path.Join(storageDir, string(storageDriver), rwLayerID)
+ rootfsStorageDir = path.Join(storageDir, string(storageDriver), rwLayerID, overlayRWLayer)
case overlay2StorageDriver:
rootfsStorageDir = path.Join(storageDir, string(storageDriver), rwLayerID, overlay2RWLayer)
case zfsStorageDriver:
@@ -391,6 +392,7 @@ func (self *dockerContainerHandler) GetSpec() (info.ContainerSpec, error) {
}
spec.Envs = self.envs
spec.Image = self.image
+ spec.CreationTime = self.creationTime
return spec, err
}
diff --git a/vendor/github.com/google/cadvisor/container/factory.go b/vendor/github.com/google/cadvisor/container/factory.go
index befb4a9e63ca..07445f9dd700 100644
--- a/vendor/github.com/google/cadvisor/container/factory.go
+++ b/vendor/github.com/google/cadvisor/container/factory.go
@@ -42,6 +42,7 @@ type MetricKind string
const (
CpuUsageMetrics MetricKind = "cpu"
+ PerCpuUsageMetrics MetricKind = "percpu"
MemoryUsageMetrics MetricKind = "memory"
CpuLoadMetrics MetricKind = "cpuLoad"
DiskIOMetrics MetricKind = "diskIO"
diff --git a/vendor/github.com/google/cadvisor/container/libcontainer/helpers.go b/vendor/github.com/google/cadvisor/container/libcontainer/helpers.go
index c2194ac34ad9..2f9270758b00 100644
--- a/vendor/github.com/google/cadvisor/container/libcontainer/helpers.go
+++ b/vendor/github.com/google/cadvisor/container/libcontainer/helpers.go
@@ -113,7 +113,8 @@ func GetStats(cgroupManager cgroups.Manager, rootFs string, pid int, ignoreMetri
libcontainerStats := &libcontainer.Stats{
CgroupStats: cgroupStats,
}
- stats := newContainerStats(libcontainerStats)
+ withPerCPU := !ignoreMetrics.Has(container.PerCpuUsageMetrics)
+ stats := newContainerStats(libcontainerStats, withPerCPU)
// If we know the pid then get network stats from /proc//net/dev
if pid == 0 {
@@ -467,14 +468,17 @@ func minUint32(x, y uint32) uint32 {
var numCpusFunc = getNumberOnlineCPUs
// Convert libcontainer stats to info.ContainerStats.
-func setCpuStats(s *cgroups.Stats, ret *info.ContainerStats) {
+func setCpuStats(s *cgroups.Stats, ret *info.ContainerStats, withPerCPU bool) {
ret.Cpu.Usage.User = s.CpuStats.CpuUsage.UsageInUsermode
ret.Cpu.Usage.System = s.CpuStats.CpuUsage.UsageInKernelmode
- ret.Cpu.Usage.Total = 0
+ ret.Cpu.Usage.Total = s.CpuStats.CpuUsage.TotalUsage
ret.Cpu.CFS.Periods = s.CpuStats.ThrottlingData.Periods
ret.Cpu.CFS.ThrottledPeriods = s.CpuStats.ThrottlingData.ThrottledPeriods
ret.Cpu.CFS.ThrottledTime = s.CpuStats.ThrottlingData.ThrottledTime
+ if !withPerCPU {
+ return
+ }
if len(s.CpuStats.CpuUsage.PercpuUsage) == 0 {
// libcontainer's 'GetStats' can leave 'PercpuUsage' nil if it skipped the
// cpuacct subsystem.
@@ -501,7 +505,6 @@ func setCpuStats(s *cgroups.Stats, ret *info.ContainerStats) {
for i := uint32(0); i < numActual; i++ {
ret.Cpu.Usage.PerCpu[i] = s.CpuStats.CpuUsage.PercpuUsage[i]
- ret.Cpu.Usage.Total += s.CpuStats.CpuUsage.PercpuUsage[i]
}
}
@@ -587,13 +590,13 @@ func setNetworkStats(libcontainerStats *libcontainer.Stats, ret *info.ContainerS
}
}
-func newContainerStats(libcontainerStats *libcontainer.Stats) *info.ContainerStats {
+func newContainerStats(libcontainerStats *libcontainer.Stats, withPerCPU bool) *info.ContainerStats {
ret := &info.ContainerStats{
Timestamp: time.Now(),
}
if s := libcontainerStats.CgroupStats; s != nil {
- setCpuStats(s, ret)
+ setCpuStats(s, ret, withPerCPU)
setDiskIoStats(s, ret)
setMemoryStats(s, ret)
}
diff --git a/vendor/github.com/google/cadvisor/fs/fs.go b/vendor/github.com/google/cadvisor/fs/fs.go
index 271b01e3562f..b86ec36efedb 100644
--- a/vendor/github.com/google/cadvisor/fs/fs.go
+++ b/vendor/github.com/google/cadvisor/fs/fs.go
@@ -35,6 +35,7 @@ import (
"github.com/docker/docker/pkg/mount"
"github.com/golang/glog"
"github.com/google/cadvisor/devicemapper"
+ "github.com/google/cadvisor/utils"
dockerutil "github.com/google/cadvisor/utils/docker"
zfs "github.com/mistifyio/go-zfs"
)
@@ -113,7 +114,9 @@ func NewFsInfo(context Context) (FsInfo, error) {
fsUUIDToDeviceName, err := getFsUUIDToDeviceNameMap()
if err != nil {
- return nil, err
+ // UUID is not always avaiable across different OS distributions.
+ // Do not fail if there is an error.
+ glog.Warningf("Failed to get disk UUID mapping, getting disk info by uuid will not work: %v", err)
}
// Avoid devicemapper container mounts - these are tracked by the ThinPoolWatcher
@@ -409,10 +412,14 @@ func (self *RealFsInfo) GetFsInfoForPath(mountSet map[string]struct{}) ([]Fs, er
fs.Type = ZFS
default:
var inodes, inodesFree uint64
- fs.Capacity, fs.Free, fs.Available, inodes, inodesFree, err = getVfsStats(partition.mountpoint)
- fs.Inodes = &inodes
- fs.InodesFree = &inodesFree
- fs.Type = VFS
+ if utils.FileExists(partition.mountpoint) {
+ fs.Capacity, fs.Free, fs.Available, inodes, inodesFree, err = getVfsStats(partition.mountpoint)
+ fs.Inodes = &inodes
+ fs.InodesFree = &inodesFree
+ fs.Type = VFS
+ } else {
+ glog.V(4).Infof("unable to determine file system type, partition mountpoint does not exist: %v", partition.mountpoint)
+ }
}
if err != nil {
glog.Errorf("Stat fs failed. Error: %v", err)
diff --git a/vendor/github.com/google/cadvisor/manager/container.go b/vendor/github.com/google/cadvisor/manager/container.go
index 8193bb5e3759..88dd7c153651 100644
--- a/vendor/github.com/google/cadvisor/manager/container.go
+++ b/vendor/github.com/google/cadvisor/manager/container.go
@@ -504,7 +504,7 @@ func (c *containerData) housekeepingTick(timer <-chan time.Time, longHousekeepin
err := c.updateStats()
if err != nil {
if c.allowErrorLogging() {
- glog.Warning("Failed to update stats for container \"%s\": %s", c.info.Name, err)
+ glog.Warningf("Failed to update stats for container \"%s\": %s", c.info.Name, err)
}
}
// Log if housekeeping took too long.
diff --git a/vendor/github.com/google/cadvisor/manager/manager.go b/vendor/github.com/google/cadvisor/manager/manager.go
index 08955833bff0..10a725f7eb57 100644
--- a/vendor/github.com/google/cadvisor/manager/manager.go
+++ b/vendor/github.com/google/cadvisor/manager/manager.go
@@ -50,6 +50,7 @@ import (
"github.com/golang/glog"
"github.com/opencontainers/runc/libcontainer/cgroups"
+ "golang.org/x/net/context"
"k8s.io/utils/clock"
)
@@ -59,6 +60,8 @@ var eventStorageAgeLimit = flag.String("event_storage_age_limit", "default=24h",
var eventStorageEventLimit = flag.String("event_storage_event_limit", "default=100000", "Max number of events to store (per type). Value is a comma separated list of key values, where the keys are event types (e.g.: creation, oom) or \"default\" and the value is an integer. Default is applied to all non-specified event types")
var applicationMetricsCountLimit = flag.Int("application_metrics_count_limit", 100, "Max number of application metrics to store (per container)")
+const dockerClientTimeout = 10 * time.Second
+
// The Manager interface defines operations for starting a manager and getting
// container and machine information.
type Manager interface {
@@ -154,11 +157,10 @@ func New(memoryCache *memory.InMemoryCache, sysfs sysfs.SysFs, maxHousekeepingIn
dockerStatus info.DockerStatus
rktPath string
)
- if tempDockerStatus, err := docker.Status(); err != nil {
- glog.V(5).Infof("Docker not connected: %v", err)
- } else {
- dockerStatus = tempDockerStatus
- }
+ docker.SetTimeout(dockerClientTimeout)
+ // Try to connect to docker indefinitely on startup.
+ dockerStatus = retryDockerStatus()
+
if tmpRktPath, err := rkt.RktPath(); err != nil {
glog.V(5).Infof("Rkt not connected: %v", err)
} else {
@@ -234,6 +236,31 @@ func New(memoryCache *memory.InMemoryCache, sysfs sysfs.SysFs, maxHousekeepingIn
return newManager, nil
}
+func retryDockerStatus() info.DockerStatus {
+ startupTimeout := dockerClientTimeout
+ maxTimeout := 4 * startupTimeout
+ for {
+ ctx, _ := context.WithTimeout(context.Background(), startupTimeout)
+ dockerStatus, err := docker.StatusWithContext(ctx)
+ if err != nil {
+ return dockerStatus
+ }
+
+ switch err {
+ case context.DeadlineExceeded:
+ glog.Warningf("Timeout trying to communicate with docker during initialization, will retry")
+ default:
+ glog.V(5).Infof("Docker not connected: %v", err)
+ return info.DockerStatus{}
+ }
+
+ startupTimeout = 2 * startupTimeout
+ if startupTimeout > maxTimeout {
+ startupTimeout = maxTimeout
+ }
+ }
+}
+
// A namespaced container name.
type namespacedContainerName struct {
// The namespace of the container. Can be empty for the root namespace.
diff --git a/vendor/github.com/google/cadvisor/metrics/prometheus.go b/vendor/github.com/google/cadvisor/metrics/prometheus.go
index 2dd7747b8341..4354071b8126 100644
--- a/vendor/github.com/google/cadvisor/metrics/prometheus.go
+++ b/vendor/github.com/google/cadvisor/metrics/prometheus.go
@@ -150,10 +150,18 @@ func NewPrometheusCollector(i infoProvider, f ContainerLabelsFunc) *PrometheusCo
},
}, {
name: "container_cpu_usage_seconds_total",
- help: "Cumulative cpu time consumed per cpu in seconds.",
+ help: "Cumulative cpu time consumed in seconds.",
valueType: prometheus.CounterValue,
extraLabels: []string{"cpu"},
getValues: func(s *info.ContainerStats) metricValues {
+ if len(s.Cpu.Usage.PerCpu) == 0 {
+ if s.Cpu.Usage.Total > 0 {
+ return metricValues{{
+ value: float64(s.Cpu.Usage.Total) / float64(time.Second),
+ labels: []string{"total"},
+ }}
+ }
+ }
values := make(metricValues, 0, len(s.Cpu.Usage.PerCpu))
for i, value := range s.Cpu.Usage.PerCpu {
if value > 0 {
diff --git a/vendor/github.com/google/cadvisor/pages/static/assets.go b/vendor/github.com/google/cadvisor/pages/static/assets.go
index 156737f2bd43..ec854945f3a3 100644
--- a/vendor/github.com/google/cadvisor/pages/static/assets.go
+++ b/vendor/github.com/google/cadvisor/pages/static/assets.go
@@ -1,4 +1,4 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
+// Copyright 2018 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
@@ -251,7 +251,7 @@ func pagesAssetsStylesBootstrapTheme311MinCss() (*asset, error) {
return a, nil
}
-var _pagesAssetsStylesContainersCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xb9\xd7\x8e\xe3\x68\x9a\x28\x78\xdf\x4f\x91\x3b\x83\x05\xce\x39\xec\x6c\x7a\x57\x85\xbd\xa0\x11\x45\x27\x7a\x7f\xb3\xa0\x27\x25\x7a\x27\x92\x85\x79\xf7\x85\x22\x22\x23\xb3\x4c\x57\x75\xcf\x6c\x20\x95\x11\xfc\xf9\x7f\xde\x7f\xfa\xdb\x3f\xca\xbe\x2f\x9b\xfc\xeb\x56\xcf\x6b\xdc\xd4\x67\xbc\xd4\x7d\xf7\x75\xe9\xfb\x26\x89\xa7\x5f\x8a\xbe\x5b\xbe\xce\xf5\x99\xff\x04\x43\xd0\xff\xfd\x5f\x7f\x7a\xf9\xcb\x9f\xbe\xfd\x9a\xef\x43\x3f\x2d\x5f\xeb\xf7\x4b\x7f\xff\xff\x01\x55\x16\x2f\xf1\xff\x08\x4f\xb5\xb4\xcd\xd7\xb4\xcf\xf2\x5f\xda\x78\x2a\xeb\xee\xeb\x54\x97\xd5\xf2\xd3\x3f\xe0\xbc\xfd\x73\x51\xbf\x43\xbe\x78\x69\xe2\xee\xed\xed\xbb\xb6\x9e\xf9\x1b\x92\xa4\x6f\xb2\xbf\x40\xd2\x3f\xbe\x26\xeb\xb2\xf4\xdd\x2f\x43\x9c\x65\x75\x57\xfe\x84\x0c\xfb\x5f\xc0\x2c\x53\x1d\x77\x65\x93\xff\x32\xf4\x73\xfd\x7a\xf3\x53\x9c\xcc\x7d\xb3\x2e\xf9\xcf\xef\xcc\x43\x3f\x2f\xfd\xf0\x13\xf4\x17\x68\xd2\x78\x78\x7f\x8e\x93\x26\xff\xe5\x59\x67\x4b\xf5\x66\xe1\x9f\xbf\x71\x02\xfd\xfc\xae\x92\x9f\xa0\x9f\x93\x7e\xca\xf2\xe9\xf3\x8f\xaf\x69\xdf\x34\xf1\x30\xe7\x3f\x7d\xfb\xe3\x2f\x68\xcd\x6d\xdc\x34\x5f\xb3\x3a\x6e\xfa\xf2\x83\x14\x0e\x41\x7f\x29\x69\x52\x97\xbf\x06\xa2\xfe\x05\xa0\x1f\x69\xfd\xb9\x6b\xfc\x88\xff\xf7\xba\x4c\xe2\xf4\x51\x4e\xfd\xda\x65\x2f\x71\xfb\xe9\xa7\xff\x4c\xe1\x8c\x2e\x8a\x6f\xca\x80\x87\xfd\xcb\xdc\x37\x75\xf6\xe5\x3f\xd1\x18\x27\x49\xec\x53\x71\xd4\xbf\xc5\xe3\xd7\xe4\x5f\x67\xf3\x6b\x52\xfe\xf2\x7b\xbe\xb2\x2c\xfb\xf9\xf7\xfc\xbf\xf9\xc0\xcf\x4d\x5e\x2c\x7f\xe9\x0a\xbf\x62\x67\xa9\x97\xbf\x8a\xcd\x1f\x39\x7a\xbb\xfe\x07\x4c\xe5\x50\x9e\x15\xf9\xcf\x1f\x4f\x10\x04\xfd\x9c\xae\xd3\xdc\x4f\x3f\x0d\x7d\xdd\x2d\xf9\xf4\xa3\xb6\xbe\x73\x3f\xe5\x4d\xbc\xd4\x5b\xfe\xf3\x0f\x59\x07\x19\x96\x9f\x7f\x1b\x56\x3f\x6f\xf9\xb4\xd4\x69\xdc\x7c\x8d\x9b\xba\xec\x7e\x6a\xeb\x2c\x6b\xfe\x1d\x2f\xfc\x9a\xf6\xdd\x92\x77\xcb\xbf\x2e\xe8\x07\xc0\x1f\x88\x5a\x14\xc5\xa7\x34\xd8\xb0\xff\x8a\xd9\xae\x9f\xda\xb8\xf9\xb9\xdf\xf2\xa9\x68\xfa\xe7\x4f\xf1\xba\xf4\xff\xb6\x35\xbe\xa6\x4d\x3f\xff\xbb\x36\x79\x07\xfa\x81\xdd\x9f\x96\x29\xee\xe6\x21\x9e\xf2\x6e\xf9\xb2\x4e\xcd\xff\x7a\xbb\xf0\xff\x26\xfd\xfe\x8f\xb2\x2e\xfe\xf7\x97\xae\xff\x3a\xe5\x43\x1e\x2f\x5f\xe6\x74\xea\x9b\xe6\x4b\x9a\xbf\x19\xaa\x7a\x97\x04\xc6\x7f\x34\xd4\x6f\x52\x0e\x0c\x0d\xfb\x9b\xc7\xbd\xac\xf9\x91\x4b\xf0\x7f\x2f\x0c\x3e\xf4\xfb\xa5\x2e\xa6\xb8\xfd\x37\x84\xfd\x35\xdc\x8f\xd9\xe5\x1b\xe7\xe4\xdb\xc3\xef\xc2\x36\x69\xe2\xf4\xf1\x5f\xff\x48\xab\x78\x5a\xe6\xaf\x75\xd7\xd4\x5d\xfe\x35\x69\xfa\xf4\xf1\xcb\xef\xfd\x31\xab\xe7\xa1\x89\x8f\x9f\xbe\xb6\xfd\xf9\x79\xb7\xdf\x3f\xcf\x7f\x04\xff\xaf\xff\xf3\xe5\x55\x1c\xbe\xfc\x11\xea\xbf\xff\x9f\x9f\x8a\x7a\x9a\x97\xaf\x69\x55\x37\x19\xf0\x4f\xef\xfd\xf2\x6b\xc4\x9f\x6c\xb6\x79\xb7\xfe\x68\xd3\x37\xe7\xfb\x9e\x95\xdf\xd2\x54\x9a\x7e\xf9\x4f\x82\x20\x3e\xfe\x4b\xd3\xf4\xdb\x85\x79\x39\x9a\xfc\xa7\x37\xe9\xbf\x1d\x7d\xd8\x6a\xd8\xbf\x85\x67\x96\x17\xf1\xda\xbc\x47\xdc\x87\xf7\x7e\x81\xd1\x61\xff\xc2\x4c\x75\xdc\xfc\x7d\x8e\xbb\xf9\xeb\x9c\x4f\x75\xf1\xbd\x3a\xf4\xeb\xf2\xe2\xf1\xa7\xae\xef\xf2\x1f\x03\xe1\x0b\xf4\x07\xfe\xf2\xd2\x5e\x96\xef\x3f\x21\x10\x04\x41\xbf\x12\xeb\x5b\x25\xfc\x51\xba\x2c\xcb\xde\x5c\x15\x04\xe7\xb9\xf9\x47\x39\x2f\xf1\x52\xa7\xff\x48\xfb\x16\xcc\xb3\x7a\xe9\x27\xf0\x1d\xe6\x6b\x52\xfe\x63\xe8\xca\xff\xfd\xe5\xdd\x81\xbf\xee\x5f\x96\x7e\xf8\xf2\xca\x7d\xdf\x4b\xd7\x3f\xcf\x44\x4d\x3d\x2f\x1f\xba\x79\x13\xe1\x43\x30\x64\xd8\xff\x58\x34\xe8\xe7\x25\xdf\x97\xaf\x59\x9e\xf6\xd3\x9b\x5b\xbe\xbf\xfe\x27\x29\xe9\xf7\x12\x7e\xed\xd7\x25\x9f\x5e\xee\xf3\xf7\x3f\x7a\x5b\x77\xdd\xfb\xdb\x5f\xfe\xb9\xd9\x3e\x84\x89\xe3\xf8\xb7\x64\x97\x7e\xf8\x73\x9a\xbf\xfc\xa6\xaa\x7f\x77\x81\x97\xbd\xbe\x89\xf8\x87\x38\xbe\x73\xf6\x0d\xc7\x97\xaf\xf0\x67\x68\x7d\x20\x82\xbe\xbc\x8e\xbe\x21\x7a\x79\x0e\x36\xec\xbf\x0d\x89\x3f\xc6\xfa\x56\xac\x5e\x18\xff\xec\xfa\xb4\xfc\xf1\xf9\x77\x01\x3f\xd1\x7c\x24\xa7\xb7\x9c\xfb\xdf\xc0\xf8\x9d\xb1\x1f\xf1\xfc\xf3\xf8\xfd\x4b\xa1\xfe\x35\xd0\xbf\x66\xe7\x0d\xe5\x6f\xe4\xfb\xe9\xa7\xa9\xef\x97\x3f\x02\xfc\xe5\x2d\xab\x7c\xe4\x42\xe8\x4f\x2e\xfe\xa8\xc2\x7f\x15\xe4\x07\xa6\xfe\x55\x90\x8f\xc6\xf3\x57\x00\xef\x89\xe6\xcf\xa0\xb2\xa9\x1f\xb2\xfe\xf9\x87\x60\x7f\x78\xbf\x9e\x5f\x8d\x6d\xf6\x63\xbd\xae\xdb\xb8\x7c\x8f\xe5\xff\xab\x6e\x5f\xf3\x43\xdc\x2d\x3f\xf7\x43\x9c\xd6\xcb\xf1\xd3\x3f\xd0\x9f\xdf\x92\xfb\x0f\xcf\x45\xdd\x2c\xf9\xf4\x53\xdc\x0c\x55\xfc\xbf\x3e\xce\xff\x1f\x14\xfa\xdf\x7f\x4a\xf0\xcf\x35\xfb\x87\x11\xff\xa7\xa0\x9f\x1a\xfe\xf7\x41\x3f\x34\xfd\xef\x03\x7e\x2a\xfb\x23\xcf\xa0\x28\xfa\x83\xc6\x7e\x9d\x83\x68\x9a\xfe\xfe\xee\xcf\xc2\xec\x1b\xc5\x3f\x2b\x81\x7f\x68\xc1\xef\xf9\xf8\x95\x5a\x7e\x60\xe4\x33\x5b\xfd\xfa\xfc\x0f\xcd\x53\xbd\x5a\xb0\xff\x86\x6d\xfe\x39\xdc\xef\xf2\xf4\x37\x85\xa4\xc5\x97\xff\x24\xe8\xfc\xe3\x3f\x32\x2e\xfe\x82\xb5\x38\x7d\xb5\x18\x7f\x48\xbd\x1f\xf2\xee\x0f\x3a\xce\x24\x49\x7e\x9c\x4f\x3e\xab\x6c\xd2\x2f\x4b\xdf\xbe\x15\xbe\x3f\xa4\x54\xf4\xe9\x3a\xff\xb7\x5c\xf4\xcf\x20\xff\x89\x22\xfa\x29\xee\xca\x3f\x2e\x80\xdf\x52\xc0\x77\x03\xbe\xb5\x0b\x5f\xa0\x7f\xb5\x9a\x7d\x3a\xe8\x8f\xcd\xe9\x7b\xfd\x21\x5f\x05\xe9\x7b\x0b\xf1\xa7\xdd\xc3\xfb\xaf\x8f\xa6\xf2\xbd\x83\xf8\xde\x05\x7f\x45\x29\xea\xad\x28\xfe\x8b\x3c\x7d\x9b\x85\xdf\x57\x08\x7f\xa8\xc5\x5f\x5f\xf9\x6f\x98\xe1\x5f\x40\xf0\xdb\x22\xfd\xb1\xd1\xf8\xe3\x8a\xfe\x89\xef\xe5\x32\x7f\x4e\xf1\x75\xe3\x2f\xaa\xc6\x07\xc1\x6f\x33\xe7\x7f\x0b\xdb\xef\xd8\x7f\xc7\xf6\x2d\xe9\x7c\x2b\x7d\xdf\x46\xef\xa2\x28\xfe\x9a\xd0\x1f\x5e\xa8\xf2\xf4\xf1\xaf\x3a\xf4\x6f\xa9\x66\x59\xf6\x2b\xaa\xf5\x92\xb7\xbf\xfc\xd0\x60\xfe\x75\xf3\xfc\x4f\x7a\x4e\xe8\x57\xfd\x33\x99\xb7\x6f\x81\x81\xbc\x4d\x55\x55\xbd\xe4\x5f\xe7\x21\x4e\x5f\x20\xcf\x29\x1e\x7e\xc7\xc2\x6f\x9f\x5f\xad\xc4\xb7\x18\x7b\x97\x81\xcc\xdb\x6f\x14\x3e\xfc\x02\x79\xdb\x56\xfc\xa8\x84\xae\x7f\xd3\x4d\xd2\xef\x5f\x7e\x8b\xf0\xef\xbf\xb9\x58\xa7\x7d\xf7\xbb\x4b\xbf\xa6\x08\x23\xbf\xc7\x1f\xa7\x69\xde\xfc\x73\xb8\x0f\xc6\xa0\xdf\x00\xbe\x49\xf4\x6d\x0a\xff\x77\x94\xfd\x7b\x2c\x7f\x58\xfc\xde\xde\xbc\xb1\xf6\xf7\x7f\x03\xe0\x37\x0c\xa5\x69\xfa\x4f\xb2\xfd\x5f\xe0\x79\xa9\xf2\x97\xff\x69\x2f\xf2\x86\xa9\xaa\xcb\xaa\xf9\x5d\x0a\x7a\x7f\xf5\x2a\x66\x7f\xb4\x41\x22\x72\xba\xa0\x7e\x53\xd8\x7f\x7d\xf8\xee\xab\x59\xbf\x2c\xf9\xef\x87\xc7\xef\x93\xc3\xd7\xf7\x12\xf4\xea\xfb\x3f\x8f\x96\x7e\x78\x3d\xff\x81\x31\x3f\xfc\xec\xf7\x8c\xbe\x69\xe3\x07\x3e\xdf\x53\xf2\x4f\x9f\xc9\xf9\x73\x29\x41\x0c\xfb\xfb\x8e\x8b\xf8\x93\xed\xc4\xab\x41\xfe\xe3\xf1\xec\xdb\xae\x82\xf8\x23\xf6\x7e\xdb\x88\xff\x05\xcf\x7f\x78\xfd\x4d\x90\x37\x06\xdf\x98\x78\xe7\xe7\x47\x6a\xfd\xfb\x16\x76\xce\x9b\x3c\x5d\xfe\xd0\xc1\x7e\x4b\xf0\x2f\x21\x7e\xa3\xbc\xff\x49\x09\xc4\x5f\xe1\xfb\x05\xfa\xbd\x6e\xde\xe2\xe4\x97\xef\x2d\xe0\xcf\x59\x3d\xe5\xe9\x9b\xf2\x9b\x65\xfa\xf9\xbb\xc4\xdf\x4b\xfc\x9f\x59\xe8\x63\xa4\x7e\x37\xcd\xdb\xd1\xbf\x68\x8e\x77\x3e\x3e\x6a\xc4\x0f\xd6\xfe\x01\xdd\xef\xba\xa1\x37\xc0\xb6\xcb\xdb\xbe\xab\xd3\xaf\x55\xdd\x2d\xbf\xfc\x76\xa0\x5f\xbb\x2c\x9f\x7e\xb7\x78\xf9\x35\xe0\x9c\x0f\xf1\x14\x2f\xfd\xf4\xa3\x1a\x7e\xb5\xb7\xfc\x1e\x02\x6f\x0c\xbe\xe6\xe0\xbf\xfd\xed\x1f\x2f\x1b\x7c\x6d\xe2\x24\x6f\xbe\xfc\xf2\xb7\x2f\x5f\xbe\x7c\xf9\xdd\x72\xf3\x6f\xff\xf5\xb7\x7f\xac\x5d\xfd\xeb\x5b\x1f\x44\xa8\xb7\x9f\x9f\xbf\x03\xbe\x07\x66\xbd\xc4\x4d\x9d\xbe\x41\xbe\xb7\x93\x5f\xd3\x61\xfd\xa7\xf8\x7f\xc0\x07\xbd\xfd\xbc\x01\xd6\xdd\xef\x40\x7f\x43\xf4\xbf\xfe\xf6\x8f\x29\x7e\x7e\x7d\x49\x30\xff\x88\xbc\x88\xdb\xba\x39\x7e\xfa\xf2\x1f\x5c\xbf\x4e\x75\x3e\x7d\xd1\xf2\xe7\x7f\xbc\x93\xf9\xb1\x6c\x7d\x19\xa6\xfc\xeb\xab\x72\xbd\x93\x9b\xfb\xe6\x63\xab\x57\x2f\x4d\xfe\x6b\x8a\xc2\xdb\xcf\xdb\xbd\x21\x2e\x5f\x03\x5f\x9c\xe5\xd3\x97\x0a\xfe\xb8\xf6\xec\xa7\xec\x0d\xd5\x4f\x5f\x92\x29\x8f\x1f\x5f\x5f\x07\x6f\xd7\xdf\xbe\xcf\xf8\x3a\xf5\xcf\x3f\x64\x30\x7d\x67\xf0\x3f\xfe\xfe\xe5\x3f\xda\xbe\xeb\xdf\xf8\xfa\x8f\x1f\xb5\xf9\x32\xdd\x97\xb7\x76\xf2\xed\xf0\x07\x3f\xfa\xf2\xe6\x5e\xef\xc7\xbf\x49\x26\x5f\x96\x7e\x78\x7f\xf1\xb1\x6e\xfa\xf2\x89\xe0\xc7\x2e\xe6\x0b\xfa\x9b\xd3\x77\x87\xfd\xdd\xf1\x2b\x61\xfe\xee\xf0\x23\xb1\xbe\x9f\xff\xd7\xdf\xfe\x31\xaf\xc9\xab\xf6\xc4\xf5\xab\x57\xf9\xd8\x16\x7e\xad\xbb\x61\x5d\x3e\x04\xff\x15\x65\xec\x1b\xb6\xf7\x84\xf7\x05\x83\xde\xd1\xfc\x67\xd3\x97\xfd\x07\xc0\x47\x4e\xfd\x82\xbc\xed\x4b\x7f\xc7\x10\xf2\x79\xfa\xfb\xc4\xfc\x3d\x67\xfc\xee\xc6\xbb\x46\x3f\x58\xfd\xdd\xdb\xcf\x84\xf0\x6d\xdb\xfc\xdb\x0b\xef\x33\xfb\x2b\x85\xfd\x47\x16\x2f\xf1\x4f\x6f\xcf\xe0\xd0\x95\x3f\x27\xf1\x9c\x13\xd8\xdf\x6b\x8f\xd5\xad\x27\xa4\x5c\xcb\x9e\x61\x18\x46\xb3\xdd\xea\xe2\x96\x0c\xc3\x92\xee\xeb\xb1\xe6\x18\x89\x61\x18\x8e\x45\xcc\x01\x65\x18\x46\xb1\xfd\x86\x37\x61\xf6\x74\x1f\x19\x27\x5d\x1a\xc1\x3c\xc3\x5d\x77\x42\x44\x75\xa4\xf5\x66\x32\x4c\xae\x8d\x99\x8b\x66\xe1\x03\x4c\x7d\x63\x01\xd1\xc8\xa4\x7d\x73\xb9\x3f\xe7\x28\x9b\x4b\x93\xa9\x25\xe2\x29\x1d\x2c\x1b\xf5\x15\x67\x33\xd7\xeb\xe5\xc2\xca\xcc\x1e\xfa\x12\xd7\x84\xae\x60\x5d\x53\x5b\x08\x2e\xe5\xe2\x2a\xb6\x8c\x48\xd8\xc8\xf4\xeb\x35\x63\xeb\xbe\x8a\x6b\xd8\x4b\x75\x1d\x2b\x50\x25\x87\x8b\x60\xda\xc8\x1c\x25\x61\x70\xa5\x70\xfc\xec\xc0\x1b\x8e\x9f\x4f\x80\xb9\x58\x52\xfb\xc8\xe3\x3a\x2e\x19\xdc\xed\x5d\x4a\x5f\xca\xe2\x0e\xd1\xd2\x7e\x6b\xe9\x92\x91\x3c\x5b\x67\x2e\x12\xcb\xb7\x07\x25\x77\x6c\xea\x32\x8c\xc1\xf0\x79\x50\x01\x99\xca\x80\x20\x73\xdd\x92\x27\xc3\x31\x22\xef\xa9\xb5\x69\xef\x80\x08\x96\xe4\x60\xca\x4d\xca\x48\xf2\x85\xc1\x38\xc9\xc6\x9f\x33\xfb\x10\x24\xe6\xe0\x70\xf7\x60\x4d\xe6\x60\x4b\x66\x16\xf4\x33\x62\x7a\xa6\x61\x18\x26\x11\x1b\xca\xac\x25\x66\x2c\x21\x86\x34\x2c\xd9\x28\x5d\x06\x51\x5a\x07\x65\x53\x06\x51\xa4\x74\x34\x4b\xe6\x6e\x5e\x98\xd6\xae\x44\x99\x91\x99\xf5\xc9\x96\x5e\x28\xd8\x2a\xa3\x32\xcf\x92\x2b\xa7\x0b\x53\xab\xa5\xc3\x4c\xe5\x95\xf1\x93\xf0\xb0\x9e\x0a\xb3\x99\x2e\x93\xf5\x78\xf8\x60\x68\x26\x64\x38\xa6\x75\xa5\xf9\x64\x98\x52\x67\x24\xc6\xdc\x31\xe7\x34\x6f\xa5\xc3\xe8\xe5\x4d\x53\x40\x4c\x69\x8a\x54\xf2\x31\x9b\xb9\x30\xcf\xdb\xea\x9d\x51\xa6\x42\xf7\x9b\xbb\xca\x81\x79\xed\x8a\x83\xd2\xf9\x5a\xca\x55\x2e\x51\x05\x2e\xb4\xd2\xe1\x72\x0d\x65\x9c\x53\xd2\x06\x9f\xef\x17\xe8\xde\x31\xd0\xa9\xf3\x0c\xc3\x5c\xb7\xce\x7a\x16\x18\x66\xe0\x7c\x87\xaf\x4e\x85\xb7\x49\x97\xe8\x20\xb4\xc7\x2a\x10\x83\xec\x26\xdd\xb1\x8a\xca\x40\x60\x93\x9e\x1c\xcb\x30\xa6\x33\x83\x1b\xd2\x80\x0d\x9e\x85\x7c\x7a\x4b\xd9\x59\xf4\xc1\x98\x68\x12\x46\x1b\x7c\xe6\x7a\x2f\x00\x0f\x3a\x91\x67\x5b\xfa\xe5\x64\xe6\x5b\xab\xe6\xce\x9d\x32\x59\x22\xef\x3d\x5e\x32\x58\x28\xe5\xca\x59\x25\x6d\xaf\xee\x13\xe8\x89\x61\x33\x00\x9e\x46\x95\x00\x9c\x5a\x6c\x09\x65\xb2\x24\x80\xa0\xd3\x93\x11\xaf\xb1\x29\xb7\xcb\x53\xd1\x79\x30\x10\xaa\xa4\x8b\x57\xb7\x27\xbb\xe3\x69\x71\x37\x9f\x44\xf1\xc3\x00\x76\xcc\x03\xc1\x10\x1b\xa0\x5c\x82\x66\xef\x39\x0b\xe1\xb4\xfb\x52\x8b\xb9\x9c\xac\xed\x68\x8b\xbb\x83\x70\x91\xd2\xd6\xc3\x2a\x75\x28\x4e\x75\x17\xf1\x84\xe6\x22\x0d\xe5\x4d\x6e\xae\x1e\x20\xe3\x4c\xa1\xb8\xa4\xcb\xfc\x14\xc9\x95\x31\x15\x95\x6f\xee\x76\x56\xb2\x4c\xb1\xdd\x96\x3b\xdb\xab\x0f\x93\x31\xa3\xd3\x3c\xf2\x22\x65\x18\x59\x07\x81\x90\x66\x94\xe7\x85\x39\xa3\xfc\x81\x3d\x19\x66\xd3\xcb\x30\x50\x6a\x57\x80\xce\x2b\xc7\x30\x8c\xa5\x70\xac\x32\xb1\x2c\xfb\x3c\x59\x41\x39\x19\x7e\x38\x59\x31\x39\x19\xe1\x29\x57\xec\xc3\x62\x78\xce\x61\x0c\x96\xe5\xd8\xd5\x66\x44\x66\xac\xae\x72\xc4\x5e\x3d\x87\xd1\x97\xf2\xb2\x24\x0c\x7f\x1d\x19\xab\x5d\x2f\xe6\x72\xbb\xec\x3a\x83\x76\x18\x2b\xa7\x65\xbe\x3c\x85\x67\x54\x5e\x65\x92\xbb\xaa\xc7\x95\x33\x2d\xf6\x60\x4a\x27\xb4\x2f\x44\xcd\x0a\xf5\x7d\x29\xeb\xb3\x2c\x83\x36\xc4\x2e\x52\x2b\x48\x9a\xac\x30\x03\xc7\x0f\x35\x6b\x59\xd2\x1c\xbc\x9c\x90\x1b\x5d\x79\x7c\x78\xb0\x24\x81\xd2\x92\x56\x26\x7e\xf7\x76\x06\x18\xf8\xe4\xe0\x98\xa3\xde\x0e\x65\xbb\xa4\x7b\x23\x5d\x0f\xd7\x34\x5c\xa6\xf3\x98\x35\x2e\x8b\x6b\x3f\x5d\x7b\xd1\xb0\x32\xde\x34\x82\x90\xf3\xfb\x76\xb3\xae\x93\x99\x1b\x21\x87\xf4\x63\x61\xd9\x40\x05\x67\x0c\x4b\xd7\x3d\x7e\x2f\xb5\xcb\xce\xb7\xf1\x0d\xf1\x85\xf4\x2e\x65\x42\x28\x35\xe1\xb5\x4e\x44\xa1\x35\x1a\x9f\xf7\xfc\xfb\xe9\xdd\x45\xaf\x44\xb3\xca\x4d\x9e\x32\x5e\x91\xcf\xf2\xc1\xf4\x2b\x73\x01\x9e\x52\xd0\x9b\xe6\xb3\x3d\xb8\x87\xcc\x8a\xfe\x65\x0f\x4d\xa2\x6c\x48\x4e\x87\x2e\x53\x2f\x79\xcf\x96\xaf\x78\x91\x93\x0f\xc5\x19\x2f\x00\x24\x07\xbd\x0d\xa4\x16\x16\xde\xc7\xfd\x21\x54\xd7\x89\x4b\x56\xc9\xc2\xaa\xae\xf6\x72\xf9\x89\x39\x01\xae\x49\x32\x43\xca\x8f\xd5\xd2\xb9\xfa\xd2\x3c\x78\x59\xe6\xa0\x66\xb2\xb5\x45\x52\x63\xcb\x19\x78\xd2\xbe\x5c\xdb\xd4\xe1\x92\xe9\x71\x45\x65\x74\x35\xa5\xb9\xe7\x66\x49\xce\xad\x05\x67\x8c\xc7\x05\xb0\x01\xaa\xe3\x71\x35\x75\xf5\xd9\x97\xb0\xc7\x53\xee\x6b\xcb\x1e\x64\xd3\xb6\xef\x5e\x63\x00\xee\x65\x88\xa8\xc3\x1c\xda\x72\x6c\x44\x6d\x8c\x48\x97\x53\x46\x49\x1f\xe8\xd8\xf6\x91\x32\x6b\x98\xcd\xc5\xf2\xe1\x72\x5a\x70\x5b\x07\x5a\xbb\x47\xfc\x41\x98\x4b\x4f\x07\x66\xdb\x36\x5d\x5c\x64\xbd\x0a\x34\xd0\x5a\x76\x59\xb9\xe3\x42\x43\x73\x01\xd4\x6e\x3d\x0b\x74\x1d\x11\x1a\x50\xf6\x7c\x6a\x55\x89\xf0\x3b\x54\xd5\x0a\xdb\x4c\xd7\x60\x8e\x86\xbd\x46\xaf\x36\x10\x39\x4a\x28\x40\x78\x1e\x1d\x82\xf9\x84\x4f\x29\x69\xfd\x3c\xe4\xf1\x6a\xf3\xbc\x72\xa4\xeb\x81\x12\x22\x51\xb9\x0c\x2e\xd1\x78\xb1\x57\x0c\x41\x37\x36\x96\x97\xc2\x2e\x08\x07\xed\xc8\xc1\xf6\xe4\x99\xc0\x14\x34\x11\x3d\x3c\x22\x6f\x86\xf9\xfb\x68\x76\xae\x30\x6e\xde\x68\xc1\xde\x4a\x3c\x90\x69\xc6\xed\x0c\x56\x0c\xf7\x46\x5b\x01\xa1\x03\x01\x88\x70\x40\x7b\xd3\xe6\x3e\x16\xac\x91\xbb\xda\x8a\xe6\x86\x64\x71\xbd\x86\x50\x25\xcc\xe1\x11\x15\x42\x68\x2e\xd1\xe1\x95\xc6\xa4\x5e\xd7\xd0\xf1\xe5\x64\xde\xba\xd9\x11\x43\x01\xd8\x17\x44\x45\x97\x9b\x0b\x69\xe7\xd8\xc6\x73\x34\x08\x6d\x97\x47\xfb\x69\x5e\xf4\x7d\x12\x4b\x8a\xef\xa2\xee\x32\xe9\x52\x8a\x69\x67\x37\x2f\xcc\x01\x81\x6a\x22\xfa\xf1\x08\xb7\x53\x40\x2c\x1a\x3d\x10\xc8\x44\xc6\xe1\x0a\x1f\xa4\x95\x2c\x04\x3d\x6d\x59\xc0\x65\xa6\x0c\xcd\x5d\xe1\x12\x89\x33\xa1\x99\xd9\x12\xda\x34\x58\x6b\xef\x13\x08\x1a\x18\xc4\x9d\x74\x42\x60\xc1\x09\xb3\x83\x8f\xcd\xd5\x89\x0c\xb5\x2c\xd0\x5b\x68\xc5\x80\x05\x60\xda\xe0\x15\xb4\xc4\x33\x7d\x6a\x4c\x89\x3c\xd8\x66\xbe\x39\xd5\x9d\xba\x1d\x66\x08\x54\x53\x7b\x6d\x31\xa8\xe0\x2e\x58\x5c\x5a\x07\x52\x13\x8f\xd4\xea\x7b\x5a\x90\xfb\x23\xc7\xe4\x95\x10\x23\xe0\x06\xe7\x6c\x0a\x44\xe3\xbe\x89\x57\x65\xd6\x34\xbc\x41\xaf\x33\x15\xfa\xf2\x70\x5b\xd6\xc7\xae\x38\x02\xae\x62\xc3\x19\x59\x53\xdb\xc6\x04\x94\x38\x4e\x76\x3b\x6f\x07\x77\xa6\x93\x56\xcf\x47\x7e\xe8\x7a\xe6\xa7\x31\x8e\x57\xdb\xd2\x52\x08\x78\x68\x55\xec\x09\xdd\xcd\x53\xea\x33\x56\x77\x3c\x89\x9b\xee\x54\xd9\x28\xd2\x9a\x2d\x9f\x5b\x21\x04\xbc\xae\xf1\x69\x2f\x09\xa6\x4b\xe7\x07\xfa\x3c\x13\x08\xea\x7b\xc8\x6e\x5e\xe1\x3c\xe1\xe5\x99\x68\xa9\x15\x19\x15\x24\x99\x52\x0b\x69\x11\xb4\x10\x74\xc9\xbd\x1f\x9d\xad\x14\x9e\x93\x2c\xfd\x4e\x1a\xe7\xcc\xad\x47\x4c\x32\xc9\xa2\x17\x51\x45\xd7\x01\x92\x14\x89\x21\xa6\xcf\xf4\x52\xa1\xbe\x8e\x9a\x64\x21\xca\x50\x96\xee\x48\x22\x72\x14\x41\x38\x95\x76\xd3\x87\x5d\xe9\x78\xc2\xcb\xba\x2b\x92\x57\x29\x8e\x9e\x9a\x95\xb7\x36\xce\xab\x97\x21\x43\x9a\x3d\x73\x92\x38\x57\x06\x84\x28\xf2\x79\xf5\x70\x6b\x5a\xd7\x45\x81\x21\xd0\xbf\xb7\xe4\x9a\xa0\x0a\x1a\x25\x99\x93\x9d\x3c\x2a\x14\xf1\x46\x3a\x36\x91\x5c\xa9\x26\x7b\x9e\xe8\x66\x16\xce\x93\x86\xef\x75\x9a\x9e\xf7\x2e\xce\x93\x81\x52\xcf\x87\x9e\x6e\x41\x17\xe5\xbe\x47\x92\x9b\x85\x1b\x33\xfe\x6c\xbb\x25\x7c\x26\xe9\x3d\xd9\x85\xad\xdc\xd2\x85\x0c\xf9\x1e\x30\xfc\x80\x38\xd7\x07\x6f\xcc\x21\xc0\x0c\x34\xd1\x61\x39\x30\x4c\x58\x8d\x9e\x08\x20\xa1\xa4\x5f\x0c\x0d\xc0\x82\x47\x0e\x9c\x1b\x71\x80\x88\x01\xa8\x60\x95\x17\x92\x4f\xb9\x98\x10\x32\x22\xcb\xe4\x2e\xbb\x85\x97\xb8\x4c\x6e\x7c\xfc\xbc\x15\xac\xfc\xb8\x0c\x66\x0a\xb3\x21\x24\xac\xcf\x70\xe3\x79\xcc\x33\xcb\xa7\xcc\x7b\x8f\x22\x1d\xb4\xed\xc9\x16\xc7\x15\x6c\xee\x37\x7a\xef\x54\x79\xb2\x84\xb4\x97\x3a\xcb\x8b\xaf\x60\xff\x3c\xb9\xe8\x26\x2e\xa1\x75\xef\x13\x83\xd3\x28\xb3\x68\x81\x16\x70\xcf\xe1\x54\x43\xa9\xd6\x59\x31\x91\x6a\x4c\x44\x1e\x51\x6b\x15\x78\x61\x99\x83\x72\x57\x46\x75\x1d\xac\x45\xd0\xa0\x34\x70\x50\x55\x8b\x67\x5c\xe8\xc8\x88\x44\x74\x2a\x04\x86\xbb\xfa\x20\x11\x64\x44\xd2\x2e\xea\xa6\xeb\x30\xbb\xed\x7e\x27\xe5\x15\x2b\xd5\x7a\x5c\x25\x01\xab\xc0\x4a\xa0\xa2\xd4\xce\xd8\xdb\x83\xcb\x11\x19\xbf\x39\xe1\xce\x23\x32\x86\xde\x38\x1c\x39\xe2\x1b\x7e\x3e\xda\xc6\xf6\xb3\xab\xbe\xe2\xd9\x51\xaf\x56\xd1\x12\x29\xa9\x76\x5d\x4a\xf9\x8e\x17\x3d\xc4\x27\x56\x45\xa5\xdd\x90\x12\x88\x87\xb7\xd2\x6c\x98\xed\x7a\x01\x9b\x01\xc1\x35\xd1\x32\x8e\x4a\x5e\x05\x07\xf2\x81\xbe\x47\x6a\x37\xb9\xa2\xeb\xa5\xa7\x1e\x6b\x9c\x79\x43\x80\xe8\x1a\x44\x16\xae\x41\xc4\x52\x64\x58\x5d\x70\xbd\x3d\x1b\xc3\xad\x17\xfc\x61\xb5\xf6\x6a\x1b\xa7\xe3\x45\x17\x78\x21\xe6\x93\x6e\x76\xc4\x86\xf0\x46\x3e\xdc\x4e\xd1\x6c\xde\x6f\xfd\x85\xdb\x82\x9b\x9a\xf6\x0b\x44\xb7\xca\xb1\x3a\x7c\x6e\xe1\x78\x8b\x2a\x57\x5c\x17\x8f\xad\x78\x48\x60\x73\x52\xf4\xec\x25\x92\x77\x83\x62\x1d\x72\x47\xdc\xe4\xab\xe8\xa6\x12\xe5\x94\x0b\x73\xe8\xa3\x35\x66\xab\xb0\xe4\x2f\xe6\x89\x22\x09\x40\x6c\x8f\x3b\x87\x49\x7e\xa1\x22\xe6\x2c\x70\xd8\xac\x1a\xe1\x2a\x56\x11\x95\x33\xf5\x06\xf9\xa4\x50\xeb\xaa\xbb\x67\xa8\x7a\x17\x32\x77\x1a\x1e\xf9\xb5\x7b\x42\x1d\xaa\xc6\xb7\xf5\x68\x36\xd8\xc4\x9a\xca\xf6\x0a\x79\xcc\xb3\xf3\xb8\x37\x0a\x0f\x8d\x7e\x63\x1e\x2b\xe7\x9d\xb6\x37\x46\x8e\x7c\x20\xc4\x4a\x0b\x23\x1e\xee\x5e\xd5\xf8\x96\x47\x22\x63\x00\x7b\x8b\x5f\x1c\x7d\xd0\x78\xc0\x9c\x2a\x47\x3f\x6d\xf5\xd3\x9a\xee\x2d\xd6\x64\x7a\x40\x7b\x14\x1d\x34\x0b\xb2\x4c\xb9\x3d\x15\x0a\x99\x2f\x12\x41\x38\x53\x32\x9e\xa8\x9f\x00\x9b\x3d\xc1\xa3\x99\x05\x66\xb5\x31\xda\x64\x6d\xfb\x3d\x77\x93\x00\x81\x15\xb4\xb3\xab\xbc\x9d\xe0\xfb\x8c\x40\xaf\xec\xc0\x9c\x5e\xa5\xe5\x70\x72\xaa\xf1\x8c\x80\x4a\xa5\x8d\x06\x92\x0f\x30\x18\xa4\x8b\x0f\xc6\xc8\xb4\x90\x64\x24\x2f\x93\xbf\xd1\x30\x9a\x83\x37\xbd\xdc\x21\x4f\xa7\xc9\xad\xd1\x0f\x6a\xb1\x17\xcc\x43\x56\xda\x0a\x50\x38\x59\xd4\xb5\x5c\x10\xe3\xda\x4a\xc9\x3a\x81\x6d\xb1\x20\x98\x85\x66\xc6\x1e\x11\x46\x4e\x78\x24\x0b\x46\x02\x09\x2c\x63\x76\xa5\x67\x54\x01\xc0\x8d\x94\xe4\xc4\x93\x90\xbb\x85\x4b\x7a\xc7\x37\x2d\xc6\x6e\xc8\xb0\x2d\x6d\x97\xc3\xa9\xd0\x8f\xfc\x2c\xb3\x78\x7a\xe9\x50\x22\xa2\x72\x40\x33\x09\x45\xd4\x9f\xf4\xc9\x9f\x19\x10\x15\x64\x01\x73\xfa\x22\xe5\xf6\x66\xeb\x13\x0d\x4f\x1c\x72\x4f\x62\x86\xee\x13\x74\x23\xa4\xe3\xde\x59\x70\x2e\xba\x39\xb0\x80\x34\x40\x9e\xe2\x3d\x44\x03\x51\x0b\xe9\xa0\x1b\xb9\x4c\xe1\xd1\x1d\xc8\x6d\xee\x01\xe8\x5d\xa4\xe4\x79\xe7\x62\xa0\x91\xd9\x11\x2a\x76\xa8\x63\x1c\x51\x0c\xc3\x56\x90\xc0\x9d\x49\x01\xb9\xb1\x67\x10\xf9\x38\xd0\x00\x2c\x64\x8a\x26\xbb\x3b\x8c\x3e\x37\x91\x87\xa4\x2d\xab\x91\xc3\x47\x6d\x02\xa2\xa7\x3b\x2c\x16\x1d\x4f\x63\x6e\xbd\xf9\x08\x38\x45\x45\xa1\x92\x5e\x4a\x4d\x9d\x03\x39\xf9\x4c\x42\x39\xe8\x14\xe0\x30\x3e\x35\xef\x84\xc1\x7b\xa0\x36\x48\x91\x27\xe8\xb6\xaf\xcf\x64\x41\xb0\x16\xb5\x0e\x4c\x4e\x26\x18\x10\x13\x84\xb4\x32\x94\x5b\xf1\x1b\x2a\xc0\xc4\x1d\xad\x37\x50\x25\x63\x30\xef\x45\xa0\x04\xc7\x82\x74\x80\xd9\x0f\x98\x24\xe7\xb1\xf0\xc6\x96\x27\xa5\x45\x3c\x40\xe9\x5c\x98\xe7\xe0\xe0\x80\x10\x56\x54\xd0\xa3\xb8\x59\xb4\x7b\xb7\x6a\x5d\xbb\xe3\x50\x21\xee\xb3\x76\x9d\xd0\x23\xba\x11\x0e\x16\xe7\xc7\xb0\x1b\xc6\xd1\xe1\x3e\x88\x76\x53\x4a\x6c\x1d\x0a\xa2\x35\x00\x6d\x86\x6f\x9c\x21\xc5\x6c\x78\x4d\x01\xe0\xd4\xb5\x03\x85\xaa\xdb\x48\xb4\x9b\x3e\xa7\xf7\x7d\x07\xa8\xb3\x7b\xd0\x54\x9c\x50\x53\x4a\x26\x45\x0e\x60\x24\x39\x15\x3b\x09\x15\xad\x7d\xa7\x4c\x03\x37\x29\x5a\x24\x42\x2a\xef\xa0\x0b\x88\x1a\x6b\x46\x81\xdb\x73\xa3\x31\xe7\x04\x20\x50\x96\x22\xea\x35\xe7\x5d\xc3\xc7\x22\x5a\x0c\x0f\x32\x06\xc5\x80\x04\x47\x0f\xf8\xed\x75\x2e\xa7\x97\x2a\x4a\x9f\x0c\xa3\xd6\x37\x86\xe1\xb0\x3b\x13\xd4\x8d\x81\x86\xaf\x77\x62\x76\x69\x34\xcb\x2c\x72\xb6\x34\x6d\xe9\x6e\xdc\x99\xf5\x35\x29\x32\x25\x73\x69\x2e\xa6\x67\x61\xc8\x7a\x66\x19\xc2\x26\x30\xda\xa1\xa9\x2f\x59\xd2\xe5\x62\xcb\xea\x1d\x1d\x6a\x4b\x4f\xc2\x26\x5e\xea\x20\x6a\x56\x73\xc9\xd3\xfe\x3e\x47\xc8\xc3\x4f\x11\x1d\x3a\xa2\x05\x23\xad\x0d\x42\xad\x87\x3e\xb7\xc9\xd0\x36\x57\x8c\x84\x1b\x9f\xd2\x62\x78\x62\xda\x0a\xb2\x14\x91\x93\x1a\xf2\x0e\xb1\x8f\x92\x65\xef\xd2\x86\xf2\x84\x07\x88\x26\x2d\x48\xbd\x40\xf2\x18\xbf\xe1\x4f\x00\x7d\xd8\x6d\x8a\x9f\x64\x47\xdd\x54\x0a\x2b\xd8\xb4\xc9\x8a\x89\x37\xdf\x64\x62\x24\xae\xc4\x44\x86\xe0\x9f\x2e\x53\x30\x92\x39\xaf\x34\x94\x5f\xad\x46\x16\x31\x6e\x1a\x94\x50\xf8\x76\xc9\xf5\x60\x07\xa0\xe2\x24\x81\x1f\x9d\xdc\x96\x42\x29\xf0\x0e\x44\x1b\x64\x05\xd2\xf8\x3a\xe9\x53\x0b\x87\x8c\x07\x81\x02\xd8\x5d\xde\x40\x4c\x8d\x0b\xdb\xa8\xc3\xef\x3b\x48\xef\xba\x77\xa8\x1e\x72\xe4\x1a\x42\x2c\x8e\x68\x41\x85\x79\x31\x35\x7e\x22\x72\x88\xce\x0d\xd6\xb4\x91\x65\xb2\x1f\xd3\x21\x9c\x20\xa8\x5b\x3d\x17\xf0\xe8\x91\x9a\x2f\x2c\x2c\xe3\x6a\x0d\x88\xe9\x5c\xf5\x84\x0a\xee\x39\x2b\x90\xbf\xa2\x47\xe4\x6e\xc1\xe4\x41\x8e\x60\x79\x82\xff\x64\x2e\x43\x41\x02\x60\x79\x13\x79\x18\xee\xe3\xe4\x91\x52\x19\x8c\x92\x27\xdc\x0c\xb6\x0f\xb1\x49\x45\xe0\xfa\xbb\xac\xa5\xc2\xd6\x0b\xbd\x81\x60\x98\x82\xd9\xd4\xa4\x0d\x08\x74\xce\x98\x93\x9d\x2c\x25\x77\x37\x8e\x99\x83\xed\x79\xe6\x79\x13\xbb\xb3\x73\x05\xed\xa4\xd0\xad\xea\xee\x8f\x95\x1c\x97\x02\x88\x64\x65\x88\x25\xfc\xa9\xb9\x77\xf1\x99\xbe\xe1\x63\xe5\x19\x45\xe9\x01\x27\x3a\xc7\x03\x40\xf0\x91\x3e\x46\x20\x9b\xe1\x91\x1e\x24\x9e\x13\xcd\x37\x54\xe8\xd9\x51\x60\xeb\x50\xf3\xb2\xac\x9b\x1f\x08\x54\x1b\x40\x2c\x59\xb6\x9f\x3c\x5d\x99\x53\xbb\x93\xc0\x03\xa7\x00\xd9\xed\x6c\x16\x24\xd2\x86\xdd\x19\xd3\x58\xb1\x88\x7f\xce\x2a\xf7\x3c\x6e\x9b\x22\x27\xe8\xae\x8d\x74\x60\xcb\x39\x17\x3f\x24\x8a\x7f\xb7\x8b\x6a\xde\x28\x0a\x80\x69\x8b\xc2\x6c\x03\x14\xec\x07\x5e\x4a\xec\x59\xf9\x0e\x35\xaf\x9b\x3f\x25\xf0\x8e\x3d\xc3\x98\xf5\x9e\x13\xf5\xcd\x2e\x2c\x3b\xc6\xc8\x06\x92\x39\x08\xa6\x92\xbb\x41\x7a\x03\x1d\x78\xb8\xfa\xc9\xd2\x66\x81\x05\x69\x3a\xc4\x49\xca\x09\x80\xbd\x80\xf2\x0d\x34\x5c\x4d\x4a\xe5\x68\xad\xd7\x04\x10\x24\x86\xec\x1e\xb6\x72\x2f\xa0\xdc\x02\xc8\x90\xfa\x86\xf0\xc2\x98\xc7\xbc\xa9\x8e\x8b\xeb\xd7\xea\x99\x02\x53\xb9\xa5\x6a\x93\xee\x10\x90\x4e\xca\xb8\xfa\x89\x8c\x41\xd9\x08\xc7\xd0\xf9\xb0\x4b\xe6\x02\xd1\x5b\x42\x53\x44\xf5\xdc\xb3\xd8\xdf\xc8\x9a\x5e\x92\x1a\x2b\xfd\x0b\x46\xf1\xf3\x2c\x52\x1f\x8a\xe5\x52\x67\x40\xd6\x7c\xd3\x97\xce\x2b\xce\xc6\x1b\x97\x6c\xbb\xd6\x95\xbf\x05\x53\xdf\xaa\xf7\xd8\xdb\x18\xd6\x09\xe0\x2c\xa0\xcf\x51\xe4\x27\x2b\xdd\x82\x35\x08\x0a\x60\xdc\x2d\x54\x3b\xe6\xf5\x91\xdc\x98\xed\x6d\xee\x64\x18\x8e\xc1\x74\x0b\xd2\x37\x10\x46\x51\x0a\xbb\x9d\xda\xd9\x78\xc0\x06\xf9\xe5\xa8\xcc\xe3\x16\x90\x85\x9f\xf0\x89\x63\x98\x9c\x12\x5f\xc1\x4d\x17\x1d\xec\x50\x7c\x64\x19\x37\x50\x81\x1a\xd9\xf6\x40\x02\x5b\xb3\x41\x74\x18\xb2\x53\x28\xee\x8d\x3f\xa6\xd2\xb1\x5c\xac\x84\xdc\x6b\x06\x62\x1d\x27\x50\x9d\x0c\x0b\x37\x92\x1c\x89\x66\xa4\x98\x5e\xfa\x98\x26\x7a\x0d\x5c\x99\x32\x78\xe8\x22\xc9\x8b\xda\xd0\x53\xae\x07\x07\xd6\x13\xc6\xe9\x6f\x60\x4d\xb5\x9e\x4a\x58\xd8\x33\x06\x9c\xfb\xb7\x18\x5b\x7c\x67\xc7\xc6\xcd\xd8\x0f\xc0\x91\xf5\x6e\x46\x92\x89\x00\x3a\x43\xe0\xf6\x28\x5d\x10\x7c\x89\xdb\x5e\x49\x4c\xa7\xf4\x20\x54\x13\x30\x2c\xd5\xb3\x29\x83\x4e\x5d\xdd\x88\xcd\x8b\xab\xcc\x6f\x34\x8d\x0f\xb5\x44\xda\x9f\x1f\xb6\xb6\x67\xda\xb0\x21\x5c\x0f\x9a\x67\x6a\xb0\x31\x48\x48\x0f\x3b\x4f\x93\x6b\xd5\xc7\x57\x6c\x56\x38\x02\x20\x93\x16\xf6\xa3\x3a\xd1\x58\x9d\x4d\x82\x11\x44\x51\xa3\xbd\x3e\xa1\x5c\x3f\x57\x29\xa7\x23\xb2\x66\x8b\x9b\xc6\x96\x86\xc6\x5e\x63\xad\x60\x9f\xef\x26\xbf\x3d\x7d\x15\x1e\xb1\x9c\x02\x93\x19\x5c\xc9\x17\x9c\xf9\xd8\xd4\x2a\x8a\x7d\x54\x3e\x52\x82\x8e\x17\xd5\xbe\x4b\x03\x4e\x31\xf8\x83\xb0\x07\x5e\xeb\x08\x0c\xcb\x8b\x20\x7b\x64\xa2\xa3\x2f\x64\x25\xd0\xac\x1e\x72\xa0\xbc\x7f\xf8\xd0\xd3\x87\x2b\x6b\xeb\x8a\xa2\xe8\x41\xf1\x86\xa7\x41\x9c\x83\x7d\xac\x83\xbd\x7d\xa1\x8d\x15\x21\xb3\x75\x95\x04\x0a\x78\x8c\xa5\xd6\xec\x2b\x8d\x7a\x5a\x12\x6c\x5b\xb7\xdd\xc2\x29\xd0\xc1\xcc\xbb\xc9\x8d\x06\x14\x15\x9e\xb1\x79\xcc\x7d\xe7\xf3\xb8\x59\xad\x66\x85\xbe\xe0\xa4\xa0\x91\x06\xc4\x88\x2e\x00\x18\xe1\x38\x6e\xd8\x8f\x21\x5e\x91\x08\xb6\x82\x36\xf2\x47\xa4\xdd\x4c\x6e\x7d\xcc\x46\xa5\x8b\x3e\x41\xcc\x8e\xec\xc2\x9a\xe3\x92\x38\x71\xba\xae\xaa\xc0\xe6\x28\x24\x90\x80\x3f\xd4\x86\x0e\xa6\x81\x29\xdf\x43\xb7\xe6\x5d\x38\x40\xef\x2d\x92\x67\x14\x80\x8f\xbb\xbc\x18\x23\x1c\xaf\xbe\xda\xb4\x33\x04\x74\xfd\x4d\x62\xa6\x56\x3e\x52\x43\x24\x6b\x5c\x6f\x47\x62\x68\xa3\xab\x05\x00\xd3\x65\x6c\x80\x75\x0c\x40\x7a\x98\xb5\x45\xab\x42\x8e\x0c\x8d\x27\xf6\x86\x94\x13\xd5\xb3\x2e\x47\xcd\x1a\x0d\x2d\xda\x8c\x2a\x86\xc7\x19\x1e\x10\x32\x9b\xe8\x93\x30\x38\x05\x4f\xe7\xd1\x23\x08\xe9\x2e\x1d\x8f\xf3\xc9\x00\xe1\xd5\x7a\xe0\xb7\x9a\xdc\x81\x69\x3a\xc9\x2e\x4b\x06\x00\xcc\x85\xa8\x95\xd7\x0b\x76\x13\x8b\xf9\x33\x57\xa9\x14\x8a\x76\xe7\x94\x09\x3e\xdc\xc1\x18\x65\xf0\x3b\x75\xe4\xb2\x30\xc2\xf9\x56\xdf\xfd\x28\xe6\x7d\xe6\x95\x6c\xc8\x81\xc8\x7b\x28\x37\x34\x0f\xc0\xa4\x4b\x6b\x77\x58\x8c\xd1\x51\xb8\x28\x70\x3a\x0f\x74\xc0\x88\xaa\x00\x8a\xef\x41\x60\x82\xb7\x41\xb1\x41\x24\xb8\x9f\x6b\x76\x56\xb7\xce\xc1\x91\x75\xac\xb1\x45\xf5\xda\x33\x6e\xbc\x31\x2e\x7b\x8d\x85\x64\x9f\xc2\x7c\x3f\xa4\x72\x7d\x41\x33\x08\x10\x5d\x77\xf1\x86\xcc\x6f\xe4\xdb\x82\x5d\x71\x69\xa7\x3e\xd0\xd9\x60\x27\x9f\x33\xa1\xdf\xfb\x23\x6d\x64\xf0\x89\x56\x54\x70\x1f\x89\x75\x9a\x88\x75\x3a\x29\x50\xf5\x27\x01\xf7\x7c\xa1\x62\x10\x4c\x34\xb1\x20\x26\x4f\x3a\xf1\xc4\x73\x41\x0a\xb1\x7a\x58\x32\x4e\xfa\x8d\xe5\x0a\x57\x48\xc4\x7b\x9c\xfa\xe4\x51\x30\x47\xcf\x6f\x64\x2a\x6c\x9d\x01\x31\x43\x02\x96\x13\x84\x78\xc5\xb7\xfd\x18\x78\x7f\xf2\x60\xdf\x6d\x90\x07\x74\xdd\x7a\x83\xe5\xaf\x24\x1a\x90\x07\xac\x37\xce\x40\x2c\x14\x80\x73\xbc\x72\xcc\x93\x1a\x07\x67\x79\x05\x01\x0e\x13\xcf\x6f\xb1\xd5\xc7\xdc\xb4\x82\x5b\x00\x82\x41\x71\x2b\xa9\x58\xb0\x7c\x38\x9d\x83\x43\x48\xd7\xc0\x72\xad\xcb\x8d\xf1\x98\x07\xfb\x88\x44\x07\x06\xc0\x9b\x1d\xcd\xa8\xbb\x36\xd0\xa6\xa7\x8e\x1b\x9f\x19\x45\x51\x26\xba\x2a\x3d\x6b\x7c\xcf\x79\x8c\x3d\xdf\xa5\x33\x84\xa0\xb6\xa6\xdd\x11\x27\x58\xc7\x85\x0d\x92\xdf\x9f\x54\xba\x39\x99\x65\xce\x93\xd2\xe4\xab\x7d\xa9\xa4\x90\x53\x18\x49\xe3\x7d\xb8\x23\xa9\xfd\xd6\xfa\x70\x93\x80\x46\x40\x9e\xdc\xa6\x1e\x69\xd9\x89\x8c\x47\x55\xdf\xec\x5e\x49\xa3\xfd\x58\xe5\xfb\x0e\x81\x92\x41\x90\x0e\xe1\xec\xf0\xba\x0e\x90\x17\x78\x95\x99\x5e\xc7\x63\x70\x05\xb6\xe8\x6e\xac\xc5\x49\xe8\x15\x47\x83\x02\xc1\xb1\x23\xd3\xf9\x12\xd3\x95\xa6\xba\xc6\xee\x43\x4e\x9f\x22\xc6\x6d\x8f\x0f\x07\x65\xdd\x53\xa6\x40\x07\x17\x28\x90\x57\x36\x98\xde\xde\xca\x37\x32\x8c\xe1\x43\x65\x0f\x3c\x9c\x84\x7a\x4f\xc6\x8c\xef\x5b\xd6\x2c\xa5\x0b\xae\x3b\x03\x44\x64\xd3\x38\xae\x73\xb6\x2d\x47\x13\xd7\xde\xb8\x75\xe7\xb1\xd4\x56\xc9\x16\x92\xf5\x61\x2a\xc9\x56\x48\xe5\x98\x6b\xa9\x96\x88\xbc\x19\xa2\x74\x0e\xc5\xaa\xc1\x29\x02\xc9\x80\x27\x95\x06\xea\xf0\xa0\xc2\xde\x3b\x10\x4d\x93\xc7\xf0\x7a\x11\x22\xc3\x01\xc0\xfd\x71\xbc\xe5\x33\x5a\xec\x29\x89\xf6\xed\xc7\xb0\xaf\x9a\xb5\x86\x02\xc5\x06\x9f\x3d\xc4\x28\x70\x13\xec\x7a\x42\x15\x78\x30\x6d\x4b\xee\xed\x84\xe8\xa2\x70\xb2\x97\x4f\x76\x78\x09\x4e\xc8\x5d\xa0\xd6\x00\x07\x82\xe6\x76\xe1\x18\x7d\xa1\x17\x9a\xec\x4e\x9e\xc8\x34\x0f\x75\x20\xda\xac\x5c\xa4\x00\x31\x2a\x2a\x8b\xa7\x54\x7c\xe6\x2c\xa9\x75\xe8\xad\xab\x79\x1c\xb8\xfa\xb6\xcc\xbb\x88\xe6\xa4\x88\x66\x17\x97\xfd\xa0\x93\xa5\x73\xf6\xbe\x77\xa9\xac\xa4\x4d\x78\xb9\x63\xb9\xe0\x79\x99\x8b\x2e\xd7\xd4\x37\xdc\xad\xc5\xda\xbd\x3a\x59\xa3\x34\x01\xe7\x3d\x99\x48\x92\xe9\x0a\x56\xd4\x6b\xec\xc0\x9e\x8f\x06\xdb\x70\xd1\x82\x32\x98\x44\x17\x1c\xc4\xae\x6c\xe4\xe7\xad\x12\xa5\x9b\x0d\xd1\x7a\xa8\x5e\x58\x3d\x18\x01\x14\x70\x65\xd5\xf3\x02\x78\x77\xd7\x40\xbe\x3c\xec\x19\xaa\xce\x40\xd8\x6d\xb7\x56\x1c\xb6\xf8\x11\xb7\xd3\xd3\xc5\x98\x76\xfa\xfe\xaa\x43\x17\xf5\x06\x36\xe9\x12\xf8\xdd\xd8\x2e\x46\xa4\xe7\xdd\x14\x51\x48\xa2\x1e\x73\xa3\xe4\x98\xd9\x61\x2d\x05\xb7\x23\x41\x0c\x53\x3c\xae\xb3\x57\xce\xe5\x50\x28\x98\x3d\x32\x27\xd1\x52\x41\x4d\x67\xef\xa1\xc5\x5d\xee\xaf\x98\x07\xd0\x74\x71\xe6\xd2\xbe\xbb\x21\xaf\x7b\xcd\xe0\xce\xbe\x8a\x84\xa4\x9e\xb3\xe7\x7b\x5d\x58\x26\xc7\x85\x17\x1b\x59\xa7\x52\xa5\x1d\x6a\xb8\xe4\x60\x6e\xde\x81\xe0\x41\x8d\x4f\xfe\x29\x17\xb1\xc1\x3c\xdf\x8b\xbe\x0d\x89\xa5\xc1\x74\x0e\x16\x70\xe9\x34\xf6\x40\xe0\xf9\x59\x3b\x8c\x47\x64\x88\x75\x65\x05\x0d\xdb\xeb\xec\xd5\x74\xda\x58\xdc\xa9\x4d\x49\x10\x47\x47\xa2\x79\xbf\x39\x97\xa7\xe0\x2e\x0f\xa2\x3b\x28\x52\x09\xb7\x9e\x41\x0f\xe9\xa3\x04\x70\x97\x66\x76\x2e\xbb\x7e\xef\x89\x5b\x27\x1f\x26\x37\xae\x09\x0d\x62\x0a\x92\xad\x34\x99\xaf\x04\x80\xe5\x37\xd1\xde\xc3\xe5\x4c\x51\x3d\xb4\x00\x36\xce\x9d\x23\xaf\xe6\xb8\x6d\x87\x29\x5e\xb6\x04\x31\xf9\xdd\x94\x9c\x79\xb2\x89\xb9\x39\x4a\x8d\xba\x5f\xa9\xf1\xdd\xfe\xbc\xa4\xa4\x77\x43\x47\x75\x44\x5d\x79\xe5\xd5\x4f\x66\xc1\xab\x25\x09\x60\xaa\x10\xf7\x7a\x8f\x7c\x4f\xb6\x83\x3d\x0d\x84\x5b\xb4\x1d\x14\x3a\xd2\xdd\x06\x36\x74\x30\xbe\xfe\x89\x8f\xe9\x04\x6d\xd0\x05\x88\x79\x03\x3d\x65\x86\xaf\x33\xda\x14\xc4\xe0\x2a\x55\xdf\x6f\x00\xb9\x76\x93\x06\x67\x45\xd0\x9d\x0f\xda\x70\x9e\xc5\xf3\x1e\xcf\x65\x47\x3c\x2e\x85\x44\x7e\xe6\x20\x29\xcf\xe6\xa0\x40\xd5\x89\x7c\xc6\x14\x0f\xda\x23\x6c\x45\x6d\xf4\xf0\xde\xfa\x12\xdb\xb5\x2e\x96\x70\x23\xe8\xe0\xcc\xa7\x97\x17\x1b\x08\xe1\x77\xe2\x72\x33\xaa\xd5\x78\x1a\x15\x65\x54\xad\xdc\x46\xa9\x33\x66\x37\x88\xe8\x20\xa0\x81\xce\x7b\xd5\x75\xbc\xb6\x36\xf4\x36\xa4\x53\x93\xaa\x53\x91\x90\x41\x4c\x06\x36\x19\xe0\xee\x4e\xc1\x0f\xad\x70\xe6\x16\xf6\x47\xd8\x1f\x69\x2f\x1b\x96\x60\xcc\xd4\xe9\x49\x19\xec\x13\x8c\x40\xa0\x7f\xcd\x15\x05\x35\x61\x0f\x10\xf4\x76\x2a\xba\xa6\xdd\xa0\x2f\xd9\x98\x5c\xcf\x39\x11\x50\xfa\xd5\xcf\xcc\xc9\x75\x97\xd4\x3a\x55\xd1\x73\x9d\x89\x76\x50\xdc\xe7\x84\x09\xdb\x67\x9d\xaa\xe4\x83\x03\xf9\xc3\x53\x56\x16\xbd\x8b\x2d\x8d\xce\xc4\x3a\xbd\x3e\xaf\x1a\x58\xa5\x9e\xd0\x44\x6e\x73\x03\x0a\x8f\x72\x76\x0e\x11\xaa\xd0\x26\x82\x18\x91\x8f\xb4\x1d\x8e\x78\x1e\xda\x16\x1f\xe3\x76\x78\x7d\x8e\x78\x7e\xc0\x1a\x92\xa3\x8e\x36\x6d\x59\x32\xa5\xa4\xc8\xe0\xf2\xa3\xb2\x07\x27\x92\x1e\x76\x24\xa7\xea\x92\xce\xe0\x88\xc7\x53\x48\x50\x2a\x27\xd5\xb7\xbb\x54\xbf\x5c\x45\xa9\x27\x25\xe6\xcd\xf8\x9e\x26\xfd\xa8\xdc\xfb\x56\xaf\x43\xe2\x5a\x6b\xd6\x7c\xe3\x5a\x99\xc8\x8d\x2e\x07\xb0\xfc\x8c\xd6\x91\x5c\xc9\x91\xc3\x15\xc5\xb0\x6c\xbe\xd4\x01\xc6\xd8\xda\xf2\xbd\xe7\x7c\xb0\x37\x4f\x88\x7c\xb7\x79\x25\x52\xd6\x4c\x1b\xc0\xd8\x73\x79\x8c\x5b\x7c\x8d\xdb\x27\x74\x35\x51\x71\x2f\x27\xc5\x7e\x6c\x27\x65\xa8\x5e\x2c\x66\x87\x43\x88\x31\xa9\x7a\xf1\x14\x65\x7b\x3d\x7b\xe3\xe2\x8d\x9b\x10\x0e\x6d\xda\xc9\x63\xd8\xc9\x47\xd8\x8a\x0c\x26\x5e\x04\xfc\x88\xa4\x47\x10\x92\xe4\x04\x32\xf0\x23\xba\x5a\x37\xe7\xb2\x0f\x43\x1d\xb6\xf2\xbd\x47\xb4\x2a\x7c\x50\x0f\x37\x3e\x55\x61\x9f\xfd\x38\x6c\x15\x0e\x6c\xeb\xa0\x8d\xda\x68\x1f\x93\x96\x02\xd2\x44\x9d\x7c\x78\xcd\xd0\x55\x52\x57\x62\x53\xf7\x34\x59\x10\xc6\xc0\xb9\xcf\x38\x74\x03\x3c\x0f\x16\xfe\x81\x01\xf4\xae\xb3\x07\xbc\xf8\xd9\x18\x53\xf4\xc5\x7a\x84\xab\xcf\x73\xe0\xa2\x98\x98\x7a\xa6\x28\xc7\x87\xae\x03\xc1\xda\x3d\x3c\xf4\x17\xe5\x3b\x06\x18\x77\x0c\x31\xee\x18\xa0\xbd\x7e\x23\xc8\x13\x39\xfb\x93\xbe\xa9\x2f\xfd\x17\x09\xfb\x0c\xaf\xc6\xc6\x77\xf1\xe4\x12\x72\x9d\x5c\x45\x36\x0d\x22\x0c\x3b\x77\x2a\x10\xf6\xd4\x8f\xce\x40\xdc\xa3\xee\x66\x76\xb7\xe7\x69\x38\x68\x86\x8a\x67\x55\x5c\xb4\xbb\x7b\x4b\x6a\xf2\xe8\xa4\x03\xd1\x70\x06\x24\x19\x20\xff\x98\x9d\x84\xb7\xa4\x0b\x91\xe2\x6d\x63\x0d\xb8\xb9\x96\xc7\xb5\x1f\x55\x0e\xdb\xba\x93\x7b\xce\x2a\x2d\x8e\x34\xc0\xf8\x24\x9a\x93\x15\x16\x5d\x2b\x2c\x7f\xe5\xd4\xeb\xdb\xe7\x91\xbd\xfd\x1d\xb5\x56\xe3\x4f\xf2\x9b\x6c\xed\x7e\x2b\x44\x99\x32\xbb\xfd\x96\x76\x32\x67\x3e\x64\x3b\xb8\xb6\x14\xc4\x52\xe9\x2c\x7a\xe3\x0a\x8f\x45\xc3\x85\x88\xe6\x44\x70\x1e\xec\xc0\x4d\x06\x86\x8e\x20\x86\x02\xd4\xef\x18\xd0\x55\xae\x0a\xb0\x27\xf9\xd9\x1f\xd8\x65\xa7\x9f\xb3\x74\xaf\x79\xb0\xde\x9f\xba\x85\xa2\xf4\x5a\x4c\x44\xba\x8f\x9a\x5c\xa7\x64\x4e\x13\x54\xdf\x35\x42\x95\x2b\x8f\x84\x25\x8c\x08\xa9\xfa\x5c\x64\xfb\x58\x64\x9f\x94\x28\xcd\xc9\x24\x84\x0d\xdf\x47\x06\xef\x44\x64\x11\xae\x2b\x88\xd2\x38\x6a\x4d\x9a\x3c\x61\x80\x51\x3f\x5e\x69\x6f\x97\x9c\x07\xae\xdb\x6e\xa3\x5b\xd8\x0c\xb7\xe6\x0c\xb7\x54\xd0\xd2\x86\x03\x00\x42\x33\x24\x2d\x77\x40\x05\x5a\xdf\x8a\x5d\x51\xea\xbe\xbc\x8b\x8c\x43\x57\xe0\xf9\x51\x13\x2e\x0e\x4d\x2b\x4d\xc1\x33\x94\x51\x01\x9c\xf0\xb2\x81\x60\x25\x0f\x1c\x28\x3a\x1c\x28\x9a\x6b\xf9\xbc\xea\x61\x8e\x20\xfe\x49\x83\xa6\x46\x83\x05\x4a\x33\x4f\x9d\x2f\xa1\x57\x84\xe8\xd5\x6c\xdc\xd0\xd7\xec\xb8\xae\xf6\x63\xd0\x6d\x17\x97\x9d\x07\xae\x3a\x6f\x6d\x73\x63\xf0\xcf\x94\x7f\xa8\xb3\x50\xce\xc2\x01\xc0\x41\xb2\x63\x84\x27\x27\x08\xe8\x40\x19\x53\xe9\xe6\xab\x1f\x2b\x50\x14\x4d\x17\x9b\x35\x0e\xf6\xb3\x5f\x57\xe4\x1c\x05\x85\x6b\xe6\xc2\x8b\x22\x66\xcc\xe4\xbd\xdc\xbe\xe8\xf0\xd6\xea\x22\xa4\xe8\xa2\x6b\x1a\xdd\xdd\xb8\xe0\xcf\x0b\xac\x65\x81\x83\xd0\x45\x82\xa0\x33\x2e\x0c\x40\xd8\x5e\xf9\x8a\x4d\xaf\xc7\x2d\xda\xb4\xd8\x6f\x87\x38\x6e\x07\xc2\x6f\x86\xd7\xdf\xe0\xbd\x26\x22\x64\x9f\x27\x45\x3f\x47\x42\x3f\x67\x12\xa1\x43\x74\xa7\x8c\x9b\x45\x6e\x6d\x70\x0e\x8d\xef\x29\x70\x43\x96\x3c\x60\xde\x9f\xef\xbe\x65\x36\x96\x46\x46\x5d\x10\x2c\x34\x2b\xd2\x98\x23\xec\xf9\x2b\x86\xac\x47\xf4\xea\x4e\xc6\xf8\x31\x48\xd4\x4a\xa0\x8d\x3a\xe4\xd3\x42\xe6\xdb\x40\xe6\xe8\x40\xe4\xe8\x40\x16\x41\x38\x89\x26\xa2\x73\xad\x3b\x76\x35\x06\xdc\xce\xdb\x22\x9d\xd0\x72\x3b\xa1\xc5\x70\xa0\x46\xee\x32\xf4\xc0\x77\x7f\x5a\xc8\x9d\x0a\xaf\x6c\x8d\x6d\xa2\x3c\x6b\xd5\x4a\x17\x29\xdd\x19\xa0\x31\xdc\xa5\x1d\x02\x4a\x1e\x63\x80\xfc\x33\x26\x3d\x21\x6a\xd9\x07\x8c\x6d\xa0\xb8\xbf\xea\x0b\xf5\xf2\x25\xbc\x00\x07\xaa\x79\xd8\x8f\xe1\x76\x97\x28\xf4\x55\xb7\x5f\xb1\x2f\x5a\xae\x27\x5a\xda\x72\x97\x4e\x97\x08\x9c\xad\x73\x93\x85\x0e\xa6\x25\xdb\xb6\x07\xae\x3b\x25\x24\xb2\x68\x86\x66\x9d\x07\x16\x26\xc4\xb2\xe2\xd0\x9b\xee\x44\xa7\xe4\xed\x2e\x1d\xb7\xbb\x7c\xd0\xed\x9e\xf9\x42\x1d\x3a\x63\xa6\x3a\xd0\xa6\x9e\xb7\x53\x3a\x6f\xfb\xcd\x7e\x8c\xb7\x5b\x35\x15\x20\x74\x55\xe5\xcb\xe3\xbc\x9d\x37\x64\x45\xe1\xf1\x95\x7b\xd3\x4e\x4d\xc3\xea\x11\x7d\x44\x58\x2c\x96\xa4\x56\xc2\xfa\x5a\x35\xf1\xab\xfe\x6b\xbd\x09\x30\x1b\x49\x0a\x31\xf3\x51\xbb\x78\xb3\x91\xeb\x30\xe6\x99\x58\x7c\x42\x97\xc9\x18\x5e\x99\xcf\x8b\xa7\x18\x0a\x0c\x40\x2e\x82\x90\x94\x64\xb7\x3b\x72\xfe\xa4\xc2\xfb\x94\x9f\x80\x77\x64\x81\x85\x64\x9d\x85\x6c\x5b\xda\x11\x1b\xd5\xd8\x91\x9a\x90\x71\x24\xc0\x47\xbf\xa8\x9e\x7f\x87\x32\x46\x7c\x5e\x40\x77\x79\x6f\x50\x98\x8b\xaa\xda\x10\x2d\xf7\xcf\xfa\xc0\x02\xee\xad\xc6\x21\xeb\xb3\x13\x29\x2b\xcb\xee\xb3\xbb\xa9\x7b\x4d\x3c\x7d\x48\xb9\x30\x28\xae\xbf\x83\x94\x99\xe2\x37\x43\x26\x5d\x18\x4e\xba\x8b\xcf\x82\xaa\xbb\x6f\x03\x14\x47\x70\x32\xc6\x70\x1c\xa1\x21\xbb\x53\x3a\x9f\x73\x3b\x6f\x36\xe9\x04\xa4\x26\xc3\xbd\x6a\x68\x1d\x3e\x64\x9a\x11\x9f\xe2\xe7\x6c\xcb\xf7\xf5\x3d\x4f\x9e\x94\xc1\x13\xe6\x8d\xb9\xd9\x6e\x27\xc7\x8d\xab\x6c\x3d\x03\x30\xe0\x27\xdd\x81\x73\x3b\x99\xbe\x5c\x18\x49\xcd\x7b\x41\xb1\x63\x53\x2d\xbd\xef\xbb\x01\xb3\x19\xf6\x1b\xc8\x58\x8c\xcb\x75\x69\xcf\x30\xe0\xe7\xdc\x24\xd9\x10\xce\x39\xc8\xfd\x79\x33\x3d\x41\xb6\xa5\x07\xc4\x80\xd2\xf0\x39\xff\x40\x95\xe4\xe4\x46\x98\x31\x57\xdc\x34\xa5\xb2\xfe\xac\xb3\xaa\x7d\xb1\x74\xa9\x63\x38\xd5\x26\x40\x77\xbf\x39\x22\xc4\x14\xcc\xf7\x3d\xd1\xa5\x56\xb5\xa8\x81\xf4\x0a\xa6\x19\x8e\x8b\x2b\xc9\xc2\xda\x92\xc7\xae\xe0\xb7\x39\x80\x77\x5f\xbd\x0d\x64\x9a\x4c\x7f\x17\xce\xf8\xa9\x52\x77\xf4\x9b\xae\xf8\x91\x53\x5e\x2a\xac\x0d\xb2\x64\xa2\xcf\x7d\xd5\x45\xc9\x10\xf7\x29\xb1\x2e\xcf\xf8\xb8\x1e\xc9\x25\x0f\x58\x77\xec\x43\x05\x15\x2c\x0f\xba\x2c\x97\x8c\xe9\xd8\x07\x2a\xcf\x3c\x78\xdc\x52\xf6\xed\x95\x22\xea\x02\xab\xf1\x97\x27\x27\xc9\x7d\x94\x5c\x00\x16\xfc\xdc\x9f\x09\x4c\x10\x1e\xca\x85\xa9\x99\xf4\x42\xa6\xed\xd3\x00\xa5\xef\x39\x18\x23\xf4\xa1\x6f\x19\x96\x53\x9c\xb1\x70\x08\x30\x78\xc9\x88\x7e\xca\xa8\x94\xa7\xf5\x48\x6c\x96\x61\x6b\x34\xca\x6f\xd6\xd0\x33\x87\xc4\x7e\xea\x8e\x98\x55\xfe\x89\xba\x84\x18\x40\x8c\xc4\x10\xf7\x47\x0a\x2e\x0c\xdf\x7e\xe6\x88\x0b\x1b\x46\x17\xf7\xe2\x30\x4c\x05\xb9\x80\x8a\xfa\x25\xfb\x5d\x56\x96\xbf\xea\x09\xc5\xec\x6a\x3f\x54\x81\xe6\x30\xab\xc5\x18\xe5\xbb\xea\x18\xe3\x81\x31\x37\x61\xb5\xcb\x68\xb5\x7b\x26\xfd\x94\x93\x29\x55\x18\x2b\x1c\x96\xe1\x6b\x48\xca\x4e\xf7\xa9\x3e\x4c\xfe\x43\x3f\x17\x2e\xb4\x46\xbd\xe2\x4c\x0e\x53\xcc\x6b\x55\x7d\xf3\x4b\x89\x79\xde\xa3\xbe\xe7\x7a\x56\xd2\x8e\xe0\x48\xdd\x97\x6a\xdf\xf9\x63\x24\x6b\xd0\x8c\x83\xe1\x2f\x4c\x19\xdf\x5d\x54\x76\x39\x9f\x3c\xbd\xf8\xa3\x7f\x67\x64\xb1\x19\x98\x92\xdd\x73\x15\x4d\x1b\x86\xc1\xbf\xf3\xce\xb4\xb6\x25\x6b\x0c\xc7\xe8\x77\x2a\xe3\x2f\x4f\xe6\x47\xb9\xda\x47\x58\xd7\x0c\x53\x5f\x78\x00\x62\xf2\xe8\x5b\xdf\xc0\x98\xf8\xb0\xef\x50\x69\x32\xd8\x50\x47\x6d\x7c\x91\x4b\xe6\xfc\xb4\x05\x27\x1a\x37\xfd\x5a\x72\x8c\x2c\xac\xf6\xea\xdc\x4b\xf6\x87\x77\xf2\x9a\xcb\x15\x25\x4a\x2c\x23\x6a\x87\xc7\x08\xeb\x37\xbf\x67\x4d\x1c\xf4\x88\xc4\x09\x93\xc2\x64\xca\x7b\xdf\xc9\x76\xf4\x1b\x1b\xbd\x5a\xbd\xfb\x33\xef\x66\x4a\x36\x39\xc6\xb9\xec\x37\x88\x89\x18\xf6\x73\xf6\xd1\xac\x48\x15\xe2\x57\xda\xe9\x21\xda\x70\x0c\x45\x72\x1e\x8c\xf8\x19\x77\x30\x03\x19\x3c\x7d\xbb\x30\xba\x9a\xb5\x8f\xa8\x67\x56\x76\xfb\xc1\xb7\x50\x8b\xc7\xf4\x52\x98\x9d\x8b\xac\x7e\xf7\xab\x98\xe8\x16\x3c\x6d\x19\x96\xd5\xd4\xdf\xf8\x9c\xe4\x22\xf6\xa0\x91\xb9\xb1\xf5\x8c\xc9\xdb\x59\x90\x41\xbf\xf6\xb9\xcb\x7d\x22\x57\x7c\x5f\xbd\x13\x62\x42\xb6\xaf\xfa\xf8\x4a\x8a\x21\x59\x98\xfc\x0f\xb9\x86\xb7\xdb\x9a\x4e\x7b\xe6\xc1\xb0\x9c\x25\xbb\x8f\x45\x55\xd0\xdf\xc6\xf5\x98\xb4\xed\x83\x63\xf8\x0b\xac\xf1\x89\xc5\xde\xb8\xed\x7b\xbc\x5c\xa7\x2d\x81\xef\x99\x68\xbb\x46\xc9\x98\x2e\xb4\x4c\x04\xe0\x3c\x64\xf1\x85\x23\xfb\xc4\xb1\x3e\x88\x5c\x7f\xb8\x0e\xc3\xdc\x55\x0c\xbc\xa6\xd3\x38\xb6\x3c\xc6\x83\xdf\xe3\x55\x76\x0b\x90\x62\x2a\x62\x66\x2e\xda\x21\x3f\x88\xbc\x1d\x88\x62\x60\x00\xa6\xfb\xd4\x11\xcb\xc1\x11\x40\xe7\x13\x9d\xa9\xe2\x93\x93\x4e\x5d\x78\x6e\xa2\xd1\xdf\xde\x68\x59\x9f\xb4\xea\x71\x98\xe2\x9a\xce\xe2\xf1\x66\x30\x37\x0b\xa5\x16\x67\x38\x67\x6c\x7d\xab\x73\xdf\x73\xca\x6b\xda\x81\xc8\xe5\x80\xdb\x13\x63\x38\xa6\xb6\x65\x1e\x05\xb1\xc7\xe6\xd7\x66\x13\x33\x45\x9d\xd6\x0d\xd5\x30\xdf\x66\x3b\x35\x46\xe8\x35\xcb\x73\x59\x3c\x0b\xe6\x72\x69\xb6\x3b\x06\x48\x69\x5e\x70\xcc\x2e\x85\x82\xcf\xf0\xf8\xe5\x5b\xcc\x71\xdc\x55\xbc\xef\x4f\x3a\x35\x98\xcc\x8e\xe4\x9e\x0d\x39\xe6\xb2\x63\x79\xb1\xe4\x59\x86\xdb\x5e\xb3\x30\xca\x53\x28\xbe\xdb\x31\x15\x87\x4c\x25\x21\x6a\x5c\xb4\x33\x45\x20\xe6\xc1\x32\x3e\x89\x8c\xe9\x62\x68\x1a\xd1\xb8\x4a\xd3\xb3\x27\xfb\xbd\x6e\x00\x12\x72\xbb\xdf\xc9\x93\x34\x0c\xfe\x49\xe9\x10\xf3\x60\xcc\xe3\xb6\xa9\x5b\x01\xe6\xf9\x21\xdd\x25\xe4\x21\xdc\x2e\xc5\xe7\x4e\x5a\xd2\x32\xaa\xcf\x83\xc6\x83\x71\x58\x67\x0f\x88\x79\xf0\x66\x2d\xad\x1a\x5a\x90\x0c\x18\xb7\x83\x92\x98\x5c\xcb\x6c\x9f\x3b\x8c\x1b\xbf\x11\xe4\x24\xd0\xc0\x93\x7e\x62\x7c\xcd\x60\xec\x2d\x17\x27\x7c\x21\x70\xa8\xd9\x53\x1f\x62\x86\x12\xfe\xf4\x31\x91\x3f\x72\xfe\xd8\x36\x50\x6c\x5b\x47\xeb\x62\xd3\x67\x42\xc5\xb3\x47\x27\x9e\x37\x40\x24\x08\x3a\xb1\xb8\x96\xf3\x51\xc8\xf9\xbe\x23\xbf\xea\x28\x82\xd3\x38\xb9\x75\xfa\x59\xe3\x31\x63\xf3\xbd\x17\xd9\x41\x92\xa0\x93\xd3\xc3\x57\xf3\x58\x99\x18\x72\x01\xfe\x5b\x58\xb5\xda\x3d\x44\x41\x0c\x3b\xdf\xfa\x41\x88\x79\x70\xd2\x71\xeb\xf4\xa2\xe3\x49\xd0\xba\x58\x97\xc4\xe4\x56\x2e\xf9\xc4\xdf\x6b\xaa\x87\x16\x28\x74\xa3\xc0\x88\x0c\xa2\x98\xb1\xb9\x87\xcc\x85\x0f\xc3\x50\x25\x13\xbd\xee\xf3\xeb\xbe\x38\x7d\xe7\x47\x13\x43\xd8\x70\xec\x83\x00\x88\x80\x7b\xf1\xc3\x5c\x2c\xd7\x13\x8c\xe2\x34\xe9\xcd\x86\x34\xa1\x67\x03\xee\xfb\x8e\xe7\xa1\xd4\xe3\xd4\x75\xe7\x14\x21\xb6\xac\x5d\x14\x86\x13\xd4\x89\xce\xb6\x02\xe0\x00\x50\x7d\x52\x7e\x29\xa4\xfc\xf7\xdd\xcd\xf3\x6d\xcf\x6f\x60\x3c\x0b\x19\xcb\x38\x1b\x7c\xe6\xc6\xf7\x9b\x2d\xd5\xd2\x2c\x97\x1c\x43\x19\x30\xd0\x40\xfa\x00\xeb\x83\xa7\x0c\x70\x3e\x3e\x67\x9e\xdb\x60\x60\x83\xf3\x06\x7a\xcd\xc7\x4b\x76\x1f\x33\xe8\x49\x88\x21\x3d\x54\x1d\x99\x24\x64\x76\x9b\xaf\x8c\x59\x37\x6e\xef\x5d\xad\x47\x74\x0d\x1a\xfc\xb0\xe6\x75\x42\x6b\xcd\x1a\x35\x7b\xf4\xcc\xd1\xf3\xaa\xb0\xe5\x2c\x59\x7c\x34\xc7\x0a\x3f\xd7\x85\xde\xaa\x94\x2f\xd3\xfb\xda\x0d\x71\xb4\x69\x64\x17\x93\x26\x31\x58\xfe\x08\x23\x08\x1d\x93\xc7\x63\x50\x7d\xde\x60\x02\x92\xd8\x3f\x63\x92\x51\xb3\x69\x81\xc9\xfb\x40\x61\xd7\xd4\x0c\x46\x2d\x17\x5f\xa3\xa1\x3c\x3b\xe2\xab\x87\x6f\x73\xa3\x76\xb8\xc8\x49\x94\xe7\xa0\xd4\x83\x32\xd0\x86\x86\x2d\xee\xc3\x4e\xd4\x28\xd1\x62\x99\x8b\x37\x41\x6f\xb1\x48\xdc\xe7\xe4\xf5\xb9\xee\x7d\xde\x0d\x47\x1a\xd6\x30\x7b\x11\x85\x7d\x0e\x1f\x32\xe7\xc7\x27\xe2\x1f\x7a\x7d\x06\x42\xdb\xca\xda\x6b\xb6\x3c\x5e\xcd\xe1\xd9\x61\x4b\x34\x46\x6d\xd4\xa6\xed\x24\xc7\x13\x1b\x4f\x78\xa1\x70\xe2\x0e\x65\xd7\x1d\x8b\xb8\x5c\x4d\x03\x05\xf6\x51\x74\x52\x9b\x35\x50\x9b\x49\xf1\x4b\x6e\xfe\xfe\x7d\xd9\x4b\x87\xe0\x46\x5c\x11\xd0\x87\x35\xf3\x8a\x04\x9e\x60\x3d\xa2\x47\xd4\xc6\xef\x0d\xfb\xeb\x33\x26\x97\xfd\xe6\xdc\xd4\x2a\xa6\xe4\x57\xbf\xfc\x9a\x39\x40\x94\x66\x40\x94\x06\x33\x88\x36\x62\xfd\x1e\x1e\xcf\xe7\xc1\x85\xb8\x6e\x3f\xa6\xdb\x79\x6b\x64\xdb\x5d\x34\xdb\x1d\x14\xfb\x41\x19\xda\x59\x48\xd0\x68\x6b\x7c\x08\x18\x0b\x03\x42\x5a\x51\xa0\x74\x11\xc0\x34\xea\x10\xa8\x49\x94\x44\xdb\x28\x43\x30\xe2\xc3\xb2\x06\xaa\x46\x08\xf1\xac\xae\x9a\x8c\xfe\xb0\xdf\x64\xec\x48\x85\xa8\x71\xdd\xe0\x2c\x2f\x38\x8c\x54\xeb\x10\xd1\xce\x74\xd3\x8e\x74\x52\x8e\x79\x52\x1c\xa9\x36\x9a\xe3\x62\x6e\xa4\x32\x8c\x71\xbb\x4e\x2b\xb1\x92\x2b\xf9\x1a\x2e\x72\xb4\x21\xfd\x2b\xba\xab\x3d\x2d\x3c\x22\x3f\x6a\x23\x24\x6b\x22\xc4\x6b\xa2\x36\xe9\xe9\x60\x12\xc8\x23\xe5\x4b\x4c\xcf\x3a\x0f\xce\xd0\x0c\x5d\xc8\x1c\x42\xda\x13\xc2\x80\xe9\x04\xaa\x75\x0b\x50\x94\xa1\x89\x27\x8a\xe9\xfa\x67\xef\xc7\xc8\x97\xce\xa6\x0e\x80\x82\xb5\xbb\x2b\x68\x6c\xd0\x67\x42\x9f\x4e\xca\xc9\x95\xb3\x5a\x63\xbd\x72\xd9\x6f\x76\xa5\xa0\x4e\x34\x69\xd9\x26\xd6\xc3\x90\xf8\x30\x9d\x2b\x0d\xe1\xb7\xba\x4a\x15\x73\xeb\x1e\x6d\x3f\x2b\xdc\xb3\x57\xb8\xd7\xbc\xbf\x3b\xc6\x7e\x07\x0c\x38\xdf\x36\x02\x80\x97\xd8\x6f\x96\xd8\x47\x17\x12\x78\x4a\xb4\xe1\xad\x64\xb4\x05\x9a\x46\xa3\x12\x52\xde\x80\xcb\xa7\x5e\xf8\x27\x2b\xf6\xd8\xb4\x78\x23\xbe\xbb\x5e\x33\xc4\xae\xc0\xba\xde\xd1\x71\x7a\x75\xa5\x48\x94\x46\xb3\x22\x21\xaa\x39\xbe\xee\x8f\xc2\x50\xd2\x22\xa8\xcf\x3c\xb1\xa1\x41\xb5\xa1\x41\x71\x71\xdd\x61\xc6\x65\x5f\x97\x33\x45\xb4\x88\x02\x0b\x92\xa0\x7b\x48\xb7\x99\xbb\x77\x95\x0e\x49\x34\x4a\xf2\x33\x97\x3e\x19\x6b\xd5\x15\xdc\x1f\x81\xd4\x13\xa2\xd8\x6b\x66\x22\xf1\x76\x2b\x9c\x8b\x5a\xcc\x13\x34\xbf\xf7\xa4\x4e\x3d\x21\x0d\xa7\x88\xa2\xc3\x71\x64\xe6\xce\xfd\xe1\x3e\x5b\x17\xf2\x70\xdf\x6f\x06\xdb\x1f\x14\x7b\x64\x8b\x9a\x82\xdb\x18\xa9\x66\xbd\x2b\x80\xe2\x92\x89\xd1\xc1\xfb\x1b\x42\x2e\xed\xb0\xac\xe8\xad\x8e\x59\x9e\x60\x3e\x67\xcf\x4b\x4d\x05\x2b\x78\xaa\xe4\x19\x42\x6c\x55\x62\x49\x89\xab\x2d\x29\x3f\x66\x5f\x15\x0e\xe4\x56\xf7\xbd\x32\x57\xcd\xbe\xd2\x88\x76\x77\x21\x78\x49\xbc\x85\xb4\x90\xd9\x81\x8f\xf6\x63\x9f\x1d\xcf\x5d\xb5\x9b\xee\x15\xf0\x47\x48\x9f\xc7\x39\xb9\x5a\xc8\x32\xc6\x0f\x3a\x25\x13\x3d\x9a\x6e\x82\xb7\x06\xc1\xe4\x2d\x24\x46\x85\xda\x74\x01\x4b\x30\xbd\x8b\x8c\xf9\xee\x74\xb8\xe2\x05\xc1\x88\x4c\xe3\x13\x08\x3b\x72\xf0\xc6\x32\x38\x71\x02\x0e\xb7\xfb\x13\xd5\xa0\x62\xc7\x11\x94\x40\xa8\x7b\x1f\x8b\x1e\xec\x04\x9e\x46\xa6\xe7\x8d\x67\x66\x38\xba\x78\xa2\x45\xd0\xe9\xec\x3c\x7b\xe3\x39\x11\x8c\x04\x8a\x10\x7a\x56\xcf\xbe\x75\x86\xb3\x27\xd7\xa7\xd2\x93\x12\x94\xc0\x0d\x0d\xa2\x4e\xef\x2b\x1b\x0f\xa2\x44\x27\x7f\xab\x73\x65\xae\xc2\x1a\x4d\xcc\xd3\x88\xc9\xb5\x20\xc3\xfa\x82\xd6\x6f\xdf\x35\xc0\xc5\xb5\xa5\xa0\x4a\x73\xd3\xf3\x76\x1a\x9e\x96\xb8\x9d\x33\x10\x87\x3f\x22\x33\x22\x73\xf6\x63\x38\xa8\xbc\xf1\x1a\xdf\x6b\x07\x6b\xbc\xc9\xa3\xf9\x72\xa6\x99\xcc\xb6\xf3\x02\x84\xf1\xd5\xe4\xdb\xac\xb8\x6d\xad\x13\xcf\xa3\x47\xca\x75\x99\x6e\x9f\xb5\xb5\xf4\xc5\x80\xbc\xa3\xa2\x83\x3f\xdd\x8d\x22\x24\xee\x66\x8c\x5e\x14\xa8\xcd\x81\xa8\xb5\x54\x4a\x48\xda\xda\xb2\xde\x50\x26\xa5\x5b\x12\x40\xe9\x7c\x89\xec\x99\xa4\xe5\xc9\x83\xd4\xd7\xc9\x9b\xa8\xcd\x38\xcb\x8d\x08\x64\x85\x64\xc2\xe9\x92\x1a\xe8\xf5\x18\xa7\xe9\x4a\x06\xa1\x1a\x8c\x83\x32\x24\xd3\x9d\x5e\x56\x5f\x6d\xba\x1b\x54\x06\xdc\xf7\xfe\x5a\xac\x0e\x4d\x40\x69\x80\x4c\x54\xb4\xb6\xf2\x09\x06\xe8\x78\x52\xbc\xc8\x9d\xe8\xa0\xa7\xdd\x3d\xf4\x85\x35\x81\xf3\x19\xc8\x74\x10\xd4\xfb\xf4\x76\xef\x09\x0d\x92\x8e\xaa\x89\xda\x68\x0e\x54\x0a\x50\x0f\x20\xf0\x9a\x27\x72\x73\x84\x1d\xb8\xdd\xad\x76\x19\xe2\x3b\x94\xda\xab\x4b\xc0\x7e\x87\x82\x45\x91\xfa\x2a\x7e\x37\x1a\x46\xfc\xa8\x65\x0c\x03\x65\x81\xdf\x75\xcd\xb2\xef\x73\x0d\x3e\xb9\x09\x02\x1e\xa3\x47\xe0\xe1\x8c\x0e\x9e\xa2\x53\x11\x78\xd6\xb6\xac\x05\x41\x77\x6e\xcf\xb3\xbe\xaa\xbb\x2b\xa1\xe5\x23\x8a\xe3\x75\xbc\xd2\x4e\xea\x0a\x56\x60\xd7\x25\x95\x2c\x70\xa9\x8b\xce\x40\xe1\xed\x91\x61\x62\xbe\x38\xe7\x79\xb8\x17\x1c\xd1\x36\x5d\xb8\x5c\xd2\x6f\xb5\xd9\xf4\x37\x5d\x68\xda\xbc\xc8\x61\xc2\xde\x35\xe4\xe6\x7b\x42\x9e\x2d\xba\x76\x45\xb4\x3a\x1c\xea\x59\x41\x39\x12\x4d\x73\xbd\x3b\xab\x83\x16\x90\x0e\x82\x1e\x28\xd3\x0c\x50\xa6\x39\x57\xde\x9a\x7d\x35\x7e\x4a\x78\xa6\xb9\xd3\x9c\x30\x98\xce\xaf\x86\x0f\xa0\x4b\xe2\xaa\x3e\x21\xb2\xa1\x71\x87\x30\x8c\x6a\xe5\x23\x3d\x7d\xb3\x6a\x3e\x67\x0d\x51\x84\xe9\x22\x00\xf1\x29\x07\x2f\x67\x64\x9d\x6e\x65\xa0\xa4\xdc\xb8\x48\x74\x65\xef\x1a\xdc\xbc\x72\xfb\x96\x2c\x06\xcc\x92\x78\x7d\x2c\xdc\xc5\x8a\x27\x3f\xf2\xa2\xdc\x83\x09\x3a\xbe\x56\x58\xe1\xdc\xe3\xcd\x85\x35\x9b\x8a\x00\x30\x9f\x13\x61\xbf\xa5\xf3\xd9\xba\x47\x01\xa6\x47\xd7\x8f\xfa\xbd\xb5\xdb\x8b\x6a\x7c\xd4\x70\x89\x2b\x27\x21\x99\x26\x94\xa4\x5b\xaa\x93\x6d\x53\x98\x6a\xac\x7c\xa2\xe2\xe9\x38\xe1\x1c\xa8\xbe\xa9\x92\xf6\x09\xd1\x5b\x0c\x6c\xab\xa1\x95\xa9\xc0\xfa\x95\xc0\x70\xe5\x74\x24\x24\x08\x37\x53\x8d\xe9\xc2\xb0\x4f\xd9\xbe\xd2\xe4\x26\xde\x2b\x88\x28\x34\xe7\x4e\x99\x55\x18\xb4\xc3\x48\x8c\x69\x51\xe0\x8e\x61\xb0\xdc\xf1\xe9\x3f\x9c\x12\xb7\x51\x87\xd3\x3e\x08\xe4\x28\xfb\xb4\x6f\x7c\x6c\x3f\x56\x25\xa1\xdb\x43\xb7\xfb\xb1\x6e\xdb\x58\x0b\x41\x91\x02\x88\x1d\xc3\x52\x5d\x44\x63\xd2\x08\x2c\x3e\x95\xaf\xd6\x25\x5a\xb6\xad\xeb\xaa\x67\x39\xc4\x37\xab\x78\xf5\x88\xdb\x06\x0a\xad\x07\xe7\x68\xa9\x06\x9a\x72\x0c\x04\x71\xbb\x88\x80\x6a\x1a\x7d\xd8\x7c\xeb\x9b\x4b\x51\x01\x03\x80\xca\xbb\x0e\x81\x87\xc4\xf2\x97\xf9\xd5\x6e\x69\xcb\xb6\xf9\x01\x00\x8a\xdd\xed\xe1\x02\xb7\xbb\x44\xae\x88\x21\xb4\x16\x92\x76\x93\xc5\xfa\xb9\xd7\x0d\xcd\x8c\x24\xf7\x4b\x78\x9f\x0a\x5e\xee\x72\x18\xf2\x8a\x20\x2f\x8a\x59\x30\x78\x6d\x7c\xf9\xfc\x19\x2d\x6b\xd4\x63\x66\x39\x7f\xcb\x41\x3c\x87\x14\x06\x82\x76\xb9\x21\x5a\xf9\x32\x0e\x6a\xcd\x06\x45\x5a\x34\xcb\xc5\x62\x4c\x07\xbf\x68\xf9\x04\x16\x59\x48\xa5\x86\xc8\x9f\x3d\xe5\x56\x90\x79\x94\xd7\x12\x24\x11\x1f\xa1\x16\xe5\x58\x1b\x21\xc1\x60\xed\x4e\x02\xd0\xbc\x6e\xaf\x3e\xbe\x6e\x92\x10\x9e\xb6\x35\x50\xf7\x5e\xb2\xf4\x8b\x7b\xb9\x7d\xfa\xe8\x81\xb7\x67\x16\x03\x14\x30\x0c\xa6\xfc\x6a\xaa\x6a\x24\xd1\x0e\x38\x9b\x87\x7b\x44\x45\x3a\xb0\x4d\x44\x10\x74\x38\x1c\x89\xb6\xeb\x95\x65\xad\x9f\xdb\xd4\xb5\x70\xe2\xd8\xa1\x33\x15\x8c\x68\x47\x92\xbe\x75\x46\xff\x8a\xe7\x2a\x9d\x9a\x45\x98\x96\x10\xa3\x01\xa9\x9e\xcf\xc7\xb3\xe1\x6c\xee\xf2\x2d\xb5\x4b\x83\x0a\x80\x20\x9d\x83\x40\x8c\xaa\xb8\xa5\x74\x83\xe6\xb8\x8d\xb8\x6d\xe8\x10\x9b\x8f\x1b\x3f\x03\x72\xe0\x10\xd9\x81\xc7\x68\xb1\xb4\x89\x0e\x99\xcd\x63\x6c\xfc\x89\xe6\xb3\x7c\xf3\xc9\xe5\x3a\x79\x89\xc3\x27\xe0\x48\xea\x03\x41\xc5\x5e\x20\xd7\x61\xbb\x73\x8f\x41\xbf\x4f\x04\x87\x83\xa4\xb2\x13\x6b\xa9\x71\x04\x11\x5d\xbf\xcd\xc2\x97\x9b\x03\xd1\x60\xba\x81\x00\x0e\xde\x85\x7e\xc6\x64\x1b\x8e\x7d\x51\x4c\xa6\xa4\xe8\x33\x7e\x68\xad\x1d\x7b\xd5\x90\x8d\xcc\x4e\xc1\x3c\x57\xef\x52\x3d\xa2\x3c\xa7\x68\x04\x54\x4f\xaa\xad\x05\xe3\xfa\x44\x10\x6c\xde\x36\x5a\xf5\xe1\x1a\xd7\x6d\xe7\x81\x23\x21\x4d\x53\x95\x46\xe9\xbd\x6a\x9a\xce\xc7\x5e\x80\xe5\x05\x11\x24\xb1\xec\xba\x4d\x96\x7b\x55\x20\xbf\x84\xfc\x33\xda\xfc\x09\x9f\x95\xe2\x56\xcf\x24\x01\x6c\x6d\x5e\x14\xb4\x30\x2e\x99\xa4\xb4\xb1\xdf\x0d\x27\xfc\x44\x49\x24\x1d\x6d\xe9\xb4\x23\x15\x11\xcf\x0a\xa3\x35\xf8\x8e\x0d\x36\x34\x76\x6a\xf3\xf2\x9d\x96\x1d\x2f\xdc\x67\xac\x31\x26\x5f\x41\xc0\xbc\x81\x8c\xe9\x5e\x95\x3a\x24\x74\x74\x23\x99\xc2\xea\x06\x22\x3d\x54\x69\xdd\x11\xe0\xc5\x6b\xb0\xcb\xc3\x05\x81\x4d\x1f\x94\xb1\xc7\xab\x0d\x94\x85\x91\x0e\x6c\xee\xe1\x42\xda\x3d\xa6\xa9\x65\x98\x9c\x31\xed\x2d\x68\x59\x5e\x7d\x39\x56\xba\x6a\xcb\xe6\x17\x66\xfb\x46\x87\x3f\x5e\xee\x5d\x80\x1b\x69\x40\xb5\x2d\x5f\xa4\x5d\x49\x3b\x99\x3f\x01\xc8\xb0\xc3\xb6\xea\x1a\xeb\xc1\x59\x72\x42\x9e\xb8\xf7\x40\x97\xab\xd7\x57\x25\xbe\xac\xa8\x5a\x21\xa7\x3f\x11\xbd\x72\x00\xe0\x46\x74\x1d\xda\x20\x69\x27\x2b\xd5\x55\xaa\xa5\x5a\x01\x28\xb5\x05\xeb\x1e\xd1\x22\x0f\x33\xe9\xdb\x37\x7f\x67\x94\x99\xde\x16\x03\x04\x9b\xe9\x69\xe1\xb6\x00\x57\x66\x81\xd3\x34\x4d\xdc\x61\x60\x8d\x84\xfd\x92\x1a\x9d\xec\x76\x1a\x35\x72\x97\x21\x9e\xfc\x24\x09\x82\xdc\x6b\x86\xc4\xe4\x2a\x21\x9c\xb2\x04\xcc\x8b\x31\xea\x63\xa1\xba\x84\x93\x7c\xde\xee\x18\xad\xa4\x39\x76\xb0\x07\xcb\xa3\xda\x03\xa2\x00\xdb\x7a\xef\x7b\x19\x66\x20\xc0\xde\x0f\x5e\x4e\x6d\x29\xd5\x83\x88\x54\x81\xa6\x0f\xfa\x1e\x67\x7b\x5d\xdf\x3a\xfd\x9c\x2b\xa9\x20\xb9\xca\x8a\x11\x1a\x6c\xf8\xe8\xea\x5c\xa4\x27\x05\x7a\x42\x15\x9a\xdc\x7c\x09\x1d\x26\x14\x9a\xd8\xa5\xc1\x04\xbe\x87\x80\xa1\xc0\xe4\x6d\xbf\xd9\x17\x04\x80\xd6\xe3\x46\x77\x41\xc5\xa7\x00\x53\x4a\xef\x52\x71\x0f\x08\x0e\x3c\x01\x1e\xe2\x17\xad\x33\x1f\xbc\x8c\xde\x81\x2b\x3e\x37\x96\xa7\xe5\xde\x96\x94\xf4\xb6\xc0\xfa\x4c\x0a\xf4\x74\xed\x47\xe5\x2e\x8a\xe8\x0c\x29\xa7\xee\x78\x65\x25\x4c\x74\x0a\x82\x3a\x8f\x60\x65\x70\x5a\xf6\xbd\x45\x8c\x8b\x23\x5a\x48\xe6\x30\x23\x77\x05\x40\xe2\x5d\x1e\x5e\xb8\x4b\x84\x4e\x76\x0d\x39\x3d\x6b\x6f\x52\xc1\x0a\x18\x96\x6d\x1d\x2e\xd1\xc5\xd3\x2a\x33\x15\x79\xfe\x84\x42\xb1\xc2\x75\x05\x3d\x85\x88\x97\x69\x62\x13\xc4\xc7\x2e\x39\x71\xe8\x33\x1a\x3b\x69\x45\x51\xe4\x2e\x2c\xe4\x43\x57\x36\x8f\xda\xa6\x41\x7d\x78\xf5\xf2\xe7\x1b\x1d\xe3\xa3\xe7\xbc\x30\x51\x30\x82\xe8\xe0\x65\x79\xe6\x8c\x59\xdd\xe4\x47\x9e\x69\x9a\x06\xef\xa0\xe8\xdc\xea\x79\x39\xd2\xee\x92\x82\x80\x5b\x5d\x2a\x49\xf0\x4f\x01\xa6\x36\xa3\x73\xee\x27\x15\x27\x67\xe2\x70\xed\x75\x80\xf3\x61\xf1\x01\x3a\x5e\x5b\x7b\xc7\x06\x2f\x54\xe5\x18\xcd\x56\xbc\xb6\x2a\xfe\x86\x22\x04\xf4\x2e\x0f\x57\xd6\x8a\xb1\x89\xeb\x36\x10\x9e\x4f\xdd\x39\x24\xd1\x08\x64\x9c\xae\x26\xb1\xcb\xb9\xd5\x6d\x64\x2f\xef\xd8\x7e\x15\x2b\x88\x18\x8e\xf0\x0c\xae\x86\x01\x0e\xf2\x83\x6a\x2e\xca\xd3\xee\xdc\xb1\x59\x37\x00\xf5\x23\x77\x0d\x14\x81\x94\xdb\x44\x83\x4f\x2b\x8b\x5b\xf6\x72\x51\xc0\xcf\x18\xe2\xaa\x3e\x17\x79\x12\x3f\x6d\xe3\x72\x24\xcb\x81\x6d\x9d\xda\x70\x63\x78\x77\x15\xbb\x1d\xee\xe4\x01\x49\x46\x85\x39\x3b\x93\x45\xd1\x6d\x18\x2a\xd1\x00\x05\x29\x13\x4d\x68\x32\x4b\xe9\x35\xb3\x2c\xcd\xb2\x8d\x71\xd9\x7b\xe4\x61\x8b\x3e\x40\x11\x01\x83\xbd\x68\xc8\xc5\x67\xfc\xa4\x9b\x40\x6e\x0a\x01\xd0\xaf\x59\xb2\xb1\xe1\x3b\x9a\xf5\xaf\xfa\xba\x46\x4e\xcf\xd9\x48\xd4\xe2\xfd\xcd\x30\x14\xde\x8b\xdb\xbb\xb0\x38\x52\x7c\x8f\x40\x6a\xe7\xf4\xd7\x24\x08\x49\x3d\xd7\x7b\x92\x94\x1e\x67\xf9\x1a\xc1\x19\xdb\xb5\x58\x4f\x19\x97\x8c\xc6\xad\x40\xdd\x19\xc4\x91\x5a\xf9\xc8\x50\x72\x99\xb4\x8c\x63\xfa\x47\xf8\x31\x93\xea\x16\x42\x2d\xd6\xb0\xbb\xb4\xef\x27\x02\x85\x84\x50\xa2\x9d\x4c\x50\xda\xe5\xa6\x82\x05\x90\x03\xb4\x37\xc2\x3e\x84\xad\x7d\xc4\x4b\xd1\x4b\xae\xa7\xd9\x3d\xa9\xc9\x2c\xb1\x78\x0a\x88\x57\x5e\xe7\x40\xf5\x6c\x38\xf4\x7e\x6a\x2d\x61\x23\xf0\xe2\x30\x39\x47\x09\xeb\x4d\x78\xaf\x17\x0c\xce\x9b\xbb\x9e\x74\xe0\xf3\x22\x34\x31\x5c\x3f\x43\x03\x5b\xfc\x33\x3c\x05\x4c\x98\xd0\xe9\xa8\x11\x84\xa0\x2b\x07\x4f\xe5\x10\xbe\x6e\x05\x0a\x00\xb8\xe2\x3c\x90\x46\x28\x35\x79\x5c\x8a\xa2\xc8\x10\x5a\xa9\x67\xe9\x04\x6e\x71\xa2\x9f\x50\xce\xd3\x3a\x2b\x7d\xd6\x23\xce\x84\x53\x22\x5b\x91\xa8\x8d\x2a\x73\x96\xb8\x1b\x0d\x46\xf8\xe2\xc3\xee\x98\x55\x94\xb8\x8c\x9e\xda\x8c\x7b\xb2\x62\x21\x10\x48\x08\x49\x4e\xcf\xbb\x76\xe6\xa2\x51\x9a\xd0\xe6\x91\x20\x25\x19\x49\x88\x28\xae\xc1\x2f\x40\x26\x3a\x10\xa4\x5f\xee\x27\xe3\x73\xfc\x77\x3f\x06\xa6\x18\x0a\xae\xfb\x98\x08\xdc\xb3\xd4\xee\x09\xf2\xcc\x51\x94\x40\x4d\x0a\xe3\x2f\x61\xa2\x1d\xcf\x6d\x3c\xa0\x8a\xc7\x53\x24\x4c\x60\x18\xce\xdd\x86\xd6\x45\x89\x65\x9c\x0b\x68\x3c\xcd\x27\x38\xd2\xf9\x45\x81\x3b\x1e\x42\x7d\xed\x1e\x22\xc6\x8d\x0d\x25\xf9\xdb\x8e\xd3\xe4\x62\x5b\xe6\x3a\xb2\xe2\x73\xda\xd8\x0e\xab\x22\x23\xd1\x72\xdd\x5d\xa0\x04\x76\xf0\xe4\x65\xcb\x37\xfd\x2e\xed\x90\xbf\x09\xbb\x32\x4f\xea\x34\x81\xab\xbe\xf5\xa6\x26\x28\xf6\x03\x00\x68\x1c\xc1\x04\xee\xd5\x13\x3a\x0b\x4a\x22\x97\xfa\x72\xf9\xbe\x9b\xbd\xdd\x1b\x00\x5b\x1d\x89\x50\x6a\x8e\xf5\x0f\x9a\xa2\xc8\xcb\x7e\x31\x5b\x69\xa8\xfa\x25\xeb\x45\x72\xda\x82\x58\x3a\x1e\x82\x05\xf8\x8f\x41\xa6\x76\x00\x41\xa1\x30\x2d\x5d\xd8\x0a\xd7\xab\x48\xf3\x66\xef\xa7\xba\xc0\xd9\xd0\x32\x29\xbb\xce\xf6\x97\xcb\xa7\xce\x4b\x0a\x6e\x73\xa0\x30\x43\xd3\x55\x7d\x75\x69\xb3\x40\xdc\x99\x3a\xac\x81\x9b\x73\xd9\xb5\x1d\x3d\x4f\x78\xd4\xcc\x42\x01\xf1\x56\xe2\x6e\x37\x9e\xa6\x41\xd1\x75\x65\x96\x48\x06\x38\x06\x0a\x4d\x81\x95\x67\x29\x20\x24\x8a\x87\x8f\x3a\x6c\x98\x94\xfb\x36\xce\xf1\x12\x96\xf2\x6c\xb6\x5b\x94\x7a\xcd\x80\x60\x25\xaf\x7c\xbe\x46\x95\xcf\x79\x2d\xbe\x9c\x10\x06\xa1\x50\x5f\xa0\x2b\xba\x25\x5e\xa7\xa5\xa2\x08\x49\x76\x3d\x7a\xc4\x4a\x2c\x19\xe5\x27\xa7\xdb\x7b\x37\x5e\x3a\xde\x16\xa2\xfd\xaf\xf0\x62\x68\x7a\x97\xec\x0b\xba\x5c\x63\xef\x7a\xc7\xfa\x03\xed\x0c\x54\x9b\xfc\x58\xc4\xae\x3c\x92\x0f\x5e\x53\x18\xdd\x49\xdc\x8c\x86\x80\x93\x95\x88\xfb\x59\x66\x00\x96\xbf\xf2\xcf\x80\x07\x8b\x22\xeb\x35\x76\x6c\xb8\xee\xde\x41\xd7\x6b\x07\x51\xcd\x45\x62\xee\xcf\x6f\xfb\x11\x46\xa5\xc9\x1c\xa0\x81\x3b\x95\xdf\x61\xbd\x4a\x48\xf2\x74\x62\xde\x3c\x38\x48\xdc\xa6\xfb\xb2\xe2\xc0\x75\x0a\x7d\xa1\x22\xfc\x66\x20\x10\x00\xeb\xee\xd8\x65\x8b\x6c\xb7\x61\x67\x54\xd9\xa2\xe9\xe6\xc4\x09\x59\x70\x56\x4f\x3d\xb9\xb2\xe4\x3f\xe6\x69\x9e\xd9\xc8\x81\xcc\x87\x31\x6e\x71\x37\x2e\x72\x5f\xc1\x43\x5f\x60\xd3\x9d\x53\xa4\xfa\x76\xd7\x76\x02\xde\xa1\x0a\xed\x9d\x67\xaa\x41\x74\x86\xd0\x5e\x2a\xcc\x3b\xae\xda\xe3\x7c\x97\x36\x15\xce\x07\xc8\x05\x52\xe3\xea\x9f\x48\x54\x0a\x2c\xdf\x2f\xea\x7b\xfd\x64\x00\xcd\x67\x4b\x80\xea\xb5\xc0\xb2\xdd\x55\xd5\xb4\x67\xb0\xcc\x99\xa5\x0f\xe4\xdb\x4e\x10\x1d\xc8\x7c\x5b\xd0\xec\x99\x8a\x6c\x1d\xce\x72\x3d\x67\x75\x3b\x0c\xcf\x75\x40\x8d\xab\x12\xb4\xb4\x3e\x42\x48\xa0\x00\x46\xcd\x73\xe1\xdb\xce\xea\xba\x73\xc5\x45\x26\xac\x6e\x88\xf3\x6e\x40\xb2\x29\x91\x23\x66\x52\xba\xca\xf4\x05\xc1\x5e\x03\x51\xac\x71\xa5\x35\xc1\x20\x49\xb6\x6b\xe3\x14\xe2\x4e\xb9\x02\x11\xef\x80\x36\x24\x08\xb8\xc5\x3a\xd8\x93\x00\x95\x88\x6c\x99\x5e\xf7\x15\xf6\x95\xa7\xe3\x8d\x9b\x43\x44\xfb\xae\x2f\xd0\xda\x40\xf1\x1d\xca\x1b\x08\xcb\xc5\xea\x16\xc7\x61\xcb\x56\x6f\x7b\x32\xd9\x7e\x8d\x1d\x10\x6c\x38\x10\xad\x9e\x14\xf8\xe2\x1e\x10\xc7\xda\x1d\x5b\x04\x7d\x8d\x65\x28\x88\x8f\x40\x37\xc4\xae\xb7\x9a\x6e\xae\x6f\xd3\x82\x43\x14\x42\x9d\xf6\xb5\xfc\xcc\x81\xc6\xd1\xcf\xc4\x36\x61\xb3\xa7\xd6\xe5\xb1\x78\xe3\x8a\x24\x09\xac\x8e\x4f\x24\xef\xd0\x67\x63\x27\x93\x59\xe8\x42\x5a\x14\x08\x9e\x02\x59\xfc\x32\x61\x8e\x0e\x6d\xe1\x0f\x5a\xd8\xca\x75\xf1\x10\x58\xdb\x6f\xe4\xdc\xf5\x84\xd7\xcb\xe8\x6a\x3d\x20\xd1\x19\x86\x6a\x46\x97\x29\xca\x45\xf6\x91\xf1\xa9\xb0\x2d\x84\xca\x95\xa3\xa7\x0a\x65\xe1\x08\x45\x00\xd1\x9a\x9d\xe9\xc1\xb6\xa2\x6a\x77\xad\xfa\x58\xbf\x97\x44\x70\x9c\xc1\xd4\x40\x83\xe2\x0c\x18\x58\xc0\x38\x9e\xbb\x5e\x64\x05\xcd\x9e\x06\xa2\x89\xb2\x4d\x1d\xb6\xf2\xba\xf9\xc1\x69\x1f\x00\x38\xce\xf7\x7e\x20\xd6\x11\x26\xf0\xe8\x4c\x9a\x2b\x77\x2d\xc7\x89\xce\x54\xe1\x63\x76\x2d\x36\x85\x44\x41\xd0\x18\x92\x10\xb1\xc2\x28\x7f\xcd\xac\xe9\xf5\x99\x37\x87\x35\xe4\xd7\xba\xdf\x36\x32\xf5\x11\x80\x72\x3d\xcd\xc1\x40\xdd\x41\x55\x2f\x4e\xbc\x06\xcf\x73\x7f\x3c\x26\x6f\x82\x81\xe4\x81\x97\x11\xbb\xd3\x3d\xa9\x77\x24\xb9\x9e\xc0\x05\xd9\xb2\x38\x57\xef\xab\x0d\x83\x94\xd9\xf1\x54\x34\xf3\x0f\xfc\x6a\x75\x16\x55\x54\x26\x56\xa0\x64\x36\x93\x3a\xcf\xf7\x14\x9d\x1b\xb5\x54\x85\x73\xe7\x0c\xc7\x3c\x29\x2f\x9f\x37\xee\x35\x82\x80\xe0\x4e\xf8\x59\xec\xd7\xd4\x78\xeb\x9c\xe6\xa8\x7c\x34\xd1\xba\x5b\xbb\x43\x9c\xf0\xed\xbb\x84\x1b\x5b\xe4\xdd\x40\x16\xa0\x5f\x80\x44\x20\x41\xd7\xe8\x44\xd9\x14\x04\xcf\x36\x73\xaa\xec\xa1\x26\x5e\x3c\x15\x1b\x4a\x76\xdb\x34\x25\x79\xdc\xe2\x13\x45\x15\x23\x9e\x07\x8f\x44\x6b\xcf\x70\xbb\x7a\xaa\xdf\x0d\xb1\xc9\x67\xe3\xbe\x2f\x9b\xb7\x14\x6e\xb5\xd8\x28\x72\xc0\x89\x36\xc2\xe9\x6c\xab\xd8\x34\xae\xc3\xec\x77\xe8\xd4\xc0\x64\xb6\x02\x79\x27\x9f\x10\x10\xae\x13\x9c\x0f\x42\xfd\xff\x51\x75\x1d\x6b\xae\x22\xcd\xf2\x81\x58\x14\x1e\x6a\x29\x09\x09\x6f\x84\x87\x1d\xde\x7b\xcf\xd3\xdf\xaf\xcf\x3f\xa7\x67\xee\xba\xf5\xa9\x1b\xaa\x32\x33\x22\x33\x32\xfa\x0c\xd7\x5d\xef\xf9\x0e\xa7\x69\xd9\x96\xbf\x3d\x22\xcd\xab\x3b\x02\xb8\x6b\xb9\x3e\x62\x3a\x12\x24\x3a\x77\x00\x70\xae\x19\xf2\x6e\x2e\x50\x90\xd2\x77\x20\xfa\xeb\xb2\xf2\x7f\xf4\xc5\xdc\x43\x80\x4c\xb4\x79\x2b\x19\xbe\x2d\x73\xc8\x10\xc0\x40\xfa\x1d\x70\xd7\x07\xf7\x1e\xc7\x47\x4a\x1c\x82\xe8\xfd\xfe\xbb\xf8\x4a\x79\x24\x82\x5e\xef\x0c\xc8\x57\x1a\xdb\xf9\x13\x5f\xe7\x08\x83\x34\x9b\xf8\x34\x52\x4f\x9c\x68\x89\xbd\x84\x66\xad\x53\xb8\xd5\x40\xc8\xd7\xc2\x02\x0f\xb3\x1a\xeb\x73\x0d\x95\x78\x19\xb0\x5e\xd7\xed\x05\x39\x69\x9b\x95\xf7\xa9\xda\xb2\x1b\x6d\x38\x11\xa3\xab\x5c\x4f\xd3\x18\xb9\xd8\xb9\x09\x07\x19\xac\xcc\x9e\x32\x08\xd8\xa9\x9a\x61\x18\x06\x1d\x96\x1d\xee\x31\x2e\x55\x4e\x2f\x5d\xdf\xe6\xa9\x57\xe9\x37\x02\xfe\x7a\x4d\x67\x99\xde\x35\xeb\x15\x28\x5f\x38\xf9\xfb\x98\xff\x8c\x3d\xfe\x77\x26\x8f\xfd\x07\x03\xa5\x08\x13\x0d\x6c\xfd\xfd\x98\x7e\x3b\x61\xa9\xfb\xec\x53\x06\x85\x8a\x1d\x33\x3d\x86\xed\x37\x5b\xf4\x46\x7f\xaf\xed\xa2\x8d\x08\xc8\x3b\xb8\x33\xa4\x00\x11\x22\xdf\x89\x09\xf3\xa6\x63\x90\x5f\x85\xb2\x2d\x7c\xb4\xba\xdd\x26\xab\xb6\x83\x6a\x43\xfc\x82\xd4\x28\x8f\xfe\x4c\x0e\x19\x61\x7e\x7d\x94\x5f\x5f\x24\xbb\xcb\x72\x45\xee\x71\x1c\x53\x48\xd2\x2b\xf7\x97\xd0\xef\x1b\x23\x32\x86\xb0\x50\x5f\x99\x6f\x04\xef\x56\x2c\x44\x76\x35\xec\x35\x3e\x6c\xe2\xc7\x6a\x15\xd0\xc8\xb0\x97\xc5\xee\x0d\x25\xd9\xec\xf7\x60\x75\x2e\xc2\x92\xc5\xbd\x6a\x34\xe7\xf8\x12\x7d\xfe\xce\x93\x58\x71\x85\xc8\x01\x50\x98\xfb\x8a\x81\x53\xe4\xa6\xd3\x25\xf3\x05\x03\xcc\xc7\x6f\x24\x48\x5b\xbc\x91\x69\x0a\xef\x0c\x83\xb9\x4f\x8d\x90\x23\xaa\xa4\x97\x50\x36\x31\x80\xd0\x75\x38\x18\x52\x65\xaa\x86\x49\x79\x5c\x33\x62\x35\xa3\x12\xe1\xeb\xb6\xba\xdd\xfe\x55\x48\xa3\xfd\xdf\x3e\xc6\x31\x7c\x9e\x11\x4b\x74\xcf\x60\x21\xe2\xf5\x18\x1c\xc5\xa6\x50\x56\xb7\x51\xc8\x04\x6c\xf9\xc3\x25\x88\x95\xbe\x29\x68\x49\xcd\xd5\x8d\x53\xd6\x8f\xf4\x57\x70\x04\xc9\x95\xdb\xf0\x72\x3c\x61\xef\x66\xe3\xe4\x36\x88\x6d\x03\xe4\x03\x3e\x78\xe4\x72\xf1\x2c\xff\xed\xd7\x20\x07\x8e\xe0\xfb\x3e\x53\x5c\x53\xd9\x54\xc9\x30\x25\xb2\x6d\x72\x35\x8c\xaf\x11\x7a\x34\x6b\x70\x18\x0f\xa3\xd8\x96\x23\x5b\x42\x19\x3a\x0a\xca\x11\x01\x96\x44\x5e\x29\xce\xa4\x43\x28\x9c\x48\xde\x53\x6c\xfe\x55\x31\xc9\x76\xba\x71\x9a\x48\x89\x29\xdc\x42\xd5\x2b\xc2\x20\x9e\x80\x7d\xe2\x58\x7e\xb8\x23\x9d\x75\xb1\xd6\x21\xdb\x1f\xe5\x5f\x39\x5f\xe8\xf9\xe4\xbe\xa8\xc6\xa4\x1b\xbe\xcd\xf4\x96\x6b\x04\x44\xfc\xcf\x99\x0c\x82\xcd\x87\x9c\xac\xd5\x22\x43\xcf\x17\xe6\xab\xdc\x40\x6f\xbd\xd2\x56\xd3\x83\x25\xbf\xe9\xf3\x57\x5b\xa0\x3f\x99\x93\xa4\xf3\x4d\xa8\xcf\x66\xbf\xeb\x1f\xe0\xfa\xbf\x1a\xec\x46\x82\x37\x68\xca\xd5\x8c\x57\xb2\x1b\x3a\x71\x0f\x8b\xc1\x22\x0d\xf3\xd4\xf0\x94\xa4\x90\x37\xe3\xd2\xa9\xf1\x91\x2c\xb7\x5b\xee\xa6\xc0\x4b\xf1\x07\xaa\x9d\x6a\x2a\xe4\xc6\xc9\xbd\x1d\x02\xd4\xe7\x80\x96\x99\x61\xde\x21\x6f\x37\xb6\x9d\xe7\x84\x36\x5b\xf8\x4a\xa4\x4c\x0c\x4d\xa4\x1f\x99\x94\xb9\x71\x64\x2e\xdb\x5c\x17\x5e\x65\x20\x5c\x2f\xc7\xe4\xb3\x7e\x74\xd3\xd8\x67\x7b\x14\xd3\xf5\xf3\x1c\xa3\xa8\x93\x0a\xbf\xa5\x75\x54\x4c\xfe\xe2\xb3\x43\x4d\x1a\xcb\x9f\xc7\xd6\x4d\xfb\xb0\x8b\x1b\x01\xcc\x38\x8e\x53\x92\xed\x34\xd2\x1d\xc7\x3d\xb5\xc5\x1d\x85\x24\x39\x2e\x80\xc7\x4c\xab\x2a\x57\xd0\xc8\xe2\xe9\xc2\x85\x78\xd3\x24\x17\x62\xa5\x6b\x9e\x5a\x2b\xd6\x44\x4f\xb3\x61\x92\xa3\xfc\x4a\x20\xd1\xdd\x59\xb6\x66\xa9\x98\x57\x4f\xe7\x53\x06\xdd\x27\x9a\x89\xf8\x79\x7e\x11\x83\x2a\x57\x26\xf3\x77\x44\x23\x77\x97\xe6\xcf\x25\x82\xc8\x9d\x35\x94\xe7\x76\xa1\xe7\x4a\x3e\x15\x73\x8f\x88\xc3\x11\x62\xa4\xf5\xcb\xc9\xf1\x3a\x6e\x79\xc2\x1c\x06\x8f\x7d\x5c\x4a\xf1\x3b\x67\x12\xae\x65\xca\xdb\x57\x1a\xa0\xaf\x12\x1b\x1a\xe9\xca\xd3\xad\x73\x15\xd9\x40\x5e\x39\x4a\xe9\x75\xdd\x67\xb9\x7e\xa7\x01\x41\xa6\x66\x28\x37\x0b\x9e\xeb\x42\x8d\x5d\xa1\xce\x57\x66\x26\xe6\x86\xf9\xce\x84\x8d\x42\xf5\x7a\x63\xb6\x41\xba\xce\x0e\x84\x4b\xd5\x60\x9a\xed\x36\x1f\xe6\x8c\x66\x97\x22\x80\xef\xf5\x36\x45\x46\xbc\xd9\x9f\x34\xfa\xc0\x3b\x9c\xd8\x71\x62\x15\xca\x26\xf3\x14\x97\xdd\xc0\xac\x4d\x28\x26\xd9\x13\x3d\xce\x04\x4f\x13\xb7\xae\x45\xb3\x16\xc9\xec\xac\x88\xd7\xbb\xce\x9e\xcf\x4f\x91\x9e\xd2\x3f\x7a\x06\xee\x98\xa3\x79\x8a\x1a\x9f\x27\x7c\x8e\xe3\xc2\x13\xc9\x60\xee\xcd\x71\x9e\x64\xd3\xa2\x3e\x30\x9c\xcd\x0c\xfe\xb4\x89\xfb\x1a\xcd\x34\xff\x28\x6c\x1f\x61\xd1\x8e\x6e\x3b\x57\xe0\xc8\xf6\x93\xf8\xae\x66\x54\xbe\xc4\xfd\x34\xd1\x90\xcf\x77\x56\x00\xa7\xe8\x7e\x2c\x9f\xf3\xb8\x35\xcb\x01\x6a\x73\x37\x64\x97\xd8\x75\x59\x89\x0c\x38\x31\xc0\xa6\x6b\x6f\x05\x98\xcf\xf0\x1b\xc3\x24\x67\x45\xeb\xaf\x6e\xe1\xf1\xcc\x97\xb6\x58\xda\x8b\xc6\x2e\x1b\x6e\x5e\x3b\x4f\xe0\x07\x16\x0a\x30\xf0\xb4\x82\xe8\xf7\xb2\x1b\xab\x43\xf8\xfe\x69\xad\xdf\x83\x41\x30\x24\x47\x00\x02\x92\x53\x32\xfa\x06\x26\x56\x62\xe5\xb6\xae\xf7\x5c\xe1\x7b\x66\x40\x89\xac\x0f\xd6\xcb\x1c\xce\x59\x0d\x0b\xec\x01\x43\x50\x61\x3f\xab\xb4\x7e\x37\x2c\x00\x53\x47\x40\xe4\x30\xf7\x57\x32\xbb\xf4\x25\xd6\xe2\xf5\xcd\xe1\x71\x87\xc8\xc2\x0a\x05\x9c\xdf\x03\xff\xc1\xaf\x7f\xee\xa1\x94\xeb\xbd\x8c\xdb\x00\x7e\x8e\xc0\x3b\xb2\xfc\x44\xb8\x23\xe7\xde\x2b\x45\x7f\xe3\xb8\x84\x19\x48\x11\x64\x16\x84\xf2\x88\x04\x53\x67\xa4\x69\x99\xdc\xe7\xa0\x96\x1d\x1f\x50\xba\xdd\x8d\xa3\x52\x05\x98\xcf\x84\x48\x81\xc6\xee\x84\x65\x52\x02\x03\x6e\xc8\xeb\xcb\x07\x24\xb3\x40\x84\x6d\x75\x93\xa7\x15\x9f\x86\xd9\xe2\x57\x04\xd8\xb8\x28\x9e\xf3\xf6\xf5\x3a\x16\xab\x08\xdc\x7f\x7a\x9a\x5c\x61\xe1\xf9\x4c\x6f\x4e\xae\x71\x0d\x35\xc5\xaf\xa3\xd0\x23\x10\x22\xdd\x15\x9a\x0b\x1e\x8f\xe6\xba\x69\xb1\x87\x35\x2c\x84\x6d\xa9\x54\x4c\x45\x75\xea\xa7\xf0\x14\x6a\x89\xec\xa7\xc6\xc6\x03\x16\x81\xf2\x41\x1b\x38\x02\x07\x6c\xbf\x84\xe6\x42\x04\xc3\x30\xf6\x85\xb0\x89\x53\xa1\x34\x24\xf9\xf9\xec\xe4\xd2\xbb\x8b\x3c\x56\x92\x3f\xd2\xe9\xe4\x9f\xa5\xff\x37\x7f\x3c\x6e\x22\x45\xe1\x40\xeb\x35\x3b\x20\x4c\xb8\x3a\xd3\xb2\x88\x46\x66\x9c\x76\xcd\x2e\x14\xf1\x67\x7c\x9f\x03\x7a\xd6\xfa\x68\x61\x45\x9c\x7a\xb9\x32\x15\xce\x9a\x34\x17\xdd\xe7\xb2\xe5\x28\x6a\x4a\x95\xa8\xf3\x2b\x80\x86\x4f\xd8\xed\x82\x5d\x75\x5f\x93\xa8\xfc\xde\xf3\x9c\x57\xb4\x71\xd5\x6e\x31\xfe\xa9\x03\xad\x45\xe5\xa2\x81\x53\x4a\x84\xec\x28\xe4\xbe\xca\xbb\xe0\x7f\x9b\x92\x24\xa7\xf5\xf4\x69\x07\xba\x59\xa4\x82\x8b\x79\x6e\x33\xdf\xc6\xf5\x20\x14\x1c\xa4\x69\xb6\x37\x82\xf6\xe9\x16\x82\x58\x65\x8c\xa5\xd2\x5c\x6e\xba\x07\x2e\xd5\x03\xb9\x29\x17\xab\xd4\x4b\xb7\xfa\x4a\x73\x45\x8a\x84\x08\xc4\xdc\x34\x4e\xda\x08\x33\x8f\xcc\x3b\xad\xf4\x60\x67\x4b\xcd\x99\xe8\x7a\x0c\x87\x54\x10\x85\x1c\xa3\x0c\x89\xba\xa9\x73\x0d\xea\x6f\x51\xfc\xe6\x7f\x0d\x1c\xd9\x8c\x6a\xb5\x43\x5c\x35\xb6\x51\x49\xe1\x86\xa4\x93\xd1\x4c\x1e\x30\xe1\x93\x31\x49\xff\xc1\xb2\x01\xb6\xbb\x23\xbe\xbd\x67\xb5\x9c\xb0\xe4\x73\x60\x2a\x0d\xfd\x19\xa2\x95\xa7\x78\x29\x99\xb7\x63\xe7\xae\x5e\x75\x12\x12\x36\xc6\x1d\x83\xb0\x2d\x04\x56\x72\xa6\x14\xf7\x3e\xd5\xc8\x6b\x5f\xfd\x89\x67\x12\xc5\x0a\x0f\xfe\xf3\xfb\xdc\xcf\x2d\xed\x5d\xcc\x76\x30\xf5\xe2\xe8\xd9\x8e\x92\x46\x36\x58\x46\xbe\x46\xef\x5c\xe2\xf7\xc5\x21\x23\xaa\xcf\x00\xbb\x3d\xe0\x61\x30\x51\x70\x89\x6b\x46\xd9\x66\x81\x72\x3e\x7a\x18\x7f\xaa\x33\x98\x92\x89\x42\xbf\x5a\xb1\x30\xe7\x7b\x6e\x6f\x87\xd0\x08\x80\x5d\x18\x3c\xf5\xe7\xf1\xd2\x3a\xdb\xbd\x4a\xff\xe2\xe0\x6c\xe2\x56\xbf\x2c\xb6\xf1\x28\xa9\xbf\x7d\xd9\x27\x4b\x12\x17\xf7\xe8\x17\xde\x22\x27\x45\xbc\xc4\x2a\x32\x28\x01\xed\x26\x4c\xbe\x16\x17\xe7\xde\xd0\xb0\x09\x78\x47\x10\xee\xb1\x7e\x3b\xec\x2b\x7b\xaa\x7c\x2f\xfb\x47\x91\x3e\xbc\xd9\xa5\xa1\x19\x6a\xe7\x0d\x73\x3f\x47\xd2\x75\xb7\x28\xb1\xf1\x1a\xc3\x42\xd7\x3f\x0c\xa2\x11\x5a\xcb\x1a\xd5\xa8\x0b\xdb\xa0\x7e\x14\xfe\x2f\xff\xd2\xa8\x29\x52\xd8\x02\xc8\x9f\xbe\xf4\x91\xda\x40\x27\x4f\xae\xb9\xe5\x54\x73\x1e\x9b\x89\x13\xcb\x85\x33\x59\xc5\x60\xe9\x38\x90\x47\xe2\xa1\x12\x8f\x5e\xbb\x96\x53\xb5\x9a\xc1\x9a\xad\x89\x21\x2c\x4a\x94\xb2\x90\x4c\x70\x3a\x53\x67\xb6\x4a\x8c\x3b\x58\x4c\x80\x20\x04\x22\x66\x4f\x2d\x18\x96\xa7\xad\x97\x9b\xab\xf3\x8b\xd2\x3d\xff\xee\xce\xbe\x1e\xdc\x71\xa8\xdc\x67\x6c\x73\xb4\x4c\x83\x46\x7a\xa5\x7d\x84\x47\x32\x4a\xba\x04\xd4\x7b\x5e\x92\x5b\x61\xbd\x22\x17\xee\x0c\x64\x59\x36\xb0\x05\xf2\xfc\x4c\x69\xfd\x8d\xee\x44\x96\xab\x85\x83\x66\xbb\x54\x44\x91\xbe\x0a\x52\xe7\x9e\x83\xf6\xec\x85\xc1\xd1\x7d\x81\x59\xda\x34\xcf\x32\xdf\x75\x31\xd2\x8c\x03\x71\xba\x96\x15\xd5\x47\x42\x2d\x98\x90\x48\x95\x32\x51\x7e\x20\xab\xc9\xfd\xf6\x10\x8c\xfe\x55\x8e\x8e\x8f\x7c\xbf\xbe\xfa\x6a\xd8\xc4\xc0\xf9\xd3\x53\xad\x51\xba\xd4\xfa\xcb\xf2\x42\x0b\x63\x1f\xcb\x41\x73\xde\xac\x17\x07\xe4\x0b\x12\x89\x0e\x85\x11\x7a\x5e\x27\x39\x2f\x87\xea\x13\xba\xcf\xf7\xe1\x5e\xdd\xa9\xc8\x5f\x4d\x2f\xa1\xf9\x13\xf5\xc1\x35\x9c\x2c\xd1\x73\xec\x8e\xcf\xe2\xd8\xfa\x44\xb8\x69\xc4\x56\x51\x79\x94\xf1\xe9\xfb\xfb\x1f\xce\x5e\xbc\x14\x2a\x53\xda\xab\xa3\x55\x80\xee\xdc\x17\x35\x32\x04\x81\x84\x7a\x3f\xce\xd3\x5a\xa5\x69\xb5\xba\xab\xbf\x19\x36\xaf\x10\x80\x68\xf2\x13\xe4\xdb\xa7\x9b\xa2\x77\x29\x5a\xe8\xaa\x99\x0f\xf0\x22\x67\xbf\x7e\xe6\x60\x20\x1e\x2e\x88\x6b\x01\x10\x22\xe3\x07\x8a\xeb\xca\xfc\xb0\x22\x0f\x65\xcc\x67\x9c\x00\x0c\x93\xf4\x92\x15\x7d\x68\xa7\xfd\x64\xd2\x8e\x14\x8a\x33\xb1\xf2\xf7\x75\xff\x6a\xf8\xa4\x6a\xee\xc2\x2e\x24\x56\x12\xe9\xbe\xb9\x76\x25\xb4\x5e\x0f\xa4\x37\x15\x20\xcf\x80\xc4\xb8\xd3\x82\xe9\x55\xc8\x4f\xf2\x54\x0d\xa7\xb7\x51\x18\x00\xd4\x37\xe5\x0a\x54\x7b\x41\xc7\x42\xfd\xb4\xf4\x27\xd7\x3a\x96\x81\xcd\xf4\x5c\xa1\x27\x1a\x7e\x4e\xd4\xba\x49\x0d\xee\x91\xc0\x1d\x4f\x08\xc0\xde\x3e\xe0\x95\x10\x52\x93\x83\x00\x38\xfb\x22\xa0\xd9\xe3\x57\x2e\xa7\x9e\xae\x89\x67\x3d\x50\x53\xb5\xa2\x02\xd7\xd8\x77\x55\xbd\x7d\x17\xf3\x3e\x65\x60\xbe\xcd\xb7\x23\xba\xe1\x70\x3a\x88\xc0\x3b\x0d\xa5\xdb\x00\xd4\x4d\x83\x2a\xd8\x28\x7f\x1b\xd6\x50\xce\xea\x51\x72\x7b\x23\x19\xfd\x7e\x8a\x24\x62\xd4\x04\x60\x01\x38\x0f\xef\xd3\x45\xaa\xf6\x98\xdd\xe9\x5d\x3c\xfb\x19\xd2\xac\xca\x3d\x89\x78\xc5\xab\x54\xb5\x57\x77\x4c\x9d\xf6\x58\x58\xfa\x59\x93\x88\xf6\x12\xec\xe0\x93\xeb\x07\xf1\x7a\xfd\xd3\x7a\x55\x4f\xd3\xc3\x36\xe6\x7e\xe9\x93\x2b\x4f\x16\x59\xf8\x55\x2a\xbf\x88\x15\x64\x00\xec\x86\xcf\x40\xa7\xc3\xf6\xaf\xe8\xbc\xa1\x66\x27\xb8\x8e\x11\x99\x88\x52\x32\x89\x6b\x95\x0a\x0d\xfb\x81\x54\xe4\xec\xcf\xcf\xc7\x11\x19\x8d\x81\xdc\x82\x01\xee\xb2\x87\x92\x41\xa6\x11\xf3\x7e\xf8\x10\xaa\x09\xe0\x4d\x36\xff\xd0\xc9\x3a\x3a\x23\x2b\x55\x36\xf0\x0e\xf5\x78\xfd\xab\xad\xa5\xa2\x6e\xdf\x1b\xa1\x7f\x33\xfa\xb5\x4c\x72\x31\x24\xf6\x7c\x14\x08\x00\x15\x6b\x94\x9b\x71\x03\x1c\xc1\xf0\xc1\x0b\x85\x46\x18\x11\x36\x35\xed\x9f\xda\x41\xce\x56\xbb\x2a\x5f\x72\x51\x18\x85\xd2\x00\xc8\x0e\x5f\xa8\x4f\x22\x5e\x89\x3c\xef\xcf\x28\xb0\xe3\xc7\x27\x66\x74\xc9\x11\x63\x37\xda\x09\x33\x07\xe7\xb7\x57\xe2\x86\xe2\xbf\x71\xed\x2b\x3b\xe4\xc1\x4c\x3f\x0a\xae\xfc\x9d\xdb\xbe\x82\x37\x9d\xdb\xba\x5d\x90\xb2\xa1\x17\x2c\x39\xc8\x67\xd6\x3f\x8a\x9c\x60\x26\x7a\x9b\x88\x7d\xcb\x87\x1a\x8f\x62\x74\x52\xb3\x2a\xe8\x25\x02\x9c\xd8\xc7\xa8\x56\xd9\x1b\x16\xee\xf5\xd8\x7f\x62\xb0\xc3\xb6\x78\x20\x8b\x33\xae\x53\xa6\x04\x80\x7d\xe7\x20\x27\x3f\x5a\x15\xfb\x85\x74\x65\xfd\x53\x6e\x1b\xc0\x50\x70\x8d\x3d\xac\x28\xad\xda\x99\x1a\xf9\x75\xac\x8d\x30\x5b\xf3\x44\x6d\x84\x25\x56\xc6\xdf\x3c\xad\xbe\x92\x1f\x7a\x67\x49\x6a\xc3\x46\xf2\xfb\x20\xb3\x58\xfd\x41\x2b\x39\x08\xfb\xc5\x83\x46\x4a\xb2\xe4\x82\x18\x67\x66\xcc\x0c\x72\x38\x63\xb8\x80\xcd\xf8\xa2\x1a\x17\x88\x4e\x43\x55\x01\xff\x5c\xe7\xd7\x68\xef\xcb\x7a\xff\xd1\x04\xc9\x68\x71\xde\x37\x20\xfc\x37\x34\x6a\xaa\x50\x8c\xea\x58\x66\x39\x15\x86\xf7\x8d\x4b\x37\xa0\x97\x34\x9f\x3f\x91\x15\x88\x6b\x7f\xb3\x31\x7f\xaa\xe1\x12\xe0\xa0\x7b\xca\xd7\x6f\x1c\xab\x56\x9c\x2f\xb4\x5b\xaa\xf6\xfb\xbc\x9c\x51\x2c\x5a\x00\x5e\xec\xc5\xaa\xdc\xe3\x62\x01\x8a\xd0\x7a\xbd\x7f\xba\x10\x47\x88\x96\xfe\xe1\xe9\xa2\xea\xd2\x3b\xa4\xbb\x1c\x7c\xac\x84\x2a\xbf\xde\xe7\x61\xcb\x29\xd5\xb3\x57\x16\x0b\x5d\x58\x05\x88\x41\xec\xf9\x0e\xfa\x94\x7c\x6e\x89\x25\x15\x68\x4c\x3e\x3d\x6c\x8d\xd2\x0d\x75\x28\x87\x4f\x9f\x3f\x0c\xa7\x04\x3a\xb1\xfa\xda\xa7\x97\xc5\xfa\xaf\x3e\x93\x7b\xf4\x86\x8d\x43\x75\x60\x07\xbb\x0d\x87\x15\x6e\x79\x9e\xcf\x23\x07\xce\xf2\xcb\x6a\x54\xe2\x85\x42\x6f\x10\x51\x0b\x7d\x17\x0b\x51\x3a\x73\xe5\x6f\x50\x28\x43\xf5\x74\xcf\x61\x3f\xfb\x9e\x60\x22\x6d\x77\xfb\x27\x55\x90\x82\x48\x29\xed\x45\x4b\xab\x1e\xc4\x65\x38\x31\x04\x60\x88\x9c\x58\x58\xa1\x7c\x4f\x55\x50\x89\x97\x5a\x7d\x11\x86\x47\xd9\x19\x3e\x1f\x5a\x26\xff\x7b\x3e\x39\xcc\x19\x8a\xf1\x8a\x98\x42\xfc\xee\xe5\x1b\x8b\x72\xdf\x70\x5f\xdd\x01\xb0\x62\x86\x69\xb1\x5f\xc5\x72\xb6\x4e\x11\xe9\xc5\x89\xc0\x62\x04\x40\xbc\xf1\x29\x27\xbd\x76\x63\xfc\xe4\x22\x1a\xac\x12\x9f\x3f\xc3\x59\x0b\xcb\xf7\xb4\xb8\xdb\xaa\x28\x0c\x83\xbe\x93\x6d\xb1\x46\xb3\x0d\x67\x37\xfa\x79\x17\xa5\x34\x21\xfb\xca\x64\xbd\x87\x40\xc9\x29\xce\x9f\x77\xf2\xcd\x59\xfe\xf1\x1f\x4f\x81\x43\x3f\x35\x1b\x85\xb1\xf2\x8c\xc2\x27\x4b\xe8\x57\xa9\x94\x78\x97\x76\x61\x4b\xb1\x60\x70\x0c\xc0\xf4\x9f\xa0\x6b\x97\x0f\x2f\x0a\x13\x9b\xd7\xba\xdf\x57\x23\x5f\xce\xe3\xc4\x97\xdf\xf0\x25\x7c\xb6\x19\x43\x36\xbb\x09\x0d\x1e\x5c\x87\x19\xb2\xfc\xa7\x0c\x22\x84\x85\x8a\x92\xc6\x3b\x38\xfa\x93\x05\x79\x73\x7d\xff\xd4\x8e\x4b\x28\x38\x8e\xb9\x21\xa7\xbf\x5c\x49\x76\x5b\xab\xbf\x2b\x83\x80\x94\xae\x7e\x85\xbf\x7d\x06\x9e\xc3\x29\x8d\x8d\xf9\xe7\x12\xf3\x27\x9a\x2a\x89\x8c\x31\x70\xa2\x58\x44\x45\x78\x58\xdd\x16\x59\xd8\x25\xbe\x4d\x13\x9a\xf2\x66\x61\x26\xda\x02\x58\xd6\x6b\x9f\x72\xf9\xee\xb3\x99\x7e\x29\x1c\x2f\xa7\xdc\x94\x2a\x0c\x40\xd1\x26\x47\x26\x7a\xb6\xdd\xc4\xe0\x8e\x4b\x74\xe4\xa4\x22\x88\x22\x45\x53\x3f\xc8\x0c\x5f\x7a\x97\xef\xe1\x52\x6f\xa9\x31\x06\x89\x4d\x7a\xd9\x32\x09\xf3\x95\xfc\x6a\xb7\xb8\x90\x3f\x27\x4b\x3f\x6d\xa5\xed\x09\x40\xb2\x39\x75\xa9\x44\xdd\x22\x18\xcc\x68\xc0\x91\xee\x8b\x3d\xea\x14\xdf\x5f\x42\xb7\xd4\xed\x09\x84\xca\xe0\xdf\x60\xbd\x4e\xa9\xd3\x83\x36\xa7\x14\x9a\x80\x24\xfd\x93\x68\x9b\x1d\x48\xf4\x1e\xef\x19\x3e\xb5\x64\xf9\x55\xb9\x07\x9d\x1a\xfd\x19\xde\xef\x16\x90\x88\xb6\x7d\x7a\xc3\xa4\xf3\x60\x5e\xf6\x5b\x3d\x25\x35\xec\x25\x96\x13\x7e\xe5\xb7\xea\x95\x01\x6d\xb3\x9f\x69\xab\x78\x58\xea\x63\x50\x30\x59\x5f\x00\x69\x27\x55\xc1\x92\xce\xf3\xb5\xc6\x81\x03\x09\xc8\xbe\xb9\x27\x6b\x26\x5a\x4b\xef\x2e\xc5\x2d\xfe\x7e\x43\xf2\x88\x38\xd1\x6a\x4e\x27\x30\xe5\x74\xbb\x83\x24\x70\x01\xc2\x2a\xf7\xcd\x02\xf5\x7e\x95\x31\x69\x6b\x00\xc8\x2a\x69\x02\x08\xbe\x3c\xa6\xd9\x0e\x34\xea\xa3\x72\x2f\x03\x9e\x17\x5b\x8b\xb2\x8e\xb8\xef\x67\xff\x0f\x16\x7a\x16\x70\xfb\x1a\x46\x2d\xde\x68\xe3\x91\x2c\x97\x66\x04\x21\xb4\x0a\x51\x77\x74\x94\xb9\x84\xa3\x20\x1b\x04\x88\xbd\x56\x8b\xfa\x3a\x96\x58\xcb\xf5\xde\xa4\x0d\x13\xbc\xaf\xa0\x93\xaa\x27\xd7\x6d\x14\xa2\x35\xa1\x6c\x2b\xf9\x8b\xe3\x4d\x7c\xdc\xa3\x7b\xf5\x7d\x02\xf9\x28\x67\x91\x0b\x04\x58\x31\x37\x71\x67\xe1\x49\x46\xef\x3a\xf0\xa9\x42\x7c\x1d\xfb\x9d\xcd\xd8\x5e\xb5\x9f\x2c\x6c\x22\x9e\xf8\x18\x1c\xe8\x79\xb1\xfe\xcb\x07\xb8\x27\x23\xd2\xfa\x45\x6d\x6a\x54\xdb\xc3\x28\x3b\xfd\x39\x11\x01\xdd\x07\x79\x96\x65\xb9\xec\xdf\x2a\x6b\x18\x37\x43\x00\x4c\x9f\xbe\xb3\xd1\xdf\x1b\x11\x21\xa9\xde\xb8\xb9\x4e\xeb\xe5\x80\x65\xcd\xf4\xb6\x46\xc9\x42\x51\x73\x73\xf9\x51\x76\x64\x07\x82\x38\x8e\x01\xf8\xcc\xa0\xd7\x72\x80\x75\xb1\x60\xaa\xd3\x77\x04\xec\xa6\xe7\xba\x84\xe9\x4d\x94\x5e\x0c\xe6\xa3\x8e\x48\xba\x52\xbe\xbd\x5a\xd0\xae\x8f\xb9\xf4\xfe\xd5\x9d\x77\x96\xc4\xb7\x55\xd0\x28\xfa\x3b\x54\xad\xe6\xfe\x46\x75\x26\xfa\xf9\x7e\x07\x49\xbc\xa7\xa0\xcc\x00\x23\x35\xc0\x58\x89\x0c\xab\x42\x90\x59\xb4\x4f\x43\x80\xc0\x14\xbc\xfd\x9b\x15\xe0\xc6\xda\x43\x70\x3b\xd8\xc7\x32\x37\xea\x3b\x99\xfd\x05\x72\x08\xf3\xbe\xba\x63\x4c\xb3\x8c\x1c\x7c\x6b\x33\x19\x98\x24\xbf\xc8\x45\x4e\xa4\xdd\x4b\x8b\x40\xe7\xd8\xcd\xd7\xe5\x96\xe2\xbf\x8d\xcc\xb9\xd1\xe6\x24\xa8\x2d\x6d\x64\x86\x5a\x62\xa5\xfe\xe6\x60\x74\xb1\xdf\xe5\xcb\x94\x92\x81\x0e\x5a\xe9\x68\x8e\xc1\xcd\x43\x53\xe9\xd3\x79\x07\x4c\xbd\x02\x09\x20\xe5\xad\x40\x92\xde\xb2\x55\xb1\x88\x6a\xa6\x00\x57\x1e\xb4\x92\xa8\xa6\x9c\xb4\xb2\x75\x7d\x50\x6b\x88\x0f\xe5\x73\x31\x28\xdc\xcd\xec\x76\xf3\x8d\x60\xf2\xfd\xb6\xf3\xc6\x68\xdc\x26\x13\x6a\x52\xa0\x00\xeb\x37\x5c\xa2\x1e\xac\xf8\xd6\xe5\x19\xcb\xe6\x77\xf9\xf8\x52\x26\x63\x06\x73\x7c\xa6\xdf\xee\x5f\xdd\xb2\x17\x8a\x00\x9a\x5c\xf9\x0d\x3c\x4b\x92\x50\x3a\xcb\xc5\x69\x67\xea\x15\x9d\x5c\x80\x64\xf9\x7e\x11\x8d\x8e\x18\x14\x44\x30\x8a\x04\x7b\xf7\xf0\x38\xc4\x6e\x28\xb5\x8a\xe5\x54\xb3\xdf\x83\xb3\x36\xee\xb4\xda\x03\x62\xb4\xcc\xa9\x36\x64\x62\x10\x0c\xe6\x83\x9b\xcb\x01\x62\x50\x53\xd0\xe1\xde\x78\xeb\x23\x06\x00\x42\xec\xde\xeb\x7a\x2e\x8e\x41\x75\xf5\x3c\x9e\xe7\x36\xee\xfc\x9e\xd1\xbe\xa9\xdb\x28\xb8\xeb\xa2\x3d\x19\xc6\xfa\x07\xd4\xfc\xa4\x44\xc3\x7b\x85\xad\xd0\x0a\x7d\x4c\xa2\xe9\xa4\x6b\xf0\xb0\xa3\x5c\xde\x15\xac\xbf\x59\x08\xe0\xf8\x65\xd7\x10\x45\xf2\x7c\x64\x08\x02\xbd\x0a\x29\xfa\xbe\x84\x4f\xb9\x6b\xcd\x72\x14\xea\x61\x50\x22\xa5\x34\xf4\xfb\x41\xba\xba\x50\xc3\x13\xba\x2c\xab\xde\xc6\x8d\x59\x10\x8c\xf1\x36\x5b\x64\xfc\x32\x9e\x8c\x91\x02\x80\x08\xc8\x3c\xd1\x85\xd4\x1e\x7e\x8a\xa7\x46\x4c\x40\xab\xcd\xcc\x41\x59\x34\x4c\x9e\x19\x9e\xf5\xfe\xeb\x59\x73\x6b\xb2\x73\x5b\xf1\x5d\xe9\x21\xb9\x20\x92\xef\xfb\x3e\x0d\x15\x1f\x69\xbd\x2c\xcf\xb2\xc0\x37\x00\x42\xed\x44\x66\xf6\xf7\x48\xb1\xed\x9e\x23\x72\x1c\x33\x5f\xba\x90\x7c\x33\x2a\xde\x29\x1a\xcd\x6e\xd4\x5c\x2d\x7f\x1b\xb4\xb8\xe8\xaf\x7e\xa4\x93\x98\x2f\xa7\x8d\x8e\x60\xa0\x48\xc1\x9e\x6f\xbc\x22\x98\x68\x9a\x57\x84\x4a\xf9\x12\x64\x98\x3d\x07\xc1\x6a\x5c\xa5\xab\xb9\xa1\x7f\x45\x37\x93\x29\x46\x46\x2f\x4b\x8f\x84\xc5\x27\x31\xfe\xce\xae\xd5\xc7\x62\x3b\x98\x76\xd9\x57\xa5\x5b\x94\xce\x46\xdb\xd6\x43\xb7\xc3\xa2\x1c\x50\x24\x00\xe0\x0d\xc0\x89\xb8\x17\x12\x75\x93\xf1\x83\xb2\x10\x6d\xf6\x89\x84\x14\x44\x1e\x2b\x3f\x63\xec\x6d\x5f\xd0\x03\xb4\xc6\x46\x3f\x54\xf8\x10\x98\x9f\xfa\xe0\xb2\xdc\xb8\x11\x89\x6b\x69\xe1\x79\x24\x10\x41\x6a\x03\x83\xb9\x8f\x6c\xa0\x65\x59\x7c\xcd\x09\x26\x25\x7c\xac\x2a\xa6\x08\x99\x5d\x82\x4a\xaf\x9c\xa6\xae\xd3\xa6\xf4\x87\xc9\xff\xed\xf3\x76\x2f\x2f\x26\x2c\xa6\x4f\xde\x61\x3d\xbe\xe9\xde\x01\x91\xb5\xbb\xcc\x8e\xe4\x46\x1f\x82\x94\x48\x19\x06\xc3\xba\x24\x03\x98\xb9\xc7\x34\xdc\x2d\x6a\x0a\xbb\xbc\xf7\x05\x70\x17\x19\x84\x50\x9d\x9f\x78\xdd\x82\x2e\x9d\xb7\x3d\xf5\x90\xcb\x60\xad\xc8\xe6\x15\x5c\xba\x03\xdc\xdd\xdf\x51\x38\x12\xbd\x37\x11\xde\x0d\x80\x1b\x52\x80\x22\xa1\x8a\x00\x16\x97\xa8\x29\xea\xec\xfb\x66\x2f\xb9\xb5\xc7\x43\x39\xd7\xb6\xd9\x0f\xbe\x39\xd8\x0a\x92\x70\x80\x5c\xf8\x5b\x63\x9e\x61\x37\xc7\x0a\xb2\x14\x98\x43\xde\x97\xe8\x85\xbe\x0b\xd3\xa4\x18\x99\x8e\xda\x22\x61\xbd\x01\xc9\x70\x86\x91\x71\x47\xd6\x43\xd3\x4e\xe3\x79\x6a\x82\x24\xcb\x77\xc2\xc5\x0e\x89\xf8\xd8\x0e\xa1\x55\x6d\x56\xa0\xbd\x93\x7f\xae\x77\x81\x21\x51\x87\x27\xe0\x6b\xd2\x06\x85\xa4\x86\x91\xfb\x7e\x0f\xe0\xcb\x24\x36\xc6\x26\xc7\x53\x7f\x5e\x00\xd9\x9c\xdd\x00\x04\x39\x82\x91\x05\x76\x67\xc7\xc2\x48\x67\xe5\xd7\xa8\x2e\xb5\x16\x19\x37\xf2\x12\x04\x5b\xd9\x9d\x09\xac\xf1\xb0\xff\xd5\xb8\xde\x9a\xae\x3b\xd0\xb3\xd4\x4e\x2a\x87\xd3\x02\x54\xd0\xed\xb3\xf0\x81\x65\xd6\xcf\xf4\x14\x02\x84\xd1\x85\x95\x43\x98\x7c\xc5\x10\x6b\xfc\x74\xe0\x1e\xfc\x8e\xea\x20\x64\xc9\xe6\x4f\x6f\xc5\x0f\xf1\xf4\x11\xe3\xb2\xd2\x52\x8b\x1b\x1f\xfc\x3b\x8c\xbd\xf3\xfc\x7a\x22\xfb\x8a\xf6\xbb\x16\x5c\xba\x1a\x27\xbf\x1d\x10\xd2\x00\x60\x02\x00\x5b\x41\x6e\x20\x8b\x9f\xd8\x53\x3a\x33\x00\xc7\x7b\x82\x20\x8c\x4d\x20\x00\x5b\xbe\x05\xe8\x92\x35\x96\xcd\x20\xaf\xce\x60\x97\xb1\xe9\x69\x4d\x9e\x5c\x85\x2e\x16\xd9\x53\x66\xa7\xe8\x21\x5a\xe8\xa2\xfc\xa3\x0f\xb9\x49\xea\x32\xb5\x5c\x16\xab\x61\xb4\x80\x24\xee\x7e\x7c\x37\x0d\x4c\xc7\x18\x07\x00\x41\x20\x4b\xc1\x0c\x5c\xf3\xbd\xd6\xeb\x42\xc4\xe9\xe4\x74\x92\x89\xb6\x3e\x30\x49\xff\x91\x18\xbd\x39\x50\xd8\xc2\x84\x80\x0f\x1c\xee\x93\xc2\xcf\x47\xa1\x18\x0b\xad\x3f\x9f\x4a\xab\x72\x39\xfa\x58\xf8\x43\xd9\x35\xad\x7e\x1c\xaa\x91\xfb\xac\x5f\xb0\x33\xc3\x5c\xd7\xc0\xf8\x3e\x44\x8e\x24\xd3\x3d\x8f\x09\x16\x3f\x0e\xd5\x81\xe9\x23\x90\xec\xa9\xef\x62\x4c\xba\x41\x2a\x60\x33\xbd\x09\x79\x93\xfc\xd4\x77\x7b\x51\xd9\x2c\x57\x83\xa3\x04\xfc\x00\xdf\xa4\x56\x93\x1b\x4e\x3c\x2a\x83\x0f\x1e\x08\x57\xff\x37\x67\x52\x6c\xfd\x98\x7a\xd3\xe3\xcb\xc0\xc5\x52\x22\x67\xe0\xea\x22\x48\xae\xe5\x40\x83\x39\x10\x14\xa4\x28\x5c\xa5\xbd\xc8\x55\xbe\x80\x71\x27\x98\x64\x3b\x3b\xf3\x15\xbe\xa4\x5e\xcf\x11\x9e\x0a\x26\xa1\x99\x89\xef\x62\xd8\xb8\x87\xea\xc1\xe1\x6f\x96\x1d\xe9\x5c\x9b\x2d\xcf\xa2\x57\x59\xd6\x83\xdb\xfd\xb0\xb7\x9f\x13\x3f\x68\x00\x0a\x2f\xe3\x64\x0c\x82\x89\x73\x62\xdf\x31\xdc\xff\xdc\x09\xda\xf9\x4a\x5b\x9d\xa9\xd7\x9a\x4e\x2b\xe1\xe9\x27\xef\xfb\x16\xe9\xff\xc7\x27\xd6\x39\xc2\x17\x3a\xd1\x5d\x0d\x6e\xcd\x7c\x12\x69\xf4\x22\xd0\xb0\x93\xd0\x39\xd3\x6c\xf6\x3e\x00\x75\x56\xe2\xfa\x57\x23\x79\x58\x38\x99\x0b\x91\x04\x5b\x4b\xac\xc4\xd2\x02\x94\x41\x23\xc6\x88\x80\x71\xcd\xe7\xd8\x1b\x97\x98\x1f\x17\xa0\xa9\x06\xdd\x8e\xab\xfb\xb1\x1c\x35\x99\x06\xb7\xdb\x97\x74\x5c\xd7\xab\x0c\x9b\x22\x2f\x04\xfb\x0d\x0d\xef\x3a\xbc\xd0\x84\x6f\x39\x51\x2c\xa4\x7e\x69\xe6\x44\xf8\x34\xe5\x66\xac\x41\x20\x99\xd6\x9f\x6c\xfe\x81\x19\xc8\x37\x9c\xd9\x09\x76\x67\xd1\xce\x39\xf9\x01\xfb\xec\xaa\x52\xa6\xca\xf8\x73\x7e\xef\xf3\x9d\x3e\xfa\xe9\x55\xbb\x6e\x28\xf8\xbb\x9a\xd8\xf7\x53\x97\xbf\xff\xe1\x78\x92\xd3\x67\xb9\x76\x16\xea\xab\x44\x2e\x5f\xa5\xbe\x46\x33\x6d\x29\xb6\x55\xac\x5b\x2d\x6e\xf9\x0a\x2f\x01\x83\xc0\x99\x7b\x91\x55\x16\xc5\x7c\xfb\xf9\x13\xaa\xc3\x59\xad\xee\xb4\xba\xdd\x22\x2a\x7e\x19\x6e\xd5\xec\xd0\xbb\xa2\x92\x6e\xa3\x14\x0a\x38\xf3\xf7\xff\x72\xd5\xf1\xba\x25\x41\x68\x02\x4e\x98\x3f\xca\xdd\x35\x41\xb7\x87\xb5\x88\x18\xb2\xbb\x3d\xc8\x75\x43\xcb\x08\x9b\x72\xfe\x4a\xa0\xd9\x39\x7e\xe8\x50\x02\x95\xb0\x3f\xb8\xf9\x77\x66\xca\xbf\x3c\x49\xe8\xef\x24\xc4\xf4\x11\xb9\x31\xbb\x39\x55\x4b\xbf\x5e\xf0\x61\x7c\xe0\x41\xcd\xab\x3b\xb9\x56\xe5\x46\xde\x69\xe6\xec\x4b\x52\xb9\xef\x82\xe8\x9f\xc8\xa7\x74\x5f\x7f\xf9\xbc\xf9\x77\x2f\x32\xdc\x97\x7a\x74\x67\x4f\xb8\x26\xf7\x66\x73\xe9\xb5\xa3\xf5\x53\x37\x5e\xdf\x57\x3b\x06\x9d\xfc\x82\x59\x7b\xdb\x53\x6a\xb3\x41\x22\xd3\x82\x75\x09\x73\xb7\xb8\xe3\xe7\xf1\xdd\x38\xd0\xc9\xef\xcf\x5f\xec\x8c\x7a\x05\x9a\x14\x74\xdf\xfa\x19\xc9\x51\xeb\xa9\x8f\x2d\x9a\x13\x9c\xae\xbf\xb5\x55\xfd\xa6\xb2\x65\xab\x37\xb7\x46\x7d\x0e\x63\xd6\x7e\x57\xab\x32\x7b\xfc\xf3\xa9\x54\x41\xef\xfc\xcf\xa7\x8b\x0f\x25\x11\x01\x48\x12\xba\x11\x19\xc2\xd2\xcf\xec\x1a\x6c\x1f\x54\x4e\x61\xb0\xba\x13\xc9\x62\xee\x1b\x17\x94\x39\x99\xdb\xb0\x07\x54\xc8\x5e\x74\xfb\x61\xae\x65\x42\xb7\x1a\xab\xb9\xf1\xfd\x8c\x7f\x71\xeb\x5a\x43\xeb\x9a\x0f\xce\xc9\x1a\x7b\x58\xb1\x6d\x59\xe4\x22\x8e\xae\x07\x45\x22\xca\x5b\xeb\x6e\x6a\xd0\xb1\xc5\x16\xf7\xec\x41\x30\xe7\x25\x5c\x39\x7b\x7f\xff\xce\x71\x19\xb5\x46\x4a\x2e\xdb\x97\x35\x9b\x31\x6f\x0a\xe1\x0f\x39\xfe\xe4\x23\x96\x3b\xe6\x0b\xa3\xac\xbd\xfa\x3e\x6b\x0a\x2b\xef\x6f\x5e\x15\x65\x7e\xe4\x02\x28\x8c\xec\xdf\xfc\xae\x96\x35\x9a\x14\x4c\xdf\x5a\x66\x3b\x63\xa9\x72\xea\x6a\xae\x4f\xc4\x55\x9b\x4e\x59\x1b\x54\x61\xb9\x94\xc4\x9a\xf3\xeb\xc0\xfa\x1b\xb4\xfd\x6d\xad\x50\x0d\x3f\xcc\xf1\x1c\xf4\xa7\x15\x64\xc7\xaf\x7e\x59\xd1\x1a\x54\x5d\xa2\x2c\x2e\xa0\x30\x79\xbb\xcb\x22\x0d\x42\x1a\xd9\x20\x9c\xb5\xe1\x4c\xfb\x5c\x20\xb6\xf1\x52\x1a\x92\x3e\x29\xe3\x76\x70\x43\xfe\x7a\xbb\x44\xc7\xd2\xf1\xff\xea\x61\x08\x49\x84\x69\x7d\xca\x09\x04\x53\xe5\x24\x63\xe3\xee\xf7\x4b\xd3\xe2\x35\x1d\x7a\xef\x33\xe6\xca\x99\x7e\xdf\x52\x88\xe9\x9f\xf3\x6d\xbe\x5d\x79\xae\x00\x51\xff\x97\x03\xb4\x9d\xa5\x67\x4f\xcb\x78\xe1\x5a\x15\xac\xe6\x94\x0f\x0c\x6e\x84\x86\x34\xf2\xc7\x53\x18\xa0\x70\x18\x9a\x6b\xaa\xb5\x60\xc7\xef\x0e\xeb\xf2\x43\xf1\x6b\xca\xa5\xf2\x3f\xeb\x91\x2e\xcb\x31\x7a\xf1\xcf\xf7\x4c\x72\x35\x6c\xdf\xe4\xae\x85\xda\x31\x42\xda\xb5\x26\xf7\xa5\x7e\x3c\x56\x6c\xee\x8e\x72\xd6\x43\xff\x1c\x2f\xad\xf0\x4e\xf6\x52\xd9\x56\xb5\x3f\x6c\x4e\x73\xea\xb4\xdd\x4b\xc5\x6c\x93\x5c\x0f\x54\x49\xbc\xfe\x9b\x47\x6e\xc1\x44\x7d\x51\x97\x50\x59\xec\x42\x39\xba\xe6\x9b\xd9\xa7\x65\x94\x93\xc1\x13\xf9\x02\x61\xc6\xd2\xdb\xc5\xd0\xf9\xcc\x07\xd8\xc6\xc9\x93\x17\x6e\x6a\x7a\x5f\x33\xd1\xf4\xa3\x22\xec\xf7\xb3\xff\x1b\x47\xc3\xe6\x6b\x27\x82\xe1\xe4\x22\x16\x21\xf7\x08\xee\xf7\xbc\x0b\x14\x92\xf5\x65\x74\xa8\x27\x6d\x50\xc2\x97\xf6\x72\xee\x29\xdd\x0e\x66\xe7\xef\x88\x31\xe4\x2d\xcb\x23\xe3\x8b\xff\x07\xdb\x06\x93\xde\xd8\x4e\xbe\xc2\x76\xa9\x5a\x78\x85\x5d\xc0\xb3\x08\x15\xf3\x66\x2f\xaf\x84\x29\x17\xb2\xd3\x86\xdd\x3b\xec\xc2\x66\x71\x6c\x88\xba\x79\x83\xc5\xd4\x66\xc5\x78\x3b\x6a\xcf\xa9\x46\x93\x8a\xfd\x62\xf5\x7f\xbf\x4f\xa9\x5d\x6f\x74\x15\x51\xfb\xf3\x8c\x2e\xfc\x1e\xca\x21\xf8\xe8\xd6\x8f\x85\xad\x9d\x38\x66\x3b\xec\xe0\xbd\x9f\x8e\xdb\x86\x56\x72\xbf\x66\x8c\x0d\x67\xe3\x83\x73\x1a\x8e\x98\xb1\x57\x45\xb6\x95\x50\xc4\x6b\x7b\x46\xbf\xba\x17\x3e\x94\x26\xe8\xcb\x59\x62\xcb\xa7\x6a\xbd\xc9\x31\x4d\xbe\x1c\xb3\x45\xa0\xf9\x20\xc1\xec\x8b\xaa\x62\x21\x5b\xfd\x92\xaa\x34\x64\xe9\x93\xea\x81\x46\xef\xa1\x7a\x29\x15\x7e\x77\x51\xc6\x7e\xbb\x7f\xff\x3e\x3c\x54\x6f\x44\x79\x46\xed\x97\x3d\x17\x42\xbb\xc4\x4a\xac\x3a\x21\xc9\xbb\x1a\x82\x22\x13\xb1\x97\xb4\x19\x15\xc3\x75\xd4\x85\x04\xf7\x35\x63\x43\x6c\xa1\xab\x54\x05\x3c\xef\xce\x9d\x44\x67\xe9\xdc\x27\x4b\x81\xfa\x33\xf8\x72\xcf\xe1\x31\xff\xee\xc8\xab\x57\xd6\xbf\xa1\xb7\x6a\xed\x12\xcf\x69\x8c\x67\xab\x3b\x41\xa7\x1d\x23\x5f\xdd\x68\x38\x68\xd2\x6c\xa9\x9b\xcf\x44\xf1\x27\x3a\xb3\xcb\x38\x3d\xc9\xdc\xc5\xf8\x62\x7b\xd1\x9b\x2a\xc0\x78\xee\xdb\x8c\x8a\x3d\xb3\x39\x52\x5f\x7e\x35\xde\xcf\x4e\xb9\x9a\xd3\x49\x98\xf2\x5c\x62\xe1\x13\xc3\x86\x6c\xc4\x5c\xae\x8a\xe1\xcd\xbf\x01\x58\xeb\xa0\x93\x6a\xf8\xf6\x84\x67\x4b\x79\xee\x94\xfa\x6f\x93\xa1\x99\xc2\xfd\x0e\xf9\xa1\x86\x3c\xe5\x62\x87\x95\x74\x52\xcd\xed\xef\x67\x43\xfc\x9d\x15\x30\x2f\xa7\x97\xd8\x86\xea\xd5\xeb\xbc\x9b\x34\x5a\xfb\x23\x64\x11\x72\xb6\x0e\x77\x18\x97\xbc\x5e\x82\x89\xce\xb1\xeb\xfd\x34\xe1\xa8\xbd\xa8\x60\x11\x5f\x18\x3d\xab\xf1\xc5\x29\x2d\x06\xee\x60\x93\xef\x59\x1e\x5b\x61\x7f\x4b\xcb\x2f\x9f\xd4\x3a\x5b\xcf\x8b\x80\x37\x31\x13\x48\x8a\x72\x2d\x9b\xe6\xb8\x1f\x75\x77\xa0\xe3\xb6\xc1\xe4\x2f\xc6\x80\x4b\x45\x93\x25\xfe\x72\xc3\x9a\xec\x5e\xa6\x74\x35\xc0\x9e\x5a\x6f\x71\x43\x20\xfe\xd9\xfd\x53\x4f\x67\x17\xef\x32\xc8\xdb\x6d\x7c\xbe\xcd\xb7\x15\xb5\x37\xb6\x08\xf3\xf0\x6b\xe0\x76\x64\x3f\xf1\x13\xf2\x66\x13\x8b\x9a\x76\x17\xe8\x6c\x14\x6d\x74\x5b\xd1\xc7\xda\x3c\x15\xb8\x77\x78\x7f\xa3\xcf\x45\x45\xa3\x50\x84\xc7\x21\x2e\xd3\x00\x6a\xd6\xa9\xea\x81\xd6\xe5\x96\xf9\x4c\xd0\x9b\xbc\x09\x65\x45\xb6\xe9\x39\x54\x79\xb2\x11\xc6\x74\xc4\xfd\x7e\x85\xc3\xe7\xf7\x77\x48\x74\x33\xca\xb1\xac\x69\xf6\x97\x94\x54\xb1\x25\x98\x27\xf2\x00\x2a\x92\xe2\xbb\x7f\x9a\x44\xae\x16\x8f\x87\xf8\x78\x4a\xe6\xfb\xe3\xcc\xa9\x36\x68\xe2\xe4\xab\x76\x81\x4a\x82\xec\x97\x85\x25\x32\x67\xe2\x28\x68\xa9\xd9\x9e\xff\xb9\x57\x82\xe6\xb2\xc5\x9d\x51\xde\x92\xb8\x9e\xa8\xd9\x9d\x7a\x16\x82\xca\xfd\xc6\xf1\x53\x57\x6b\xc5\x0a\xcd\x75\x8e\x84\x5a\x24\xc1\x7b\xc8\x97\x76\xc6\x26\xf2\xe4\x1f\xa7\x0a\xcc\x73\xc5\x95\xd2\x2c\x39\x85\x7e\x1e\xe1\x9b\x19\xc5\x82\x8a\x88\xfc\xe2\xd3\x57\x42\x79\xdf\xe6\xc5\xbd\x14\xf4\x52\xeb\x01\xa7\xfc\x17\x13\x96\xcb\xae\x5e\x3c\x37\x89\x76\xfd\xcf\x8c\x86\x7b\xf4\xbc\xd9\x5d\x65\x0a\x36\x0d\xcf\x1a\x53\x68\xeb\xeb\x41\xf0\x8f\x73\xc6\x68\xac\xa6\xb7\xfc\xf5\x79\x6e\xcc\xd2\xcb\xed\x4b\xf2\x51\x08\x32\x85\x78\x95\xcf\x6b\xde\x47\x6a\x5c\xc3\x55\xd0\x50\x12\x45\x89\x32\x7b\xc9\xcd\xae\x6a\x8f\xb1\x48\x7f\x7b\x72\xd2\x2d\xee\x1c\x7e\x6c\x74\x2a\x94\xf2\x86\x90\x2c\xc9\x74\xc6\x44\xe1\xca\xd9\x2e\x58\x34\xbb\xf1\xa5\x5e\x49\x2b\x4d\x84\xfb\xa2\xde\x31\x06\x8d\x90\xde\x93\x01\x18\xb3\x35\x4c\x7c\x8d\x00\xa3\x5b\x70\xa6\x23\xfd\xe0\x8a\xcd\x06\x1a\x33\x7e\xd6\x7c\x40\xf0\x9b\x52\x90\x63\x49\xbf\xfe\x13\x5b\xd2\x4f\x9d\xee\x58\xfc\xe2\xd2\xdc\xc5\x2c\xe2\xe5\x5a\x30\xdc\xea\xef\xad\x52\x46\xd8\x9f\xb8\x6b\xf5\xbe\xd0\xfb\x99\xec\x88\x4d\x71\x21\x8d\xcc\x18\xf1\xf8\xfe\xbe\x33\xd4\x6c\xbc\x4f\x1f\x0b\xbe\x9f\x5d\x29\x9f\xad\xc3\x24\x56\xd2\x95\x0a\xe5\x7b\xa0\x37\x66\x6c\xf8\x6b\x53\xee\x4c\x15\x9f\xff\xee\x42\x52\xd7\x42\x68\x8d\x87\x2e\xc9\x57\xd1\x36\x04\x81\x25\xdd\xe5\xbd\xe7\x2b\x2d\xe9\x16\x6e\x5d\x09\x9a\x05\xdf\x4d\xb8\xe0\x31\x49\x4b\x95\x27\x60\xf7\x42\x42\x08\xd1\xf9\x5b\xb6\xfa\x48\x68\x8f\xb3\x34\xd6\x84\xd0\xee\xce\x9f\xc4\x5f\x4d\x09\xf7\xf4\x11\x5b\xe6\x45\x59\xab\x03\x4c\xb3\x9d\x4b\x4a\x60\x86\x11\xc4\xf3\x9d\x0a\x09\xb1\xdc\xac\x82\x3f\x4f\xd6\x19\x9f\xca\x09\x49\x44\xf8\xc1\xcc\x55\xcb\x37\x87\xf7\x22\x23\xb8\x7a\xee\xc6\x2e\xa3\xec\xb5\x44\xfc\x44\xf6\x6f\xe5\x42\xc3\x46\xad\x51\x62\x4f\xe0\x37\x4d\xc0\xd6\x6f\xe9\xaf\x47\x02\xd7\xc9\x15\x34\xb0\xf2\xd5\x58\x54\x45\x26\xda\x02\xd3\xdb\x60\x30\x7a\x3a\x26\xbe\xfe\x58\x15\x9f\xdd\x7a\x8b\xea\xfb\xda\x12\xef\x85\x41\x0e\x3f\x97\x93\xa1\x83\xc4\xbe\xef\x0e\xb2\x63\x8c\xce\xcf\xd0\xe1\x38\x9c\xf2\x27\xd2\x13\x49\x65\xa2\x29\x77\x55\x7e\xf0\xbf\x6c\xf5\xd2\xcd\x31\x6f\xf3\xfe\x77\xd6\xf4\x53\x1e\x4f\xd5\x7c\xe3\x41\xc4\x60\x5a\xd0\x5d\xa2\xbb\xe7\x80\x7b\x4e\x72\x31\x7c\x96\x07\x86\xe4\x66\x6f\x54\x9a\x28\x65\x68\x2a\x84\x62\x53\xa5\xc8\x89\xc6\xfc\x99\x04\xeb\xa7\x7c\xcf\x2a\x9b\x45\x2b\xce\x44\x67\x39\x41\xc9\xe9\xe5\x4b\x94\xf3\xb5\x24\xbd\x8f\x1f\x1f\x03\xc1\xe2\xf6\xcf\xd9\x7c\xfe\x9e\xcd\xe3\x91\x77\x9f\xd4\x91\xb5\x35\x50\x22\xd4\x7f\xc6\xfd\x44\xeb\xf5\xf0\x64\xc2\x3d\x04\xd1\x4e\x0c\xca\x9f\x49\x0d\x56\x8c\x96\x2d\x2f\xc7\x0b\x69\xf6\xad\x2f\xcd\xf6\x23\xe6\x48\xf6\xed\x7f\x72\xbd\xa7\xb6\x3e\xc3\x08\x82\xb0\x1a\x63\xfa\x92\x1c\xb2\x7f\x90\x5b\xbf\x37\x08\xe2\xc5\x62\xd9\xe7\x1f\xf1\x45\xfd\xce\xb2\x8c\xfa\xb1\x0b\xed\x67\x19\xb0\x76\x71\x2b\xde\x44\x83\xf7\x96\x73\x2b\x77\xa3\x03\x05\x19\xea\x6b\x64\xad\x42\x40\xa9\xe7\xa5\x48\x39\x42\xd5\xa8\x18\x3d\x44\xe5\x73\x89\xdf\x86\x01\x44\x51\x06\xcd\x44\x65\x71\x47\xf4\x33\x13\x07\xa2\x93\xd0\xdd\x6a\xc7\x31\x77\x42\x77\x82\xf6\x7d\x25\xdf\xaf\xf8\x37\x96\x8a\x07\x6c\x42\xdc\x97\xb6\x68\x75\x7a\x09\x07\xcf\xc1\x28\x13\x0c\x90\xc6\x63\x2f\xa2\xe9\xce\x17\x5e\x28\x87\xc6\x7b\x7d\x38\x95\xd6\xea\x00\xd7\x4a\x72\x98\xbd\x75\x8e\x40\x4a\x1a\xa2\xe8\xb0\x08\xc7\x71\xb4\xd7\x8c\xca\x2b\x9b\xd9\xd0\xdf\xf7\xd0\xad\x9d\xa0\xb6\xb8\xcf\x45\xd4\xb1\x8d\x42\x59\x35\x2b\x55\xf9\x49\x38\xbf\x73\x72\x71\xc9\x15\xe8\x4f\xc7\x20\xb1\x78\x10\xce\x91\x87\xba\x14\x1c\x88\x18\xb6\x96\xdb\xfe\x5c\x84\xea\xaa\xc4\x4a\xdc\xcf\x70\x64\x89\x52\xb1\xf0\xe5\x91\x26\x60\x4c\x85\x10\x4d\x7f\xde\xb1\x50\x92\x88\x94\x21\x6c\xe9\x79\xf0\x83\xa0\xcc\x3c\xcf\xed\x04\x03\xd1\x29\x4e\x7f\x82\xfe\xbd\xc2\x57\xc7\x41\x20\x14\xcb\xe3\x91\xab\xb9\xfa\x57\xd4\xab\x3f\x6c\xc9\xf2\x3f\xcb\x40\xb8\xc4\x4a\x95\x2b\xdc\x3f\x5b\x1e\xee\x39\x92\xc7\x45\x79\x9c\x8a\xfc\xc3\xff\xcf\xbe\x4c\x47\x94\xd0\xb8\x2f\xff\x29\xb4\x8f\x3c\x17\x3c\x8c\xf3\x45\xa7\xe9\x34\xba\x27\xf9\x7e\xf2\xa6\x4f\xd4\x95\x87\xc8\x0e\x0a\x89\x14\xe4\x0d\x25\x9b\xcb\x71\x3a\xbe\x82\x3f\x34\xf1\xf3\xfa\xf5\x50\xc9\x79\x2d\x73\xdc\x0f\x99\x29\x05\x1b\xa0\x9d\x85\x69\x5c\x20\xa9\x34\x46\x21\x76\x97\xef\x8a\x69\x62\x0d\x27\xd0\x19\xba\x1a\x76\x86\x20\xac\x3d\x52\xb4\x54\x05\xbd\x3e\x4f\xcc\x83\xee\x3e\x5c\x40\xa9\x8d\x95\x29\x0e\x4b\xa2\x7d\x3f\x54\x72\xd5\x49\x6b\x4e\xdd\x46\x8e\x08\xf7\xb7\xc6\x43\x52\xbb\xa9\xe7\xda\xf3\x56\xd3\x4a\x76\x73\x8a\xc1\x03\x2d\x9c\xdf\x78\x7c\xb2\x5f\x7a\x77\xaf\xbd\x61\x60\x96\xc4\xfc\x60\xd1\xe0\xcd\x22\xb0\x2b\xc7\xc8\xea\x15\x52\x55\x2b\xf1\xd2\x01\x42\x82\xdc\xa1\x5b\x87\x1c\x4d\xd4\x58\x1f\x78\x4d\x66\x9f\x32\xed\x57\x38\xc7\x78\xda\x0b\x93\xe5\x9c\x2a\xd0\x23\xa2\xef\x9e\x54\x4e\xdb\xb2\x1b\xba\xf1\x8a\xa3\xf6\x78\xd2\x3b\x06\xf7\xaf\xac\x21\x91\x82\x68\x7a\x25\x3e\x5f\xbf\xfa\x41\xa9\xbb\xd0\x52\x09\xcf\x6e\xdc\x19\x86\x0b\xe3\x87\x02\x0b\x19\xf3\x72\x04\xc9\xc1\xd0\x0a\x68\x4f\x04\x18\xc3\x20\x30\xb8\x54\x4e\xfe\xc8\x7a\x8f\x20\xa2\xf9\x60\x64\x77\x0e\x35\x88\xb1\x2c\x1d\x6b\x1d\xd6\x97\x02\xfe\xc0\x3b\x00\x36\x01\x50\xcf\x49\x12\x69\xbd\x5e\x7a\x89\x4e\x1b\x9e\xa6\x9c\xb3\x4e\x5e\xc7\x23\xdd\x09\xe6\xf7\x6c\x67\x33\xf0\x3e\x3f\xf9\x82\x1d\xee\x16\xfa\xf3\x7c\x53\xa8\x4f\xef\x0a\x10\x88\x9d\x10\x4c\xe0\xfb\x59\x0e\xf2\x85\x4e\xd4\x19\x1b\x30\xde\x9b\x2f\x4a\x49\xbe\xd4\xfd\x96\xad\x6f\x69\x37\xec\xf0\x08\xaf\xf7\xb2\x1f\xdb\x22\x64\xfe\x32\xfa\xe9\x45\xc5\x02\x53\x93\xdb\x8e\x60\x4b\x91\xc2\xac\x9d\xa7\xef\xfb\x2d\xbd\xf4\xf1\xf1\x46\xc7\x83\xc4\x2c\x6f\x5b\x2c\x8c\xf0\x18\xc5\xdd\x6e\x0b\xf6\x60\x13\x8e\x67\x2d\x24\xb6\x15\xa1\x61\xbf\x77\x7e\x03\x21\xf8\x14\xb1\x65\x68\x48\x36\xdf\x86\xaf\x23\xb4\x80\x23\xec\xdd\x68\xd6\x39\x23\xd4\x06\x10\x77\xaa\x34\xb4\x71\x09\x1c\xc1\x09\x02\xd0\x4f\x78\x2c\xd8\x28\x77\xe3\x94\xd3\xcf\x87\xad\x7a\x2c\xf2\x2a\xbf\x48\x8b\x7a\x53\x51\x82\xc4\xcd\x81\xe7\xce\xd1\xb5\xf7\x88\xd9\x5d\x8a\x01\xa0\x01\x28\x4e\x7c\x3e\xbe\x51\x6b\x33\x70\x43\x09\xe6\x53\x69\x16\x95\x7a\xaf\x3d\xae\x1f\x67\xfa\xcb\x6d\xe4\x67\x19\xb6\x6b\xb6\x68\x1b\x6d\xc3\x78\xc5\x19\x33\x5a\x1f\x6b\xba\xe2\xc6\x4b\x22\x40\xd3\x84\xac\x9c\xcc\x13\xbd\xed\xe0\x9e\xf7\x53\x5a\x5d\x65\xc5\x99\xfb\x33\x1a\x9e\x7e\x22\x6f\xde\xc4\x37\x2a\x56\x9e\x91\x70\x00\x7e\x07\x20\xdc\x95\x72\x32\x01\x9c\xfb\x1d\x54\x9f\x34\x4c\x13\x71\xb5\xbe\xcd\xd2\x35\x4d\x9c\x58\x0a\xc3\x90\x46\x78\xf0\xea\x33\xff\xf5\xb0\x10\x23\xf4\x56\x9f\x47\x28\x98\x4b\xfc\xe6\xd9\x9a\x7d\xe6\x80\x7c\x20\xdb\xae\x0f\xd3\x3d\xd8\x13\xbd\x8d\x3f\x77\x11\xa8\xfa\x65\xce\xb9\xee\xdc\x5e\x48\x30\xb0\x9d\x89\x69\xde\x70\xc5\x55\xd6\xd7\x1b\xd3\xec\x1c\x02\x1b\xb0\xbb\x75\x2b\xbd\xa1\x13\x84\x30\xcf\x0c\x71\x4f\x0e\x2d\x6b\xd1\x8e\x3c\xfb\xee\x7b\x45\xc9\x75\xba\x1f\x07\x63\xcb\x60\x74\x9e\xdc\x2f\xfe\xfe\x4e\xd3\x3e\xd3\xc8\x3c\xdd\xfe\x92\x70\xfb\x07\x47\xa5\x6d\x75\x67\x40\xbb\x00\xd9\xe2\x8d\xd9\xa8\xd3\x78\xd0\xb9\x8d\x98\x30\x07\xd8\xa8\xc5\x01\x36\x3c\xee\xf5\xa2\xf8\x82\x14\xb8\x70\x0f\xf2\x9d\xb6\x1b\x4c\xb7\x87\x01\x9f\xaa\x6d\xdf\xb6\x51\xc9\x01\xd3\x87\x3e\x33\x6e\x44\x9d\x9e\x3e\xb8\x53\x82\x9d\x49\xf5\x89\xf3\x7d\x69\x84\x89\x7f\xc5\xe3\xae\x9d\xf5\x20\x26\xd7\xaf\x34\xca\xc1\x65\x87\x5f\xcb\x3c\xc8\x91\xe7\x43\x1c\xdf\xdf\xf9\x2b\xe1\x1b\x40\xc1\x0e\x18\xec\x5c\x62\x9e\xad\x8f\xa7\xf6\x26\x98\x96\x06\x48\x84\xa7\xfd\x48\x3e\x6b\x9c\x69\x99\x15\xf6\x8a\x8c\x3c\xa0\x18\xec\x1f\x76\xe5\x35\x01\x10\x6a\x78\xc3\x78\x2d\x33\x78\x4f\x8c\x3e\x03\x86\xd9\xaf\x4d\x16\xd7\xf9\x61\x2e\x39\xff\x2c\x02\x9e\xb3\xf7\x44\x0a\xb3\x25\x38\xbc\x37\xfd\xaf\x97\x91\xcc\x70\xa8\x3f\xdb\xee\xf2\xc2\xdf\x57\x97\x4e\xd0\x64\x4d\x1c\x1d\x04\xf9\xe0\x32\x04\x26\x38\xbd\xcd\xe3\xd5\x11\xd8\xc7\xc9\x99\xb2\x07\xcc\xb9\xec\xfe\xfc\x34\xef\xf8\xd4\xed\x06\x8d\x0c\xe1\xfe\x30\xa5\x1f\xef\xc4\xf8\x11\xc7\xc7\x37\xc7\x11\x0a\x00\x42\x43\x73\x80\x15\xa1\xbf\x7f\x22\xaf\x9d\x11\xfa\xdc\xf3\xe4\xb1\x87\xa5\x40\xcc\x58\x87\xf3\x42\xb4\xe1\xeb\x14\x61\x63\xe0\xb8\x6f\x39\xe4\x7e\xef\x25\xf7\xd4\x50\x48\xdd\xa8\x3b\x73\xdc\x9c\xb6\x34\x13\x2e\x5a\xb5\x16\x82\x37\xce\x11\x03\x28\xc6\x63\x09\x8d\xb3\x9c\x1b\x5a\xf3\xb4\xcf\x04\x00\x85\x81\x61\x27\x33\x87\x35\x87\x33\x52\x1b\x1d\x8d\xa3\x9b\x91\x52\xf9\xad\x71\xf1\xf2\x09\xf4\xce\xdf\x7b\xdb\x27\xfc\xcc\xc7\x32\x6f\x5b\x23\x62\xdd\x19\x00\x95\x18\xe4\x0a\xc2\x05\xc7\x26\x1c\x1e\xd8\x71\xde\x8f\x48\x18\xa6\xe9\xb9\x8b\x82\xfa\xeb\xa9\xfa\x70\x88\x7d\xc6\x5a\xb4\xb3\x42\xf5\x3a\xc3\x2e\xec\xb2\x83\xcc\x3e\x8a\xaa\x73\xce\x12\xed\xbb\x0e\x99\x3b\xc0\x34\x2a\xe7\x46\x6d\x5f\xe1\x04\x10\x84\x81\xe9\x8a\xf3\x5c\xa7\xea\x8a\x39\x69\x0c\x9c\x29\x97\x9f\xfc\x6c\x69\xfc\x6f\x86\x8a\x5e\x85\xb8\x4a\x0e\xa8\xbe\x07\xcc\x12\xb2\x73\xf3\x5d\xf3\x94\xc8\x89\x95\x21\xe8\x7e\x99\x25\xeb\xd6\x3f\x6b\x4e\x68\x82\x3e\xa2\x27\xa3\x63\x3b\xc5\x63\xe6\x20\xfe\xab\x2f\x2a\xdd\x34\x75\x53\xdf\x24\x3a\x26\x20\x53\x8a\xfc\xc2\x13\x1e\xa9\x83\x69\x29\x60\xc0\x8e\x2c\xfe\xac\x77\x2b\x9f\x27\x14\xc8\x01\x46\x40\x40\x92\xc3\x3c\x9f\x26\x5e\x6a\x7b\x4e\x48\x1f\x7d\x44\xb7\x1a\x6f\x0d\x1b\x25\x13\x5d\x38\x43\x3c\x93\x00\x03\xf4\x0c\x40\x3e\x05\xe1\xec\x79\x99\x5e\xa1\xf9\x4e\xd0\x31\xc1\xf4\xf8\x4d\xe7\x36\x7b\x97\xa3\x2b\x8f\x8c\x07\x36\x55\x3f\x8f\x96\xbe\x18\xef\xe3\xba\x58\x4d\x07\xbf\x5a\x77\xfe\x69\xfa\x02\x81\xb9\x41\x90\x46\xc4\x73\xa0\x75\x5b\xf2\xbb\x8f\x42\xe6\x06\x05\xf6\x35\x26\xe0\x79\x80\x20\xb4\xfa\x6c\xe7\xc7\x29\xde\x09\xa0\x73\xda\x57\xc9\x1f\x68\xd1\x35\x70\xc3\x77\xac\x95\x35\x1f\xac\xab\x9d\xa2\xbe\x99\xe2\x99\x90\x42\x46\xa7\x00\x88\xb3\x1d\xdf\x08\xdc\xa9\x89\x9e\x00\xe0\xc9\x81\xbb\x07\xa0\xa3\x51\xa4\x71\xd2\xe1\xcb\xa4\x08\xae\x9f\x9e\xc2\x0b\xef\xcd\xa3\xac\x6d\xdf\xa4\xd3\xe5\xae\xf0\xf3\xf7\x2e\x79\xcf\x1f\x32\x83\x29\xed\x75\x9c\x8c\xf0\xd8\xf7\xd9\x0c\x29\x7e\x1c\xba\x3d\x34\x00\x10\xf7\x1e\xec\x2f\x0a\x77\x43\x65\xe6\xa5\x7d\x97\xa7\x09\x61\x28\x32\xfe\xf9\x3c\xe9\x66\x21\x17\xaf\x1d\x62\x98\x93\xde\xba\x46\xfc\x1c\xa2\x77\x6d\x92\x88\x6c\xa8\xf2\x3c\x33\x7d\x87\x80\x3c\x13\x41\x25\x2d\xdf\x97\x3c\xec\x07\xf0\x01\x73\x11\xe0\x5e\x09\x72\x66\xfd\x86\x6e\x9d\x09\x41\xe0\x3c\x96\x25\xb6\x31\xe1\xec\xfb\x34\xee\xbb\x05\xda\xfd\xf6\x0d\x3f\xc3\x66\x7a\x6c\x69\x40\x90\xe4\x3a\x11\x26\xac\x28\xb1\x48\xad\xe7\x48\x3a\x02\x60\xc2\x72\x3b\xfd\xde\x6a\x79\x87\x00\x20\xa1\x00\x73\xd3\x18\xbc\x37\x88\x56\xf5\xad\x66\x35\x03\x90\x73\x8c\xad\x8c\x40\x20\xa2\x49\x5d\x13\x67\x5f\xef\xba\x3c\xb8\xc7\x78\x46\x40\x94\xb8\x7d\xdf\x6f\xd5\x4b\x8b\x90\x75\x02\x84\x97\x32\xcc\x8d\xda\x0b\xf1\xaa\x19\xfd\xe7\x1c\x5f\x62\xce\x9d\xe5\xa9\x34\x93\x35\x13\xc4\xe6\x3e\xed\xc7\xfa\xcb\xa5\x78\x29\x5c\xfc\x93\x4a\x7d\x0f\x0b\x82\x3c\x86\x9a\xa4\x14\x4b\xf6\xf9\x0c\x7b\xbb\x2c\xcb\xb6\x01\xf0\x7c\xd2\x34\x7b\xed\xe6\x89\x8e\x72\x6b\x31\xcc\xbd\x67\x10\xa1\xfa\x04\xc8\x80\xfa\xae\xf8\x9d\x7e\x86\xfd\x63\x21\x00\x6a\xb6\x78\x65\x3b\x57\x88\xc9\x5b\xa0\xfd\x88\xd9\xc1\xbc\x03\xc0\xb4\x3b\xb8\x94\xf7\x56\x61\xcb\x26\xd0\x34\x02\x01\x29\x0a\x6e\x84\x05\x8a\xb1\x50\x6f\x71\x17\x22\x1a\x67\x83\x4c\x22\x76\x6d\x17\x69\xee\xfc\xfe\x6a\xcb\x03\xe5\x23\x36\xb3\x5d\xe6\x69\x12\xa5\x73\xf5\x67\xc5\xb4\x24\x11\xd1\xa7\x22\xb9\x1a\x66\x00\x8c\xd9\x07\x7b\xbc\x83\x85\x6e\x84\x6f\xb7\xb8\xdb\xce\xeb\x77\x9e\x01\xf6\xc1\xc9\x58\xb6\xbe\x7b\x04\x45\xbd\x12\xbd\x60\xb8\x8e\xf9\xe0\x65\x84\x70\x53\xdd\x81\xcb\x80\x24\x0d\xa0\x98\x35\xa4\x08\x00\x50\xdf\xf7\x2d\xd3\xca\xf6\x05\x82\x1d\x10\x00\xc0\x1d\x80\xd1\x07\x4c\x48\x02\x5e\x34\xe0\xb4\xe2\xe4\x3d\x4b\x95\x29\xa1\x43\x3c\x13\x4b\x5a\x3d\x31\xf5\x77\xe6\xa8\xc8\x8a\x3b\x61\xb9\x8b\x69\xdf\x20\x9d\xeb\xde\xef\x8b\xb2\x61\xbb\x60\xa8\x65\x22\x47\x38\x68\x10\x3d\x49\x9a\xeb\xb6\x6b\x9f\xe4\x0d\xe7\x8c\xd8\xe9\x94\x21\x88\xfd\x66\x00\x1b\x06\x39\x17\x04\xc3\x73\x67\x6c\x8a\x72\xbe\x95\x13\xcd\xfb\x0c\x84\xb3\x0a\x71\x26\x1d\xd7\x6a\x7a\x13\x9a\x9d\x02\x84\xe8\x73\xc0\x4e\x00\x5c\xed\x45\x94\x96\x29\x6d\x3b\x01\x19\x02\x90\xa8\x93\x6e\x5b\xee\x78\xce\x71\x90\x9f\xc7\x10\x6e\x7e\xcb\x52\xc1\xdc\xae\xb1\x87\xcd\xc2\xf7\xd0\xf2\x66\xf6\x41\x23\xbb\xff\x40\x24\xe5\x49\xfb\x28\xd1\x15\x14\xfd\x38\x4f\x72\xfe\x04\x7d\xc4\xcc\x51\x77\xa2\xa6\xe5\x26\x76\x91\xf2\x34\x93\x27\x7a\xd7\xb6\x27\xc9\x64\xdd\x79\x25\xad\x72\xa0\xf9\x0c\x41\x0d\xe8\xe6\x06\x08\xcd\x00\xaa\x63\x26\x5a\x9f\xf5\x24\xc3\xb5\x3a\xb8\x21\xc3\x36\x7d\xd9\x21\x4c\x13\x7a\xcf\x82\xd5\x24\x05\xab\x3a\x39\x18\x66\x33\xad\x60\x0e\xa6\x37\xc3\x0c\xb5\x10\x34\x99\x2e\x3c\x79\xc0\x43\x45\x6e\xad\x1d\x20\xd1\x0e\xb6\x5d\xd0\x6b\x3b\xbe\x35\x31\xa7\x4e\xdb\x30\xb8\x82\xd4\xf9\x5e\x5d\x26\xe8\xd2\x18\x85\xc6\x84\x47\xfa\xd7\x79\xaa\xbf\x5a\x06\xe5\x45\x46\xdd\x38\x71\x25\x8a\x04\x6b\xcd\x91\xfb\x20\x3c\xd7\x34\x05\x4f\x4a\x43\xd9\xd3\xea\x99\x89\xde\xea\x05\x61\x37\xde\x6b\xd7\x08\x21\x56\x3a\xec\xcc\xe6\x69\x22\x25\xbe\xdd\x00\x76\x09\x60\x81\x0d\x20\x49\x4d\x58\x74\xb9\x92\xba\xf2\x14\x44\xea\xda\x46\x4f\xcd\x0e\x73\x1c\xb9\x36\xd7\xea\x9c\xab\xf3\x9c\x54\xf0\x82\x70\x51\xb1\x6e\x03\xf2\x34\xd1\x34\x60\x83\xe8\xa7\x14\x20\x7b\x4d\x9e\x0e\x50\x3c\x6c\x0d\x76\x80\xb8\x39\x50\x3b\x7f\xef\xec\xe6\xc4\xc0\xa5\xdd\x05\x0a\x0d\xdb\xde\x6f\x7b\x49\xf8\xdd\x9b\x15\x66\x41\x9b\x35\x20\xf1\x27\xde\xb4\x4c\x94\x62\xef\x7f\x7c\x5a\x44\x32\xc9\x94\x66\xcf\x73\x78\x29\x1c\xe7\xc7\xca\x46\x16\x10\xb2\x0f\xbd\x9b\x28\x79\xa3\xaf\x9f\x04\x69\x3f\x80\xcd\x22\xb9\x51\x1d\xe2\x5b\x95\x9f\x0f\x31\x66\x98\xfb\xbe\xe7\x7d\x4f\xe6\x3d\x1d\xa7\xbd\x27\x2d\x4d\x10\xfa\xfa\x18\x7c\x89\xcc\xb1\x6e\xc5\x6a\x40\x17\x17\x74\x5c\xd7\x0b\xe3\xed\xdb\xdb\x14\xc3\xa2\x5f\xb0\x67\x84\x60\x8f\xfd\x97\x56\x92\xea\xbb\xcd\x1b\x63\x80\x6e\x24\x98\x1e\x29\xcb\x5d\x4d\xad\x75\x60\x0a\xe5\x02\xfe\xbe\x19\x3e\x4e\x13\x54\xcd\xc9\xc1\x7c\x8d\x04\x60\x4b\x82\x06\xfd\xe1\xe8\x61\xf3\xeb\xbd\x72\x1c\x3d\x0a\x90\x9d\x3f\x49\x36\xd1\x74\x78\xef\x00\x22\x79\x6c\x9b\x52\x4b\x79\x04\xce\xb8\x37\x85\xe8\x86\x91\xc7\xd1\x44\xb3\xae\x6a\x9b\xc9\xe6\x2b\x6d\x79\x53\xec\x79\xe1\x04\x31\x4d\xd3\x54\xb6\x73\xf7\x3e\xba\x1d\x08\x5a\xcc\x12\xea\x2d\xc5\x12\x42\x6f\xd8\x98\x39\x77\x0f\xa8\x7c\x1c\x56\x94\x22\x2f\xad\xae\x09\x9c\x96\x75\x90\x19\xf3\x1f\xb7\xeb\x60\xc0\x9e\x4e\x68\xcd\x33\xd3\xd2\x24\x85\x11\xfe\x7c\x6e\xbd\xdb\xed\x3c\xf3\x53\x5a\xee\xde\x3e\x47\x7c\x33\xd2\x2c\xcd\x9c\x55\x83\xe0\x8d\x0e\x81\xf5\xab\x4b\xe5\xb8\xd7\xa5\xd6\xc3\xca\x30\x37\xe1\x1d\x78\xc4\xde\x65\x34\x4d\xf3\x0f\x6e\xbd\xd9\xee\x8a\x35\x5a\xbe\x93\x5b\x35\x8c\x5d\x55\xa9\x2d\xcb\x11\xa1\x38\x02\x9d\x07\xb9\x94\xb9\x58\x4a\x80\x2f\xfa\x83\x33\x99\x38\x23\x56\x26\x0a\x10\x82\xa2\x28\x38\x37\xab\xc7\x64\x2e\xe6\xee\x4b\x5d\x40\x18\x68\xc4\xe7\x43\xad\x04\x90\x5a\x95\x5a\x5d\xdf\xef\x7b\xbc\xf3\x32\x3c\x86\xeb\x46\xbd\x34\x57\x67\x16\x3a\x66\xee\x71\x5c\xd7\x6d\xbb\xb1\x2f\x6f\x3f\x77\x98\x28\x25\x2b\x40\x48\x52\xfb\x99\x69\x57\x70\xdc\x4d\x52\xd7\x00\xa0\x23\x08\xee\x54\xf7\x84\xb8\x78\xfc\x72\xf4\xf7\x07\x81\x9b\x69\xeb\x44\xbe\xa9\xdb\x79\x60\x0c\xb1\xe3\x05\xe1\xef\x11\xfb\xa6\xeb\x80\x35\x8c\x5b\xbe\x2e\xb8\x13\xb1\xd4\x32\x14\x0d\x2f\xcf\xba\x58\x8d\x7f\x48\x82\x8b\xa6\x9f\x93\xc2\x42\xd7\xdf\xf3\x7c\xc2\xbc\xd5\x6b\x51\xee\xf3\x2c\x02\x61\x07\x09\x30\xae\x8a\x38\x55\x6d\x5b\x01\x90\x04\x80\x3f\x79\x7b\x2f\xfb\x97\x1a\xd5\x31\x73\x22\xdb\xba\xef\x06\xc3\xaf\x1d\x11\x87\x65\xd6\x8b\x0c\x52\xc9\xfc\xee\xcf\x33\xc1\x5e\xd5\x9e\xa5\x10\xc3\x2c\x2a\xd9\x94\x40\x08\x73\xa4\x32\x4d\x62\x53\xb3\xe2\xba\x4e\x4f\xa6\x40\x1c\xc6\x33\x53\xb2\x46\xb0\x44\x56\x61\xfc\x6a\xc5\x45\xed\x33\x40\x7d\x07\x30\xc0\x02\x85\x8f\x55\xd2\x33\x43\xb0\x89\xbe\xd1\xa6\xb6\xef\xa2\xd7\x33\xb8\x05\x12\xec\x38\x93\xee\x00\x9b\x19\x88\xfc\xa9\x95\x03\xda\xe3\x81\xc3\x0d\x59\xbd\xc7\x18\xa4\xa2\xd1\x8d\x60\xb4\x79\xfe\x6e\x9a\xa1\xe7\xb6\x96\x6b\x8f\xce\xd1\xb1\x08\xb1\xe7\x1d\x44\x53\xf9\x50\x09\x5c\x9c\xdd\xeb\x06\xb8\x86\x11\x6d\x72\x19\x03\xb2\xd3\x4d\xa2\x0b\x10\x61\xd2\x8d\x00\x39\x18\xd4\x3f\x5e\x6b\x03\xe8\x1a\xef\x45\x13\x1b\xbd\xcd\x09\x4b\x44\x6b\xb4\xfa\x33\xc3\x0c\xc3\xb0\x25\x4a\x9b\x4b\x1f\x7d\xfe\x92\x89\x6a\x80\xcd\x2c\x8f\x83\xf2\x3d\x6c\x67\x4a\x0c\xb0\xfb\xbb\x8b\x91\xef\x73\xff\xed\x47\x71\x9c\x0e\xeb\x94\x30\x0c\x1f\x55\x8e\x83\xf1\xdf\x1a\x04\x19\x00\xc4\x86\x44\xdb\xb2\xcb\xcf\xe4\x56\x6f\xe9\x60\x13\x4f\x3a\x12\xe1\xd9\x64\xbc\xb9\xc4\xdc\x37\xe0\x54\x46\xbd\x45\x9b\x6b\xdc\xef\xd5\x39\x45\x07\xbd\xd3\x73\x5d\x57\x43\x91\x43\x2f\x59\xd0\xb3\x60\x87\xae\xeb\xba\x7f\x2c\xde\xbe\x04\x76\x5b\xe8\x6a\x51\xc1\x22\xa7\xee\xcd\x88\xae\xa6\x30\x0c\x8d\x6f\x6b\x8b\x9c\x11\x93\x20\x9a\x80\x4d\x67\xe6\x87\x22\xf0\xea\xaf\xa5\xfb\x42\x15\x7e\x60\xce\xb0\xf5\x71\x69\xdc\x17\x55\xed\xf7\xa9\xdf\xea\xcd\x1f\x47\xf7\x3e\x9a\x66\x69\x1b\x79\xf4\xac\xd0\x6d\x5d\x37\xc1\xbb\x2c\x46\x91\x1e\xe6\x33\x0b\xf6\x99\x47\xe6\x99\x46\x26\x5f\xab\xa8\x35\xc2\x91\x7d\xa2\x97\xf9\x8a\xa5\xb7\x38\x0a\x00\xac\x11\x71\x20\xbc\x18\x38\x39\x4b\x24\x10\xd9\x66\xaf\x2d\x33\x47\x95\x02\xed\x9f\xe6\xd5\xb3\x10\x3e\x84\xbf\x83\x7e\x65\x48\x5a\xad\x9f\x25\x7e\xca\x7b\x9e\x41\x57\xd3\x20\xf5\xa0\x92\xf5\x4d\xd0\xad\x0d\xe1\xc9\xf8\x77\xdb\x0b\x76\x14\x33\x5f\x04\x41\x8c\x46\xde\x29\xc4\x1e\x9c\x6b\x9b\x1e\x80\xa5\xe4\x1f\xfc\x45\x46\xe9\x62\xff\xd4\xd7\x34\xcf\x52\x5e\x1e\xa0\x15\x4c\xce\xff\x82\xe2\xc1\x71\x96\x24\xa1\xe7\x91\x80\x40\x71\x22\x08\xf7\x21\xa2\x11\x80\xa6\x7b\x6c\x22\xbe\xf2\xb5\x8f\x2c\x47\xee\x53\x62\x47\x56\xc4\x1f\x55\xe3\xd7\x0b\x6b\x25\x6a\x76\x3e\xb6\xaa\xdb\x85\x7b\xc4\xf8\x72\xd3\xf0\x0d\x10\xb8\x87\x23\x25\xf3\x2a\xce\xdf\xfd\x91\xb7\xba\xfa\xf1\xd8\x00\xcf\xf3\xf9\xbe\x7f\x9f\x14\x43\x4e\xde\x47\xbb\xb1\xcf\xdb\xbe\x19\x0c\xea\xe7\xd2\x70\x53\x62\xac\x58\x7e\x97\x58\x77\x2d\x39\x89\x18\xd5\x7d\xdf\xd8\x4e\x3d\x3f\xfb\xbe\xf5\xfc\xbb\x2f\x1e\x8a\xf0\xd0\x7f\x63\x58\xfb\x6c\xbb\xfe\xa1\x7b\x16\xf6\xb8\xce\xbf\x8e\x8c\xab\x6d\x70\x39\x60\x92\x5b\x26\x41\x53\x1d\x04\x39\x2d\xbf\xf5\xe4\x8e\x00\x30\x14\xa9\x61\x08\x67\x08\xbe\x6d\xc3\x76\x82\xd0\x93\x68\xeb\x0c\x71\xba\x58\x1e\xb5\x85\x8a\x82\xb5\x02\xe5\x7e\xe8\xdf\xd9\xe7\x3b\xb6\x35\x1d\xe5\x18\x06\xa4\xd7\x4b\xcd\x74\x7f\x5e\x28\x37\xcd\xc6\x5c\x6e\xa7\x1e\x16\xa4\x94\x1b\xc6\x7b\x49\xef\xa5\xec\xa0\x93\x64\xd9\x75\x04\x21\x97\xc2\x28\x95\x30\x10\x25\x00\x01\x7d\x80\x28\x65\x69\x62\x5f\x87\x0a\x48\x23\x0f\x38\x79\xb8\xac\x5f\xec\x5a\x4d\x2f\x66\x02\x2a\xfc\xd0\x28\xc6\x0e\xc5\x1e\xfb\x0c\x45\x6b\x9f\xda\x55\x18\xb4\x54\x8d\xb2\xbf\x6f\xd4\x7a\x85\xdc\x89\x10\xf9\x7b\x68\xdf\x02\x71\x0f\xa4\xff\xa5\x6d\xab\x95\x6f\x2a\x5a\xbd\x03\xa0\x02\x67\x5f\x95\x96\xee\x9b\x4c\x4f\xd3\x30\xff\xff\xef\xdf\x0c\x1c\xc7\x19\x2c\x8b\x31\x5e\xd8\xf9\x53\xa2\xe8\xa0\x1b\xa7\x8a\x9d\x9c\xa6\x61\x1b\x16\xa8\x65\x3d\xb8\x2f\xd1\x99\xef\x94\xd4\xb9\xaf\x42\x30\x14\x27\x38\x83\x6a\xa5\x4c\x46\x41\x10\x84\xba\x69\xe2\xe7\x14\xf5\xf7\xee\xba\xa9\x95\x85\xdf\xe9\x5f\xbf\x50\x21\x60\xf2\x80\x61\xf6\xaa\x90\xde\x1d\x2f\xd8\x6f\xaf\x82\x00\x90\x47\x4a\xb9\x5d\x32\x66\xd9\x3c\xfa\xc0\x4a\xf5\xc6\x49\x89\xa5\xd7\xfd\x78\x23\x62\x0d\x93\x05\x67\xe6\x4f\xd5\x7e\x7f\x0f\x16\x34\x0b\x1a\xc1\xfb\xfb\xb1\x53\x15\x41\xb6\x37\x53\x2b\xe7\xf7\x71\x04\xbf\x18\xf0\xa3\xe2\x57\x5d\xd0\x9c\x00\x0a\x5c\xb5\x7b\x8a\x7c\xab\x46\x78\x8b\x61\xd5\xb2\x2f\xbf\xef\xb1\xd5\xc5\x19\x88\xbd\x84\x17\xb1\x77\x78\x96\x18\x42\x3d\xbe\x05\x67\x7c\x48\x4f\x99\x02\x6c\x62\x9c\x9d\x74\x8a\x07\xa4\x51\x12\x25\xfe\xfc\x63\x85\xfe\x72\x54\xe3\xd7\xcf\xf3\x24\xfc\x78\xfe\x63\x3f\xef\x04\xd9\x12\x81\x1d\x7b\x43\x00\x26\x6b\xa3\x4f\x3b\xc7\x8c\x78\x37\x18\x6e\x3c\xc3\x6c\x38\x88\x83\x85\x7b\x61\x3f\x48\x9d\xc3\x54\xc1\x71\xa6\xde\x79\x1c\x2c\xa2\x71\x0e\x8c\x33\xf3\xb9\x31\x1b\xad\xb4\x10\xf0\x89\x2b\x44\x96\xfa\xcb\x79\x1b\x5a\x1c\x52\x88\x50\x8e\xeb\xba\xe2\x01\x68\xac\xdd\x99\xea\x13\x6a\x73\x9c\x11\x0c\xd9\xe5\x20\x38\xe8\xfb\xa3\x4e\x6d\xce\x9c\x8f\x1b\x09\x47\xa3\x43\x22\xcf\xbb\xf1\x24\xc9\x72\x5a\x02\x81\xca\x89\x05\x31\x41\x62\x80\x2c\xf2\x56\x1d\xe1\xf2\x7e\xb5\xf6\x0e\x6f\x61\xab\xed\x10\x04\x61\xd5\xc7\x37\x85\x30\xf6\x7d\x9f\xd8\x61\x1a\x8c\xbb\xb9\xa3\xdc\xe3\x86\x08\xfb\xca\x47\xed\x8d\x5d\x49\xf9\x92\x4c\x9d\x81\xa4\x8f\xdf\x0b\xa3\x3b\x47\x6f\xa2\x7e\x0e\xc6\x9b\xa0\x10\x56\x7b\x96\xe2\x01\xa7\xd5\x1d\x88\x7c\xb3\x39\x7b\xca\x6c\x64\x32\x9a\xdf\x59\xad\x38\xef\xec\xee\xf9\xb3\x7b\x9d\x84\xfe\xe2\x8c\x1d\xbc\xaa\x1f\x28\x85\xf6\xe7\xed\xb9\x64\xa8\x9b\x02\xbc\x91\xaf\xfd\x0a\x46\x33\xa2\xba\x90\x34\x08\x60\xbc\x10\xe7\x55\xbe\x65\xe7\x7c\x63\xc0\xeb\xfb\x9d\xf9\x10\x73\x8e\xf3\xfe\x9d\x44\x34\x42\x6d\x13\xbe\xb6\xf9\x54\x0b\xbf\x3d\xd5\xd7\x9b\x95\xde\x06\x81\x7d\x5a\xe4\x63\x14\xf9\x2e\x28\x21\x11\xef\xe4\x97\x37\xc6\xfa\x8d\x18\x3b\xc3\x21\x08\x6d\x9c\x88\xee\x04\x1d\xdf\x8d\x53\x08\x32\x0d\x40\xd4\xab\x1c\x67\xac\x3f\x09\x8b\x80\x85\x37\x7a\x65\x50\x0d\x7c\x15\xb2\x7d\xe3\x69\x88\x7d\xd8\xf6\xd1\xff\xee\x35\xbd\xf9\x03\xc7\xaf\x04\xc9\xe7\xac\x8b\xbe\x41\x0e\xe9\x04\x64\x50\x21\x91\x47\xa3\xa8\x9c\x78\xb1\x83\xc6\xe4\x68\x85\x77\x74\x76\xb2\xf9\x3b\x27\x8c\x9d\x4b\xb8\x52\x95\xbf\x56\x4f\x83\xe1\xbe\x6f\x86\x38\xc7\x68\x7d\x96\xc0\x67\x80\x91\xe6\x69\xca\x5b\xa1\x1c\x3c\xc6\xaf\xf4\x9b\x8b\x5e\xe5\x14\x75\x03\x02\xd5\xb7\xc1\x0b\x20\x91\x28\x48\x67\xcb\xee\xcd\xa9\x99\x87\x0f\x9d\x2b\x40\xce\xb2\x0a\x25\x96\xc2\x8b\x7d\xa8\x31\x7f\xce\x10\xdc\x0c\x81\x8a\x65\x16\xce\xdb\x6a\x18\xbb\x8f\xb6\x13\x11\x73\x1c\xbd\x0d\x55\x91\x23\xb0\x4c\xb9\x21\xe3\x64\x87\xa3\x1a\x05\x5c\x6d\x04\xbf\xcf\x7f\x9e\x47\xd4\xc7\x29\x3a\x75\xc9\x14\x00\x28\x54\x41\x30\x7c\x86\x2d\x5f\xa6\x34\x5b\xe8\x6a\x8b\xfc\x03\x69\xe8\x74\xdb\xa0\x60\xa0\x64\xf3\x1e\xad\xca\xe1\xe5\xd3\x53\xc1\xf3\x8b\x61\x69\xef\xd0\x96\x63\x7c\x9a\x05\x36\x7d\xbe\x4f\xb7\xe1\xef\xb9\xba\x33\xdf\x94\xb8\x8f\xc7\x9f\x9f\x1f\xcf\xab\x98\xff\x6a\x2f\x1e\xca\x93\x58\x99\x1c\xe5\x1e\x98\x66\xa3\x47\x90\xaf\x4c\xb6\x2b\xd4\x47\x4c\x15\x8b\x40\xb1\xf2\x21\x8b\x89\x2e\x00\x46\xfa\x1e\x48\xef\x54\xad\xec\xb8\x95\x64\xea\xd2\xe3\x66\x05\x7c\x6d\x23\xe3\x44\x55\xec\x94\x3e\xf2\x68\x52\x08\xa5\xf1\x59\x41\x66\xaa\x01\x2c\xd7\xc5\x4e\xe4\xb6\x5d\x5f\x3d\x9c\x41\xfb\xc1\xe8\xd8\xf7\x1f\xcf\xbc\x97\x93\x71\x37\xd2\x67\x00\xb9\x59\xbb\x19\x0d\x5e\xf0\x67\x9e\xcd\x10\x4d\x30\x68\x79\x92\x67\xb5\x28\x3a\x22\x5e\x01\xb8\xba\x2c\x17\x95\x32\x32\xc6\xa9\x25\xe2\xf4\x16\xdb\xee\xf3\xfc\xc9\x9d\xc8\x09\xc9\x84\x2f\x07\xdc\x28\xb9\x95\xc9\x88\x3c\x1f\x41\x1e\x4c\x4c\x71\x95\xdc\x6f\x3d\x7a\x7e\x34\xfb\x7d\xb2\x90\x80\xc8\x5b\xdc\x3f\x35\x07\x50\xb4\x72\x95\x7c\xcb\x6c\x81\xc8\x28\x5f\x3d\x5f\xef\x04\x85\xbd\xc0\xcd\xeb\x86\x3b\xc1\xfc\x91\x9a\xdd\x46\x70\x1c\x81\x8c\x26\x29\xb2\xe3\x9e\x75\x80\x1b\x04\x00\xf5\x13\x0f\xbb\x6a\x7d\xf8\xfb\x34\x5d\xec\xae\xe7\xc8\x8d\x33\x44\x42\x2e\xc3\xf3\xda\x8b\xec\x77\xde\x75\xc2\x3c\xc6\x88\x3c\xab\x05\x3a\xb7\xa3\x4c\x35\x7c\x57\x28\x01\x62\x0b\x06\x16\xc6\x1e\xbb\x2c\x9f\xb7\xf3\xb7\xa6\xea\xc2\xdd\xca\xf2\xf7\xbc\xcf\xcc\x9f\x63\xa6\xa7\xa4\x69\x77\xad\xaa\x93\xc9\xb5\x3e\x49\x92\x65\x91\xb6\x60\xfd\xe1\xdb\x21\x17\xed\xd3\x84\x0e\x20\xb3\x3d\xbf\xe2\x33\xfc\x0a\xcd\xaf\x67\x7f\xc5\xef\xbb\x07\x96\x2c\x47\xe4\xde\xcc\x7b\xd7\x75\x7d\x97\x23\xc0\x50\xd0\xab\x3f\xe3\xa2\xc7\x71\xc1\x4f\x7c\x15\xdf\x03\x1a\xf6\xfb\xb4\x5e\x83\x8e\xad\x9c\x9d\xff\xe0\x82\x15\xae\x9a\x1c\x5c\x0d\x0d\x86\x79\x66\x18\x1c\xdd\x22\xbf\x22\xbc\x12\x41\xae\x1e\xd0\x80\x3f\x27\x57\x7d\xaa\x83\xf7\xeb\x29\xc4\x17\xfb\x0e\x94\x69\x2c\xd3\x5c\x5e\x63\xf3\x07\xab\x82\x04\xfd\x49\x51\x8a\x5a\x6a\x65\x2d\xd1\x59\x81\x02\x96\xd1\x73\x29\x54\xc4\x62\x46\xa2\x4b\xf2\xa8\x64\x9f\x11\x87\xae\x55\x37\x89\x21\x3d\x0b\xfb\xe9\xaf\xa0\x66\xfd\x9b\x0d\x88\x04\x53\x2a\x67\xd5\x9c\xe2\xe7\x9d\xb0\x55\xc8\x66\x7a\x7f\x35\xf2\x3b\x23\xbc\x09\x23\x08\xc6\x3d\xa9\x60\x70\xed\x87\x2d\xf3\x7f\x7b\x68\xef\x27\x6a\x10\xe0\x9a\x4c\x94\x49\x4f\x7f\xa6\x55\x4c\xb3\xfd\x74\x03\x62\x6d\x50\xb8\x5a\x7d\x5a\xa7\x6b\x88\x1e\x29\x1d\x2c\x5e\x3b\x72\x66\xd4\x15\xa1\x77\xc5\xdf\xba\x49\xb0\xe8\x50\x36\x60\x7b\x86\x09\xf8\x92\x43\xec\x2f\xd5\x9d\x27\xbb\xa6\xd1\x17\xc2\xb4\xef\x04\x53\xe6\xb8\x6c\x42\x5e\x10\x88\x16\x4d\x7a\x79\xf2\x1e\x3a\xf9\x8b\xc9\x4d\xfd\xa9\xfe\xcb\xe9\xbe\x7d\xc4\xcc\xdc\x0d\x2e\x5a\xe4\xb3\x82\x75\xa2\x42\xc3\x36\x00\x1f\x02\xc1\xc0\x89\x72\xe6\x2e\x18\x79\xb5\x0e\x58\x80\xac\x75\x2d\x5e\x7a\xfd\xf4\x41\xcb\x37\xe0\xe0\x68\xc8\xdc\xd5\xe4\x7e\xf7\xf1\xcc\xa6\x79\xca\x68\xb8\xaa\x7a\x18\xf4\xc9\x42\x1b\xfd\x2d\x94\x48\x85\x2d\x7d\xed\xaf\x5c\x86\xc7\x1a\x81\x92\xc3\x16\xda\x4a\x18\x04\x44\x9d\xaf\x69\x9e\x24\x06\xca\x53\x85\xfc\xdd\x81\xec\xce\xd8\xe3\xaf\x2e\x4e\x94\xde\x6d\xb4\xcf\x17\xb3\x13\xb0\xc8\xfa\x89\x96\x1f\x9a\x38\x42\x15\x1a\xdf\x3f\xfe\x02\x11\xde\x0e\xae\xe9\x7d\xf8\x57\x53\xfb\xd0\x4e\x09\x46\xb8\xc9\xc6\xc9\x5e\x47\xfa\xac\x76\x81\x6c\xa2\x5c\xa5\x83\x66\x67\x51\x3a\xd8\x5b\xd5\xbf\x2e\x95\x9c\xc3\x4e\xd3\x83\x83\x24\x74\xdb\xc3\x20\x8d\x41\x2d\xf5\xdd\x36\xf4\xdc\x5e\xf6\x3e\x9f\xef\xc1\xe7\x40\x39\xc4\x7b\x25\x98\x6a\xae\xc6\xd5\x57\x94\x99\x68\xb0\x76\xdd\xc2\x8a\x7c\xbc\xc0\xfe\x8f\xc6\xf7\xd9\x35\xce\xd1\x31\x4c\x4f\xec\x83\xf0\x3c\x2c\x59\x1f\x22\xe5\x95\xb3\x89\x60\xc0\xda\xc3\x96\x11\xfd\xa8\xf6\xc2\xe8\xb7\xd1\x13\x33\x8d\x2b\x42\x5d\x11\x83\xb3\x5e\x04\x12\xde\x39\xeb\xb4\x86\x35\x4e\x94\x7b\x43\xce\xea\x91\x8b\x44\xf7\xba\xf6\x67\x65\x23\xc7\x75\xdf\xd6\xcf\xb6\xfe\x1f\x55\xd7\xb5\xeb\x36\xcf\x6c\x1f\x48\x17\xea\xed\x52\xbd\xf7\xae\x3b\x75\xc9\xea\xcd\x2a\x4f\x7f\x90\x7c\xc9\xce\x7f\x0c\x18\x89\x01\x6f\x52\x34\x87\x53\xd6\x0c\xd7\xa0\x16\x21\xee\x7e\xf5\x8d\x40\x9a\x3a\x86\x29\x21\x45\x4c\x28\xaa\x2b\x3b\x63\xed\x04\xc0\xcc\xb3\xa9\x22\x61\xc8\x7f\xf7\x6e\x25\xed\x46\x18\xf0\xfc\x46\x74\x9f\x6a\x1e\x76\x91\x1f\xcc\x76\xeb\xf2\x97\x1c\xfc\xd2\xc5\x52\xd8\x5f\x71\x59\xa1\x79\x4c\xbf\x10\xb6\x7f\xc5\x6a\x71\x27\xb6\x42\xe6\xec\x98\x1c\xb4\xb2\xab\xe2\x0c\x9f\x70\x03\xbf\x78\x79\x8e\xc9\x15\x2c\xf4\xa9\xde\x80\x09\x80\x00\x82\x6e\x61\x07\x4c\xb6\x81\xc8\xb4\xed\x43\x10\x05\xd0\xb5\x7f\x0b\x4f\xa5\x5b\xd8\x7b\x6e\x2b\x6e\xd7\xf6\x7d\xae\x74\xac\x7d\x18\xf6\xfd\xf1\x41\xa5\xc4\xfb\x04\xd9\x2f\xcb\x61\xdf\x54\x2e\x75\x9f\xdd\x38\xe8\x03\x06\x08\x04\xdd\x86\x45\x74\x41\x4d\x94\x58\x28\x07\xc0\xc9\x9e\x80\xb9\x96\x78\x7e\xef\xd4\xb5\x00\x0f\xc5\xfc\x82\x7e\x82\x3d\xd9\x81\x98\x99\xff\xa0\xc4\x0d\xbe\xa8\x28\x17\x96\x86\x97\xe8\xf7\x0b\x42\xc8\x87\xaa\x79\x2e\x7d\xb6\x9c\xcf\xc8\xbc\xfe\x22\xbe\x47\x9f\xfe\x1a\x7a\xb7\x0b\xab\x38\xa9\x0e\x13\xf8\x0a\x37\xe2\xa6\xe9\xa0\x31\x06\xf5\xc3\x81\x38\x0a\x17\x21\x7f\x41\x80\xaf\x9e\x62\x54\xb1\x1d\xe8\xb7\x3c\x1a\x8e\xe3\xfc\x66\x11\x72\x2c\xa9\x3a\x66\x65\xa2\xdb\xb9\x87\x2f\x75\x8d\xea\xc2\x67\x7c\x03\xe2\xb3\x75\x3d\x50\x39\xa5\x08\x40\x50\x42\xcb\x9d\x56\x87\xdb\x88\x10\xb6\xba\x45\xdd\x07\xf2\xfd\x43\x3a\xbf\x67\xbd\x69\xda\x43\x4c\x1c\x08\x52\x93\xff\xa6\x00\x75\x4c\x53\x0b\x1d\x74\x07\xd1\x1d\x15\x7b\xe8\x91\x23\x6b\x09\xe2\xac\x6c\xc8\x93\xf2\x2f\x2e\xb2\x57\xd1\x21\x54\x9c\x24\xef\xb3\x1e\xb9\x0f\x40\xd2\xd1\x2f\xc7\x73\x20\x08\xb2\x2e\x54\xd4\x27\x22\xb7\xd2\x3b\x2e\x7f\x2b\x32\x39\xab\x73\x78\xd3\xf3\x03\x85\x9d\x9b\xf6\x1b\x38\x03\x67\xb5\x81\xb2\x31\xae\x38\xf4\xde\x74\x41\x01\xeb\x9d\x4f\xb2\x14\xc0\x72\xfb\x05\xa2\x71\x84\xb3\x7d\x36\x51\xed\xc4\xbb\x6c\x9a\xc8\xf3\xfc\xed\x67\xce\xfb\x35\xf2\xbf\xce\x0c\x48\x17\x83\xbd\x6a\x9b\xf6\x65\xf8\x69\x6b\xc8\x1f\xfe\x5e\xe3\x5a\xe5\x0b\x04\xdf\x06\xdd\x27\xb6\x6c\xc5\x7c\x13\x13\x52\xce\x49\x33\xac\x40\x1a\xd4\xe1\xe1\x16\xc0\x6f\x8a\x9c\x04\x54\x59\xf2\xaf\x73\xdc\x1f\x22\x0a\xe9\x79\xe8\x7f\xa9\xb5\x38\x6a\x03\xae\xe1\x74\xb4\xad\x0d\x01\x08\x33\x85\xc2\xad\x13\xa5\x0c\xfa\xea\xbc\x5f\xee\x99\xb4\xec\x38\x73\x83\x27\xd4\xf4\xd4\xb9\x6c\x1b\x09\xe0\x09\x54\x10\x93\x2b\xb6\xb6\xb1\x13\xd6\x87\xc4\xbb\x04\xb8\x8b\xfb\xc2\xf4\x7f\x5c\x82\xcb\x52\xda\x4b\xfc\x92\x24\xa8\xe3\x34\x00\xa8\x77\x90\x2e\xda\x49\x23\x67\x46\x10\x00\x70\xa8\x3a\xbc\x88\xfc\x14\xcb\x10\xa1\x0b\xb1\x89\x50\x95\xd4\xce\x51\xca\x3f\xf5\xb7\xd6\x87\xe3\x9c\x6f\xe1\x8e\xaf\xbd\x44\x37\x1a\x4c\x50\xee\x3d\xa9\x77\x0c\x4a\x18\x01\xb0\x6d\x95\xda\x26\x34\x69\xbf\xbb\xa2\x0a\x44\x4c\xbd\x3c\x91\x1c\xa2\xc6\x00\x53\x8c\xa7\xb2\xef\x78\xaa\x4b\xe0\x21\x48\x5c\x52\x47\xf6\x6d\xbe\xff\xfc\xa5\xe1\x40\x73\xe2\xf3\x45\xa9\xa6\xa7\xc6\xc2\x96\xfb\x4e\x9c\x4f\xd5\x78\x39\xfb\x46\xed\xc3\xac\x00\x1a\xe0\xd1\xaf\x56\x55\x34\xae\xaf\xa7\xfc\x1e\x00\xa8\x86\x71\xfc\xf9\x96\xe8\x03\x06\x17\xbb\x51\x10\x0c\x60\xe9\x62\xf4\xa3\x67\x18\x52\x4a\x1c\x80\x99\xeb\x26\x36\x83\xf0\x19\xeb\x27\x01\xd0\xc0\x06\xeb\x43\x77\x2d\xf8\x73\x78\x26\xbb\x95\xc7\x17\x35\xf5\xf0\x44\x55\x57\x51\x8b\x20\x1f\xe8\x7a\xcd\x46\x7c\x1f\xbc\x7c\xa1\xc0\x2c\x34\x3f\xc1\x91\x5a\x0a\x87\xfe\xd4\x2a\xa9\x1f\xfb\x29\x09\x60\xca\xbf\xc8\x6b\x43\xf8\x48\xa1\x08\xfd\x4d\x25\x65\x94\x5a\xf7\x6c\x21\xab\x23\x68\x5c\xd5\x75\x18\x06\xc7\x72\xfb\xea\xd9\xb8\x79\x44\xed\xe6\x00\x98\x7e\x91\x7c\x81\x73\xe9\x2e\x5e\x56\xae\xce\x88\x24\x91\x35\x9a\x7c\x51\x36\x2a\xb2\x2c\x2a\x44\x2f\x4c\x81\x06\xf3\x08\x3f\xab\x13\x08\x43\x34\x85\xcb\x60\xf5\x42\x31\x9f\x40\xcb\xef\x71\x35\x3b\x10\x30\xdf\xd1\xf4\xd0\x96\x24\xc8\x22\x21\x14\x67\x5b\x8e\xf9\x98\x0d\xc2\x1c\x5d\xda\x06\x3a\x45\x8c\x56\x19\x03\xff\xc9\xd3\x18\xea\x70\x59\xf6\x4b\x2d\x3b\xba\xd0\x12\xd0\x69\x22\x1a\xfb\x38\xba\x72\x57\xc6\xcf\x0d\x1c\x0e\x67\x04\x67\x70\xf6\x8d\x51\x3a\x75\x50\x98\x7e\x0a\x5a\xd7\x58\x3f\x3b\xe2\xaf\x4d\x7f\x4a\xb4\x35\xcc\xb6\x2f\xea\xa5\x84\x7c\x90\x56\xd2\x49\x94\x0e\x89\x92\xe7\x4a\xce\x50\x10\xca\xb3\xcd\x8f\x8b\x2c\x14\xc3\x30\x9e\x64\x1c\x8f\xbe\xf1\xa6\xe7\x69\xae\x85\xf4\x75\x9e\x44\xbd\x69\x68\x49\x9f\x08\x99\x54\xb6\xcc\x86\x8f\xb2\x6e\x36\x11\x1f\x7e\x18\x0e\x38\x1a\xc7\xf1\x60\x56\x34\x87\x30\xd5\x3f\xbd\x96\x75\x04\xb8\xea\x23\x0c\xa4\xe3\xb2\x00\x00\x49\xd9\xbc\xed\xda\x3e\x04\xe8\x56\xf5\x12\xc0\xb6\xe8\xf0\x0a\x6d\x4f\xc9\x5c\x23\x05\x55\x36\x8a\x77\x30\x40\x96\x2d\x46\x15\x6f\x94\xbd\x4b\xfb\x79\x5f\xef\x8b\xc6\x25\x7c\x47\x56\xb7\x12\x87\x0a\xe6\x24\xbe\xe8\x96\xf3\x12\xe1\xd8\xae\xe7\xb6\x86\xde\x37\xde\xf2\x13\x53\x59\xb0\x91\x9c\x55\x2c\x4f\x30\x3d\xd1\x2f\x3a\x75\x83\xab\xbf\x2d\x5c\xc6\x01\x6c\x56\x35\x8e\x1b\xd2\x3a\x14\x47\xac\x5b\xf4\x28\x3b\xb2\xf5\xd3\x5f\x88\xe7\x7c\xe6\x45\x64\xbe\xc5\x89\x1b\x71\xdf\x4a\x6e\xb1\x5a\x7c\x8b\xe5\x01\xd6\x75\x5b\x1e\x3c\x99\xe1\x15\xce\xe0\x23\x8f\xb5\x7d\x7c\x91\xd3\x6d\x2a\xc9\x1f\xae\x59\xaa\x7f\xf9\x5c\x02\xaa\x0f\x60\x12\x27\x30\x1d\x15\x28\x68\x68\x8b\x9a\x04\x25\x96\xe1\x7e\xee\x83\x65\x05\xf5\xea\x57\x12\xb7\x6c\x9d\xbf\xd1\x76\x20\x70\x31\x87\xa2\x1b\x84\xe9\x97\x4e\xfb\x7d\xea\x7b\xcf\x94\xe9\x9b\xc2\x0a\xcb\x9f\x8d\x48\xfc\xb2\xc1\xe8\x1d\x92\xaf\xf6\x3d\xd7\x50\xdb\x0b\x6e\x65\xb8\xa2\x31\x5f\x9a\x8e\xfc\xbe\x57\xe8\x3c\x72\x61\xfe\x70\x07\x71\xd7\xb8\x10\x09\x92\xa3\x18\x5c\x51\x72\x9d\x72\xc5\xa8\xce\x99\xdc\x5e\x3e\x98\x97\x75\xbb\x6b\x74\xf2\x9d\xde\xf0\x59\xa2\x63\xf3\x90\x91\xa3\x16\xd9\x85\x0a\x9b\x66\x2f\x0a\x32\x8d\xd7\xf0\xc5\x05\x9d\xec\xa5\xdb\xd2\xcf\x41\x80\x95\x02\xe4\x49\xdf\x4e\x03\x81\x1f\x27\x47\xc5\xc7\x52\xfb\x63\x9c\x6b\x7d\x52\xc6\xda\x90\x1d\xd1\xf6\xe5\x49\xb0\x4a\xb2\xca\x5b\x43\x6b\xda\x20\xc4\xc6\x78\x16\xc3\x2a\xeb\x49\xb3\x16\x14\xdf\x48\x43\x23\xfc\x4c\xc7\x0f\x55\x92\x4d\x06\xde\xa7\x09\xa1\x68\xde\xb5\xac\x45\xda\x4c\x12\xfe\xd4\xb7\x18\x4a\xb9\x9b\xdf\x2f\xc5\x3d\x94\xe8\x10\x22\x0a\x16\x5b\x8a\x49\x2f\x48\x94\xd6\x48\xd8\x61\x7b\xd0\xdf\x0c\xf9\xcd\xc2\x32\x13\x03\x1a\x62\xdf\x10\x6f\x6f\x7c\x30\xd4\x1e\xa8\x48\x1e\x26\x48\xb3\xbb\x31\xea\x97\x3f\x93\xea\x98\xec\x79\x5b\xd9\x83\x48\xcd\xee\x17\x17\x76\x2b\xe8\x9b\x2e\x9c\x01\x95\xdc\x0e\x6b\x4e\xb8\x19\xb2\xae\x03\x1a\x42\x25\x87\xe7\xf0\xf1\x16\xaa\xac\x6a\xd6\x8b\xdd\x45\xf5\x26\x54\x65\xcb\x1f\xb0\x46\x26\x7f\x23\x33\xa7\xe6\x82\xd6\x1b\x8e\x3c\x36\xb1\x98\xa3\x08\xb8\x44\xf4\xf3\xc4\x32\x0b\x5e\xe1\xd6\x6d\x7e\xea\x3e\x0d\xa6\x40\x8f\x05\xc4\x8c\xce\x4d\x40\x9b\xc2\xc6\x06\x42\x8e\x3a\xce\xb0\x25\x20\xb0\x37\x1b\x97\x2d\x82\x97\xfc\xbf\x36\x93\x7d\xe2\xee\x5f\x55\x50\x0e\xb9\xb6\x51\x8e\xf8\x82\x60\x40\x94\xd6\xe4\x2f\xa8\x95\xf2\xca\x50\xf6\xd9\x91\xb5\x1f\x0c\xd1\xc2\xdc\x65\x8f\xd0\x92\x64\x10\x69\x4e\x54\xf5\x4d\xed\xc9\x81\x8f\x19\x20\xb9\x05\xc8\x5a\x5e\xb3\xe8\xef\x52\x33\x61\x10\x9c\xd0\xcb\x47\x7c\xcf\x88\x73\x0f\x97\xa2\x01\xf7\x95\xdc\x7a\xd8\xfc\xdd\x47\x97\x3c\xc1\xaf\x8d\xca\xcf\xa2\x4f\x27\x43\x4f\x07\xbd\x64\x51\xd8\xa3\x3e\xfe\xb5\xc5\xbe\x73\xcb\x12\x40\xc3\x30\x8c\x42\x9d\x3b\x99\x1f\xce\x1b\x89\xd1\x28\x60\xdc\x8b\x19\x0f\xb4\x23\xce\xe1\xfb\xb4\xef\xe2\xc5\x28\x70\xa1\xd0\x5f\x6b\xe8\x02\x93\x0f\xce\xc8\x34\xfd\x10\x3e\xb6\xc3\xdd\xfc\xcc\xd3\x6a\x5f\xb8\x0d\xbf\x81\x6c\xde\x81\x4c\x1e\x74\x7e\x45\xd6\xd6\x47\x75\xa9\xac\xb6\x88\x4c\xbc\xf7\xed\xb6\x66\x8f\x02\x2d\x14\x3e\xd1\x39\x7b\x00\xd4\x24\x9b\xfd\xb9\x20\x93\x0e\x10\xf3\xf3\x4b\x29\x39\x90\x49\x27\x22\x73\x49\x2b\x2c\x4d\x7c\x51\xf0\x0d\x65\xf3\xd7\x63\xf2\x17\x65\xf1\x2d\x76\x6e\x14\x28\xcc\x63\xb6\xc7\x73\xf5\x21\x2b\xfc\xf4\xc7\xa9\x9b\xa6\x82\x5c\x8e\xf3\x1c\x30\x64\x31\x3a\x06\xfb\xe1\x6b\xe6\xba\x11\xa5\xa7\x21\x2f\x41\x0c\x98\xfc\x05\x33\x59\x08\x2c\x78\x2a\x9e\x69\x38\x0c\x7f\xfb\xaa\x4d\xc0\x35\x46\xcb\x5f\xc0\x76\x01\x1b\x5d\x2f\xa5\xb0\x7a\x87\xce\xc4\x3e\xe7\x78\x3b\x25\x36\x05\x9f\x60\xc6\xbb\xbf\xd6\xef\x22\x95\x1e\xb7\x3f\xc2\x6d\xfa\x51\xf8\xa6\x69\xec\x1d\x4c\x31\xda\x1d\xbd\xc2\x94\x97\xbe\xef\x47\xa9\x28\xd4\x3c\x80\x02\xce\x82\xa7\xa6\xbe\xfa\x3e\xdc\xbf\x66\x29\x43\x37\x50\x58\x6e\xde\x34\x10\x02\x50\xfa\xc2\x37\x62\x5b\x9b\x95\x6a\xfb\xa0\xed\xcd\xb6\x2b\xa6\x14\x29\x7f\xb3\xb1\xa9\xbf\x1c\xaa\xa6\x90\x6e\xc0\x1e\x6b\x1b\x40\xca\x71\x5d\xd7\x39\xff\x65\x87\x29\x05\x86\x22\x47\x1e\xff\xf5\x59\x72\x51\xcc\xe2\xda\xe6\x2a\x6c\x1d\xfc\xe4\x2e\x94\x49\xbf\xfc\x43\x6f\xa5\xf6\x70\xfd\x86\x64\x9c\xe1\x13\x47\xe4\x68\x95\x5d\x08\x02\x21\x23\x91\x2e\xdd\xaa\x26\x5b\x99\xe1\x53\xe6\x11\xdb\x79\x12\x53\xbf\x0e\xc1\x3a\x04\xca\x22\x2a\x2a\xab\xdf\x15\xa7\x64\x1d\x96\x72\x58\xe8\xac\x77\xdc\xc3\xf8\x6d\xc5\xdf\x5c\xea\xea\x81\x73\xae\xf2\x01\xc1\x1c\x96\xdd\x76\x4d\x06\xb9\xec\x0e\xfa\x5b\xe8\x5b\x5d\x26\x71\x9d\x90\x7e\x46\xc6\xa1\x1d\x9e\xb1\x59\xf5\xab\x87\x57\x50\x9c\xe6\x7c\x96\xbf\x5e\xe6\x3f\x91\xb3\x0e\xc1\x3c\x26\xa0\x88\xe9\x6c\xa6\xbb\x9c\xe6\x7a\xba\x0f\x09\x1f\x56\xed\x97\x64\x8f\xdc\x59\x61\xd9\x9c\x22\xfd\x72\xaf\x44\x5a\x6c\x53\xf0\xe5\xc6\xc8\xfa\x21\x62\xd7\x5d\x47\xb3\x7d\x8a\x7b\xe8\x81\x9a\xbe\x09\x7e\xbe\xbb\x2f\xd3\xe0\xf7\x19\x2b\x84\x19\xf9\x30\x5f\xb8\x9a\x7c\x5b\xab\x1c\x32\x50\xb6\x3e\x25\xa1\x8f\x2c\x02\x50\x9f\x7b\x62\x6b\xad\x5b\x91\xe3\x2d\xb0\xc9\x21\x28\x74\x74\xb9\x0d\x04\xdb\xf6\x3c\x7b\xa2\x19\x9f\xf6\x38\xda\x3f\x3c\xc1\xce\x71\xe2\x15\x42\x8d\x24\xfc\xe6\x38\x68\xa2\x25\xf7\xbc\x48\xf4\x06\x02\x50\x25\x1f\xb9\x15\x08\xbb\x3a\xa2\xe7\xb5\x69\xed\x1e\xac\x0f\x53\xfb\x6b\xb9\x21\xb9\x6e\xd9\x86\x79\x77\x54\xf0\xd8\xbe\xf9\x92\x66\x7b\x13\x73\xff\xfc\xe4\x2e\x58\x36\xce\x69\x60\xa1\x6a\x49\x6d\xb6\x27\x40\x23\xf2\x4b\x88\x9f\x91\x8a\xbb\x45\xdb\xc9\x1b\x5a\x84\xb0\xcb\xdd\x0c\xe5\xe5\x5d\x42\x9a\x6c\x5c\x87\x46\xff\x72\xa7\xd6\xed\x1b\x42\x7f\x73\x31\x08\x96\x47\xdb\x4b\x82\xef\x03\x33\xa6\xfc\xb2\x63\xea\x7f\x38\xba\x30\x04\xc4\x40\x03\xe8\xae\x01\x8a\xf6\xe8\x7a\x85\x1c\x47\x1e\xc2\x1e\x8a\xed\x69\x32\x7b\xa5\xd4\x93\x69\xf4\x41\x83\xa0\x70\xf8\x65\xab\x2b\xd9\x91\xba\x84\x13\x91\x0c\x8e\x96\x33\x1b\x97\x62\x8f\xc2\x8d\xd1\xe0\x86\x98\x4a\xe2\x2d\x6f\x00\x76\xc3\x11\xdc\x9f\xe6\x0f\xee\xcd\x1a\xc0\x05\x42\x2a\xab\xa9\xcd\x46\xef\x7e\x00\x1f\x19\x72\xe4\x73\x9c\xd6\xf3\xc7\xdd\xad\x52\xc0\x25\xd4\x88\x08\xe0\x93\xfb\x1d\x91\x77\xfe\x9a\xb2\xe1\xc3\xa0\x11\x5e\x1f\xeb\xeb\x93\x0f\x48\x61\xaf\x23\xb3\x58\x29\xb9\x54\x35\x1b\xff\x8b\x11\x08\xce\x6b\x90\x16\xad\x82\x7b\x44\x14\x71\x99\x4f\xe5\x94\xe2\x75\x4e\x66\xb9\x35\xaa\xb6\xf5\x2c\xbb\xb5\x79\x9b\x36\x47\xa6\x4a\x56\xd1\x47\xc3\x1b\x2e\x16\x58\xd1\x8d\x58\x77\x22\xb8\x2b\x05\x28\x20\x2e\xab\xc5\xa0\x66\xff\xdf\x98\x1e\x49\x93\x44\x18\x17\x0f\xe5\x0e\x52\x70\x6c\x29\x52\xad\x68\xf3\xd1\x51\x5a\x2f\xac\xb7\x3e\x2d\xfb\x04\xa7\xb9\x9b\x5a\x6d\xa9\x31\x4c\x87\xc7\x48\xba\xcf\x5c\x6a\xf7\x7c\x2b\x53\x91\xb7\x25\x6e\x2e\x59\x57\x3e\x3c\xb5\xe8\x7f\xfa\x55\x39\xef\x3a\xf9\xa0\x6b\xf8\xfd\x95\x14\xab\x96\x8d\xc7\x86\xd0\x71\x69\x40\x59\x43\x96\xc9\x34\x22\x29\x81\xb2\x2c\x8e\x68\xa7\x5e\xa3\xe5\xc0\x52\x93\x5a\xfb\x44\xf8\x20\x9b\x6e\x75\xd7\xdc\xc8\xc7\x2f\x6b\xc4\x39\x95\x0f\xb3\xef\xc0\xc9\x3f\x58\x64\xc4\xeb\x29\x69\x63\xbc\x9d\x24\xe5\x7b\x0e\x90\x1e\xaa\x71\x8c\x7f\xac\xae\x96\xb3\x04\x31\x61\xb7\x25\xef\x36\xb0\x36\x03\x9e\x38\x29\xfd\x5d\x5f\xf2\xcb\x7e\x20\x74\x43\xf2\xe4\x41\x0c\xc1\xda\xf3\xb6\x53\x2d\xb6\x31\x3b\x03\xf2\x9f\x48\x34\x62\x67\xc9\x1f\x28\xfa\x14\x99\x61\x6b\xca\xfe\x40\xb0\xf9\x06\xb0\xe9\xe7\xca\x1e\x80\xd4\x43\x23\xaf\x8d\xac\xf7\x19\x18\x67\xd9\x54\x13\x03\xee\xa2\x94\xcd\xf8\x9b\xa9\x5b\x04\x1f\x69\x15\xc2\xe5\xb7\xb0\xab\xe9\xbb\xe1\xfe\x4e\x9a\x2c\x31\xd3\x8f\xf3\x4f\x96\x15\x65\x11\xb0\xda\x72\x93\xc0\x21\x0f\x1a\x2e\xa1\x72\xca\x70\xd4\xc5\xc7\x39\x7d\x4c\x76\x82\x49\x60\x38\x0d\xab\x4c\x5e\xdb\x2d\xdd\x42\xbd\x3e\x02\xd3\xfe\xfe\x4e\xcc\x91\x1f\x1e\x47\x43\x3a\xaf\x11\x39\x62\xb4\x40\x22\x7f\x6a\xb0\x98\xcf\xe4\x14\x4f\x17\x7a\x6d\xbc\x11\xda\xba\x1e\x5b\x04\x9b\xbe\xb3\x47\xa5\x2b\x63\x81\x78\x8d\x17\x71\x78\x63\x10\x81\xa9\x21\xb0\x58\x15\x4f\xea\xba\xcf\xc7\x8c\x39\xb0\x14\x0c\x4b\x1e\x2d\xc1\x9e\x77\xe8\x87\xfe\xaf\x33\x6f\x5f\x26\x0f\xee\x84\xc3\xe7\xfb\x57\xf7\x73\x4a\xcc\x7d\x73\x98\x76\x5d\x5a\x0a\xc3\x30\xdc\xeb\xf4\xeb\xcc\x9f\xd7\xb0\x70\x0c\x43\x3f\xf1\xdc\x62\xdd\x0a\x7d\x6d\x19\xbe\xf9\x35\x96\x24\x14\x00\xbf\xc4\xb9\x3d\xd5\x06\x8b\xf2\x35\xe4\x8f\x28\x9e\xff\xfa\xe3\x29\x18\x24\x1b\xd7\x0a\xec\xdd\x47\xf0\xfd\xc3\xce\x11\xfe\x93\x79\x03\x01\xc7\x1f\xb4\x94\x85\x2d\x17\x2b\x10\x2a\xeb\x0a\xf2\x13\x7f\xc3\x2f\x49\xbb\x23\xd6\x15\xb3\x08\x5f\xb2\x68\x59\x87\x31\x14\x5b\x5b\x36\xde\x9d\xa8\xec\x03\xb5\xbf\x1a\x4b\xed\xc6\xf5\x07\x63\x77\x2e\xe3\x35\x48\x83\x6f\x7a\x58\xe5\x47\x73\xd1\x48\x34\xc2\xc7\x85\xbe\x7a\x88\x5a\xf5\x16\x2e\x0e\x68\xde\x27\xe8\x5c\x74\x17\x4e\xbd\x54\x6c\xf6\x61\x5e\xb5\x6e\x25\xce\x7c\x01\x63\x95\xf6\x66\xbe\xbd\xa8\x4d\x39\xee\xf5\x56\x2e\xe6\x1f\x87\xb8\xf2\xeb\x1c\x73\xea\x47\xf9\x6f\x9f\xf3\x0a\x31\xbb\x5e\x63\x96\x37\x14\x53\x64\x1a\xe7\x9c\x7f\x68\x6d\xc7\x8e\xf8\xf3\xa0\x27\x3e\x79\x49\xb3\xc3\xe3\x48\x9e\xc8\xa3\x2b\x3b\x72\x7c\x38\x2c\x66\xbf\xe4\x33\x8d\x9c\x14\x71\x3f\xb9\x07\xf9\xf2\x05\xdc\xe6\x15\xc2\xe6\xf8\x91\x3e\x3f\x48\xd1\x08\x12\x37\x3e\x7d\x19\x0d\x38\xf9\xd5\xe2\x47\xa7\xcc\x31\x49\xa8\x53\xf5\xf7\x25\x7f\x3b\x57\x5d\xd7\x71\x11\xeb\xe7\xd5\x7c\x44\xe6\xc7\xea\x8d\xbc\x44\xc7\x93\xbf\x85\xf9\xac\x53\x33\x25\xc1\x37\x3d\xe0\x0c\x63\x34\x3c\xf8\x91\x4b\xc7\x76\xd0\xd3\xfe\x8a\x55\x6a\xf1\xbe\x07\xf1\x65\x1a\x97\x9f\xb8\xb6\xe5\x6b\x1d\x5c\x69\xd9\xd2\xe1\x01\xc2\x47\x0f\xbf\x51\x14\x96\xb1\x0a\x8d\xde\x63\x59\xc6\x1d\x29\x93\xff\x4d\x9e\xf8\x69\xe4\x9f\xbb\x4c\x9c\x96\xff\x67\x57\x29\xf4\x0e\xf9\xff\x74\x0e\x52\xd2\xb5\x8f\xda\xa4\x77\xf9\xef\x8d\x27\x11\xc5\x8d\xf6\x63\xb2\x20\x4e\xfa\x5b\xe8\xc1\xb6\x36\xae\xc8\xe1\x07\xb0\x49\x56\x49\x5e\xe5\xd8\x4d\xe6\x98\x67\xcb\x88\xa0\x59\xc5\xce\x3e\x7f\x74\xc4\xbc\x2f\x38\xdf\x42\x10\x14\xf5\xa3\xf7\x4b\x82\xcf\x6d\x25\xc0\x18\x03\x0b\xb8\x7e\xd8\x31\xe1\x80\xab\xca\xb9\x6f\xb8\xb6\x01\x9a\x27\x99\xa6\xbb\x43\x18\x96\x61\x19\x1f\x34\x5d\x27\x99\xda\xde\x88\x76\xf7\x24\x4c\xfb\x2c\xad\xc9\x7f\x7d\x49\x8d\x4b\xd4\xae\x9a\xdc\xbe\x96\x7d\xbe\xdc\xc3\x30\xca\xc7\x65\xcb\x11\xfa\x7b\xf0\x4d\xe5\x47\xe6\x52\x59\x7a\x43\x4c\x1e\xcc\xd4\x93\x4a\x6d\x16\x89\x55\x1c\x0a\xeb\x7c\x51\x7d\x88\xea\xdd\x49\xab\x9d\x0b\xc9\x90\xdf\x19\xaf\x2d\x77\x0e\xcf\xaa\xe2\xfb\xf9\xa7\xfe\x6b\x56\x3f\xc6\x11\x4f\x94\xcc\x11\xf1\x89\x9a\x29\x4e\x6b\x83\x77\x87\x62\xe2\x2d\x3a\x1c\xfb\xc1\x91\xc3\x68\x94\x62\xdf\xf9\xfc\x7a\x3b\xf6\xbd\x0e\x01\x50\x5e\x29\x7b\x8f\x3c\x43\x8e\x2d\x43\xc6\xba\x6a\xd9\x52\xfc\xe5\xd0\xa0\xa2\x68\xa9\x50\x9f\xfc\xd5\x99\xf3\xb8\x8c\x29\x92\x4a\x6e\x90\xdb\xa0\xa8\x88\x4c\x1a\xd7\x28\xb5\xac\x99\xb4\x0b\xf5\xa9\x14\x62\x05\x4e\x0a\x35\xb4\xde\x03\x14\x21\xfd\xf5\xd0\x0f\xe3\x2e\x8f\x68\x9c\xa9\x38\x9c\x99\xf4\x99\x49\xeb\x7d\x2a\xfd\x1e\x41\xb8\xb7\xe4\x77\xd2\xd8\x49\x0b\xcc\xef\x4f\x5f\x5c\x57\xe6\xf1\xe7\x10\x5c\xe0\x24\xd3\x8c\x00\xb6\xd5\x2f\xcb\x5a\xb2\x8d\xc0\x43\xfa\xaf\x0c\x23\x37\x26\xd1\x76\x5a\xb9\x66\x0b\xa7\xee\x3d\x29\x8d\x17\xaa\x70\x19\x87\x28\x0d\x6a\xeb\x7a\x6e\xde\x29\x09\xd1\xa7\x77\x24\xa0\xa9\x92\x28\x75\xae\x7f\xf9\x4c\x51\x50\x16\x89\x6d\x0a\xd1\x03\xe6\x1e\xf2\xa3\x63\xcd\x86\x15\xd9\x4c\xfb\x28\x3f\x16\xa8\x46\x69\x9e\x53\x25\x04\xeb\xd1\x45\xa2\xe8\xc7\x15\x8b\xcb\x5f\x40\x02\x3a\x6b\x34\x44\x5d\xb8\x2c\xeb\xd8\xa4\xba\x27\x16\x66\x10\x06\x84\xcf\x8d\xb7\xc5\xc0\xf3\x3f\x75\xda\x85\x7b\xe1\xd5\x76\xf5\x13\xf8\x8e\x05\xff\xc9\x90\x63\xc9\x23\x7a\x2f\x6c\x7d\x7d\x5b\xc9\x7b\xe0\xf3\xd7\x7f\x3d\xb6\xe2\xdc\xb6\x02\xe0\xc4\xbc\x82\x3d\x8f\x08\x34\xa5\xc7\xe7\x5d\xb3\x51\xed\x51\xdf\x3b\x81\x69\xc4\x89\xd4\xa8\x4c\x7f\x50\x44\x5c\x69\xff\x1e\x1f\x97\x55\x16\x79\x26\xbd\xef\x70\x93\x38\x6e\xab\xf8\xf0\xbc\x6b\x3e\xe2\x5f\x13\x40\x1a\x60\x92\x6c\x30\xb1\x6c\xa6\xe4\xf8\x98\x44\xb7\xe5\x31\x16\x61\xdc\x2b\x74\xe8\x9e\xf8\xa1\xe3\x0a\x3d\xc8\x28\x3c\x75\xf4\xa2\x5b\xee\xd3\xaa\xff\x6a\xdb\x15\xc5\x57\xd1\xfd\x1d\x83\x57\x05\xf1\x06\x98\x48\x60\x5b\x89\xf3\xde\x73\xa1\x2f\xf1\x28\x9a\xa3\x92\x84\xcf\x1c\xa2\x5d\xb3\x7d\x31\x02\x28\xcf\x25\xea\xdb\xcb\x72\x91\x63\x8b\xd0\x83\x6c\xa9\x23\x04\xbe\x48\xe0\xee\xb5\x94\x8e\x15\xef\xf3\x8b\xf6\xd3\x1b\xce\x60\xe7\x28\x84\xc0\x22\xd3\xd0\x5a\x26\xab\x6e\x5e\x98\x10\xae\x51\x68\x0d\x75\xaf\x98\xcc\x6d\x04\x1e\xe0\x60\x95\x0b\x7c\x40\x70\x1b\xf9\x8c\xd4\x08\xd7\x84\xb5\x8f\x61\xb7\x99\x34\x2c\x51\x9e\xed\x10\x60\xdf\x83\x41\xdb\x75\xed\x63\x45\x96\x54\xea\x4f\x0f\x24\xb6\x39\x6c\xd2\x67\x48\x11\xfb\x6a\x37\x90\x0a\xa3\xc7\xcc\xb2\xb6\xad\xe4\x79\xef\xa9\x34\x52\xa8\x64\x45\x6c\xf5\x82\xd1\x3e\x45\x75\x8f\xfa\x65\x5a\x47\x2d\xc6\xb9\xc1\xa6\x06\xc4\xb4\x13\xd1\x50\x96\xe3\xe3\xaf\x60\x1c\x22\x18\x08\x00\x93\xcf\x60\x43\xdf\x4f\x06\xb3\x24\xe5\xbf\x39\x74\xbd\x6c\x9f\x56\x85\x8e\xbb\xa2\xf6\x5c\x52\xb7\xb3\xfc\x9e\xde\x68\x1a\x40\xa4\xc5\xdb\xf9\x86\x4d\x63\x2c\xb5\x0e\x97\x5b\x06\x1f\xd2\xfd\x5a\x5f\x78\x18\x0b\xd1\x58\x06\x23\x8a\xd1\x93\x05\x22\xfe\xaf\x4e\x4d\xb4\x4e\xed\x8a\x69\x21\xd2\xfe\xd1\x21\x55\x74\x83\x70\x4a\xe1\x52\xf7\x88\xaf\x4f\x54\x5e\x60\xa8\x28\x6e\xcb\xfa\x7b\x29\x4a\x85\x37\x3d\x5b\xe5\x68\x45\x7f\x33\xeb\xd7\x7b\x3f\xd7\xb1\x18\xb0\xc9\x5f\xde\xa0\x4c\x61\x9f\xe9\x22\xe9\xdf\xb8\x9f\x8f\x0a\xe1\x5e\xcb\x0f\xd5\x46\x56\x9f\x04\x1e\xc8\x0a\xab\x65\x8c\x08\x32\xb5\x55\x55\x44\xc4\x48\x78\x42\x58\x9d\x6a\xfb\xad\xa0\xea\x58\xb0\x5a\x5f\x40\xbc\x85\xb7\xd1\x3d\xbc\x4e\xf1\x8a\xee\x88\x7b\xee\x4a\xbe\x9b\x42\x69\x88\xd9\xf0\x7e\xee\xe1\x7c\x54\x53\x51\x99\x4c\x0d\x51\x22\x7f\x80\x70\xcd\x7f\x6d\xba\xf5\xec\x2b\xd3\x2a\xc2\x4e\x3f\xa6\x52\xa0\xfe\xe4\x88\x18\x86\xa3\xc0\x08\xa0\x74\x9c\x1a\x2e\x34\x04\x6f\xb0\x46\x78\xf5\x4b\x94\xc8\x13\xaf\x5d\xb6\xfa\x1c\xd9\xa6\xf1\xd0\x4f\x6c\xa3\xbc\x3e\x82\xee\x6b\x4f\xc1\x5e\x4b\x56\x2f\x72\x23\xe6\x27\x41\xf5\x81\x00\xe6\x35\x1b\xc3\x34\x89\x38\x8e\x23\xc2\xde\x2f\xca\x68\x8a\x2b\xf0\x59\x23\x68\xc0\x80\x73\x56\xbc\x31\x95\xc6\xac\x8e\x61\xbe\x38\xe3\x8d\xe8\xbe\x39\xcc\x86\x43\xa2\x51\x68\xf9\xc1\x2a\x9e\x09\xe6\x06\x9b\xd5\x9f\x7c\x1c\xff\x99\xac\x76\x20\x01\x49\xd4\x94\xc5\x0b\xe1\x0a\xad\xed\xe9\x51\x83\x33\xda\x27\x31\x2c\xe4\x2f\x11\x41\x19\xff\xdd\x6a\x10\x78\x0e\x79\xa0\x2a\x4f\xfa\x06\xb7\x88\xff\xda\x53\x3f\x40\x4d\x84\xfe\xea\x2b\x81\x8c\xf3\xa0\x6f\xdf\x26\xad\xaf\x7e\x40\xa5\x40\x34\xc9\x3f\x28\x30\xc7\xf3\x0a\x60\xb8\x9d\xea\x12\x5f\xfe\xfc\x12\x47\xbe\xa5\x51\x38\xa4\x48\x19\x47\xf0\x41\xfa\x44\xfd\x21\x92\x2d\x39\x54\x98\x28\xc7\xea\xa8\x6a\x0a\x43\xfd\xe0\xa8\xe3\xde\x98\x97\xcf\xfc\x2d\x33\x85\x65\x93\x63\x7d\xde\x6f\x8e\xf2\x24\x58\xfa\xbd\xdd\x63\x70\x5c\x10\x3d\x35\x38\x2c\xee\x18\xf6\xf6\x87\xfb\x80\x67\x95\x1c\xa1\x6a\xb7\xe8\x54\x04\x80\x91\x93\x46\x96\x50\x56\x9f\x62\x52\xd7\xac\x5b\x4b\x7f\x30\xfc\xd9\xbd\xf2\xf5\xdd\xef\xf8\x38\x2a\x3b\xde\xc6\x18\xc6\xb0\x83\x5f\xfd\xd4\xb7\x3a\x2e\xea\xb2\x70\x18\x52\xd1\x69\x84\x54\x1c\x47\xe9\x33\xa8\xcb\xa0\xf0\x0c\x64\x9b\x6f\x82\x04\xcc\x1a\xb1\xde\x9b\xfc\x87\x2f\x31\x9d\xea\x4a\xea\x5c\x29\x0e\xa1\x2b\xdc\x9a\x4d\x21\x4c\xff\xfa\xbd\x91\x76\xcd\xa6\x8c\x44\x5d\x57\xd0\x0c\x10\xda\xcc\x18\x8e\x11\xf4\x92\xf1\x4b\x25\xd9\x63\x9e\xbb\xa4\xeb\x1f\x5f\xc5\x41\x0b\x3e\xb6\xdc\x3c\x42\xa5\x95\x45\x20\xe9\x51\x98\x16\x19\x61\x68\x40\xf4\x6f\x9e\xf4\x43\xab\xe8\xfa\x82\x6a\xff\x7e\x6e\xa5\x3f\x7d\x14\x00\x61\xa0\x7e\x34\x77\x54\xd7\x6c\x52\x89\x2a\xfd\x9c\x38\x27\xa4\x23\x18\x7f\xc9\x91\x06\x7d\x58\xaa\xee\xc8\x24\xab\xbc\x89\x3b\x88\x77\x0e\x81\x69\x04\x66\x89\x34\xa7\x5d\xa3\x0d\x1b\xd5\x27\x66\x30\x6c\xca\x48\x8d\x09\x35\x46\x2c\xfe\x34\xec\x65\xdc\xea\x18\xbe\x11\xc7\x20\x23\x81\x00\xdf\x55\x3a\xb7\x0f\x96\xf0\x02\x6e\xfb\x58\xc8\x29\x21\x1a\x6b\xc1\xee\xe6\xfe\x4a\x55\x47\xe4\x81\xad\xfd\x39\x72\xc8\x87\x43\x97\x37\xc5\x6c\x83\xab\xfa\x0d\x43\x47\x00\xac\x5b\x64\xaa\x91\x40\x8f\x6f\x7c\xa0\x5b\xe8\xf5\x2b\x2b\xf4\xcc\x1f\x9b\xc8\x26\xa5\x6a\xf9\x01\x25\x36\x1d\x3f\x07\x90\xf8\xe4\x9c\x0a\xda\x03\x44\x4c\x0b\x51\xfd\x7e\x63\x5f\x01\x4b\xbd\x51\x43\xd2\xcf\x87\xae\xcc\xb2\x14\x13\xf7\x53\xda\x0b\xd7\x38\x2b\x68\x63\xda\x8a\xc7\xc8\x35\xc7\x71\x09\x6c\xd0\x3a\x04\x5b\x15\x27\x97\x37\x0a\x34\xee\x25\xef\x7f\x58\x0d\x77\x93\xe5\x4a\xd3\x94\xaf\xc6\xe7\x7a\xad\x92\x76\x23\xc6\x6b\xd0\xc6\x6b\xf8\xdc\x1a\xce\xed\x2c\xf5\xcf\x15\x61\x6d\xc8\x22\xd2\x85\x7c\x69\xba\x0e\x5c\xd9\x31\x15\x78\xd5\xb5\x65\xdb\x36\x62\xdd\xb6\x4c\xb2\x76\x7e\x47\x78\xea\x3f\x9f\x5f\x6c\x8b\x28\x44\xbf\xf2\xdd\xf5\xfc\xfc\x35\xb1\x98\xc1\x64\x85\x24\x80\x39\xbd\x2c\xde\xa1\x6d\xdf\x20\x2d\xc8\xe6\x4b\xca\x70\x3e\x6d\x55\xce\xdd\x6f\xfb\xd0\xcd\xbb\xbe\x94\xa2\x62\x26\xf8\x45\xa0\x01\x05\x7c\x06\x0d\xab\x06\xe6\x3f\x6e\x0d\x83\xeb\xa4\x16\xab\x3c\x2f\xf3\x61\x43\xb8\xf2\xad\x96\xc9\x3a\xd9\xe3\x7c\x86\x24\xe6\xb5\x5e\xe3\x11\x9c\x5e\xe2\x8a\xc5\x59\xa3\x30\xa5\xec\x05\xac\x49\xd4\x22\xed\xd0\xe7\x13\xc5\xe2\x1d\x7c\xd4\x75\x5c\x1d\xc6\x50\x67\xe0\x7f\x18\x8f\x4e\xd0\xfe\x52\xcf\x4b\xf3\xe5\x0d\xf3\xd9\xec\x34\xe7\x19\xcc\x7a\x8d\x57\xb8\x08\x99\x2b\x16\x57\x1a\xdd\x94\x9e\x56\xba\xde\xc0\x9a\xac\x53\x45\xe8\x91\xab\x7b\xac\xd2\x6f\x28\x83\xff\x04\xa8\x19\x2a\xda\xc8\xfe\xd4\x3b\x34\x42\x16\x7a\x6b\x25\xb7\x42\xb5\x38\xee\xef\x7d\x06\xbe\x94\xbd\x6f\xfb\x31\xec\x1a\xeb\x15\x53\x0a\x99\x6d\xa0\xa5\xbe\x92\x6b\x97\xec\x04\x6e\x2d\xe3\xb5\x48\x7c\x5f\x00\x46\x04\xec\xd4\x31\xd3\x5f\xea\xaf\x7a\x8f\x36\xc9\x39\x4d\xff\x9f\x44\x2b\xc7\x54\xc8\x5c\xa2\x89\x89\x13\xae\xdf\x10\x07\x6d\xb2\x96\xf1\x12\xa6\xec\x16\xb2\xee\xdd\x60\xbb\xc2\xcf\x6a\x3f\x64\x32\x0e\x7a\x7d\x93\x00\x63\xbc\xe6\x89\xf8\x81\x02\xb8\xe5\x15\xc4\x5c\x70\x43\x9d\xfa\x40\xeb\x1f\xf3\xaf\x6e\xdf\x95\x0f\xc1\x5e\xc9\xdc\x8c\x4d\xef\xd5\x2a\xf6\x65\x09\x1b\x46\xd4\x54\x9a\x61\xa9\xa1\xc4\xc6\x60\x3d\xe3\x46\xd4\x80\xed\xb5\x72\x09\x88\x09\x02\xbe\x70\xb5\x41\xc0\x48\xc1\x92\x53\x78\xc1\x1b\x25\x32\x3b\xff\xce\xfd\xce\x6c\xf1\xe8\x3f\xe3\x8a\x9d\xb7\x96\xfe\x8c\xf0\x2d\x2c\xa8\x93\x4f\xc4\x0e\x31\xc5\x21\x5c\x16\x43\x6f\xb4\x8e\xd6\x06\x2a\x8b\x2c\xde\xa7\x63\x5d\xb1\xc8\xbf\xa5\x3c\x83\x31\x01\xc6\x8a\xb1\x49\x21\x57\x3b\x36\xaf\x72\xf6\x45\x3f\xb1\x1c\xcc\xff\xad\x5d\x6c\xfa\xe6\x32\x79\x55\x83\xc7\x39\x1a\xb2\xdf\x2a\x30\x8a\x86\xed\x3c\x5d\x4f\x72\x4e\x0d\x03\x65\x0c\x76\xa4\x0e\x42\x3c\x55\xa9\x79\xa2\x16\x31\x9b\x25\x6c\x08\x18\x7b\xc5\x4a\x1e\xfb\x43\xb8\x1e\xe7\x27\xd8\x05\xbe\x3f\x3e\x0f\x77\x45\xe3\x7a\x26\xbd\xe7\xaa\xf9\x56\xe7\x64\x9c\xc7\x30\x5d\x4d\xc1\x3a\x5d\x1b\xe6\x7a\xab\xeb\x8b\x8e\x23\xa7\x39\x9f\xa1\x08\x60\x23\xa7\x09\x9d\xc7\xf3\xea\xa2\xe1\xf5\xfb\x36\x03\xbf\x37\xfe\x48\x35\x2d\x62\xbd\x9f\x38\x41\x88\x5c\x9f\xcb\xe5\xbb\xab\xe6\x86\x18\x97\x75\x58\xdc\x20\x14\xdd\x20\x92\xee\x88\xd5\xd4\x5b\xbc\x3d\x79\x1e\x85\x2a\x9b\x27\xb1\xcf\x7d\x53\x2d\x37\xf2\x4b\xe8\x11\x1c\x86\xdc\xa0\x64\x6c\x93\x48\x4f\x51\xb6\xf1\xbf\x5e\xf4\xa2\xe1\x3b\x94\x33\x59\x61\x30\x6a\x2f\x12\x5d\x48\x84\x84\xc3\x52\x84\x9d\xe7\x39\x5e\x1f\xfc\xe6\xf2\x14\x94\x51\x46\x86\xca\x2c\xdf\xfb\x89\x9f\x5f\xba\x1b\xbe\x4e\xe3\x2b\x7b\x26\x8f\xdd\x63\xf0\x0c\x26\x97\xc4\x78\xef\xfc\xe8\x13\x51\x31\xf9\xeb\xf6\xda\xd0\x80\x07\x3c\x11\x99\xff\xc6\xcb\x7c\x28\x6a\x7a\x61\x1e\xa4\x19\x17\x31\x5b\x23\x37\xeb\x1b\x2c\x05\xae\xf4\x56\x0a\x5b\x0b\x6d\xc0\x34\x0a\x68\xce\x77\x09\xb0\x4d\x4f\x49\x93\x77\x0a\xe1\x78\x05\x22\x62\xa4\x58\x12\xff\xe3\x9d\x61\x82\xb8\xcb\x7c\xc9\x85\xd2\xc5\x21\x07\xc7\x34\x20\xbf\xb4\x29\xb0\x59\xf5\x3b\xd5\xcd\x74\xb5\x5d\xcf\xf6\xe3\xcc\x30\xbd\x70\xad\x58\x08\x18\x20\x4b\xbd\x5f\x55\x18\x3b\x75\x0c\x87\x5e\xbe\x8a\xe5\x1f\x7e\x32\x7f\x55\xd9\xdd\x63\x67\x74\x6e\x54\xfb\x94\xe1\x5a\xe6\x3b\x9d\x6f\xe5\x44\xae\xc0\x12\x72\x73\xf6\x29\xd2\x0e\x8a\x1a\x48\x9a\xbf\xa2\xb1\x5c\x9e\x1a\xb8\x61\x98\xd4\xbc\xe1\x56\x8a\x75\x5f\x96\x39\x8f\xf1\x59\xca\xee\x1e\x5c\xe3\x85\x9a\x51\x12\xa4\xc5\xf7\x8f\x81\x68\xfd\x52\x28\xee\x30\xd1\xb5\x75\x05\xa6\x0b\x98\x28\x0a\xa5\xe9\x32\xd0\xda\xd1\xbc\x2b\xed\x8e\x09\xf1\x3e\xf3\x61\x1e\xcf\xf4\xb2\x58\xc8\x3a\x29\x93\x55\x14\xfc\x5d\x4a\x7b\x81\x4a\xe9\x6e\xe7\x94\xf0\x1a\xd9\xc7\xc2\x59\xfa\x4f\x9e\x3a\x2a\x49\xd7\x0d\x93\xe0\x20\xac\xad\x65\xdc\x41\x72\x25\x1b\xaa\x87\x26\x39\xf9\x8a\x98\xad\xe2\xca\xcd\x5a\xaa\xcb\x5f\xd5\x72\x03\xba\xa7\x5a\x03\x72\xc2\xc8\x48\xc1\xe7\x41\x7f\xf7\x72\xae\xcb\x7c\x2b\xb3\x2d\x75\x44\xf1\x65\x20\xa3\x57\x00\xfe\x63\xfc\xd4\xe1\x88\xe6\x27\xa0\x65\x87\x92\xd7\xc2\x3a\x79\x36\x0d\x8f\xfb\xd7\xdf\x1d\xf6\xd7\xf8\xae\xa1\xb3\x8e\xc1\x33\x42\xc8\x20\xf6\x81\xd5\x06\x5c\x93\x7c\x64\xa1\xd3\x73\x02\xbf\x91\x81\xf8\x86\x04\x89\xa6\xa4\x99\xb6\xa1\x78\x94\xc3\x9e\x33\xb4\xbc\xcd\x99\x7c\x7a\x90\x16\x00\x6a\xf7\xe7\xd8\xce\x86\xa8\x78\xba\xf2\xac\xbf\x5e\x51\xf7\x44\xe4\x4a\x5a\xa7\x53\x50\xcb\x61\x2f\x05\xdf\x14\xdc\x5c\xf3\x73\xc8\x60\x42\x33\xca\x17\x20\x5e\x16\x9b\xe9\x44\xbe\x58\xa7\x9b\x33\xd9\x16\x10\x53\x40\xa0\x08\x00\xdf\x20\x9e\xe1\xdf\x4a\x66\x13\xa9\xbd\x32\xa5\x59\x93\x48\xec\xf6\xf2\x63\x90\xda\x0b\xc2\x20\x12\x30\xba\xd1\xfc\xcf\xba\x2e\x8a\x69\xc5\x4b\xd1\xd5\xfd\x73\xc5\x9f\x61\xdf\xc5\x3e\x74\x41\x99\x00\x51\x80\x02\x81\xeb\x80\xe2\x84\x16\x94\x45\x9c\x4d\x56\x53\x5d\xab\x14\x94\x43\x4c\x74\x36\xd3\xa1\x4c\x1c\x3e\xeb\xba\x16\x18\x68\x96\xfc\x58\xfa\x4b\xad\xe3\xb1\x6e\x82\x85\xd8\x1e\x38\xb0\x90\xe5\x79\xa7\xf7\x8d\xc7\xe0\x2d\xff\x3a\x57\xd6\xf0\x62\x7f\xfc\x2a\x71\x10\x9a\x7e\x19\xcb\x71\x65\x8c\x88\x14\x61\xff\x57\xfc\xfd\x8e\x93\x51\xf4\xc9\x3a\x24\x8b\x34\xd3\xbf\xe7\x30\xef\xd6\x52\x2b\xfe\xa9\x46\xe9\xb8\xe4\x19\x94\x31\x50\x0c\xb4\x21\xc8\x24\x8a\x1a\x7e\xf7\x37\xe7\xb3\xfc\x8d\x24\x14\x01\x6e\xe4\xa4\xe0\x71\xa7\x07\x80\x2e\x6f\xa3\xa5\xec\xa5\xe4\xb0\x9d\x08\xd3\x30\xe9\xf4\x3e\x8d\x5b\x2c\x95\x07\x54\x45\x23\xe6\x71\x93\xd2\xfb\x83\x1d\x6b\x1a\xe7\x42\xbe\x48\xc4\x0f\x53\x03\x99\x07\xad\xeb\x46\xd4\x3c\x59\x5b\xc0\xdd\xc0\x71\x40\x8f\xc1\x35\x0a\xf3\x24\xa0\x36\xad\x83\xfd\x4c\xfc\x06\xdc\xf7\x21\xd0\x16\x58\x5b\x4a\xf5\x05\x71\xd1\x5a\x68\x2b\xf5\x8d\x2c\xe9\xe1\xd1\x53\x85\xd0\x15\xc5\x21\x0a\xc5\x5f\xff\x86\xa1\x19\xfe\x7e\xb9\x70\xde\x83\x19\xbe\x8c\xc0\x1b\x9a\xd0\xeb\x9a\x11\x76\xb7\xbb\x4c\x15\x55\xba\x66\x63\xbf\x0e\xc1\x64\x96\x7d\xc3\xbd\x98\xa1\xfc\xd1\x8f\x5d\x0f\x95\xc2\xdd\xcd\x2c\xa5\x19\x4b\xd7\x46\xc7\x74\x0c\xa8\x0d\xc2\xfb\xf3\xeb\x99\x7a\x68\x98\x8c\x65\x80\xac\x69\x07\x80\xe1\xe1\xb6\xf3\x78\x6b\xfc\x43\x8e\x8f\xab\xf6\x7b\xd0\x79\xa9\x2a\xf6\xeb\x03\x82\x3d\xb8\x21\x54\xa7\xcd\xdd\xaa\xe9\xc6\xf1\x92\x39\xa0\xfb\x8b\xd2\x47\x69\xf2\x8e\xce\x35\x29\x6e\x32\xae\xc0\xf1\x49\x00\x53\x1f\x3e\xae\xc3\x2d\xed\x02\x65\xc2\x5f\xff\x8a\x53\x5a\x5a\x9e\x06\xcf\x2d\x3f\xb2\xbe\x77\xaf\xbe\x0f\x09\x70\x87\x45\x48\x4d\x72\x9f\x20\xee\xef\x46\xef\xf8\xa8\x0d\x7f\x0a\xff\x18\x67\xe9\x4d\x76\xb4\x6f\x4b\x0e\x19\xbb\xf5\x88\x84\xad\x6e\x80\x59\x4b\x23\xe5\x62\xa8\x14\xef\xae\x61\xdf\x1f\x8e\x5a\xd6\x31\x46\xaa\x72\x6d\x3c\x52\x8e\xf9\x23\xe2\x40\x22\x50\xad\x61\xb5\x8f\xed\x6a\x72\xc4\x74\xff\x73\x37\x37\x9d\x3c\x63\x4a\x6c\x45\xbc\xc5\x23\x48\xbe\xf6\xeb\x4c\xfd\xd7\x65\xaf\xf9\xf6\x46\xe7\x6f\xbe\x97\x6b\x0c\x34\xd2\xd2\x51\xed\x7a\x7e\x6f\x7c\x21\x82\xee\x8e\x02\xc7\xba\x72\x8f\x5a\x7e\x38\x65\x67\x85\x1f\x3c\x50\x09\x6e\xe3\x45\x7c\x6f\x8d\x66\x06\xd4\xda\x47\x57\x7a\xaf\xf4\xda\xc8\xec\xa8\x0f\xf8\x98\x7d\x02\xf2\xe1\x3f\x1f\x45\x74\xbc\x8c\x03\xb9\x61\x97\x3b\x6a\x35\x4f\xea\x53\x93\xbf\xe4\xf3\x51\x03\xa6\x4a\xd8\xbf\xb5\x6b\x1a\x73\xdd\x7b\xb9\xd8\x33\x4e\xf5\x05\x15\x0d\x84\x32\x93\x26\x2d\x33\x69\xc6\x1b\x11\x11\x5f\x1f\xff\xdf\xfd\x55\x5f\xb4\x28\x54\xee\x3f\x35\x56\xb9\x59\x31\xfb\x8c\xfc\x98\x7e\xca\xda\x0d\xe9\xff\xf0\x5d\xb0\x3e\xf3\x5a\xd7\xfe\x16\x95\x6b\x63\x28\x8d\x41\x17\xfb\x4a\x00\x57\xb3\xef\xf8\xd3\x0b\x96\xeb\x98\x27\xe9\x97\x6e\xe6\xa9\x35\x5b\x24\x21\x99\x29\xd6\xdd\x70\xcb\x56\xc2\x2e\xf0\x3f\x94\xdf\xc2\x0d\x37\xfe\xc4\x7c\xdc\xc8\x76\xfd\x99\xac\x1a\xc3\x13\x9f\xd7\x10\x35\x35\x14\x9b\xf4\x1c\x0d\xe6\xdf\x9d\x74\x26\xe5\xec\xf9\xe1\x67\xfb\x21\x19\x51\xe5\xec\xf9\xe6\x74\xa6\x07\xfa\x46\xf8\x37\x0e\xd5\x46\xf6\xfd\x58\xae\x26\x87\xcc\xd4\xba\xe9\x31\x2c\xaa\x36\xaf\x06\x78\x1a\x33\x27\x11\xd9\xd5\xdd\x49\xf9\xb7\x67\x5c\xa5\xbe\x34\xd7\x28\xd6\x40\xe9\x86\xf3\xed\xb1\xa7\x13\xc6\x74\x4a\x73\x3e\xd5\x65\x8f\x01\x7e\x30\x1c\xfd\x97\xd1\x4e\x16\xe6\xab\xcb\xd7\x3b\x88\x33\xd7\x68\x27\xd8\xb9\x5f\xe4\x42\xac\x17\x7a\x9d\x1b\x6a\xec\x15\x47\xff\xd8\x66\xca\x0f\x10\xff\x43\x18\x8c\x69\x67\x76\x87\x09\x07\xce\x7d\x0c\x68\xe7\x8e\x00\x6f\xd8\xbf\x58\x99\x22\x82\x3e\x84\x5c\x9e\xcb\x88\x33\xc9\x52\x71\xca\x69\x58\x90\x88\xdc\x28\xa9\x4b\xc3\xfe\xef\x7a\x14\xad\x0d\xb5\x45\x94\x43\x06\x9c\xdb\xc1\x4d\x7b\x25\x1f\xbc\x46\x30\x1b\x90\x1f\xfe\xe9\x4b\x5c\x8a\x3c\x96\x71\xc4\x79\xdc\x84\x7d\x56\x0d\x96\x2f\xd6\x80\xe1\xdb\x42\xed\xc8\xe5\x66\xea\x9f\x79\x39\x8a\x6a\x1c\x48\x4c\xf2\x30\x13\xc3\x71\xe4\x3b\xb5\x01\xdf\x46\x73\x8e\x1a\x26\xd2\x21\x25\x1a\xde\x0d\x6f\x5a\xfb\x13\xc7\x2a\xf7\xf5\xde\xec\xb5\xb2\x78\xb7\x19\x6c\xb0\xdc\x4d\xc5\x48\x5a\xef\xca\x7f\xb1\x9c\x87\xf9\xe2\x16\xb3\x70\x33\x39\x6a\x86\xe8\x86\x83\xe7\xa9\xd6\xcc\x88\xcc\x19\xfd\xf4\xb3\xdf\x65\xce\xf5\x54\x1f\xd9\xbb\x46\xa1\x26\x69\x64\x88\x48\xae\xd9\xb7\xfb\xa9\x85\xe1\xae\x62\xc2\x61\x79\x76\x79\xc5\x68\xa1\xd9\x2e\x44\x47\x53\xbf\x66\xd0\x54\xca\xbf\x8b\x9b\xec\x05\x91\xf6\xce\x07\x6e\x2b\x18\x8d\x66\xb6\x08\xa4\x08\x05\x9b\xea\x76\x9a\xf0\xac\x20\x7b\xcc\xf3\x73\x47\xd6\x50\xc4\x14\x33\x02\xc6\x09\x5b\xe5\xa6\x27\x6b\xe0\xb4\x74\xe8\x47\x85\xcf\x7f\xb8\x8e\xae\x1d\x92\x38\x1f\x77\x18\x65\xde\x23\x02\xee\x45\x46\x6d\xad\x97\x4e\xd4\x81\x19\x23\x79\xff\xe3\x0d\x9c\xbf\x7c\xd9\x0f\xe6\xb4\xb0\x63\x63\x90\x84\x8c\x7b\xc2\x9b\x9c\x3d\x63\x1c\x97\x6a\xb6\x83\xbc\x3f\x7c\x05\xac\xb3\x4a\xce\x30\x94\xcb\x45\x2a\x13\x84\xbc\x81\xe3\xb5\x8f\xae\xed\x1a\xb3\xc0\x8e\x4d\x26\xf6\x45\xb2\x3f\xb5\xef\x6c\xa6\x6c\x9b\x32\x8b\xbf\xe4\xe3\x6d\x96\x9c\x13\x65\x25\xf0\x3e\xff\xf9\x34\x50\xf3\xd3\x57\xdc\x60\x38\x36\x31\xda\x6e\xe6\x38\x4c\x1a\x1d\xa5\xc7\x34\xf3\x81\x1d\x4e\x5f\x4f\x08\x51\xc4\x7f\x5c\xc8\xcc\x1e\x70\x4d\xb1\x34\xcd\xcc\x19\xb0\x54\xdf\x71\x5b\x98\x06\xc7\x86\xfb\xee\x74\x57\x24\xb0\xf5\x4f\x0c\xd2\x24\x0d\x15\xb0\x6c\xb4\xc2\xd1\x00\xe7\x21\x66\xaa\x1b\x37\xc3\x9c\xce\xfa\xa5\xaf\xd4\x4a\xe6\x32\x7f\xe2\x0a\x66\xf7\xd5\xaf\xca\x28\x25\x2f\x37\xe8\xc0\x76\x1e\x15\xa1\xc2\x23\x5e\xff\x7a\x16\xeb\x42\x02\x4b\xc6\x7b\x3f\x7c\x12\x36\x09\x0e\x3c\x3d\xeb\x8a\x7d\x14\xa5\x56\xc7\x82\x97\xcb\xd8\x2b\xc6\x61\xff\xfa\xdd\x1f\x6c\x71\x07\x41\x37\xa3\x23\x06\xa8\x16\x1f\x7e\x95\xc0\xe1\xdb\x42\x71\x3a\x47\xfc\xc7\xbb\xd6\x7a\xfc\xd7\xd1\x04\xe7\x6a\x66\xca\x2c\x1f\xc2\x61\xa4\x1e\x02\x06\xcc\x16\xb0\x52\xe1\xfe\xed\x9f\x33\x3b\x1f\xdc\x32\x66\x5e\x50\x93\x22\xab\x24\xf8\x53\xcc\xbd\xd0\xf4\x5e\x2b\x34\xea\x5f\x5c\xd7\x60\x39\xd7\xf8\xc8\x81\xd3\x3d\x3a\x77\x6a\x4e\x8b\x0a\xb7\x06\xe9\x22\xb3\xa2\x21\x27\xec\x3f\xf2\x22\x28\x4e\xb9\x32\x8d\x27\xf1\xe2\xd4\xc2\x19\x4a\x30\xd7\xa9\x05\x5a\xf2\xaf\x87\x76\xd4\x34\xa0\x3e\x3f\xbc\x72\x43\xb1\x44\x4e\x58\xc0\x6d\x65\xa0\x78\xef\x8f\x6e\x7a\x17\x6d\x09\x7f\xc5\xc4\x0d\xa9\x4c\x38\x4c\xc5\x36\xa3\xee\x1f\x93\xd5\x18\xf6\x5c\x03\x35\xf9\x89\x05\xd4\x5b\xf4\xfc\xc5\x51\xf8\xbc\x0b\x49\x39\xcd\xe3\x4c\x63\xc4\xc4\xfc\x5f\x4c\xf7\x5d\xb5\x5b\x12\x42\x06\xec\x5c\x35\xf9\x02\x18\x26\x75\x4c\x83\x69\xca\x5d\x19\x01\x13\x29\x3f\xbe\x1f\xce\x5d\x91\xea\xd2\x32\x93\x75\xab\xd6\xf7\x5e\xe9\x32\x29\x18\x86\x8e\x60\x0e\xbb\xd9\xe3\x02\xdf\xfd\xe3\xc1\x2c\xda\xcc\xa4\x82\x01\x17\x19\x3e\x5d\xc1\x06\xf2\x73\x33\xeb\x12\xda\xe9\x94\x88\x97\x88\xdd\x11\xda\xe2\x4f\x6e\x87\xb7\x3a\x7e\x70\x04\xdb\x43\xcc\x26\xca\xfd\xcc\x50\x34\x83\xe7\x9c\xc8\x38\x39\xe5\x2f\x0e\xca\x39\x06\xa2\x58\x22\xe3\x93\x37\x04\x3d\x7e\xf9\x4a\x0e\x23\x3b\x23\x73\x74\x3f\x71\x94\xe5\x19\xe6\xa6\xcc\x9c\xa2\xc6\x05\x74\xf9\x08\x78\xbb\x1c\xff\x74\x02\xf2\xff\x9e\xbf\xf2\x61\x46\xc0\x85\x21\x0c\xc3\x31\x5a\x13\x1b\x3b\x15\x84\x65\x3a\xa8\xc0\x2d\xc3\xf9\xe1\x2f\xe0\x18\xf4\x97\x6f\x31\x04\x8b\xcb\x02\x9e\x8a\x77\xcb\x98\xe4\xe6\xd2\x77\xee\xef\xcf\xbf\x9f\x1f\xfc\xf7\xdd\x94\xbd\x66\x4e\x5f\x90\x51\x09\x7a\xcf\x4f\x72\xf3\xb5\x1c\x90\xde\x58\x70\x92\xfe\x4d\xae\x32\xb9\xd1\x60\x01\x2b\x42\xa4\xcf\x87\x29\x6e\x99\x0d\x19\xb0\xcb\xbf\xe7\x77\xc6\x69\xe4\x41\x8b\xd9\x18\xcc\x63\x6a\x93\xa2\x7b\xc4\x85\x02\x26\x1e\x34\x55\x35\x88\x30\x61\xff\xc9\xb6\x3e\xa8\xbd\x42\x7d\xf2\xf7\x29\x20\xf8\x4d\x48\x05\xa4\x88\x7c\xad\x7c\x2e\x5b\x18\xc8\xe5\xff\xe9\x4a\x88\x65\x41\x7d\x52\x24\x0a\x16\xf3\x6f\x99\x6e\x81\xa7\x74\xf2\x17\xf7\x6c\x96\x6a\xe4\xb6\x90\x7a\xfe\xef\xdc\x4e\xc1\xb1\x5f\x73\x58\xb6\x51\x41\x6c\x4d\xf1\x81\xca\x46\xb4\xc6\x15\xfe\xff\x58\x5a\xfc\x82\xe4\x5d\xf2\x4b\x49\xdb\xe2\xb4\xc3\x43\x09\x43\x07\xf9\x32\x51\x61\x8c\x8c\x45\xe6\x7d\xa3\xfc\xdc\x4b\x62\x4f\xe1\xf4\x3f\x8f\x42\xf5\x5e\x3d\x41\x3b\x85\x8f\x3b\x14\xda\x48\xa1\xb9\x1d\xe7\xaa\x8b\x8f\x8e\x05\xc9\x0f\xf2\x73\xd5\x9a\x30\xfd\x9c\x47\x54\x67\x41\x59\x9e\x3c\x93\x43\xea\xf4\xc8\xb2\xa5\x89\xf8\x39\xb8\xc6\x88\x78\x6f\x1f\xba\x2d\xab\x85\x2c\x08\x43\xd3\xbe\xb2\x92\x17\x97\xa7\xe3\x32\x7e\x85\x08\xa9\x2f\x0a\x42\xa7\xa4\x3f\xf2\x32\xc2\x9e\xd6\x30\x26\x5e\x54\x1e\x2d\xd0\xd3\x97\xbe\x20\x93\xbf\xcb\x81\xd2\x44\x27\x32\xc0\xb5\x5b\xb5\x24\x2b\xde\x76\x57\xc9\x10\x2e\x5f\xb9\xe6\x53\x33\x8c\xc2\x14\x3f\x2f\xf1\xb9\x4a\xed\xa7\x7f\x31\xc7\xa0\x2c\xfb\x2a\x01\x88\x91\x7d\x18\x86\x47\x34\x65\x88\xd9\x61\x97\x67\xda\xaa\x6a\x7d\x12\xc4\x0a\x07\x47\xf2\x3f\xf1\x00\x35\x91\x71\x02\x86\xc7\xe2\x89\xd1\x39\xfc\x3f\x2e\x4b\x54\x73\xbd\x2c\x59\x99\x9a\xff\xec\x6c\xd2\xa6\x2b\x31\xaf\x29\x92\x4e\x0d\x25\x39\x49\x61\x5b\xe9\x66\xf0\x0c\x66\x85\x4d\x32\x8b\x26\x56\xdc\x18\xde\x82\x19\xa0\xce\x4e\x82\x51\x03\x46\x41\x80\xdf\x09\x3f\x39\x6c\xa3\x35\xad\x1e\x02\x3e\x73\xe4\xa7\xd9\xd7\x5c\xce\x18\xb4\x86\x6c\x3b\xb2\xf5\x29\xa6\xb6\x57\x25\x32\x28\x1e\x4a\x6e\xb1\x64\x17\xfb\xe3\x77\x29\xde\xa7\x1e\x76\x92\xa5\xe5\x69\xeb\x68\xae\xf9\x9f\x33\xba\xb0\xda\x82\x86\xe5\x72\xe1\x89\xa1\x9f\x74\xc2\x0e\x9b\x9b\x84\xf5\x70\x46\x6c\x53\x88\x86\xba\xd9\xc9\x75\x63\xf5\x74\x75\xb2\xf2\xc6\x21\xec\x25\x45\x01\x47\x6d\x7c\xb0\xed\x01\x9d\xde\xcd\x8f\x06\x1b\x7c\xfd\xf8\x8a\xbb\x1f\x5f\xd6\x72\x9a\xb7\xc2\x40\xdc\x28\xd3\x93\x47\x95\xbe\xf3\xc3\x50\xac\xa6\x60\x1d\xf1\xb8\xd4\x74\xf5\x6e\x34\x3f\xf8\x6f\x1f\x3f\x54\x79\x6c\x1f\x81\x94\x19\xc2\xbe\x61\x6b\x86\x49\x37\xdb\xfc\x2c\xff\xc4\x46\xc2\xe1\x79\x87\x41\x85\xc3\xff\x3b\x67\xf2\xe8\xbc\x0b\xfb\xd5\xbb\x92\xcd\x1e\x17\xab\x63\x02\x15\x30\x52\x15\x95\x5f\xa1\x75\xae\x0a\xd2\x24\x34\x7d\x3b\x97\xb2\xce\xa6\xba\x1f\x20\x30\x51\xa4\x45\x44\x30\x37\x88\xe4\x44\xa6\x4b\x9c\xad\xf9\xbe\x94\xcc\x0c\xf4\xe3\x4f\xb3\x4f\x6f\x10\x4e\x3e\xf2\xad\x2a\xf4\x6b\xc5\x80\xdb\x78\xce\x59\x47\x05\x8f\xe9\x07\xb4\x75\xef\x3b\xa0\x70\x2f\x52\xbd\x0c\x26\x32\xc8\x08\x86\x84\xcd\x04\xc5\xe9\x4e\xb2\xad\x14\x11\x6e\x34\x72\x09\x37\xed\x3f\x99\x67\x2c\xe3\x7c\x01\xe7\x26\x77\x73\xf8\xb2\x12\xdc\x90\x93\x43\xd8\x08\x82\xdc\x91\x90\x4a\x2e\x60\xdf\x95\x24\xd6\xb5\xc4\x5e\x9a\x3a\x18\xde\xa2\x06\x71\xc9\x99\x88\x94\x14\x14\x3e\xba\xc5\xbd\xf2\xa2\xe3\x0d\xed\x3f\x9d\xc1\xd3\x33\xf5\x91\x31\x52\xf4\xc2\x72\xcb\xd6\x79\xf0\xd2\x2d\x37\x61\x94\xc1\x61\xc2\xfa\x24\xb0\xac\xb4\x92\x7e\x87\x7a\x4b\x23\xe7\xfa\x2c\xcd\x21\xce\x67\xa7\x59\x73\xf7\xe5\xee\xc4\x49\xd8\xff\xb7\x2f\x0e\xb9\xb2\x36\xdf\x94\xef\x1e\x62\x51\x80\xfa\xa0\x4c\xd4\x77\xa4\xaa\x4b\xa8\xf0\x0d\x16\xe2\xe4\x18\x5c\x92\xba\x16\xe3\xa6\x26\xba\xae\xec\x21\x1c\x86\xc6\x99\xd7\x3e\xa7\xe6\x8f\x21\x68\x4d\xab\x72\xff\xf4\x81\xbc\xb0\x5f\xed\xae\x4c\x71\x2d\xc3\x28\x84\x7f\x59\x78\xee\x75\x33\xd9\xed\x4d\x13\x9c\xe2\x2e\xf1\xba\x4a\x72\xfb\xbc\x07\x43\x38\x91\x52\xb1\x47\x90\xb4\xe1\xbb\x37\x1c\x1f\x42\x2f\x71\x81\xc1\x21\x39\xa0\x57\xe0\x1b\x30\x81\xf2\xb3\x64\x5c\xe0\xed\xb4\xeb\x39\x71\x4f\xc7\xfd\x81\xab\x8c\xfb\xea\xc5\x18\x0e\x89\x45\xda\x10\x6d\xff\xbe\x40\xc1\xa1\xc4\xe2\x73\xb9\x6f\xbf\x5c\xf2\x46\xc9\xaf\x35\xaf\xeb\x2c\x69\xdc\xd7\x32\xad\x90\xbb\x2b\xdb\x9e\x4b\x55\xb3\x1b\x28\x10\x96\x9f\x7b\xc7\x9c\xd3\x20\x4f\xb4\xc5\x74\x32\x1b\xf1\xf9\xc0\x42\xca\x69\x9d\x66\x7c\xeb\x09\x4b\x25\xd1\x06\xcb\xa7\x90\x9a\x79\x08\x36\x13\xcc\x47\xe2\x5c\xb7\x86\xbf\x3d\xfa\x52\xdb\x4f\xda\x76\xef\xb2\x4e\xda\x46\x15\x06\xae\x13\x4a\xaf\xd0\xbc\xfe\xc3\xcb\xc8\x14\xa9\x1c\x75\xbc\xf7\x3a\xc9\xb7\x1e\x7a\xce\x5b\xce\x6d\x59\xc9\x1d\x20\xb6\x86\x32\x78\x8e\x6c\x92\x84\xfb\xa5\x27\x5c\x4f\xf6\xcf\x17\xcd\x48\xb4\xaa\x61\xe9\x33\x8d\x97\x13\x59\x55\xf9\x2a\x46\xf8\x4d\x9c\x19\xa7\xc4\x56\x7e\x0a\xa7\xfb\xc9\x79\xf5\x8c\xd5\xf1\xde\x93\x30\x05\x0d\xd3\xf6\x40\x95\xcb\x71\x90\x3b\xb0\x94\xf2\x72\x25\x3c\x37\xe5\x38\x65\xb2\x6b\x35\x2e\x3b\x48\x1d\x79\x36\x22\x33\xf7\x88\x92\x6e\x04\x57\x66\x8f\x41\x09\x25\xa7\xa4\x73\x36\x2a\x2b\xee\xe7\xc7\xd6\xf3\xfb\x47\xde\x7f\x19\x8a\x76\xf2\x07\xcd\x1e\x37\x85\xc1\xa4\xf9\x34\x3f\xca\x6b\x51\xf7\xf7\x43\x15\x7e\x1a\x03\x37\x72\x5e\x68\xae\x86\x08\x66\xe4\xa7\x21\xe5\x96\x0e\x56\x66\x23\x04\xd2\xf2\x13\x93\x59\x1e\x37\xc5\x74\x22\xa8\xb5\x9e\x95\x1e\x1b\x73\x44\x4c\x50\x77\xbd\x20\xe5\x98\x8e\x79\x05\xe6\x63\x3c\x06\xf7\x98\xc8\xfc\xe5\xcb\xca\xe4\x85\xaa\x59\xe6\x11\x7b\x7b\x53\x30\x4a\xbf\xc6\x64\xdb\xf2\x3d\x9c\x6e\xde\x95\xf5\xfa\x08\x3f\xb1\xab\xd1\xb0\x97\x93\x44\xf7\xde\x94\x37\x19\xc0\x70\x54\x80\xb3\xac\xf6\x25\xef\x44\x15\x5e\x4f\x71\x83\x19\xe0\x99\xe3\x43\x9b\xe9\x77\x55\xbf\x48\xf4\x64\x7d\x1d\xe0\x28\xde\x7e\x94\x19\x48\xf5\xca\x6d\x84\x40\xfc\xdf\xe7\x14\x0a\xc6\xd0\x93\xca\xf1\xe5\x08\x42\x46\xb0\xda\x53\xd8\x5f\xcf\x0f\x76\x59\x6a\x6b\x2d\x34\xb8\x10\x50\x29\xdf\x84\xee\x12\xea\x08\x46\x2b\x1a\x11\xeb\xa2\x35\xc0\xf1\x7e\x3f\x82\xdd\xf9\xf7\xb8\x60\x07\x25\x6b\x57\xab\x31\xf1\x8f\x4e\x8f\x59\xf6\x50\xe4\x84\xc0\x11\xea\xd7\x47\xc6\x0b\x5c\x36\x94\x4b\xe4\x84\x90\x28\xf5\x2c\x3b\x12\xcd\x32\xcd\x63\x40\xfd\xba\xca\x42\x1b\x7c\x03\xd9\x04\xe0\xce\xe4\x6b\x60\xd2\x42\x64\xd3\x0b\x12\xf1\xd3\x73\x8d\x66\xc0\xfc\xcb\x87\x23\x3d\x03\x7c\xe8\x78\x43\x13\xff\x3b\xfb\x4d\x03\xed\x8d\x69\x2f\xc6\xb7\x53\xba\x55\x11\xb4\x6e\xb3\xc0\xa5\x4c\x74\x3e\x79\xac\x29\xb7\x06\x2a\xfe\x50\xbf\xce\x58\x6c\x81\x46\xc8\xba\x03\xb7\xa6\x19\xf5\x1f\x6e\xf6\x6c\xbd\x29\xb6\x52\xf2\xd3\x17\x88\x61\x93\xd8\xc2\x3b\xda\xd2\xe6\x8d\xbf\x51\x0f\x8c\x8d\xd7\x78\xa1\xd7\x78\xd2\x2f\x85\xd1\x28\xa8\x15\x7c\xb9\x85\x61\x0e\xc0\x5d\xba\xdf\x31\xca\x66\x71\xfa\xe6\x8c\xf1\xfc\xd4\x30\xf6\x8a\xf5\x4e\x1d\xa3\xbc\xb6\x55\xf4\xe9\x2b\x12\x46\xd8\x1e\xe1\xba\x69\x3b\x7d\x3c\x3e\x44\x58\x6d\x4e\xd3\xb1\xf1\x65\xaf\x4c\x0e\xd6\xa9\xce\xbe\xec\xb1\xd3\x13\x55\x0f\x94\x9b\x21\xd1\x69\xe4\xc7\x2f\x9b\x26\xc6\x2c\xb3\x6f\x9c\xe2\x70\xff\xa3\xdb\x85\x46\xc0\x8b\xd3\x85\x2c\x65\x81\x91\xc1\x0d\x00\x3e\x34\x2d\xf0\xa8\x4b\x11\xaa\x65\xf6\xd6\x16\xda\xf8\xcc\x84\x39\xd9\x34\xfd\xf8\x3d\x0c\x97\xa5\xac\xa7\x99\x72\x5b\x38\x74\xea\xcd\x47\xa9\x5c\xe9\x2e\x76\x9c\xf9\x77\x2e\xd9\xa2\x9e\x91\x00\x10\x02\xef\x8c\x85\xf0\x70\xbe\x32\x02\xd8\x9f\x92\xdf\x4a\x18\x2d\xd7\x6a\xda\x46\x54\x16\x88\x29\x22\x50\x81\x81\xf9\x6c\xdc\x46\x0b\x49\xa7\xa0\x28\xf6\x07\xce\x48\xb4\x48\xd2\x4f\x7b\xc5\x42\xad\xde\x9c\x9c\x5a\x41\xa3\xfc\xe7\xbb\xdb\xcf\x1d\xbb\x1e\xae\x8d\x18\x40\x7e\x25\x6c\x72\x48\xd9\xaa\x81\xc4\x5b\xeb\x1a\x5c\x02\xd8\xf4\x23\x2e\x34\xde\xcf\x74\x02\x49\x86\xed\x74\xda\x16\xc7\xa3\xca\xaf\xd2\x2b\x19\x97\x8b\x97\xfb\x67\x9c\x62\x67\x65\x0c\x17\x7c\x37\xcd\xf4\xef\x1e\x61\xcb\x37\x2f\x1d\xc4\xab\xe1\xe7\x1b\x84\x63\xf7\x7e\xd4\x81\x92\xf9\xfe\xab\xac\x57\x2b\x30\xef\x9f\x78\x8a\x69\x58\xe0\xaa\x5d\x08\x2f\x98\xc9\xd9\x8b\xf2\x73\xc4\x2b\x38\x5d\x63\x09\x1f\x0e\x57\xde\xa8\x51\x17\x70\xec\xde\xc0\x00\x59\x92\x9b\xe2\x9f\x57\x06\xc5\xf1\x58\x54\xc1\x21\xd5\xa7\xff\x8b\x4d\x01\x9e\xa1\x3b\x10\x59\x24\xe7\xf5\xdd\xd6\xf1\xfc\xee\xdc\x31\x05\xac\xd8\x66\xf3\x3a\x2f\xe1\x29\x8f\x66\xe4\xba\xdd\xf4\x00\x53\x6f\x1b\x35\xd5\x27\x34\x7f\xca\x96\x27\xfc\xc1\x0a\xf1\x9e\x1a\x91\x9d\xa3\xbc\x54\xe9\x3d\x9b\x32\xc3\x30\xd8\xb4\xef\x3b\xd9\x44\x38\x9c\xd9\xba\x06\x3b\xbf\x8e\x51\x6c\x34\x9f\x37\x10\xb5\x34\x75\xf5\x8f\xca\xed\xf2\x65\x23\x7f\xe2\x5c\xbe\x6f\x90\x9d\xa7\x90\x0a\x46\x8a\x80\x48\xd6\x7d\xd3\xa8\x8b\x18\xd7\x75\xf1\x10\x06\x39\x96\xb6\x79\xf5\xa2\x73\xaf\x6b\xe3\xe4\x30\x53\x5a\xdc\xf0\xfe\x3b\x13\xbc\xbe\xe1\x72\x8f\xe1\x0d\x7a\x40\x1f\x75\xf5\x5e\x7d\x48\x23\xb6\x00\x71\x17\x22\x1d\xed\x0b\x83\x09\xb3\x91\xfc\x28\x46\xed\xbd\x5e\x73\x77\xc0\x27\x8e\x5c\xb2\x76\x7d\x8c\x6a\x58\xbc\xbf\x9c\xf4\x20\x37\xf6\xd2\xaf\x31\xe8\xfd\x80\xe5\x4f\x85\x6e\x16\x79\x6e\x8b\x46\x09\xb5\x35\x8d\xa0\x01\x67\x9a\x39\xba\xc9\x36\x72\x05\xd0\x38\xce\xbf\x38\x5a\xd6\x71\x33\xd4\x47\x11\x9a\x8c\x8e\x50\xe6\x72\x3b\xcc\x95\x13\xd5\x7e\x70\xfd\x38\x8e\xc7\xed\x22\xe4\x0b\xf8\xde\x9c\x88\x4b\x01\x76\xa7\x07\xbb\xb7\xbf\x79\xf4\x05\x9f\x92\xdf\x2c\xf8\x13\xe8\x5e\x35\xb1\x76\x01\xe3\x1b\x2d\x54\x2b\xaf\xe9\x6f\x74\x8a\x2f\xec\xa0\xfa\x01\x82\x68\xde\x3c\x83\xe9\x5c\x97\xdb\xc4\x0e\x17\x7f\x5f\x53\xcf\x32\x3f\xb1\x1c\xfb\x38\xf9\xc8\x55\xad\x09\xfb\xb1\x78\xf8\x79\x2e\x26\xff\xe5\x97\x84\xcb\x7b\x45\xd0\x8e\x32\x74\x97\xac\xf1\x76\xb6\xb1\x79\xcf\x5d\x60\xf9\x7f\x72\x43\x2d\xdf\x03\x52\xa4\x77\x3f\xd6\x23\x5f\x0a\xff\x23\xcb\xf8\x2f\xe7\xc4\xc5\x51\x3f\x8e\xe0\xae\x9a\x17\x70\x69\x97\x3d\xd1\xf1\xcd\xe3\x7b\xec\xe6\xbf\x87\xe6\xfc\xc1\x3f\x79\xbc\x27\xe0\x68\xa5\xa3\xec\x8d\x92\x85\xf5\x48\x06\x8f\x3d\x0d\x34\x5f\x5d\x75\x20\xb3\xf9\x00\x11\x84\xba\x9f\x72\x3b\x8a\x98\x9d\xae\xed\x68\x40\xbe\x91\xee\xfa\xfe\xa3\x37\xd8\x23\xdb\x2c\xb6\xac\xfc\x9b\x23\x9f\x04\x89\xfd\xe6\x04\x97\x66\xf0\x62\x05\x9f\xd2\x17\x4f\xec\x91\x21\xfe\xc7\x27\xbb\xae\x94\x89\xd5\xa6\xf7\x62\x3f\xd7\x04\x8b\x43\x6f\x8f\x15\x8c\x5d\x96\xf3\xb9\x91\xbf\xff\xe2\x0b\x53\x40\x3e\x9c\xde\x30\x2d\x65\xb4\xcf\xab\xc2\x1a\x5f\x9e\x07\x7d\x1a\x12\x68\xb6\xa4\xad\xb2\x76\x43\xb6\xff\x7a\x3a\xab\xbc\x3d\x63\x7a\x72\xd3\x77\x95\xaa\x03\x52\x89\x57\xc0\x54\x57\x6d\xb0\xc5\xff\xc4\x55\x2d\xf3\x30\xe7\x2b\x98\xef\x90\x6b\x65\x35\x12\x26\x26\x22\x11\x0f\xaa\x37\xa7\x94\x3f\x7e\x84\x74\x29\x56\xac\xf0\x65\xbe\xd6\x62\x61\x4e\x4f\xc5\x5f\x01\xe3\x96\x99\xbd\x35\x98\xc3\xbf\xff\x3f\x96\x61\xeb\x46\xf5\x84\x23\x21\xd6\x0e\x92\x14\x51\x84\x2f\xe0\xd4\x21\x0d\xfb\x9f\xf5\xce\x48\x8f\x74\x33\x8b\x62\xdf\xc8\xfb\xe0\x35\xca\x15\x8c\x29\x0c\x77\x03\xe4\x9c\xfb\x81\x0c\xec\x1f\x97\xf9\x9b\x90\x95\xff\xa9\xb4\xf2\x6d\x80\x64\xc5\x13\x2c\xc2\xf5\x8f\xa3\x16\xba\xf4\x2b\x9e\xfb\x9f\xb5\x7e\x14\x80\x67\xac\x87\xc9\xdb\x6c\x5d\xf9\xed\x2c\xad\x93\x3f\x52\x71\x88\x44\x25\x20\xfe\x5f\x6c\xf2\xeb\x19\x2d\x50\xc0\xc1\xd0\x63\xe5\xcf\xbc\x3b\x76\xc4\x2f\x8d\xfc\x83\xdf\xf1\x25\xe5\xb0\xe4\x64\xbf\xe2\xbc\x35\x9a\x7e\x47\xda\x5d\xe9\x83\xd9\x7c\xed\x76\x87\x8a\xff\x17\x07\x9b\xcb\x61\xf6\x9d\xbf\x36\xb2\x75\x55\xee\xfd\x86\x42\x78\x5b\xed\x1b\x30\x55\x75\x41\x68\x23\x3b\xdd\x5f\x1e\x45\xbe\x77\x17\xa5\xf7\x4b\x6b\x66\x28\xb2\x5d\xb2\x5d\xaa\x27\xe3\x29\x74\x43\xc0\x09\xe5\xb6\x8b\xff\x89\x3b\xd9\x31\x77\x50\xf9\xd4\x2a\x11\xa2\x2c\x87\x9e\x2c\x19\xae\xbe\x5d\xc0\x15\x64\x5b\xa8\x9c\xed\x40\xff\xd6\x32\xb1\xe2\x8b\xb1\xef\x2e\x52\x79\x9a\x8a\x03\x62\x2d\x68\xc0\xe4\x00\x5d\xc8\xec\x47\xf4\xfe\x07\x07\x50\x9e\x84\x41\x2a\x5f\x35\xa6\x6d\xce\x7b\xad\x9e\xbf\xf6\xfd\x40\xfe\x2e\xf3\x0c\xfb\x0f\x6f\xc2\x67\x92\xd2\xde\x33\x45\x4e\xc4\x4d\x97\x06\xc3\x46\xaa\x3e\x8e\x61\x53\xa7\x98\x47\xae\x5d\x90\x3f\x0f\xd3\x6d\xc3\x5f\x9c\xe5\xb9\x79\x97\x9d\x28\x5a\x2c\xd8\x88\xfe\x1c\xe1\x4c\xcb\x9f\x12\x66\x98\x5d\x76\x75\x3a\x09\x9c\xff\xf4\xbe\xa3\x11\x85\x3f\x2a\x16\xa8\xcc\xfb\x83\x60\xa8\xe1\x7d\xac\xe6\xde\x27\x4b\x30\x43\x51\x0c\xc3\xd5\x31\x04\xf7\x2f\x37\x95\xd1\xa5\x0f\x15\xf9\x34\xc8\x6c\xf2\x4c\xcb\xbf\x7f\x5b\xdb\x2c\x35\xf1\xd1\xe6\x81\x91\x23\xee\x8a\x16\xea\x10\x05\x8f\x19\x7f\xb0\x63\x83\x28\xfc\xae\x72\x35\x2b\xc7\x2a\xe7\xfa\xa0\xed\x60\x13\x85\x53\x98\x68\x19\x2a\xde\xf6\x0f\xf3\xe9\x5c\x75\x5e\x8c\x5d\x67\x33\x7d\x19\xa7\x6f\xc9\xa5\xfd\x0e\xf7\xae\xbb\x7c\xd4\x54\x58\x48\xae\xf1\xbe\x3b\x0d\x4e\x18\x02\x71\x1d\x15\x77\x2a\x0b\xc8\xeb\xff\x60\x71\x4e\xb2\x87\x11\x47\x24\xf5\xb0\x1e\xf0\xc0\x60\xb1\xf9\xb6\x6a\x6a\xab\x1f\xf6\x73\x53\x95\xe2\x7e\x0d\x22\x5b\x3e\x7d\x51\x1e\xd8\x52\xf0\x43\x6a\x74\xfc\x1a\xa6\x8e\xf7\x47\x07\x46\x8d\xce\xf0\x7d\xe7\x96\xa7\x7c\x4a\xba\x71\xb6\x81\x29\x75\x08\x72\x21\xd2\xf5\x48\x07\xaf\x62\xaa\xc6\x37\x65\x9d\xdd\xad\x7b\x45\x1d\xf6\x05\xb0\x9b\x09\x7f\x78\xff\x38\xb9\xc8\x3f\xa5\xa8\xc9\xc6\x39\x80\x36\xe7\xc3\x34\x64\xb5\x4f\x5b\x70\x9d\xeb\xb1\xe9\x50\x09\x36\x7f\xa1\x38\x18\x79\xde\xdb\x1c\x75\x8a\x83\x61\xb6\x39\xae\xa3\xb3\x53\x8f\xdd\x4c\x30\x3c\xff\xc9\xc1\x25\xa8\x18\xc7\x7f\xb5\xe9\x00\xa7\x9a\xae\xbe\x6b\xb6\xee\x32\xdb\x14\xa6\x8e\xcb\xf4\xf1\xc1\x4e\x2d\x5d\x44\x8c\xfc\x7a\xd8\xa4\x94\x79\x9a\x6d\x2e\x66\x1f\xb4\xad\x8d\x9d\xab\xa2\xa2\x26\xee\xff\xf3\x7b\x60\x5e\x7e\x69\x23\xa0\xcd\xfb\x35\xd1\xa6\x03\xbd\x55\xf8\xfc\xe6\xac\xf3\x47\x24\xe1\x1a\xc8\x7a\xcd\x3c\x0c\x87\xd4\x3e\x8c\xb6\x52\xd1\xa9\x78\x76\x51\x2d\xde\x76\x37\x0e\xaa\x6d\xb8\x0e\x3b\xfe\xe8\x5a\xee\x11\x5a\x0a\x61\xf0\x0a\xe5\xa6\xa2\xb6\xc3\x01\x0e\xc5\x04\x15\xef\x3d\x97\x3f\xee\x90\x28\x8b\x90\xc8\x2d\xb1\xac\xeb\xbc\x1f\x38\x56\x29\x47\x9d\x12\xb1\x3b\x8f\x7b\x46\xb6\xdf\x80\xfb\xa7\xf3\xd9\x46\x71\x5d\x71\x2f\xbf\x07\xac\x89\xfb\x1b\xd3\xf2\xce\xfd\x67\x2f\x9f\x62\x5c\x12\xae\x83\x10\xcd\xd6\x52\x5e\xa7\x19\xcc\xd2\xe6\xc1\x0d\x42\xd5\xcf\x3f\x4c\x5b\xe1\xaf\xbe\xb0\x09\xf8\x62\x5f\x53\xfa\xdf\xde\x25\x4d\xd9\x78\x91\x9e\x16\xfe\x5a\x8d\x6b\x6d\x83\xc0\xbe\x30\x8e\x18\x05\x58\x25\xb9\x2e\xa7\xdd\x2b\x63\xe4\x32\xbb\x58\x4b\xa8\xc0\x70\x18\x0f\x96\x47\x75\x30\x3d\x7d\x29\x68\xf4\x6e\xf9\x94\x6f\x47\x71\xf8\x1f\x8e\x50\x8e\xfd\x8a\x98\xed\x7a\xad\x2d\xba\x11\x7e\xa4\x56\xa4\x6a\x23\x71\x76\x6b\xfe\xd6\x89\xcd\x4b\xc9\x33\x06\x41\x06\x97\x9f\xa4\xe2\x1c\xaf\xf0\x9b\x42\xee\x81\x74\x5a\xfa\x0e\x86\xc7\x28\xcd\x00\x59\x83\xf2\x54\x6f\xd3\xaa\x6b\xd8\xf6\x7f\xb1\xee\x5a\xbf\x28\x2d\x59\x9f\x86\xe1\x33\x1c\xb4\xd3\x3c\x4f\x03\xed\x13\x60\xa6\x7e\x25\xf3\x35\x4b\x0d\x6e\xfa\xc1\x9d\xe9\x4b\x9e\x8d\xe7\x72\x4f\x2e\xe0\x10\xc0\x73\x60\x5e\x57\xe9\xac\xc7\x14\x3f\x38\x2d\xa3\xdd\x6a\xce\x50\x7a\xde\xb9\xa5\x00\x9b\x47\x11\x76\x5d\xe0\x74\x09\x62\x88\xf5\x9c\xf6\xb6\x8a\x25\x72\x3b\xc2\x11\x77\x57\x1f\xaa\x6e\x0b\xd5\xc7\x59\x66\xc8\x53\xa2\xe6\x93\xdc\x4e\x2b\xa6\x0a\x25\x38\x74\x27\x29\x06\xb7\xd9\x57\xfe\x61\xd3\xdf\x3e\x81\x8e\x06\x48\x85\x7e\x2d\x34\xf0\x12\x51\x46\xff\x9d\x33\x56\x53\x5d\xcd\xd5\x35\x9b\x52\xcc\x06\x6d\x74\x82\xe4\x63\x90\x6a\xf0\xb2\xc0\x35\x47\xa6\x3c\x9c\xaa\x77\xf6\xf7\x9e\xf5\x3c\x41\x4c\xb9\x87\x5a\xba\x0d\xcc\x73\x27\x3c\x9b\xd7\x54\x22\x4d\x75\xbf\x73\xfd\x30\xd0\x37\xcf\x9d\x59\xb0\xca\x59\x8a\x6e\x66\x48\x53\xd5\x12\x54\xc9\x73\x5b\x8b\x31\xfa\xa3\x53\x5b\xe4\xd5\x3f\x23\xaa\x3a\x94\x45\x40\x20\x0a\x04\xbc\xa4\xc9\xfe\x89\x94\xaa\x6a\x41\xdf\x2f\x1c\x12\xbe\xb2\xd0\xf6\x0b\x54\x4d\x6f\xd7\x15\x8e\x03\xbd\x93\xe1\x25\x36\xad\x34\x7a\x16\x7a\x6b\x08\xa3\x07\x9f\x77\x65\x73\x24\x6d\xb1\xe7\xdd\xf2\x2f\x89\x09\xd7\xea\xb1\xef\xf3\xf7\xde\x38\xc3\x32\x9f\x36\x50\xda\x9e\xea\x9d\x96\x78\x3a\x28\x6a\x92\x76\x9e\xf0\x17\x80\x90\x8c\x70\xd5\x04\xb6\x7c\xeb\x66\x9c\x05\x2b\xfb\x6f\xb6\xb7\x22\x33\xbb\xac\x24\x40\x92\xe4\xec\xdd\x2b\x79\xc5\xf2\xc2\x56\x0b\x9b\xca\x3d\x86\x71\xc8\x16\xac\xe7\x58\xed\xf3\x27\x91\xc6\x70\x8a\xec\x2a\x35\x52\xa4\xbd\x69\xe4\x2f\x8e\x6a\xb8\xad\x6b\x89\xc9\x5e\x16\x4c\x1e\x02\xc1\xc9\x4b\xf9\xa9\xc9\x9a\x27\x38\x45\xea\xb2\x63\xf8\x18\x12\xc7\xa9\x37\x3e\x76\x9a\x0e\x57\x9f\x4b\xd6\xb4\x69\xdd\xe5\xab\x5c\x1c\x14\x2b\xfe\x0c\xca\x24\x6d\xf9\x6a\xd1\xa2\xb8\xd7\x8a\xc7\x5a\xa4\x1d\x18\x71\xbd\xd1\xda\x6a\xca\xdc\x74\x22\x33\x87\x16\xbd\x76\x52\xe9\xc7\x23\x2d\x47\xe8\x41\xe2\x26\x3d\xee\xd8\x38\x12\xfe\x07\xd5\xdd\xcb\xf2\x1e\xd9\xa2\xb2\xea\x5d\xdc\x7b\x9a\x69\x21\x89\xca\xdd\x8a\x02\xcd\xfe\x5c\xa3\x63\x9e\xfe\x5f\x5d\xc1\x28\x72\x22\xe9\x4c\x6c\xaa\x7b\x8e\x89\x33\x2d\x1b\xcc\xeb\x9f\xd7\xa7\xc4\x41\x0b\x47\x0b\xe4\xce\xbd\xc2\xe1\x78\x0f\x47\x53\x11\xdc\x9f\x7b\x13\x46\xbb\xd6\x94\x6d\x25\xad\x45\xcb\x53\x8e\xb7\x7d\x88\x92\x29\xb2\xb1\x8c\x23\x31\x07\xa5\x92\x73\x7d\x38\x15\x99\xb2\x84\x26\xa7\x4e\xe3\xef\x72\x9c\x13\x6f\x73\x33\xd0\xb3\x39\x1a\xb2\xed\xae\x26\x7f\xd6\xd3\xdc\x9a\x8f\xe4\x20\x23\xf4\x24\x61\x7e\x3b\x65\xd5\x00\x5f\x3a\x23\x24\xf4\x8c\xab\x70\x3d\xc4\x8d\x8b\x55\x53\xf8\x15\x21\x25\xbb\xeb\x62\x56\xfb\xee\xa4\x35\x06\x8f\xb9\xd9\x9f\x5c\xd0\xe2\x77\x7d\xda\x90\xdb\xdc\xa5\x51\x7a\xfe\x3b\xdc\x7f\x27\xeb\x54\xd8\xda\x08\xd3\xd1\x3a\x81\x94\x18\x48\xda\x63\xdd\x11\x85\x30\x7d\x4d\x30\xd8\x25\xfc\x39\x2f\x8b\xbd\x74\x0e\x81\xcc\x7d\xeb\x3b\x46\xf9\x25\x1b\xc9\x2c\x7e\x86\x50\x4f\x91\x32\x48\x79\x3b\xeb\x55\xa3\x31\x3f\x09\xd4\xc1\xdd\xe3\xe5\xea\x1b\x66\x5b\x58\xe8\x7b\x49\x6a\xed\xd9\xb0\x6d\xa9\xc8\xa0\xfe\xb7\xae\x92\x11\xf8\x33\x9b\x3f\x6e\xc6\x57\x9a\x43\x05\x9d\x67\x2a\x2b\x81\x1f\xe5\x6c\xda\xde\xa9\x35\x88\x7c\x81\xd1\xd9\xae\x42\x8c\x46\xf8\x73\x3e\x16\xad\x74\xf6\x6e\xae\x27\xa6\xd3\x69\x67\x1e\x15\x19\x1b\xe3\xd7\x2d\xc9\x02\xea\x34\xff\x89\x97\xb8\x96\x4a\x64\x12\xa0\x51\xa1\xf1\x08\x71\x18\xf8\x14\x78\xa2\xff\x8b\x21\x30\x1c\x73\x6a\xbc\xe0\x7d\x72\x87\x88\xfd\x0e\x1f\x21\xb5\xd9\x58\x11\x0f\x4f\x19\xed\x6d\x8f\x00\x23\xe4\x40\x0f\x22\x47\x66\x48\x5a\x42\x4d\xad\x08\xeb\x89\x9c\xe7\x08\xb7\xa1\x5b\x81\x09\x8f\x59\xb8\x94\x53\xc2\x2e\xc9\x19\x2f\x89\x54\x8e\x4a\x9a\x19\x93\xc0\xb3\x05\x9e\xd9\x42\xc8\xb1\x35\xe7\xaf\x6f\xc2\x28\x1c\xd6\x99\x4a\x2c\x78\xbe\x35\x29\x7c\xf8\x1d\x56\xd3\x5d\x43\x8f\x3e\x48\x08\x88\x1f\xba\xf6\x18\x19\x6b\x28\x41\x5a\x4e\xa0\x72\x6e\xb5\xff\x64\x9b\xe9\x4a\x5f\x18\x59\x6f\xc0\x7e\x01\x7c\xc9\x22\x5c\x71\x50\x89\xb9\x10\xf3\x93\xa6\xba\x94\x69\xf3\xa6\xf4\xbf\xec\x3d\x76\x38\x99\xdd\x31\xcc\xc2\xf0\x78\xf1\xf7\x28\x29\x8d\x4e\x74\x6e\xff\x35\xdc\xb0\x23\xf3\x34\x37\x05\x14\xa1\x77\x3a\x5e\x69\x74\x66\xca\xd7\xb6\x80\xb5\xbc\x46\x0e\x92\x4f\x3b\x5e\x81\xf8\xb9\x6d\x0f\x98\x81\x31\xcb\xed\x14\x36\xb7\x0c\x3e\xe4\x74\xac\x3e\x17\xf5\xb9\xeb\x10\xa0\x3b\xc9\xc8\x92\x5d\xb8\x3b\xf0\x6d\x49\x95\x65\xa7\x99\x96\x9c\xce\x36\x58\x85\x85\x9f\xd3\x7f\x09\x94\x79\x18\xd3\x12\x2e\xf6\xef\x46\xca\xc2\x2d\xd9\xee\x0c\xa5\x53\xfa\x72\xa9\xdf\x6c\xd9\x1e\x72\x2d\x64\x8d\x28\x64\x27\xb0\x99\x7f\x29\xc6\xf6\xdc\x92\xce\x30\xe7\x06\xe3\x6a\xe1\x3e\x5a\xf6\x11\x26\x5a\x8c\x5e\xde\xb4\x13\x84\x75\x0c\xb6\x35\xb2\x78\x28\xf9\xe4\x69\x02\xef\x60\x39\x40\x91\x3b\x94\xf3\x58\xcb\x34\xa0\xad\xac\x37\xca\x26\xb5\x84\x6f\x49\x6e\xec\x59\x20\x16\x7e\x74\x08\x07\xa1\xbe\xd5\x22\x5e\xcc\x0e\xfa\x1c\x72\x33\x9c\x6d\x42\x5e\xd2\xe3\x91\xaa\x2e\x0e\x17\x82\x13\xf3\xe1\x49\xb6\x80\xed\x79\xf9\x78\x5c\xc0\xf7\x05\x09\x79\xb3\xd5\xc1\x64\x38\xb8\x73\xd5\x68\x45\xa2\x82\x6f\x8b\x10\xa0\xb2\xaa\x07\x75\x2c\x5a\xce\xfc\x9c\x4e\x72\x48\x96\xa1\x9c\x05\x9a\x1c\xc3\x74\x79\x4d\xb5\xb5\xd4\x1d\x39\xd3\x07\xf3\x3b\x0c\x67\xac\xff\x95\xab\x8a\x1d\x4c\x4f\x51\x7b\x5d\xb7\xd3\xc1\xe4\x8f\xfd\x79\xf3\x05\x33\xeb\xce\x32\x0b\x3a\x23\xe7\xea\xbd\xaa\x9c\xfc\xca\x02\x0a\xd9\xd7\xcb\xaa\x91\xba\xae\x30\xb0\x87\xc5\xd4\xcf\xa2\xac\xc0\x26\x97\x76\x00\x4d\x58\x9f\x23\x43\xcc\x55\xad\xc1\xd4\xde\x3b\xdf\xd6\xf7\x61\x3d\xc4\x13\x78\x7c\x25\xfe\x35\x67\xf4\xff\xe6\x14\x07\x23\x6d\x9c\x56\xa1\x86\xde\x18\xd0\x0e\xc2\x8b\x68\xc7\xc7\x91\xa8\x5a\xb2\x96\x71\x10\xa2\x6b\x5a\xa9\x61\xa0\x06\x69\xa0\x1f\x32\x5d\xf5\xc7\x61\x45\x20\x44\x83\x04\x07\x2d\xd1\xf2\x2d\xa0\x8e\x06\x66\x83\x55\x34\x17\x26\x3e\x7e\xb6\x84\x9a\xeb\xeb\xd5\x82\x6b\x46\x41\xa8\xf6\x25\x70\x6b\xcf\x79\xea\x95\x44\x50\x63\x5f\xd8\xdf\xad\xbe\x8d\x63\x77\x5c\xa5\x77\xa0\x3a\x1a\x94\xc7\xfd\xf8\x3e\x4f\xca\xe6\x74\x52\xf5\x87\x8a\x1b\xfc\xb3\x1e\xa8\x19\xf8\x68\xd7\x39\x8a\xd3\x11\xb1\x74\xbd\x04\x2e\xb8\xcc\x16\x66\x1b\x1c\xad\x9c\x22\x6e\x39\xb2\x5d\xa5\x1c\xa9\xc7\x70\xd6\x78\xb5\x14\x9b\xcc\x10\xbe\x2a\x8d\x70\x94\xda\x6f\xb4\x3a\x69\x8a\x85\xc5\x76\x88\x33\x25\x92\xba\xcd\xae\x66\xd4\x65\xbe\xe2\x60\x4d\x5d\x74\x7f\x73\xab\x8c\xa3\xdf\x50\xd4\xa1\x8f\xa2\x8e\x72\x5a\x8e\xfd\x11\x50\x90\x94\x40\xfb\x03\x66\xf8\x4e\x4d\xc7\xb6\x22\x1b\x4e\xa8\x84\x1b\x24\xfd\xa1\x86\x43\x8d\xe6\x79\xfd\x1c\xa8\xf9\x46\x38\x73\x89\x77\x35\xc5\xd1\x79\x2f\xdc\xec\xb2\xac\x20\x64\xbc\x53\xe6\xdf\x36\x2a\xf3\x89\x83\xc7\x58\xe1\xbc\xc6\xe7\xf6\x9e\x23\xfe\x9d\x69\x86\x71\x31\x7e\x23\x78\xf6\xf5\x55\x3b\xb5\x54\x61\xf2\xd2\x2d\x86\xce\xd0\x70\x5a\x89\xbb\xf2\x17\xcf\x96\x50\x5d\x4c\x6b\xe9\xef\x5e\x38\x07\xa8\x20\x20\x25\xe7\xb1\x78\x8d\x39\x1d\x22\xd0\x0a\x1f\x27\x8a\x96\x05\xc6\x35\xa1\x3b\xd5\x83\xc9\x52\xa0\xf9\x79\x83\x65\x4a\xe4\x8d\x63\xf8\x2b\x62\x1c\x8f\x01\xff\xd4\x2b\x32\x0c\xa7\x5d\xa3\xca\x68\x8f\xd7\x18\xd7\xe3\x1d\x6d\x3f\x0a\xfe\x5a\xfa\x9a\x81\x97\xed\x71\x56\x80\x98\x45\x60\x39\xee\xe0\x83\xf2\xb2\xb3\x8a\xc4\x00\x99\x54\xf4\x6a\x04\x00\xcf\x19\x02\xd8\xa0\x79\xec\xe6\x37\x58\x38\x95\x80\x8b\x22\xcd\xb0\xeb\xa5\x02\x83\x4b\x9c\x65\x61\xea\xf6\xc7\xc0\x0b\x89\x9e\x34\x62\xaa\xa6\x0c\xbe\x09\x77\x65\xd1\xa4\x55\xad\xb7\x86\xc6\x84\xeb\x68\x55\xfd\x7f\x5c\xbd\xc5\xb2\xec\xca\xce\x35\xfa\x40\x6e\x98\xa9\x69\x66\x66\xf7\x5c\x66\x66\x7c\xfa\x1b\x6b\xed\xfd\x9d\x73\xfe\x1b\xb3\x37\x23\x5c\x95\x95\x29\x69\x8c\xa1\x94\x25\xad\xbb\x7d\xce\x78\xa3\xd6\x00\xcd\x6b\xa2\xc8\xa9\xf8\x7e\xe2\xa1\x3e\x8c\x42\xdb\x3f\x26\x15\x47\xa4\xc0\x4f\x65\x87\xd6\x21\x58\xc7\xa0\x34\xe9\x81\x57\x07\x63\x39\xcc\x45\x70\x0a\x85\xa3\xfe\x7b\x5e\x35\x53\xef\x6b\x58\xab\xdc\x3d\x71\x86\xf2\xb9\x99\xd0\x01\x14\xb1\x04\x6b\x2f\x66\x66\xaa\xf4\x59\x09\xc7\xd2\xeb\x2e\x9f\x94\xf8\xf7\xc7\xb9\x15\x59\xc2\x07\x7a\xd2\x37\x40\x86\x6f\x65\x52\x7f\xf8\x85\xcc\xe0\xf2\x6f\x58\x8f\xe1\xf4\xaa\x3a\x65\xdf\x49\x83\x22\x8e\xc6\x09\x29\xb7\x34\x83\xc8\x1c\x7b\xf9\x4f\xf9\x08\xc3\xf0\x22\x10\x0f\x5a\xf0\x46\xae\x20\xf3\x2a\xef\x35\x99\xed\x82\x0e\x72\x03\xdf\xb5\xe9\xd0\xd0\x7f\x13\x3f\x03\x87\x68\xea\x53\x51\x07\x6c\x1d\x89\xd7\x4c\xe6\x83\x2a\x28\x2e\x37\x17\xfc\x56\x70\x7d\x9e\xd4\x93\x14\x65\xa1\xb7\x86\xde\xec\x2c\x58\x13\x4c\xf5\xca\x21\x7c\xd2\xa0\xe5\xff\x05\x20\x86\x11\x3c\xb6\x11\x9a\xd1\x33\xe3\x96\x72\xda\xd4\x97\x7e\xce\x44\xc4\x67\x59\xa9\xbf\xa8\x4a\x27\x93\x5d\x7a\x63\x98\x7a\x14\x10\xef\xd3\x24\x43\xc3\x76\xcb\x29\x80\xcf\x82\x70\xa6\x94\x72\x70\x0d\x7f\xfa\x14\x7f\x1f\x82\x6f\x3a\x44\x7b\x22\x96\x91\x3d\xb6\xfa\x2f\x46\x2a\x0c\xf6\x87\x0f\xa4\x77\xf4\x58\x48\xa9\x3f\x9c\x71\xc5\x9f\xcf\xdb\xa7\x69\xb6\xe4\x44\x4f\x5c\x9b\xe2\xa1\x88\x93\x84\x0e\x11\x57\x88\x5f\x25\x79\x4e\x34\x91\x4a\x33\x2e\x73\xce\xd8\xab\x4f\x33\xe8\x2f\x6f\xf1\x3e\x97\xea\xf9\x54\x54\xb5\x5c\xff\x8f\x3b\xf3\xad\xa1\x5e\xa6\xa9\x44\xd5\x58\x8e\x66\x1a\x8e\xdd\x9d\xf2\x59\x15\xb1\x33\x32\xde\xaf\x5b\x50\x5d\x4f\x84\xc0\xf6\x6a\x90\xd4\xc3\x90\x04\x8d\xd5\x47\x57\xbf\x1f\x6a\xd4\x60\xcf\xd5\x7b\x39\xfe\x1e\x9c\xe9\xb5\x54\x1a\x8e\x42\x33\x0c\x88\xf8\x52\x87\xd1\xb7\xda\x62\x0e\x45\xb9\xf4\xff\xd8\x32\x63\x8d\xab\x6a\xa4\x8d\xdd\xf6\x66\xb2\x8b\x93\xb9\x8a\x18\x2d\xbb\x7c\xc5\xab\x4c\xc7\x65\x5b\xa8\x25\x19\xd5\xfe\xf8\xf4\x47\x1b\x28\x52\xcc\x60\x4c\x3c\xe8\x7c\xbb\x9f\x7d\x02\x4b\x51\xb7\x3c\x84\xae\x76\x4c\x00\xe1\x3b\x06\x6e\xd9\xde\x7e\xb7\x89\xce\xca\x02\x7d\xc1\x8d\x13\xdb\x9d\xca\x1f\x33\xfa\x1f\x5f\xe5\x5d\xdc\x6c\x0e\x4e\xd0\x09\x69\xad\xc7\xa2\xd2\x5c\xd5\x1c\x7e\xdf\x40\x2c\xa1\xb5\x42\xd1\x39\x08\x5e\x36\x38\x84\xec\x4e\xa4\x40\x77\x3d\xbd\x83\x8e\x46\x5b\x21\x09\x6d\x8f\x2c\xd1\xe6\x3b\x6a\xfd\xe0\xa9\xbf\x68\x92\xa4\xe0\x52\x20\x1c\x2a\xe4\xdb\x73\xc2\xff\xb5\x2f\x53\xa8\xf5\x54\x8f\x36\x36\x51\x71\x2f\x30\xcb\x0d\xce\xf5\xb6\xb2\x74\xbb\x3f\x84\x5f\xf2\xc1\x70\xaf\xd7\x27\xb7\x16\xa8\x4c\x97\x53\x80\x98\xbf\x81\xae\x26\x10\xb2\xa3\x9f\x2f\x95\x27\x2c\x94\xe5\xd7\xef\xd7\x60\x2d\x90\x45\x52\x39\xb4\x84\xce\x0a\xe0\xcf\x1f\x60\xc7\xf0\xff\x68\x0c\x96\x31\xb9\xac\x0b\xbc\x3f\xf1\x8f\x5c\x56\x1b\x78\x09\xd5\xfb\x90\xec\xc9\xb6\x30\x1b\x42\x61\x3e\xc2\xf6\xd3\xa5\x19\x9e\x60\xab\xb7\xf2\xf4\xdd\xd0\x26\xa4\x3b\xaa\xea\x7e\x55\x81\xcd\x27\xdd\x48\x46\xda\x1b\xfd\x72\x13\x5c\x90\xa4\xf8\x15\x2a\x0b\xa2\x59\x1d\xb3\x9f\xca\xac\x40\x35\xf9\x5f\xae\xcf\x31\xe3\x79\x23\x61\x4a\x5b\x1e\xab\x16\x4b\x46\xfb\x2b\xca\xbe\xa4\x69\x98\x83\x91\x1e\xcb\x38\x13\xc0\x03\x54\xa8\x89\xa2\x45\x43\xdb\x17\x0d\x56\x17\x82\xfc\xd1\x4d\x8d\x6a\x6e\x5c\x98\xa8\xef\x00\x71\x79\x94\x5c\xb7\xe2\xc8\x58\x0e\xd5\xe8\xff\xf3\xd9\xaa\x50\x79\x7d\x90\x75\xe1\x3a\x04\xc2\xf1\x3e\x76\x37\xcc\x5e\x89\x24\x67\x48\xa1\xc8\x94\xd9\x0f\x60\x3f\x79\xf3\xc4\x24\xb2\x2a\xe4\xfe\xd7\x0f\x73\xbd\xcb\x13\x5a\xd5\x0a\x86\xd5\x8c\x9d\x0a\xdb\xe1\xfc\x2d\x2c\x5b\x0b\x5e\xaa\x60\xae\xb3\x2c\xec\x9d\x67\xff\x71\x43\xd1\x3c\xfd\x1a\xd3\x14\xc2\x89\xfb\xd6\x3d\xc2\xd5\x83\x9a\x1d\xee\x4d\x5d\xd9\x11\xa0\xb2\xd4\xad\x24\x8f\x95\x28\x5b\x60\x53\xa5\x44\x50\x78\xba\x48\x3f\x88\x63\x1e\x76\x34\x9b\xbe\xc6\x4b\x8c\x81\xea\xeb\xbf\x38\xd7\x0a\xe3\x12\x5a\x1d\x4c\x68\x48\xec\x5f\x2e\x21\x87\x6a\x66\x78\xac\x0a\x8d\xbf\x03\xa1\xc5\x40\x50\xdc\xda\x30\xbb\xc9\xdf\x42\x6d\x29\xa4\x59\xf8\xc9\x8d\xb1\x1c\x06\x98\xd3\x4c\xad\xfa\x03\x5e\x26\x35\xa7\xb2\xc8\x7f\x31\x9b\x61\x7a\x4f\x14\xfb\x3e\x99\xdb\x4d\x6d\xb3\xd8\xda\x0b\x7e\x2d\x9c\x55\xc0\x70\xca\xdc\xcd\xc6\x29\xda\x3a\x54\xfb\x23\x05\xd2\x97\x65\xde\x49\xfd\x72\x9b\x93\x4d\xfb\xce\x5d\xe6\xff\x1c\x89\x65\x62\xa1\x75\x17\x56\xfa\x90\xdc\x55\x8e\x3c\x45\xa3\xae\x99\x8e\x28\xa2\xfd\xb5\x70\x12\x79\x00\x3a\xdb\x21\xa6\x50\x5b\x1c\xf6\xf3\xea\x5e\x6b\x0c\x76\x73\x43\x37\xf6\xf8\xff\xe1\xdd\x0a\xaf\x7d\x48\xe2\x12\x72\x34\xb2\x69\x38\x7e\x9c\x17\x95\x18\xa1\x7a\xab\xef\x64\x5f\xc0\x83\x1e\xae\xf4\xc3\x59\xc9\x6f\x42\x86\x34\xd2\xb7\x26\x55\x5a\x8a\xc0\x10\xce\xf4\x5f\x9d\xf5\x28\x85\xe0\x85\xeb\x8d\x64\xcf\xbc\x34\x33\x08\x50\x6c\x63\xaa\xa3\xa1\x1b\x7b\xed\xda\xa2\xa3\x2d\x21\x21\x87\x73\xb6\x28\x12\x75\x89\xb7\xc0\x14\x8a\xfb\x3f\xba\xa6\xb6\xe7\xbc\xe3\x21\xc9\xb1\xf4\x3f\xfb\x67\xae\x42\x52\x61\x7f\xf8\x76\x0d\x93\x15\x88\x12\xd9\xd2\xc2\xa3\x01\x28\xbe\x8d\x5f\xa6\x37\x88\x4a\x12\xf4\xd9\xfd\x31\x78\xb1\x7e\x50\x43\x7a\x42\x7d\xef\xff\xe1\x80\xfa\x5b\xc9\x5f\xc7\x26\x66\x7b\x14\xaa\x30\x65\x7b\x9e\x56\x36\x9b\x6d\x4b\x4c\x71\x30\xa2\x3c\x0a\xb1\x6f\xdc\x9c\x36\xb9\x96\xb2\xc4\x5e\x50\x27\x06\x4b\xea\x6d\x2a\xfe\xd7\x18\xff\xc1\x27\xbb\x99\xdb\x5d\xcd\x9c\xb6\xff\xa4\xfa\x79\x47\xe7\x79\x04\xe6\xe0\x21\x14\x5a\xcf\xfc\xe8\x8d\xd5\x60\x2f\x67\x11\x93\x4f\x49\xd3\xb4\x7d\x84\x39\xdd\x9a\x96\xa5\x15\xff\xdf\x77\x94\xfe\x4e\x47\x16\xa1\x36\x72\x1e\x5e\xb2\xe0\xa8\x61\xe4\x3c\x9d\xcc\xe5\x6c\x36\x75\x7d\x22\x0e\x59\xc9\x16\xab\x7b\x2f\x7d\xde\xfe\x7d\xb5\xf9\x52\xdf\xfc\x61\x64\xcf\xcc\xd5\xee\x3f\x44\x9a\x65\x94\xd3\x1f\xf0\x95\xc3\x1a\xde\x4f\x7f\x7e\x62\x74\x65\xa3\xf4\xe7\x4d\x13\x04\x1b\x68\x83\xfc\x8b\x63\x77\x3d\xc2\x75\x72\x60\x6f\x78\xa5\x0c\xde\xb9\x57\xb7\x04\x2e\xbb\xf7\xbc\xf9\xbf\x4f\x51\x19\x5f\xdf\xa7\x6c\xa7\x71\xa7\x3c\xc2\x55\x54\x25\x8b\x93\x6c\x97\x38\xc3\xc7\x12\x14\xbf\x48\xfb\x00\x12\x6a\x69\x2a\x56\x5f\x1d\x53\xc0\x56\x04\x9e\xb8\xbb\x7f\xdf\xdd\xfb\xe3\x4b\x6b\xc0\x78\xae\xa5\x2a\x41\xff\x3e\x18\x81\x4c\xcc\xd0\xef\xf0\x08\x47\x2b\xec\xad\x81\x33\x0b\xb5\x34\xd4\x9e\xa7\xcc\x6d\x23\xdb\xeb\xb2\x38\xfe\x66\x27\x89\xf3\x5f\x48\xdc\xfd\xe6\xd5\xc2\x45\x9a\x24\x87\x9f\xaf\xb4\xe3\x32\x99\xcb\x42\x77\x45\xcd\x2f\x67\x92\xb6\x0e\x1e\x69\x86\xb4\xc6\x61\xdf\xfe\x46\x88\xef\x1d\xd8\x9c\x2d\x94\xf4\xbf\xf6\xc1\x39\x1a\xf3\xf1\x38\xc7\xc6\x1a\x3b\xbc\x67\xfe\xec\x66\x2b\x58\x6d\x92\x7e\xce\x3c\x46\x23\x6e\xf1\xe8\x5a\x79\x58\xec\xb7\x56\x2b\x2a\xbf\xff\xe1\x19\x0e\xa3\x84\x38\xbf\x3b\xac\x32\x29\x4e\x98\xb8\xc6\xac\x72\x8a\x9f\xa7\x5d\xd2\xf2\xa2\xc9\x40\x53\x49\x33\xb9\x1b\xfe\xff\x9e\xd1\x07\xbc\x8c\x5e\x5e\x31\xb0\x45\xfd\xdc\x44\xe4\x1a\x8d\x4f\x7b\x6e\xbd\xc2\x7b\xd5\xc6\xe6\xf6\x7b\xfc\x4c\x6e\xcb\x50\xf9\xb1\x37\x81\xff\x38\x34\xab\x29\xcb\x39\x50\x3a\x27\xda\x66\x9a\x0e\x3f\x3f\xd9\xb0\x9a\x49\xeb\xd7\x57\x2f\xf3\xce\x1f\x4e\x1e\xda\x7a\xcd\x39\x46\xeb\x2d\xe0\x7f\x72\x07\xba\xa0\x71\xb8\xc8\x78\x3f\x39\x97\xf9\x43\x54\x1c\x83\x91\x82\x68\x08\x9a\xde\x64\x77\xa7\x69\x4a\xf7\x2d\x3d\xd2\x0a\x7a\x9e\xb8\x89\xfc\x3f\x7e\xab\xaa\x3f\x33\x1b\xa2\x25\x54\x1a\x7e\x6d\x3a\xa8\xdc\xc2\xac\xf3\x1b\x86\x6d\xf0\xdf\x4f\x4c\x83\x28\x18\x1b\x66\xcc\x81\xa8\x59\x18\xb6\x67\xff\x77\x9d\xa7\x60\x56\xf5\x72\x77\xba\x31\x65\x24\x1f\x4b\x4c\x27\xb8\x6e\x28\x61\x16\xdc\x02\x13\xb9\x73\x56\x86\x19\xb5\x81\x61\x3d\xc7\xfc\x87\xda\xf4\xd1\x20\x36\x4c\xa2\x39\xc2\xd6\xe3\x67\xd6\xee\x4c\x33\x18\x5b\x98\xa4\x5d\xf0\x13\x94\x6a\x80\xac\x15\x52\xfb\xa4\x34\x6a\x83\x56\xfe\xef\x21\x8f\x6f\x8f\x70\xb4\xe0\x88\xe5\x64\x95\x37\xb2\x2e\x9a\x61\xed\x38\x98\x66\xb3\x7f\x1b\xaf\xa5\xbc\x2c\x2a\xfb\xa2\xb7\x4a\xed\xb0\x46\x6d\xff\x17\x23\x54\xc6\xf0\xb4\xa4\x1f\x83\x7b\xdc\xe9\x73\x6f\x19\xb3\xb7\x55\xa5\xa7\x40\xf5\x0d\x9c\x9a\x1c\xa3\x56\xbb\x87\x90\xed\x79\xe9\x7f\x74\x36\xdb\xbf\x72\x4e\xa4\x56\xdb\x0f\xef\xdd\x7b\xfe\xea\x18\x89\xb7\xcf\xa1\x33\xeb\x52\xf2\x61\x0b\x03\x95\x09\x46\x6d\xe6\x28\x77\x8a\xfc\x3f\x8e\xea\xf0\x7e\x28\x88\x84\xa9\xa5\xba\x98\xe9\x6e\x26\x3a\x0a\x43\x38\xb6\x77\x47\x3b\xac\x2d\x2e\xfb\x7a\x33\xe1\x61\x82\x20\x31\xff\xef\x73\xae\xea\x05\xbd\x5b\x2f\x8c\xa0\x2d\xb1\xf6\xe3\xb3\xa1\xe2\x73\xac\xeb\x2f\xdc\x9e\x7d\x3e\x09\x04\xc7\x98\x4e\x4c\x28\x8b\xb2\xdb\x9e\x7c\xec\xb3\x51\x03\x04\x28\xdb\xe2\x22\xed\x8d\x5c\x91\xec\x7a\xfd\xcf\xfe\xb2\x6a\x72\xf0\x5b\xe0\x18\x0d\x14\xb5\x59\x71\xfa\x83\x37\x8a\x76\xa9\x62\x36\x7d\x79\x7d\xd1\x00\xc4\xb9\xed\xdf\xb5\xd7\x06\x76\xbc\x7a\x1a\x8e\x24\x9a\x10\xbc\xa3\x69\xe1\xd0\x24\x1d\xa7\xb2\xea\xff\xea\x41\x9c\x1b\xf8\xa4\x8d\x59\x6a\x52\x3f\x49\xc9\xdc\x7b\x21\x15\x3c\xd6\x2e\xf8\xd9\xad\x06\xb6\x60\xe6\x85\x8e\x85\x0e\xd6\x30\xcf\x6c\xcb\x52\x72\x3f\x03\x7d\xa9\x72\x09\x99\xc9\xbd\x86\xf8\x2d\x58\xab\x04\x21\x26\x19\x77\xfb\x7f\x0b\xe4\x1c\xe3\xb7\x12\xe7\x45\xd2\x60\x5d\xaa\xd5\x92\xe1\x28\x89\xbd\xf6\x47\x55\x50\x82\x9b\x57\x67\x56\xf9\x8f\x79\x05\xa6\xae\x45\x65\xa8\x8d\xa6\x87\xa5\x19\x86\xe8\xbd\xac\x4d\xb2\xce\xa4\x05\xc5\xbb\xd3\x01\x8f\xa2\xda\x16\xaf\xd5\x96\x73\xd8\x25\xb9\x12\xac\x70\xb1\xba\x03\xaa\x38\xc6\xe3\x1d\xf7\x76\x84\x55\x66\xc6\x04\xb4\x26\x95\x6d\xfe\xf3\x7b\x14\xde\x80\x8a\xc9\xa5\xaa\x12\x04\x3d\xd4\xfd\x3e\x95\xf8\xd8\xae\x7f\x10\x53\xea\x23\x57\xcd\x4b\xb9\x51\x60\xaa\x11\x35\xd5\xd7\x1a\x07\x59\xe1\xd0\x3b\x5f\xcf\xdf\xbd\x4f\x3f\x36\x2f\x3f\x86\xf9\x78\xe3\xa7\xac\x5e\xf6\x3e\xb7\xe8\x58\xf4\x7a\xf6\xb0\xa4\xcc\x13\x5c\xea\x57\xa7\xd3\x01\x3a\xf0\x03\x48\x83\x69\x77\xda\x75\xdd\x13\xfe\xd8\xe2\x89\xfc\xb8\xe0\x3f\x66\xcc\xbc\xa1\x9b\x05\xfd\x33\x94\xfd\x34\xe3\x9a\xb9\x20\xa7\xac\xf4\x08\x77\xfc\xb2\x4b\x44\x2d\x7c\x21\x81\x6e\xf7\xcd\xf9\xcb\xbb\xef\x5a\xa7\x22\xd5\xa5\xe4\x1d\x89\x24\xc5\x9a\xc7\xd4\x97\x6a\x40\x4c\x91\x09\xa6\x67\xec\xa9\x61\x36\x39\xc6\xea\xa5\xff\xb5\x5b\xae\x0f\xda\x35\xec\x06\x27\xa8\xf7\x66\x2f\x7f\x23\xae\x1b\x87\x96\x1b\xc5\x3c\x76\xd9\xef\x53\x10\xd3\x0f\xc6\xad\x00\xa4\xb5\xa0\x05\x63\xa6\xab\x65\x1f\x67\x4e\x31\x70\x9a\xb0\x43\xa2\xbe\xa5\x34\x56\x25\x53\xe3\x68\x51\xe0\xf8\x4f\xe1\xff\x6b\xa2\xaf\x9f\xbe\x2e\x3b\x72\x0a\xa7\xe9\x48\xf6\xb9\x2b\x17\x91\xe5\x9b\xf9\x7d\xf6\x5b\xca\xa5\xd4\xf1\xc7\x2c\x49\x42\x5b\xde\x12\xfd\x00\x22\x8c\xd2\x3b\x7d\xfc\xb9\xcf\x4f\x08\x69\x02\x8b\xc7\x14\x36\x0b\xbd\x25\xb2\x03\xfc\x74\xda\xf4\xbf\x7c\xb7\x96\x9c\x4f\x4a\xa0\xa8\x7d\x86\x47\x50\xc2\x6c\x0b\xf0\x17\x2e\xa7\x46\xe9\x27\x2f\xdb\x64\x88\x56\xdc\x9c\x77\x20\xb5\xf2\x34\xfb\xa1\xaf\x93\x8a\x6a\xe8\x2f\x49\x4d\x82\x8f\x89\xe5\x53\xc6\x59\xca\x85\x89\x88\x96\x1a\xb3\x6e\xc4\x61\xf1\x5c\x2d\x81\x84\xf1\x7f\x39\x45\x30\xf2\x7d\x2b\x2b\x82\x12\x63\xfb\xfb\x6d\x6f\xbe\x46\xe0\x84\xae\xb4\xbf\x8a\x4e\x21\x17\xa8\xf9\x95\xa8\x6a\xd5\x0b\x28\xe3\x60\x4f\x1f\x66\x3f\xba\x88\xde\xe0\x76\xb2\xdc\x7c\xe6\xba\xd3\x30\x06\x45\x19\x4f\x0a\x31\xcf\xde\x9b\x6a\x9e\xb2\x3b\xac\xd1\xe8\xff\x1b\x63\xb8\x3f\x7e\xd9\x05\x19\x6f\x19\x3e\xdc\xe3\x44\x3b\xd9\xa3\x55\x88\x7d\x29\x41\xe3\x74\x6c\x19\x5c\xc4\x9e\x82\x42\x96\x87\x91\x0d\x11\x62\x46\xcd\xc9\x2b\xed\xb7\x44\x9c\x82\xd6\xee\xc9\x6f\x1e\x97\x7d\x98\x92\x61\xa6\x56\x82\xae\x9b\x2a\xe7\xc5\x82\x7b\x7f\x9c\xc2\x20\x4e\xff\x49\xf7\x1f\xc1\x06\x41\x34\x59\xc6\x03\x5c\xc4\x21\x1c\xa2\xc5\x2f\x23\x2e\x1b\x07\x65\xbc\x52\x58\x56\x01\x42\xec\x38\x2f\x42\xca\x4b\x5b\x4e\x62\x87\x61\x24\x36\x71\x67\x68\x46\xc9\xe3\xb2\x01\xc5\xd9\xe9\x37\x9f\x78\x5f\x63\xb3\x2b\xd4\x66\x58\x42\x8b\x38\x44\x8b\x2e\x50\xd5\x4a\x77\xcd\xe7\x73\x5c\x7e\x8d\x1d\x28\x7f\x60\x21\x48\x7f\x61\x5f\xbe\x09\x64\xed\xd8\x7b\x06\x2f\x6b\xb1\x96\x80\x44\x8e\xc6\x2a\x4a\x21\xbb\x10\x96\x19\x9e\x34\xb7\x0d\x84\xcf\x8e\xd1\xfc\xe5\xb6\x2c\x53\xae\xed\xb1\x86\x13\x00\x55\xda\x11\x91\x55\x04\x1f\xae\x92\xdb\xc5\xf8\xa9\xaf\xfa\x4f\xf2\xe1\x89\x83\x50\x66\x67\xcf\x94\x41\x1b\x63\x9c\x46\xe0\x5b\x7a\xdc\x21\x64\xf2\x33\x9c\x3e\xc2\xf1\x40\x8f\x97\xca\xf9\xa3\x0a\x4f\x6c\xd5\xb9\x3d\xcc\x80\x82\xec\x7f\xd7\x8f\x04\x1d\x97\x1d\x85\x47\xd2\x65\xc9\xec\x26\x83\xc6\xae\x17\xbe\xcc\x37\x0f\x04\xc0\xb6\x31\xae\xf3\x83\x4f\x26\x76\x85\x5b\x42\x4d\xb5\x04\x6e\x74\x26\x28\xfc\x73\x2c\x6b\x74\x9c\xbf\x89\x6c\xa9\xbc\xb8\x2e\x9b\x90\x0a\x9a\xc6\x5d\x7c\x53\x73\x87\x61\x6a\xb6\x01\xfb\x50\x0f\x5e\x59\x0d\x94\x04\x10\xc3\xf5\x30\x1f\x5c\x71\xf3\x6d\xc8\x37\x3a\x77\x59\x56\xd0\xda\x22\xe5\xf7\x03\xed\xa8\xb8\xa6\x58\x41\xb8\x79\xc9\x40\x46\x9f\x41\x05\xab\xfc\x94\xbe\x7f\x6d\x1a\x64\xb1\xcb\x55\x79\xa6\x58\xfb\xe6\x86\x85\xba\x58\x5f\xab\x51\xbb\xbf\x8c\x89\x55\x90\x8c\x28\x2c\x04\x20\x81\x34\x85\x33\x3a\x57\xeb\x99\x9d\xff\xec\x15\xde\xf6\x8b\x9e\xfe\xf4\x54\xe9\xf8\x9d\xab\x83\x76\xf3\xe7\x37\x1e\xa2\x70\x3e\xc5\xb9\x6d\x39\x45\x5f\xc9\xaa\x24\x47\xbc\x6b\x51\xfc\xb2\x49\xb4\x24\xc7\x8d\x2c\xf6\x6e\xbc\xd3\x3f\xdf\x9d\x34\xf5\x68\xd3\x00\xeb\xf9\x6a\xde\x4d\xb7\x5c\xf6\x21\x93\xee\x26\xfb\x87\x07\x38\xfa\x0c\xa0\xbf\x0d\xc6\x9c\xbc\x72\xd6\x41\x60\x18\x5e\x49\x98\xc7\x1c\x08\x6b\x27\x63\xee\xd6\x2d\xdb\x28\x70\xa6\x1f\x33\xac\xfb\x3a\x66\xec\x3f\xf9\x25\xc9\x0c\x29\x46\x2a\x47\x51\x03\xeb\x26\x0b\x97\x5a\x75\xe3\x2c\xf7\x1d\x73\xb1\x6e\x65\x10\xb5\x14\x5c\x2f\x93\x8e\xc3\x62\x9e\xe2\x5e\xa3\x97\xcf\x22\x08\xbc\x3a\xf8\x13\x5f\x88\xea\x42\x3c\x9f\xf0\x54\xa3\x34\xa4\xb9\xc7\x1c\x29\xe5\xff\xe6\x81\x04\xae\x5d\xd7\x75\xad\x2e\x34\xc1\x08\xd1\xe1\x34\xe1\x6f\xfc\x0d\x07\x3c\xd2\x46\x33\x7d\x24\x51\xb9\x00\x61\x79\x97\xb1\x9a\x00\x6c\x38\x76\x68\x0c\x00\x5a\xcf\xa4\xe5\x7d\xe8\x74\x89\x59\x4e\x28\x97\x72\x33\x71\xf8\xd8\xe1\x45\x44\xfc\xb2\xc4\x31\x83\xb6\xb3\xd1\xf4\xe1\x02\x3d\xde\x5a\x8d\xb9\x49\xb6\x92\x08\x8a\x7a\x48\xba\x94\xb5\x7f\xf3\xcb\x6c\x0b\x7f\x65\xf2\xae\xff\xe0\xec\x2f\xde\x38\x8a\x22\x38\x71\xb7\xb6\x5e\xce\x13\x7f\x49\x08\x9b\xd6\x52\x9c\x52\x97\xf2\x3e\x96\x94\x7b\xaa\x6e\x14\x80\xaf\xe2\x95\x0a\x55\xaf\x10\xb8\x61\xbf\xe3\x7b\x0b\xde\x80\x78\x5f\xd9\xc9\xe2\xe0\xd4\xfc\x56\xef\x79\x0b\xf4\x87\x84\xd1\x10\xcc\x43\x08\x42\xc2\x39\xa0\x27\x8d\x4e\x0c\x36\x69\x5b\x7d\xe8\x5e\x1e\xae\x47\x20\xb9\xe0\x04\xf3\xda\x1f\x5e\xda\x09\x49\x19\xcc\xee\xf3\x3d\x33\x56\xfc\xe1\x52\xcf\xbf\xfc\xce\x51\xb6\x68\x0b\x61\x92\x34\xeb\xe7\xf9\xb3\x1c\x5d\x17\x5a\x56\x1c\x8c\xc1\x69\x6c\xbc\xcc\x65\xfd\xc8\xb6\x9c\x30\x60\x44\x81\x24\x79\xdb\xbe\xb9\xe0\xe6\x78\x8b\x29\x79\x51\x8e\xad\x44\x4b\x12\x2d\xd1\xe5\x40\x46\xbc\xd3\x6b\x07\x26\x6a\xe2\x6c\x0c\x2f\x6c\xa8\x78\xa5\x45\x21\x76\x4d\x15\x32\xf3\x00\x3b\x4e\x1a\x19\xe1\x4c\x1b\xe9\xae\xc7\xa8\x49\x31\xcb\x0e\x6d\x19\xb6\xb7\xff\xcd\x71\x2f\xd1\xb6\xf6\x4c\xff\xf7\x4c\xf6\xdb\xd7\x0d\x8f\xbb\x1b\x19\xf7\xc3\x6c\x1f\x6f\x57\x0d\x0e\xed\x98\x56\x0a\x1c\x08\xe4\x03\xca\x9e\x02\xa7\xe2\x2b\x51\xda\x24\x03\x02\x75\xb4\x26\xd0\x05\x39\xb5\xd5\x48\x4d\x87\x08\x5e\x2c\xf5\xeb\x6b\xb0\xe7\xeb\x42\x3a\x7e\x3f\x5a\xbe\x3b\x85\xfe\xde\x6e\x7a\xa9\xc1\x69\xf5\x22\xb6\x3d\xb1\xa6\xf8\xa3\xe7\xff\xf9\x6e\x5e\x25\xca\x6f\xb7\xe5\xee\x56\xac\x3f\xb8\xc8\xa6\xcb\xef\xa5\x42\x05\x1b\x70\xc6\xb8\xff\x60\xc1\xfe\x4d\x7c\xbc\xb8\xd2\x8c\x4d\x96\xbf\x65\xc5\x19\xba\xb8\xc2\x49\x56\xfe\x05\x10\xad\x67\x97\x2a\xfc\xc1\x86\x48\xb9\x46\x3a\x6a\xc9\xa9\x80\x68\xd2\x45\xd2\x11\xca\x64\x86\x22\x89\x05\x8d\xbc\x67\x84\xc2\x43\xf6\xba\xc9\x5a\x83\xc8\x5b\x78\xbb\xea\x1d\x41\x6c\x1f\xa5\x47\x71\x69\x82\x09\xf9\xb5\x24\x47\xfc\x37\x1f\xd2\xe3\x74\xfb\x24\xef\xb8\x97\x75\xff\x27\x96\x7b\xbc\x61\x19\x52\x17\x78\x79\xd9\xd8\x0b\x6d\xa7\xe4\x2f\x33\x2a\x69\xa0\x89\x29\x80\xa6\xf5\x94\x17\x8e\x51\xe8\x2a\xae\x68\x65\xee\x39\x43\xed\x4d\x5d\x51\x33\x0b\xd7\x20\xd2\x4f\x53\x09\xdf\x7f\xcc\x2c\xd5\x54\xaf\x36\xd9\x55\xba\xbe\x69\xd4\x87\xe6\xf6\x33\xfc\xbd\x83\x10\x84\x25\x6f\xa4\xb4\x50\x01\xd2\xeb\x5a\x11\xb8\x4b\x86\xc3\xee\x63\xcc\x29\xf7\x1f\x12\xcf\x7a\x18\x82\xbf\xca\x5d\x33\x8c\xca\x89\xef\x7e\x68\x81\x45\xd4\x3c\x06\x4b\x18\xd5\xe9\x5f\xe1\xc6\x0b\xcc\xcc\x85\x28\xa4\x7f\x38\x21\x31\x20\xa7\x13\x2f\x8a\xd9\x25\xb0\xeb\x15\x48\x96\x6e\x27\xe9\x53\x8b\xb5\xd8\xaa\x67\x9a\xd0\x95\x5f\x22\x75\x0f\xd5\x51\xf0\x01\x6e\xff\x70\xf0\x97\x09\x61\x55\x46\xf9\xf2\xf8\xdd\x28\x25\x77\xad\x4c\xf7\xc7\x60\x48\xef\x6c\x7a\xbb\x08\x55\xfc\x53\xe4\xbd\xb5\x85\x69\x26\x8d\xfa\x0f\xe4\xb0\xaa\x2b\x88\xc1\x1f\x3d\xe3\x09\xd8\x0c\x2b\x7f\xfe\xcb\x32\xe6\x85\x33\x4b\xd6\x7d\x81\x85\x21\x6d\xbf\x0e\xef\x54\xf5\x69\x95\x6e\x87\xd8\x1f\x90\x1b\x8a\x4e\x2b\x9d\xd7\x81\xc3\x70\x5f\x22\xc7\x2f\x24\x2f\x17\x75\x69\xb8\x33\xd2\x79\xd1\x42\x71\xe5\x55\x61\xdc\x9e\x42\xf7\x05\x54\x81\x4d\xce\x81\x98\x86\xb0\x0f\x1a\xed\xa0\xa8\x0b\x88\xde\x2b\x65\x55\xdd\x27\x2d\x62\xd2\xa2\xe7\x16\xd8\x16\x8e\xb5\x5b\xfe\xac\x77\x8f\x4c\x49\x71\x08\xc7\x0d\x29\x50\x60\xfe\xd8\x0e\xb7\x04\xde\xfa\x14\x0c\xc6\x30\xba\x1a\x04\x91\xc4\xda\x9b\x45\x04\xc6\xef\xa9\x02\x7e\xf9\xe4\x52\x89\x67\x38\xcb\x86\x36\x32\xdd\xc9\x26\x84\x6e\xa1\xc0\xf3\x87\xca\xc8\xb5\x54\x36\x5e\x19\xd0\xa1\x17\x32\xfa\x4a\xde\x0e\x45\x8d\x42\xe8\xe4\xf2\x97\x14\x1c\x72\x81\x16\x68\x8e\xaa\x5a\xbd\x80\x3c\x09\x06\xf0\x69\x42\xa3\x67\xae\xfb\xc1\xc6\xe2\xd9\xf7\x5e\xbe\x04\xcc\x39\x3c\x01\x46\xe1\x42\xdb\xbd\xf5\xa5\x53\xc8\x1d\xaf\x37\x53\x43\xff\xfa\xb9\xac\xbf\xc6\x84\x0c\xd2\xdf\x5e\xc5\xbc\x34\xf9\x54\xe4\x84\xcc\x2a\x32\xb1\x05\x1a\x4f\x79\x98\x97\x9e\x74\x32\xfa\x06\x27\x72\xa0\x3b\x35\x8d\x34\xe1\x29\xe9\x5f\x5f\x37\x49\xa8\x55\x88\x27\xca\x1e\xd5\x92\x8f\x76\x0f\x67\xa5\x8e\x8e\x2b\xb3\xba\x4d\x20\xe9\x58\xcd\xc3\xaf\x2f\xca\x09\xb6\xb6\x21\x1f\x66\x05\x2b\x09\xc7\x4b\xdf\xc1\xd1\x58\xdf\x02\xa5\x07\x87\x6e\x98\xd3\x97\xd2\x96\xbb\x9e\x63\x11\x59\xd1\xf6\x7f\x34\xa9\x67\x10\x8a\xe0\x99\xbd\xd1\x4c\xed\x9f\x20\x80\x78\x3d\xfa\xe0\xc4\x42\x7a\xad\xec\x69\xa2\x63\xa9\xa8\x45\x1a\x93\x1f\xb8\xee\x60\x54\xf9\xf1\xa3\xd1\xbe\xb8\x2e\x9a\x89\x34\x26\x39\x06\x6d\x09\xb5\x09\xf6\xd2\x06\xa5\xdd\x75\x08\xb2\x4e\xad\xdb\x76\x0f\xa6\x3e\x5e\x10\x4e\x31\x3d\x52\xea\x5a\x6b\x7e\x3b\x2d\xdb\xc4\xbe\x4c\xef\xc1\x59\x87\xc0\x52\xd1\x74\x6a\x95\xca\x42\x92\x60\xdd\x44\xfe\xd8\x25\x83\x85\x6a\x64\x3a\x4b\x5b\xe6\x07\xaf\x28\x75\x61\x4d\xad\x69\x5c\xd6\x0c\xe4\x89\xea\x03\xa8\xea\x92\x0f\x8c\x3e\xd8\xd9\xe4\x40\x9a\x8e\xa2\x7c\x77\x4a\xe7\x8d\x7c\x7f\xe9\x41\xb0\xb0\x8e\xa8\xf9\x73\xf6\xba\xee\x3f\xb6\x3c\x6d\xf0\x09\x6a\xf1\x37\x5a\x47\xb2\xcf\x21\x33\x73\xcb\x87\x9b\x2a\x5c\xc4\xd8\x68\xba\xbd\xf9\x2b\xd1\x7d\x16\xad\x95\x56\x71\xed\xd4\x3d\x6c\x2d\xf8\x12\x65\x19\x95\x16\x68\x4b\xcd\x90\x38\x9d\x28\x78\x25\x4b\x12\x69\x72\xbb\x39\xa7\x25\xce\x43\xa9\x89\xb8\x00\x1b\x8f\xe7\xbc\x68\xda\x16\x14\x5f\x4d\x85\x27\xb3\x06\x5d\xcb\xd3\x44\x19\x42\x7d\xf9\x0c\xe0\x5a\x09\xca\x6e\x28\x3b\x2d\xc0\xba\xa1\xe5\xa5\xc8\xa2\x5e\xb5\x67\xa3\x46\x5e\x06\xe4\x17\x86\x62\xc1\xdf\x15\xc3\x8b\xbb\x97\xa8\xff\xfb\x63\x4d\x49\x27\x39\x7a\x4a\x9f\x23\x1a\x3d\x3f\xc3\x61\x31\x56\x84\x5f\x9a\xfb\x8b\x95\xba\x16\xf9\x6b\xbe\x69\x5e\x0f\x04\x61\x54\xfc\x3c\x3a\x5f\x43\x26\x10\xf9\xf6\xcb\x75\x48\xf1\x52\x05\x59\xc9\xd0\x56\xa1\xd7\xc2\x20\xa2\x5c\x4f\x01\xdb\x76\x80\x3f\xc2\xd5\xf4\xd6\xc1\x40\x36\x52\xc5\x63\x8d\x8e\xcf\xea\x29\x05\xab\xe9\xb5\xb3\x99\x73\x7e\xe9\x64\xe0\x77\x25\xa1\x29\x29\xc9\x33\x42\xaf\xb2\x13\xde\x1c\x1a\x33\x97\xa2\xf8\x11\xfb\xd9\xf8\x72\xa5\x21\x43\xb9\xc7\x88\xbd\xdc\x7e\x0e\xdb\xaf\xd2\x33\x97\xe2\x44\xd3\x1f\x89\x3d\x60\x71\xc4\x3f\x33\x6a\x7d\x99\x85\xcb\x27\x65\xc6\x3f\xe8\xe9\x3c\xfa\xdf\x76\xcb\x65\xce\xc8\x7f\x6d\x28\x2a\x4f\x6a\xcf\xac\x6f\x2b\xd6\x24\x58\x27\xe3\x3b\x5d\xac\x11\x88\x29\xf4\x36\xf2\xa8\xfd\x7d\x22\x3d\x33\x95\x5b\xff\x92\xe8\xa8\x7d\x83\x57\x3f\xd0\xc2\x9e\x8a\x2f\xc7\x9f\x1f\x05\x4e\xf4\x6f\xaa\x3e\x18\xde\x11\x15\x9d\x84\xc5\x7d\xa6\xf5\x07\xa5\x3b\x01\x17\xcb\x6b\x5c\x30\x42\xea\x68\x2f\xc9\x3f\xe5\x47\x59\x02\xcf\x91\x45\x0b\x60\x60\xfa\xfb\xd1\x27\x9d\x3d\x05\x67\xb8\x1e\x59\x00\xf0\x7b\x86\xaf\xc2\xdc\x2c\x2b\x28\x20\x0d\x4c\x12\x7d\x27\xcc\x5f\x4e\x5a\x2c\xba\x9a\x4a\xb6\xdc\x19\x6b\x09\x13\x87\xb7\x3a\xeb\x7b\x5d\xdc\xf3\xc5\xdb\x79\x5e\x86\x54\x7f\x24\xae\x42\x58\xd2\x74\x52\xda\xa9\x22\x78\x90\x11\x5c\x7e\x3b\x91\x1c\x58\xf0\xa0\xd2\xb9\xa1\x47\xfd\x87\x00\x3b\xef\x0a\x90\x42\x8f\x7c\x8b\xd6\x86\x5c\xad\x4d\xe2\x18\x28\x6b\xbe\x64\xd7\x8b\x51\xa0\xec\x32\x74\xaf\x02\xb1\xc4\x3c\xf6\x02\x11\x74\x2a\xcb\x13\x81\xad\xc4\xae\xcf\x6e\xdb\xe6\x7c\x4b\x6d\x92\xb2\x60\x35\xcb\x08\x82\x6b\xf9\x3b\x79\xc5\xe0\x4b\xbb\xab\xc9\x6a\x7f\x25\xe9\x19\x0e\x69\x90\xf1\xf6\xb2\x97\x5a\x90\x75\xce\x4f\xcd\x13\xa5\x0e\xb9\x75\x08\xbb\x2b\x31\x71\xa0\x3f\x7e\xfa\xfe\x21\xf7\x4b\x87\x89\xfa\x43\xfe\xf2\x23\x56\x1b\xf4\xfd\x44\xcb\xa7\x58\xe7\x28\x13\x76\xfc\xcf\xda\x02\xa3\xd5\xb9\xfa\x4a\x48\xa9\x89\xac\x58\xed\xcb\xcc\x09\xf5\x80\x89\xfe\x68\x21\x45\x91\xd7\x6c\x3c\xab\xd2\xfe\x62\xd0\xa3\xc3\x9a\x92\x8e\x48\xc7\x72\xc7\xb1\x14\x4b\x06\xf3\xd3\xac\x00\xaa\x2a\xb9\xba\xd6\x04\xa6\x66\x98\xbd\x61\x55\x41\x35\x26\xbf\xe5\x55\x9e\x03\xe4\x95\xb6\x97\x3f\x9a\xa6\x93\x81\xd4\x41\xbc\x2f\xaa\x73\xb5\x29\x86\xdd\x3b\x42\x22\x9e\xd7\x56\x67\xd3\x0f\x37\xc1\x26\xd7\xbb\x12\xce\xf9\x0f\x94\x19\x14\x3a\xba\x9e\xbe\x2e\x70\x84\x9b\x78\x0d\x9d\x25\x66\x92\x06\xf1\x1b\xbd\x0b\xee\x51\x7b\xef\xfd\xb5\xdb\x81\x96\x56\xb8\xbc\xfc\x39\x70\x9b\xf3\x15\x37\xa5\xbb\x8d\x1e\xb2\x69\x92\x3e\x06\xc5\x45\x95\x44\x9c\x41\x79\x47\x65\x9e\xdd\x1d\x56\xd1\x34\xe8\xb0\x7d\xb3\xa0\x09\x80\xac\x7e\x3f\x3c\x56\xf0\xb9\x16\x18\xc6\x9c\xa4\x1f\x9f\x84\xe2\x13\x8e\x14\xb3\x43\x52\x82\x58\x97\x78\x1b\x05\x07\xa4\x3e\xff\x73\x5c\xc7\xdc\xf3\xe1\x48\xe9\x31\x87\x24\xcb\xad\x70\x68\xe0\xe7\x90\xa3\x57\x44\x4c\x2a\x9a\x2c\xd1\x93\x84\xcb\xe9\xb8\x96\xed\xe7\xec\xb8\xdf\xe9\x7c\xb0\xbf\x4f\x12\x89\x6d\x1d\xb4\xf5\x03\x74\xa9\x31\x76\x9a\xb1\xa4\x4c\xdd\x94\x88\x8c\x30\xaf\xaf\xd5\x8e\x21\xdb\x07\x48\x5a\xa5\xe2\x48\xa8\xbf\xb0\x4a\x3b\x06\xeb\x74\x02\xc5\x48\x6b\x70\x76\x54\x16\xd7\xb0\x44\x61\x4c\xe9\x96\xa2\x14\xc6\x32\x0c\x4f\x48\x72\x05\x44\xf2\x28\xe9\x07\x01\x45\x2d\x8c\x9c\x37\xcc\xa3\x7c\xbe\xc7\x5f\xc5\x93\x2c\x70\x0e\x1a\xf0\x1e\x50\x30\x1c\x31\x04\xc4\x08\xf0\xfb\x62\xfb\x05\xaa\xef\xc4\x97\x5f\x39\xa2\x6b\xa1\x9f\x71\x45\x68\x4e\x9e\x12\x43\x93\xe9\xeb\x7d\x6b\x43\xb4\x7e\xfa\x0b\xfb\xd3\x9b\x4f\xe6\x97\x7f\xbc\xd6\x9b\xf1\x95\x27\x0e\xa3\x08\x62\xb4\xc1\xaf\xaa\x18\xfe\xde\xde\x66\x15\x8a\x61\x38\xa4\x59\xa4\x34\x0e\x73\xc5\x2e\x01\x26\x10\x8a\xc6\x7e\xe7\xfb\xb9\x5a\x1f\xbc\x03\xc9\xfc\x8a\x1b\x93\xbf\x40\x20\x59\xc5\x44\x85\x3e\xb9\xc1\x4a\x76\x92\x48\xc7\x46\x50\x73\xa8\x3d\x6c\xc2\x30\x9c\x63\xa9\x83\x61\x8e\x64\x5e\xc6\x17\x42\xee\x67\x2f\x42\x91\x97\x4a\x84\x15\x67\x60\x9c\xa0\x1f\x39\x23\x53\xf6\xe3\x33\xf8\x50\x5f\xeb\x1a\x8c\x66\x80\xf6\x26\x66\xff\xa9\x53\x01\xe2\x17\x78\x0d\x04\xa1\xa7\x4c\xc4\x8e\x9b\x14\x4f\x05\x0b\x29\x13\x2c\x51\x55\x72\x0f\x7a\x3d\x3c\xde\x22\x92\xa8\xd5\xa4\x02\xa8\x46\xb3\x0b\xbe\xaf\x88\xbc\x48\x49\xd3\x56\x15\xa8\xb4\xab\x38\x59\x57\x7c\xca\xea\xb9\xf6\x8f\xdf\x4b\x82\xa5\xba\x7b\xdc\xa9\x1f\x0a\x3e\x9c\xa5\x30\xb9\x99\x56\x30\x43\xfc\xed\xfb\xf2\xe8\x63\x81\x51\xa5\xf5\x4f\x1e\x9d\x5d\xe6\x5f\x3b\xef\x7a\x86\xe8\xd3\x86\xff\xc2\xb5\xcb\x8a\xd5\x1d\xf0\x72\xc9\x60\x51\x4c\xfc\x2c\xb5\x2d\xa4\x0c\x44\xd7\x57\x86\x43\x5b\x71\x51\xd8\xe9\x73\x57\x21\x30\xa4\x4d\x7c\xff\xc9\xba\x8e\x57\x2a\x2b\xce\x86\x5e\x0f\x6c\x45\x62\xcb\xb9\x4b\xce\x2b\x0d\x63\xe4\xa6\x9f\x4f\x05\x07\x16\x0f\xd8\xa9\x21\xa6\x3d\x21\xa4\x39\xb2\x05\x8c\x4e\x43\x17\x72\xf3\xc0\x36\xe5\x2b\x5b\xeb\xc6\x70\x9e\xf0\x01\xc5\x96\x8d\x0b\x27\x5b\xda\x83\x9f\x96\x1d\xfc\xa0\xe2\x9f\x94\x98\x36\xfa\x2a\xa9\x18\xea\x78\xdf\xdc\xe1\xbd\x4f\xa7\x52\xb9\x0c\x47\x91\x74\x84\xeb\x15\x66\x5b\x28\xd0\x3d\xd2\x04\x56\x03\x9d\x07\xf1\xab\x5b\x3e\x38\xe1\x97\xa7\xad\x65\xff\x49\xb3\xc6\x32\x1a\x6d\x22\x63\x46\x9e\xe8\xd7\xfa\xed\xa4\x10\x97\xd8\x2f\xe5\xaf\x7f\xfa\x21\x33\x9e\x31\x40\xfb\x54\x3f\x66\xc9\x91\xb1\x5c\xe1\xe5\x0c\x39\x66\xa7\xe1\x1b\xb8\x40\xcb\x0b\x88\x6b\x13\xfb\xf7\x1a\x88\x15\xa4\x19\x2e\xb7\xef\x99\x1f\x8b\x86\xcb\x26\x68\x57\xbd\xbd\xe7\xef\x48\x5f\xe2\xb4\x5d\xe2\x0a\x94\x53\xbd\x5b\x4e\x15\x46\xf2\x61\x13\x18\xa1\x88\x1d\x62\x21\x2d\xaf\x62\x78\xab\x45\x40\xd2\x53\xf2\x8a\xca\x00\x23\xd9\xe4\x53\xbd\x40\x6a\x45\xcd\xca\x71\x6f\x5a\x6e\xf1\x9b\xde\x6c\x39\x6c\x22\x2c\x98\xc0\x8c\x63\x4d\x55\xee\x91\xf9\x5b\x97\xc6\x71\xbc\xae\x52\x8c\x92\x9d\xc9\x25\xb6\xec\xbf\x69\x42\xa5\xcf\x0c\x8d\xb7\xd2\xce\x1a\x49\x10\x5d\xe9\x6b\xe5\x99\xb1\xc4\xf0\x23\xf2\x34\xd8\xde\x1c\x02\x75\xdf\x33\x7c\x3c\x8b\xca\xde\xcd\x18\xb0\x67\xf0\x21\xa0\x82\xcd\xdf\x54\x56\x0d\x38\x50\xd7\x99\x45\x06\x36\x73\x6f\xf4\x87\xdb\xb1\xcc\xc4\x5b\x8c\xb7\x06\xab\xde\x2e\x06\x81\xb5\xa6\xdc\xc1\xda\x42\x87\xad\xc6\x08\xca\x1f\x1d\x20\xf4\xde\x06\x79\x8c\x42\xf9\x07\x00\xca\xdd\x30\xc0\x54\xfb\x7f\x3d\xb2\xf3\x5c\x0a\xde\x72\x4c\xe2\x37\x55\xa1\x91\xf8\xd2\xe0\x31\x9b\xd5\x75\x57\x3a\xcc\xba\x20\xd1\x36\xef\x23\x77\xb8\x33\xaa\x2c\x6d\x4b\xf2\x92\x31\x50\x46\xd0\xfa\x15\x9d\x2b\x3a\x7f\xe8\xf2\xba\x43\x7b\x84\xf5\x64\x31\xde\x24\x47\xf9\x92\x0c\x2d\xb4\xea\x26\xd7\xe3\x08\x0d\xce\xb4\x70\x97\x87\xa3\xf0\x9c\xca\xb0\xb6\xde\x31\xcc\xd0\x18\xcb\x11\x6a\x8b\x13\x88\x86\xe4\x3d\xc1\xfe\x7f\x03\xe3\x14\xc8\x1a\x21\x1c\xa3\x8a\x1e\x26\x49\xdf\xb4\x20\x08\x1f\x2b\xb8\xbd\xaa\x80\xea\x9a\x57\x35\x47\x34\x1e\xb5\xb9\xfd\xc6\x6b\x8c\x85\x91\x7e\xce\xeb\xa3\x19\x5e\xe4\x82\x58\x1b\x02\x6f\xca\xf0\x6d\xf4\x3b\x5d\x16\x02\xd7\x9f\x3e\x39\x4c\xf5\x71\x81\xb3\x59\x1a\x08\xe4\x70\x16\x4b\x84\x64\xca\x80\x49\xc9\x13\x18\x4f\xe5\xbf\x07\x47\x6c\xc5\x70\x2f\x0c\x4b\x4c\x39\xc4\xae\xff\xb3\x11\xc1\x33\xa5\x41\x8b\x5d\x67\x28\x45\x67\x10\xf3\x50\xeb\x24\x68\x19\x12\xcf\x1f\xc5\xf4\x73\xb2\x48\xcd\xcc\xab\x2d\x3d\xf1\xcc\xb1\x6d\x95\x1e\xcd\x65\x14\x7a\x1a\x29\x3f\xd7\xc3\x2b\x15\xd6\x2e\xa9\xc4\x64\xfa\x8d\x16\xad\xcf\xd0\xf2\xfb\x1e\x8c\x74\x89\x90\x4d\xd9\x92\xf9\xbd\x0a\xc5\xab\xc6\x3a\x0c\x30\x22\x29\x86\x77\x2d\x44\x31\x3d\xc9\x1c\xb6\xcc\x3f\xf7\x37\xb4\x3a\x23\x45\xac\x55\x97\xe6\x40\x7f\xdc\x6f\xde\x35\xee\x30\x9b\xb0\x65\x44\xb5\xef\xd2\x0d\xc5\x1d\xf4\x41\x85\xc9\xa7\x43\xa8\x90\x7d\xe8\x0c\x81\x0d\xce\xda\xc0\xab\x9d\x23\x40\x7a\x68\x3c\xb5\xd6\x99\x43\x4e\xa9\xe0\xe2\x08\xe7\x43\x81\xb2\x20\xc9\x6b\x66\x6e\x85\x3f\x9c\x6d\xce\x09\x80\x82\x46\xe7\x55\x1c\xf2\x89\xe0\xec\x11\xff\x6d\xf1\x53\x8b\xd8\x3a\x44\x1b\x57\x0a\x43\xb5\x09\x83\x1b\x8a\x78\xf9\x1b\x09\x4b\xce\x8f\xd7\xc0\x0f\x6b\x81\x83\x15\x20\x52\xc1\x4a\xc8\x2d\xa7\xe8\xd4\x00\x46\x27\xf1\xf4\xe1\x65\x50\x8f\x20\xc1\x2c\x7d\xcb\xc9\x4f\x11\xe3\x76\xf4\x19\x20\x46\x53\x60\x98\xbe\x15\xb4\x06\x30\xa6\xa2\x78\x0d\x8b\xca\xce\x6d\xa5\x4f\x38\x7b\xaa\xf6\xdf\x1c\x39\xdd\xfe\xf9\x71\xf8\x87\x43\xc7\x8d\x0e\xc1\x92\xc6\xa2\x37\xc3\x40\x7f\xfb\xe6\xc4\xa4\x5b\x54\x50\x9f\x20\xd5\x30\x36\xf6\xaf\x18\x49\x09\xd5\xbf\xc5\x9d\x97\x30\x5e\x6e\xa3\xa7\x9f\x01\x90\xda\xac\x54\x40\x35\x4f\x38\xe8\x1f\xec\x97\xce\xb3\xca\xb2\x33\xac\x2c\xd7\xfd\xda\x10\x13\xce\xe9\x9f\x5a\xff\x7b\x69\x47\x5f\x45\xb6\x20\x5b\xa7\xe3\x0f\x42\xbc\xbf\x6a\x8a\x17\xb1\x3b\x10\x89\xd9\x67\x57\x5b\x0a\x77\x35\x15\x83\xaa\x35\x6d\x3e\xac\xab\xe2\x78\xa1\xf3\xfe\x70\x8b\x62\xca\xb5\x97\x08\x13\xe1\x2a\xfb\x53\x69\x53\x12\xe3\x93\xdb\xbd\x87\xda\x80\x9d\x9a\x73\x02\x9d\x06\xa8\x7d\x4c\x77\x24\x69\xf8\x49\xce\xae\x11\xfe\x79\xd0\xae\xff\x9f\x1d\x5d\x6e\x2b\x8d\x3e\x4e\x6b\x7d\xa8\xe2\x61\x79\xc4\x1c\x01\x12\x86\xbe\xf4\x6f\x66\x2c\xc8\x94\x61\x79\xc3\xe7\x69\xbc\x27\x3f\x33\x65\x9f\x61\xdb\xe9\x31\x70\x17\xe8\xa7\xb8\x58\xe0\xba\x01\x46\x11\x70\xd4\xc2\xeb\x71\x9d\xaf\xd7\x42\xa5\x29\x73\x52\x51\x63\xac\xb5\xe0\x10\x96\xb8\x9f\xc4\x59\xfc\xfe\x83\x09\x81\xe1\x78\x17\xa5\xd7\xaa\x04\x64\x1c\x04\x27\x96\x06\xa5\x50\x63\xb1\xfc\x41\x11\xa8\x60\xa7\x7f\xf7\x9b\x77\x7d\xe1\xd7\x01\x91\x2d\x7b\x92\x68\x53\x93\xfa\x6d\xcb\xf3\x8d\x9e\x71\x1d\x60\x5e\xb6\x54\x98\x87\x56\x27\x6c\x18\xbb\x2b\xaa\xad\xf2\xcc\x8f\x8e\x2a\x40\x4f\xdd\xfe\x3b\x07\x75\xf8\x7c\x67\xd6\x3d\x34\x22\x7e\x9e\x3b\xbe\xae\xda\x75\x07\x48\x72\x41\xfc\xe1\x3e\x97\x7a\x18\xe4\xc7\xf4\x86\xd4\x01\x26\x33\x82\xc1\xda\xc3\x53\x1b\x1e\xf8\x79\xdd\xea\xa2\x55\x41\x97\x38\x09\x92\x1b\xd5\xb6\x7b\x1f\x61\xa9\x01\x74\x78\x76\xcc\xdf\x54\xe6\xff\xba\xbd\xa6\x99\xb2\x38\x96\x03\x7e\xfa\x77\x03\xd7\x51\xfc\xd3\x70\xa5\xff\xf4\x6b\x8d\x62\x8e\xbc\x28\x98\xca\xba\x2c\xdb\x0f\xb1\x73\x49\x94\x54\x6c\x31\xd3\xf1\xec\x8d\x8d\xa1\x3e\xc4\xe1\x91\x7a\x06\x82\xa4\x2b\x4c\x51\xe0\x8e\x5a\x74\xb2\x26\xe3\xd0\xda\xf9\xf0\x4e\xf4\xf4\xd5\xf9\x8b\x09\x5a\x70\x99\x88\x65\xfe\xfa\x9e\x30\x3c\x5e\x3e\xf9\x17\x7a\x8c\x70\xba\xda\x13\xd8\x99\x3d\x5c\x14\x55\x15\xcf\x46\x64\x07\xd0\x7a\x46\x9a\x14\x1c\xba\x87\x54\xbf\x03\xd1\xfe\x6f\x76\xa6\x4c\x1b\xe7\xa8\x6a\xab\x98\xce\x78\x71\x5c\xb9\x76\xa7\x7a\x75\x85\x69\x50\xaf\x69\xbb\xa6\xcb\x4e\x4e\x97\x35\x49\x62\xac\x91\x31\xf1\x48\x79\x27\x95\xcf\xa8\x9c\x3a\x57\x17\xd9\x94\xa3\x0e\xad\xfa\xaa\x80\x54\xe6\xc5\x35\x61\xe7\x4b\x7a\x7b\xff\xc1\x9d\xfd\xf1\x19\x8e\xbf\x45\x35\xaa\x35\xdf\x23\xc0\xb8\x3a\xcb\x75\x25\xe1\x07\x0e\x4b\x77\x0c\xe1\x32\x46\x01\xca\x66\x19\x9d\x4d\x44\xc6\x69\x4c\xff\x44\x00\xcb\xb6\x87\xf4\x23\x16\x37\x89\xde\x7d\xd5\xae\xcd\xed\x00\x9a\xa0\xd5\x12\x14\x26\xc1\x1e\xde\xa7\x34\xae\xd3\xf3\x3e\x4e\xff\xf7\x7a\x2b\x7b\x49\x25\x8e\xbb\xe6\xc0\x88\xe4\x78\x7f\x5f\x1e\x70\x99\xdf\xb9\x34\x1a\x4f\xb2\x7b\xfe\x4c\x4b\x14\x82\x50\xec\xda\x5f\x04\x61\xa8\x49\x96\x3d\xc8\xef\xa0\xaa\x90\x69\x6a\x6b\x50\x09\x29\x39\x8c\x9e\xf6\x17\xa5\x62\xc4\x2b\x3f\x37\x14\x2c\x97\xc0\x1b\x4e\x2a\xd8\xfc\x7c\x11\x0d\x28\x72\x7a\x8f\xe2\xa1\x88\xc3\x05\x57\x71\x99\x67\x32\xfe\x0f\xa7\xce\x59\x85\x71\x6e\xeb\x8f\x66\x08\x4d\x75\x36\xd5\x85\x2d\x71\x68\xf2\xe3\x30\x3c\x92\xee\x2f\xff\xc7\x77\xa4\xaa\x80\x61\x18\x30\x28\xb1\x2a\x3d\x09\x61\x40\x3d\x72\x84\x2e\xc1\x5f\x00\x17\x01\x3e\x05\xa4\xf1\xf7\x52\x8b\xad\x6f\x11\x61\x5e\xbb\x42\xc8\xf4\xd1\x69\x9d\x33\xe5\x2e\xf0\x66\x35\x8f\x6a\x18\x02\x32\x4b\x26\x6d\x74\x42\xd5\xd2\x5f\xa6\x6b\xb4\xdb\xc6\x16\xb4\xc7\x67\xb4\x85\x6e\x77\x71\x09\xb5\x28\xac\x26\x6c\xd5\xdf\x05\x67\x55\x4f\xd5\xa0\xa8\x85\xcc\x2e\x40\xdc\x11\x59\x61\x69\xc8\x0d\xf5\x16\xf9\x42\xdb\x38\x17\x1e\x1b\x3b\xb8\x57\x50\x72\xd5\xda\x78\x6c\x64\xb0\x75\xbc\xd2\xb9\x7a\xfa\xf0\x9e\xd9\x67\xc3\xb9\xbf\xb2\xd4\x84\xbb\xd6\x27\x74\xa7\xec\x42\x76\x21\x55\x12\xec\xd4\xd7\xd3\xa6\x00\x32\x75\x81\xc6\xa7\x66\x3c\x7b\x51\x18\x86\xe5\x85\x7d\x0d\x42\x6c\xc2\x8c\x0a\x28\x57\xf2\x61\x84\x3d\xe6\xdd\x7b\x2c\x2b\x20\x85\x93\xf1\x09\x84\x39\xd2\xd5\xfe\xba\xce\xeb\x01\xbb\x7f\xe6\xc1\x9a\xae\xc6\x7a\x71\x8c\x0a\x22\xb6\x70\xe2\x9f\xf8\x88\xd0\x5b\xb6\x12\x8b\xad\x5e\x6e\x0a\x4b\x5b\xb8\x28\xbd\x9f\x4f\xf6\x6e\x54\xef\xe1\xae\xd0\xa9\xbf\xe7\xb2\x66\x28\x0a\xc4\x77\xb2\x61\x6f\x0f\x03\xd7\x0f\x39\x66\xfe\xf6\x58\xb5\x9f\x92\x5d\xee\xa9\xbb\xb9\xf8\x31\x3f\xc1\x19\x88\xa0\x9e\xca\x21\x7c\x79\xf9\x25\xd3\xa2\xeb\xb7\x1a\x97\xf0\xa8\xb9\x4f\xb7\x35\xfc\xed\x79\xe9\x3a\x30\x69\xe9\xaf\xb8\x99\xf8\xd7\x44\xb1\xdc\xa1\x04\x9c\x4a\xdd\xf3\xa8\xc4\xeb\x1c\x6a\x7f\x18\xe7\xa8\xa9\xd1\xfa\xb1\x21\x63\x60\xaa\x8a\xff\x91\x51\xb5\xf4\x77\x06\xa9\x9b\x3e\x35\x5e\xe4\xe5\x3a\x58\xdb\x9b\x2b\xc9\x49\x84\x21\xb6\x92\x8e\x4c\xc2\xef\x10\xd0\xb6\x0f\x25\xc6\x3f\xef\x9f\xce\x3f\x5a\x17\xa8\x30\xdb\xd4\x40\xf8\x2d\xc8\x40\x7c\x6a\xe3\x86\x14\x41\x2b\xdb\xaf\x2f\x19\x9f\x37\xb4\x60\x70\xdd\x4c\x97\x7c\xe8\x67\xc0\x51\xbf\xcc\x4b\xb9\xe0\x56\xa7\x23\x7b\xab\x25\x1e\xb1\x2f\xb8\xcc\xdb\xdf\x48\x58\x0e\xe6\xb8\xec\x7b\xa7\xb1\x7c\x85\x49\x04\x6c\x03\xb7\x0a\xa8\x13\xc0\x46\x30\xa6\x65\x8c\xa1\x0e\x91\xf4\xad\x05\xa2\xb9\xae\xf2\xc3\x48\x6b\xf5\x86\xc3\x6f\x09\x99\x24\x87\x51\x58\x25\x51\x20\xcb\xb5\xdc\xf6\xf7\x0e\xd0\xf0\x24\xba\x3c\xc9\x73\x5b\x04\xd4\xe2\x29\xb6\xb2\x41\x80\x80\xc5\x39\xa9\x77\x95\x2d\x75\x18\xb8\x8a\x5d\xc6\xe8\xa6\xfe\xe7\x42\x0c\x68\x4d\x95\x5a\xd5\xcb\x0f\x0e\x21\x48\xae\x1c\x55\x5f\x3c\x84\x1f\x04\x5d\x3a\xf7\x60\xdb\x90\x9b\xd4\x8f\x54\x02\xd1\x9f\x53\xf5\xae\xe2\x3c\x3b\xa5\x7b\xaa\x00\xbb\x07\x77\x50\x05\x8b\x49\x22\xe9\x44\x29\xdc\x06\x99\xeb\x3c\xf9\x85\xd9\x4a\x0b\x3d\xd9\xdd\xa6\xc0\xf8\xac\x60\x12\x2d\x64\x5a\x3b\xc4\x6f\x0e\xf3\xf8\xcd\xb8\xe9\x8e\x0e\xc6\xcd\x94\x29\xe0\x11\xde\xa7\xf6\xf6\x8b\xb9\x1c\x46\xd2\xdf\x21\x9c\xbc\xfa\xd5\xc5\xdd\x7d\xf6\x59\x57\xb5\xf2\xa6\xe9\x5c\xbd\x08\xdd\xdb\x89\x21\xa3\x24\x0a\x10\x0b\x8c\xa2\x26\xa7\xf0\xb3\x30\x6f\x14\x5d\x28\xf1\x54\x01\x3d\x2e\x7d\x68\x21\xcf\xfc\x42\xc3\x8d\xf4\x01\xe1\xff\xb9\xbc\xb5\xb8\x3d\xe5\xf5\xb4\x53\xce\x71\x07\xb4\x61\x9a\x02\x82\xcc\xee\x54\xa4\x08\x8a\x10\xaf\x16\xdf\x38\x28\xea\x61\x3c\x0a\xfa\x97\x80\xed\xed\xde\x0e\x99\x36\x9f\x0a\xba\x2c\xa1\xab\x4e\xbb\xae\xc0\xe0\x96\x00\x38\x7f\x80\x80\xfe\x1e\xe7\xb6\x11\x57\xf9\xcd\x77\x0e\xf9\x7d\x6e\x79\x03\x6e\xb9\xb2\xd8\x47\x49\x89\x20\x0e\x2e\xd7\x82\x56\x39\x41\x63\xe3\x35\x37\x52\x01\x15\xf7\x26\x3b\xc1\x69\x96\x0c\xde\xec\xb2\xcf\x88\x0e\xf8\x1f\x2c\x3f\xe3\x2f\x07\xca\xf2\xd1\xb9\x2b\x32\x77\x68\x84\x70\x5f\x15\x3e\xd1\x66\x94\xe4\x6f\x6c\xf9\xc9\x15\x05\xd8\xb2\xf6\xf6\xb3\x6b\x7e\x0d\x08\x5e\xdf\x3c\x42\xa1\xe8\xa6\xc6\xe8\x3f\xea\x03\xe0\x51\x38\xe4\xa5\x2d\xe7\x36\xf3\xb7\x86\xc4\x60\x53\x22\x8e\x88\xac\xb0\xc6\x60\x12\x2e\x28\xe4\x15\xfc\x8f\xf6\x5d\x68\xf2\x89\x02\xbc\xcd\x06\xf7\xe6\x59\xc3\x8b\xa5\x06\x8d\x52\xb3\xd0\xa0\x70\xbc\x98\x30\x97\xa9\x99\xe7\xa1\x4b\x04\x36\x5b\x68\x71\xa0\x84\x26\x3b\x79\xbf\xe6\xce\x6f\x97\xc3\xb6\x49\x55\x5d\x69\x35\xfd\xe7\xc4\x2a\x04\xd1\x99\x8e\x56\xe7\xe6\xe2\x51\x40\x25\x82\x59\xeb\x28\xf0\xc3\xa7\xcb\x13\xbc\xcb\xc3\xd6\xd6\x9d\xa1\x1d\xa4\x88\x30\xc4\xbd\x48\x34\x4a\xb0\x4a\x43\xad\x2c\x24\x11\xa2\x25\x5f\x40\x58\xec\x07\x59\x7f\x30\x5d\xd7\xb3\x23\xd1\x4e\x3d\x2a\xbb\xe3\x73\x87\x13\xcb\x54\x09\x03\xc8\x5b\xf0\xa8\x7f\xe6\xfb\x24\x12\x8b\x9f\x7e\xef\xab\xf3\xab\x03\x39\x95\x36\x4d\x4f\xa6\x97\x8b\x5e\x9d\x85\x6e\xba\xd3\x43\xbf\xc1\x1a\x29\x38\x0b\x86\xbb\xef\xa9\xde\x3b\x64\x24\x85\x44\x3d\xa3\xf0\xb6\x44\x3f\x59\x49\x00\x8f\x5b\x5f\x1e\xb2\x85\x51\x30\x62\x93\x01\xd6\x2f\xdf\x65\x92\x69\x2e\x0b\x1f\xe0\x98\x6b\xe3\xb6\x0c\xb2\xd0\x1b\x96\x32\x94\x18\x44\x6a\x74\xec\x3c\xc3\x1b\x28\x0b\x4d\x38\x63\xe3\x7c\x29\x1a\x7d\xe4\x2f\xe9\x7f\xf2\xbe\xb1\x7d\xac\x35\xde\x5c\x39\xd4\x6d\x1b\xad\xcd\x20\x1e\x9c\xf0\x1c\x56\xec\x50\x26\xf8\x05\xf6\x66\x51\xec\xf2\xcb\xe7\x6e\x07\x46\x8f\xaf\xee\xe6\x37\x57\x49\x57\xbc\x59\xd3\x49\xee\xbf\xfb\xdf\xb3\x61\xde\x7e\xd1\x93\xb6\x05\x3d\xda\x86\x5a\x5b\x7b\x57\x12\xa3\x53\xe0\x4d\x02\xe7\x31\x55\xa4\x88\x43\x6f\x19\xca\x70\x5c\xde\xa8\x0e\xaa\x7c\x7f\xe7\x2c\xe8\x69\xc5\xa5\x38\x21\x96\xc2\x52\xec\xc4\x09\xc3\x97\x1a\x56\x64\xe1\x84\xb2\x5d\xad\xf8\xf3\xb0\x3d\x4d\x96\xa5\x6a\xee\xfc\xaa\xe9\x4a\x7e\xf5\x54\x0b\x46\x22\x64\x50\xf3\x52\xb7\x12\x3b\x6a\xe0\xa8\x3e\x27\x99\x64\xd3\xb4\x28\x65\xc3\x1c\xb4\xcf\x15\xe3\xaa\x3d\x32\x7f\x2d\xf8\xcb\x10\x12\xbd\x75\xe4\xbb\x52\xb2\xf3\x8a\x36\x36\x42\x0d\xa0\xa4\x0c\xec\xdc\x68\x9b\x34\x4e\xf9\x57\x16\x9e\x02\xb4\x34\x78\x81\x68\x07\x67\xf5\x5d\xfd\xc3\xb7\x9e\x16\xd4\xbb\x6f\x32\x48\x6a\xae\x30\x64\x59\x3b\xaf\x3f\xf5\x2b\xe6\x87\xe9\xbe\xba\x0f\xaf\xd4\x7e\x23\x89\x5e\x33\xf5\xe6\x65\x23\x34\xf3\x0a\xbe\x60\x23\x19\x5c\xf2\x30\x9a\x7f\x58\xc9\x1e\x95\x10\xee\x96\xe0\xb1\x0b\x6d\x3f\x67\x72\xd5\xb1\xb5\xd7\x42\xf1\x90\x68\x07\xc8\xc0\x10\xde\xa7\xfe\x42\xcb\xb1\x46\x2d\x9c\x6d\x6a\xa6\xde\x30\x46\xa9\x7a\x4a\x51\x59\xb9\x9a\x71\xdf\x7a\x93\xaf\x0e\xfd\x0e\xf7\x8f\xe7\xb0\x2d\xe0\xba\x12\xc7\x70\x2f\x52\x68\x43\xd2\xa4\xb1\xe6\xdd\xeb\xd8\x75\x0b\xa9\xc5\x12\x4e\x21\x95\x8f\x9d\x04\xa3\x15\x1c\xac\x12\xff\xf0\x45\x95\x73\x97\x1e\x29\x2a\x03\x13\x04\x08\xf5\xd3\x28\x18\x50\x70\x42\x26\x63\xf4\xd5\xb6\x0d\xdb\xc6\x3f\xb7\x80\x98\x74\x8f\xba\xe0\x72\x84\xa8\x08\xd0\x54\xc5\xe3\x20\x65\x7f\xe7\x58\x48\x10\x47\x66\x53\x40\x41\x13\x83\x60\x06\x69\xe2\x62\xca\x47\x9a\x3b\x05\xda\x2f\xa5\x72\xad\xb9\x64\x5c\x81\x46\x08\x1d\x52\x2f\x5a\x6c\x8f\x4d\x74\x2b\xd5\xf5\x05\xc3\x01\x40\x4b\x8b\xe5\x3a\x26\x86\x02\x2a\xe0\xfd\x7b\x7f\x93\xd6\x0d\xf3\x53\x99\x8a\xa5\x9a\xf2\x21\x31\xa2\xb8\x3a\x47\x71\x05\xd4\x92\xc0\xf2\x52\x64\xe0\x45\xb2\xef\x4b\x6b\xdc\xa1\xfc\x69\x5d\x89\xd5\x9a\xfe\xa8\xda\xc4\xfd\xe7\x1c\x7e\xe4\x13\x1c\xae\xf1\x82\xc4\x70\x88\x18\xbd\xeb\xac\x6e\x9c\x96\x2c\x0e\x00\xfc\xab\x26\x7f\x99\xef\x78\x0d\x03\x6f\x94\x64\x29\x9d\x4f\x5d\x66\x88\xc9\x21\xa4\x36\x3a\x9e\x36\x81\xab\x8d\xc5\x47\xc9\x59\x39\x85\xf9\x1a\x3d\xad\xbf\x9e\x77\x7a\x25\x6a\x05\xaf\x3d\x41\xd4\x20\xc1\xe7\x71\xcb\xed\x61\x73\x1c\xbc\xfd\xd4\x7d\xc3\xc7\xb6\xb0\xea\x7e\x87\x57\xc7\x73\xb5\xdd\x4f\x7d\xff\xf4\x2f\x15\x95\x09\x8e\x7e\x70\xac\x3f\x9b\xb2\x9f\x17\xea\x21\xca\x4b\xa3\xb3\x08\x65\x46\xa6\xee\xb0\x56\xbb\xa3\x28\x30\x7b\x0c\x62\x4a\xed\x30\x51\x74\xa5\x41\x27\xc5\x89\x71\xf4\xfb\x7a\x9e\xd7\xb8\x3a\xec\xfb\xe4\x85\x8d\x44\x5f\xa4\x02\x58\x48\x10\xa9\x31\x0a\x9c\x6b\xdc\xdd\xbf\xa3\x22\x11\x85\x2e\x9b\xa5\xff\x63\x03\xe6\xf8\x81\x07\x69\x7d\xfb\x15\x5a\x4b\xa0\x7a\xf1\x90\x66\x91\xb8\x19\xbb\x46\x89\xb4\x79\x76\xb0\xb4\xc5\x12\x5c\xf0\x09\x54\x08\xee\x8d\x53\x5b\x13\xcd\x3f\x1a\x11\x8c\x8a\xa8\x95\x09\xd1\x54\xb8\x61\x9b\x67\xf3\x58\xd7\xb4\x64\x9b\xba\x06\x74\xd4\x44\x88\x16\x51\x60\x1d\xbd\xf4\xda\x08\x7e\xdc\x56\xa4\x00\xf5\x46\xcd\x5d\x5b\x97\xc1\xa4\x09\x32\xdf\x7e\x89\xf0\xda\xb4\xda\xc5\x99\x7e\xf5\xd3\xd4\xf8\xd4\x3d\xd8\x7b\xe3\x21\xcd\x94\x57\xcb\xc2\x92\xa1\x6f\x27\xad\x0d\x23\x8a\x55\x1b\x0f\x0c\x1d\x01\x9a\x04\xb4\xf6\xde\xa7\x8e\xdf\x2b\xe3\x9e\x6b\x79\xa8\x41\x7e\xe1\x06\x50\x26\x41\xa4\x0b\x37\xb7\xf8\xea\xc8\x3f\xfe\xc4\x8c\x1a\xa9\x43\x6b\xc1\xeb\xb8\x92\xd0\xec\x34\xa6\x8e\x8a\x98\xf9\x6f\xcc\x90\xd8\x3b\xdf\x26\x0a\x1b\xfa\x78\x0d\x5d\xad\x6e\x59\x43\x3d\x2d\x88\x23\xd2\xbc\x28\xa2\x70\x86\x32\xb3\x97\xd2\xd7\x56\xd4\x86\x30\x34\x0e\x64\xd4\x09\x9c\x98\xad\x5f\x2c\x01\xb3\xd8\xb2\x25\x44\x29\xc7\xdc\x11\xd0\x2e\x8b\x49\x92\xad\x01\x81\x5a\xb1\xdd\x76\x02\xfe\x70\x0b\x5e\xcb\xe5\xb0\x21\xf4\xb1\x85\x64\xc3\x80\x8a\x09\xdc\x10\x97\xcb\xf1\xcf\xce\x00\x2b\x0e\x18\x07\xbd\x45\x91\x0b\x87\x27\x1f\xb9\x33\x4d\x4b\x73\x5a\x8a\x70\x5d\xa0\xb7\x2c\xcd\x08\xc5\x31\xac\x30\xe0\xb5\x09\x58\x46\xe8\x4b\x50\x19\x3f\x15\x17\xc6\x24\x70\xf4\xb7\x3a\x9d\x9a\x75\xe4\x34\x3b\xd0\xf4\x28\xd0\x12\x6d\xd9\x9d\xca\x90\xca\xb2\x9b\x64\x8f\xed\x06\xac\xc0\xd5\x8f\x0c\x2a\xe1\xe6\x30\xaa\x74\x9f\xa2\xbb\xeb\xba\xa5\xfa\x6f\xff\xfd\xdb\x62\x03\xef\x8c\xf7\xc8\xb7\x38\xdb\x87\xc7\xfe\x1d\xcd\x62\x38\x2f\x18\xe9\x21\x62\x4f\xc6\x83\xaa\x3a\xd1\x71\x1b\x4d\xa6\x5b\x5e\xa2\xbd\x66\x3d\xda\xaa\x4f\x87\x53\x5b\x8b\xb1\x43\x13\x06\x73\xd7\x2a\x6e\x27\x65\x7a\x35\xa5\x56\x1a\xe8\x78\xcc\xa9\x04\x1a\xbd\xbe\x7d\x6e\xbf\x1f\x89\x53\xbe\x8b\x22\x35\xdd\x25\x7b\xa6\xd8\xee\x69\xd3\x4a\x17\x22\x9e\xee\xfe\x29\x06\x9d\xc6\x7b\xa0\x6e\x93\x00\x9a\x9c\x05\x4b\xd5\x60\x6c\xb6\x57\x11\xfe\xa2\xf4\x5b\x98\xe9\x5f\xb4\xba\xf9\x98\x50\x63\xaf\x34\xf2\x77\x8c\xb0\xd5\xb9\xca\xb3\x67\xd2\x65\xbf\x79\x3f\x18\x5a\xc2\x61\x49\x05\x61\x8e\x9a\x66\xda\xb8\x80\x2f\x24\x10\x39\x94\x91\xc4\xb2\x6e\x0a\x52\xe2\x6e\xbc\x87\xf3\x95\xc4\x7f\xf9\xb0\xc2\x18\xcb\x21\xce\x50\xbb\xe3\x72\x2f\xfb\x85\x8e\x75\x1b\xd9\xce\x0e\x47\xc4\x7c\x29\xc4\xd5\x0c\x14\x00\x9a\x53\x3e\x91\x3b\x44\xfd\x23\x74\x3c\xbc\xe7\xce\x87\x08\x52\x2b\x5d\xe2\xc9\x1b\x3f\xa3\xfc\x07\x02\x7e\x16\x03\x16\x89\x0f\x58\x9b\x3e\xc9\x03\x8c\x99\x6f\x92\xf0\x4a\x68\xe4\x56\xf5\xfe\x70\xf2\x4b\xb2\xcf\x09\x1a\x95\x70\xda\x31\xb7\x4e\x8b\x76\x94\xf6\xbe\x8d\x8b\xdb\xb0\x16\x58\xc3\x6c\x79\xf7\x43\x23\xf9\x74\x3b\x5b\x5f\xbe\xd0\xf1\xeb\x11\x0f\x50\x30\xaa\xed\x5d\x4c\x16\x2c\xc3\x6c\x5c\x86\x49\x35\xa9\x73\x31\xaa\xb4\xe3\x25\x78\x18\xc8\x82\x96\xfe\x1b\x7b\x62\x3a\x81\xef\x7d\xa1\x90\x42\xeb\x2c\x26\x48\xa3\xb0\x3e\xee\x1f\x8f\x55\xf9\x14\x96\x16\xf8\x0f\x96\x7d\x51\x36\xac\x86\xec\x25\x5e\x0a\x30\xaf\x05\x3d\x95\x29\x6c\x26\xef\x81\x10\xe1\x29\xd6\x47\x55\xd0\x42\xca\x43\x24\x76\xa0\x0f\xc6\xd0\xef\x16\x95\x14\xf8\xdd\xcb\xf5\xf0\x3c\x6b\x95\xf1\x4d\xe2\x22\xf7\xc1\x4c\xe9\x39\x67\xf1\x64\x32\x38\x38\xd7\x89\x4e\xfb\xac\xb8\x1d\xc8\xef\xad\xe0\xf6\x28\xa6\x08\x82\x63\x0a\x10\x49\x4d\xaa\xee\xcd\x5b\x9f\x77\x93\xc4\x7a\xfc\x3f\xb9\x66\x05\x15\x62\xff\x01\xbe\x9d\xc8\x21\x37\x39\xa3\xd6\x3f\x33\x78\x7c\x4b\xa6\x97\xfe\x2d\x6c\x7e\xe5\x7e\xf4\x8a\xe5\x84\x37\xed\x09\x56\x5a\xca\x41\x47\x10\x7e\x80\x14\x3f\x60\xbf\xeb\xa6\x5c\xe2\x0f\xa1\x71\x6c\x78\xeb\x74\x8b\x81\xf7\x93\x41\xdf\xb7\x73\x36\x6c\xea\xee\x27\x1a\x86\x58\x5f\xcf\x2b\xa6\x1d\x0a\x22\x05\x53\xf9\xf7\x5e\x34\x99\x38\x65\x9e\x7e\xd3\x2e\xc2\x69\xfa\xd1\x70\x23\x05\x49\x35\xd4\xb9\xb8\x97\xfa\x42\x62\x70\x35\xe3\xfc\xd1\xeb\x29\x27\x55\x1f\x59\x00\xa8\x3f\xbb\x26\xda\x59\xdf\xf2\xb9\xcf\x7c\x17\x06\xba\x41\x19\x2b\x55\xe0\xcf\x28\x2c\xfa\x39\x4d\x2c\xf9\x5b\x0f\xc5\xe8\x1a\x1b\x73\xc9\xa6\xb5\xf3\xac\xcb\xbc\x96\xca\xc8\xaf\x05\x36\xfe\x04\x67\xd4\x66\xef\x33\x38\xeb\x86\xf3\xb1\x35\xcd\x99\xb0\x59\x48\x9f\xfa\x9d\x12\xa5\x15\x54\x75\xb6\x17\xce\xf0\x26\x7f\x0b\x4a\xdd\x71\xd2\x71\xbf\x68\x4e\x3c\xf9\x6a\x80\x1d\xd8\xfc\xf0\xe3\x65\x3d\xae\xdf\x2f\xd2\x40\x6d\xb3\x50\xa0\xce\x15\xd8\x5a\xa3\x40\x92\x61\xea\x97\xf8\xe8\x52\x41\x6d\xfc\x31\x9f\x1a\xb2\x97\x8f\x1d\x8e\x3a\x6b\xf4\x57\x1e\xcb\x18\xce\x58\xed\xfc\xa7\x78\xb9\x17\x42\xc8\x3a\x11\x85\xea\xb4\x1f\xec\xaa\xc5\x6f\x8f\x85\xed\x09\x16\xbf\x62\x4d\x31\x39\x28\xb2\x0d\x4d\xc0\x60\x1c\x10\x66\x46\x93\xed\xf8\xf1\x13\x08\x24\x60\x9a\x53\xd6\x31\x1a\x5b\x78\x1f\x2f\x85\xa9\xed\x6a\x70\xec\x9a\xf0\xb3\x04\x9a\xfe\x3e\x73\x4d\x08\xda\x49\x81\xf5\x95\xa8\xfa\xe5\x14\x83\x1b\x3c\x9d\x38\xee\xde\x66\x81\xba\x17\x84\x5a\xab\x6d\xbb\xe6\x15\xe3\xd4\x91\x83\xbb\x67\x9d\x7d\xb4\x94\xc2\xe7\x1c\xf8\x59\x50\xb4\xc2\xca\x49\xf2\xd4\x19\xeb\x65\x4a\xca\xef\xdf\x7a\x03\x96\xa1\x5b\x56\x85\x46\x02\x1d\xd2\x32\x24\xe2\x80\xa8\x5b\xb6\x77\x36\x83\xa8\xc4\x2e\x77\x15\x29\x8c\x89\xdf\x74\xdc\xe8\xa6\xbf\x68\xee\xd5\x8f\xd9\xf4\x14\x55\xef\x60\x17\xb7\xe0\x55\xe6\xbc\x16\x46\x1d\xc7\xd2\x7e\x73\xa3\x0b\x50\xbe\x24\x0a\xac\x5d\x1d\x3b\xe4\x29\xdf\x9f\x6b\x15\x4c\x65\xf4\xde\xa4\x4c\xf7\x9f\xa8\x64\xe2\x21\x31\x71\x2e\x6d\xb7\x76\xbe\x41\xdb\x2e\x3a\x77\xcf\x54\x3e\x88\x30\x1c\xab\xcb\x3c\x0e\x01\x66\x13\xc7\xd8\x88\xdd\xf1\xf4\xe1\x37\x8a\xfa\x80\xfb\x02\x61\x18\xc7\x2f\xda\xda\x9b\x57\xda\x1b\x8a\x0b\xf8\x07\xfe\xad\xb5\x54\xb8\x5d\xc1\xad\x87\x75\x62\x5c\xf5\x42\x31\x9c\xd6\x38\x32\xa3\x54\x81\x83\x3d\x34\xb4\x47\xb6\x48\x3a\x89\xc1\x50\x04\xd6\xd0\xb9\x62\x47\x86\x28\x6b\xa7\x67\x69\x61\x53\x95\x12\xa2\x26\xa5\x50\x8a\xb8\xf0\x21\xe8\x5b\xce\x00\xc5\xed\x9d\xf6\x12\x66\xda\x30\x05\xe1\x5f\xfa\xab\x57\xbc\x9d\x34\x8e\xc5\x48\xfa\x16\x65\xa2\x0f\x49\xd5\x45\x7f\x86\x3a\x33\x10\x73\xe1\x79\xc2\xef\xfb\xf8\x2e\x84\x0a\xe1\x09\x35\x40\x3a\xdc\x62\x35\xe7\xaa\x42\x55\xf6\x49\x3d\x12\xc5\xbf\x7b\x3b\x0c\xda\x16\x72\xe9\xdb\xbd\xed\x4f\xa8\xeb\xd1\x37\xea\x59\x39\x1d\x03\x4c\x82\x3a\xd9\x06\x29\x78\x2a\xa0\xb2\x19\xd9\x10\x3c\x79\x08\xe9\x48\x9c\x36\xe8\x52\xf1\xdf\x57\x5f\xa5\xa1\x6f\x53\x73\xc7\x39\x48\x8c\x82\xf0\x34\x32\x91\x5f\x5d\xdc\x00\x14\x5a\x63\xdd\xc1\x56\x28\x68\x26\x01\x7a\x74\xe0\xf5\xb8\xdc\xcf\x7f\xec\x5f\xa9\xc7\x42\xe2\x62\xf6\x2b\xf2\x64\xe2\x83\xda\x7d\xcf\x8c\xe0\xd4\xf6\x4d\x38\xee\x6f\x25\x4f\xba\xbc\xa2\x17\x6c\xd9\xb1\xa8\x8c\xe1\xbc\x3a\x20\xc8\xab\x5e\x6c\xb0\xd2\x59\x02\xc8\xcf\x7b\x14\xa9\x48\xe2\x5c\xd6\x5c\x70\xfe\xd6\xfb\x0b\x0c\xc2\x6d\x81\x03\xb6\x56\xfb\x53\xfa\x09\x76\x5c\x36\xb2\xfb\xc1\x58\x85\xe7\x68\x91\xf9\xc6\x03\x1e\x74\x0b\xb5\x91\x60\xea\xc9\xdb\x72\x02\xd2\x9b\x7c\x37\xfe\x81\xda\xa6\x79\x19\xc5\x1d\xbb\x98\xc2\x81\x88\xee\xde\xec\x26\x69\x3d\x69\xeb\xc1\xe7\xa0\xdc\xbc\xe4\xad\xe9\x34\x55\xd6\xc4\xd8\x2f\x05\xb3\x2a\x89\x90\x2b\x71\x6c\x5a\xa0\xde\x62\x2d\x30\xdc\x1c\x0f\x67\x5c\xb6\x90\x11\xcb\x70\x22\x86\xb3\x7c\x99\xf9\xe9\xca\x38\x53\x20\x7d\x5d\xb4\x32\xe2\x37\x7a\xdd\xa2\x51\x81\xc7\xdd\x07\xba\x5b\xdc\xbe\xe3\x32\xab\x38\x1a\xaa\xf5\x4f\x0e\xb8\x5f\x12\xfc\x68\x38\xd6\xca\xdd\xc8\x32\x75\x53\x58\xf1\xb0\x92\x2f\x23\x1a\x0c\x5d\xdd\x69\xd2\x16\x16\xc2\x83\x34\xf0\x40\xe5\x33\x10\xf8\xee\x07\x62\xe5\x81\xea\x0a\x45\x76\x81\xb1\x8c\xfe\x90\x5b\x94\x7d\x06\x9c\x86\x31\x1d\xed\xbb\x55\x59\x52\x89\x20\x98\x5b\x8b\x32\x02\x0f\x22\xa3\xf2\xb1\xf1\x41\xc7\x4e\xf5\xa8\x35\xe7\x30\xfe\x8b\xdd\x6c\x9a\x5a\xbd\x67\x24\xe7\x26\xb2\x4e\xe4\x2f\x33\xa5\x95\x09\x38\xa1\xf1\xf3\xfc\x7d\xb3\xdf\xa7\xa3\x1f\xbc\x86\x3e\x93\x3c\x5c\xfd\xb7\x77\x87\x63\xfe\x16\xa4\xbd\xa2\x61\x5a\x94\xec\x26\xd1\x78\x74\x87\x02\xb9\xe7\x3b\xcf\xbd\x2d\x46\xcf\x81\x39\xcd\xc5\x47\xc0\x60\x8e\xed\xa0\x90\xb9\x47\xa3\xd0\xa6\x10\x13\x4f\x59\x03\x67\x0b\x56\x5b\x7b\x36\xd1\x50\x2d\xb2\xa7\xb4\xb9\x24\x7e\x6d\x20\x0b\x27\xec\xe9\x2a\xdf\xb0\x0b\xa7\x93\xac\x20\xd5\x57\x3d\x33\x2e\x8b\xd4\x0c\xc7\x90\xa1\x98\x46\x53\x57\x37\xe9\x20\x81\xd2\x1f\x6d\xb6\x9a\x4b\x79\x90\x14\xe0\xe9\xa7\x8f\x14\x13\x4e\xae\x30\xf1\xf1\xff\x04\x2f\x95\x85\x1f\x6d\x0f\xee\x54\x20\x18\x90\x5e\x26\xf6\x74\x39\x0f\xa6\x7f\x4d\x26\x4f\xa3\x6e\x5f\xb2\x51\x5b\xc5\xf3\x33\x4d\xc9\x54\xd2\x20\x53\x48\x1a\x3e\x65\x9a\xe3\x1c\x61\xa2\xdf\x52\xc3\x6c\x9c\xec\xef\x4e\xb8\x9e\xe3\x11\xc7\x1e\x77\x00\xa6\xaf\xab\xec\x66\x04\xc6\x61\x05\xe1\xe6\x04\x91\xa3\xfc\xaf\x2a\xaf\x05\xca\xa1\x53\x87\x81\xeb\x20\xce\x6f\x27\xcf\x3f\x7f\xdb\x49\x9c\xb3\xc6\x32\x4a\xa3\xef\x9e\xe8\x74\x9f\xdd\x40\x4a\x33\xd5\xd4\xc7\x1b\xc6\x6d\x0a\xa8\xcf\x1b\xe7\xcb\x6b\x57\xb4\x8a\xc1\x3f\xc3\x90\xdb\x25\xb4\x36\xd4\x4a\x79\x27\xf3\xbd\xec\x43\xf2\xf7\xd5\x35\x45\xdb\xc3\x21\xda\x43\x5f\xd8\xf2\x38\x1f\x7d\x3b\x2b\x2a\x7b\xba\x2a\x99\x20\x9e\x4f\x6e\x7f\x61\x2c\x06\x67\x14\xcb\xf6\x61\xba\xcd\xd6\x2a\xa8\x8c\x21\x03\x62\x92\x25\x32\x5d\x29\x76\x89\x84\xbd\x10\xe7\xf6\x02\x15\x0a\xc4\x28\x30\x2d\x58\xfd\x80\x02\xf5\xc1\x46\xf0\xfe\x94\xfd\x26\xd9\xf7\x0c\xee\xb1\x27\x8d\x7d\xa5\xb3\x99\x77\x32\x1e\x8a\x9c\x57\x4a\x10\xb7\x7a\xeb\x80\xeb\xff\xe9\xff\xd3\x5f\xe7\xb7\xe3\x86\x02\x2b\x2b\x6c\xc4\x23\xa6\x55\x44\xaf\x78\x16\x44\xa3\xa9\xb7\x30\x03\x18\x94\x0d\xba\xc9\x2c\xd1\xca\xb4\xce\xc1\x50\x54\x2d\xd1\xef\xaa\x05\x5e\x7b\xa7\x2c\xe7\xbe\x29\x61\xfd\x46\x6a\x2e\xd0\x71\x4d\x7a\x84\x5b\xd2\x71\xa6\x16\x76\x76\x93\x06\xbe\x3c\x36\xc4\xb5\xdd\xef\xa8\xa5\xe0\x31\x20\x86\x40\x92\x22\x66\x53\x62\xea\x94\xda\x6c\x5c\x96\x35\x43\xb6\x8d\x00\xae\x95\x00\xae\x8d\x00\xd6\xdf\xb8\x2c\xd6\x41\x7a\xd0\x41\xe6\x7a\xdd\xf2\xed\x8e\xb4\x70\xb4\x5c\x05\x3e\xf1\xbd\xf5\xbc\xd6\x64\xde\x79\x43\x99\x6e\x24\x7a\xc1\x84\xd3\x76\x3f\x36\x3d\x33\xdb\x0b\x79\x92\xe5\x2e\x62\xde\xe4\x8f\x5d\xe4\xbd\xd1\xf8\x33\xc7\xea\xa7\x2e\x3d\xdc\x90\x45\xe9\xdf\x58\x66\xca\xdd\x7c\x67\xb6\x3b\x77\xfc\x59\x50\x2e\xec\x15\x2b\xbf\x3c\xd8\xd4\x99\x6b\xba\x11\x7f\x27\x10\x5e\xeb\xf8\xec\x59\x39\x2d\x24\x76\x20\xf7\x3b\x56\x5a\xe1\xaf\xf9\x87\xe2\x52\x35\xe1\x40\x15\xc3\x8f\x17\x0c\xaa\xe7\x1c\x06\x94\xfc\xd3\x0f\xab\xfd\x63\x13\x9b\xf6\x77\x7c\xe5\xb2\x65\xc0\xd6\x83\x41\x7e\xd9\x26\x07\xfd\xb2\x5d\xe8\x9d\xd9\xea\x45\x79\x73\x5d\xa4\xb9\xb0\xbd\x7b\xd7\xd7\xc8\x9c\x2b\xb4\x3f\x22\xbd\x16\xa2\xce\x39\x3b\xd6\x86\xba\xfd\x65\x09\x40\x86\xd9\xe9\x06\x65\x36\x66\x8c\xce\xba\x82\x36\x32\x75\xaf\xab\x18\x71\xd1\x42\x09\x1c\xd7\x07\x60\x20\x78\x50\x17\xd1\xaf\x03\x34\xae\x1f\x52\xc2\x48\x8a\x49\xdf\x2d\x4e\xb5\xce\xdd\xb3\xd6\x6e\xda\x97\x23\x83\x66\xba\x05\x63\x34\xd4\xab\x80\x72\x6b\x55\x38\x46\x95\x96\xec\xd3\x08\x68\x77\x4f\x42\x95\x80\x35\xfd\x28\xc0\x96\x4f\x72\x74\x73\xe6\xf8\xa5\x48\x31\xa5\x48\x38\xc0\x73\xbb\x11\xfe\x1c\x72\x41\xe8\x06\xa1\xb8\x44\xd1\xa0\x66\xd6\xf8\x33\x46\x53\xec\x9e\x91\x61\x15\xd0\x7b\xca\x23\x5e\x1d\x8e\xa9\xb1\xfa\xd7\x11\xf9\x9d\xfe\x4a\xa9\x6d\x3c\x7d\x7c\xee\x91\x5b\xc5\xf6\xc5\x4d\x59\x96\xa9\x52\x71\x40\x80\xa7\x17\x99\x6f\xde\x13\xdc\xf8\x87\x02\x4c\xae\x71\xb0\xfc\x17\x73\xf8\xe3\xc3\x24\x92\x8d\x7f\xb6\xeb\xd8\x2c\xb0\x13\x45\x12\x45\x5f\x2b\x7e\xfb\x43\xf7\x82\xcc\x94\x3a\xb7\xc6\xa9\xed\xfb\x9e\x25\xb3\x25\x45\xfe\x5b\xd5\x5d\x5b\xd2\xba\x65\xe3\xf2\x27\x72\x63\xbb\xff\x08\x54\x61\xcb\x3c\x8d\x6c\x3a\x42\x5f\x55\x09\x8a\xfb\xad\x09\x9e\x3e\x3c\x54\xac\xd9\x76\x7a\x3e\xc6\x7b\xc1\xc9\x0f\xe5\xf9\xc3\x56\x7e\xde\x76\xe3\x61\x01\xdb\x7d\x52\x60\x83\xd3\xac\x57\x07\x78\x59\xf9\x92\x30\xdc\x4f\x50\xeb\x73\x8d\x88\xb8\x83\x27\x58\x28\x91\xe0\xf6\x39\xc2\x94\x50\x6d\x00\x78\xac\xd9\x78\xac\xe9\xf8\x01\x64\x01\x15\x60\xff\x52\x9b\xee\xce\x58\x66\xc6\x7a\xff\xaa\x52\xe7\x2e\x51\x3c\x20\x76\xc3\x51\xdc\x7d\xe8\x1e\x34\x69\x37\x50\x56\x6a\x7f\x14\xd7\xf1\x9b\x12\x74\x42\xf0\xc5\x8a\x51\xe2\xe0\x29\x87\x63\x12\xae\x0e\x38\x06\x47\xc7\xd4\xd7\x52\x47\x53\x5d\x6d\x09\xd6\xe3\x38\xae\xc3\xf2\x7b\xbc\xd8\x76\xfa\x03\x84\xc4\x88\x55\x21\x08\x45\x17\xba\x12\x1f\xa8\xc4\x86\xb2\x2f\x3a\x7e\x48\x8a\xda\x39\x16\xac\x2e\x94\xf4\xe9\x17\xd0\x39\x0c\xc9\x53\x8c\x65\x34\x76\x86\x4a\x5b\xee\x60\xc2\x94\x35\x7f\x39\xc7\x16\x5b\xb5\x27\xa1\x0a\x6b\xe4\x9b\xe7\x5d\x9c\xc5\xdc\xf6\x22\xb9\x0b\x5d\x7b\xfd\xe0\x4f\x6c\x19\xb4\xc1\xe7\xb0\x53\xcb\x7a\xa2\x10\xc6\xab\x82\x57\xb8\xa0\x49\x9b\x24\xe9\x62\x36\xd9\x06\x12\x18\xbf\x21\x54\xa1\x3b\xd1\xdf\x89\x6c\x30\x49\x03\x22\xdf\xc0\x2a\x0c\x31\x98\x54\x43\xb9\x25\x7f\xf8\x0b\xc8\x7c\xbf\x0c\xc4\x35\x7d\x2e\x4e\x9d\xce\xd2\x13\xb9\x5d\x48\xd3\xfe\xb7\x2d\x80\x30\x08\x4e\xe8\x1a\x53\xba\x19\x1f\xba\xff\xad\xc7\xd7\x09\xd1\x59\x6d\x5d\xd7\xc1\xea\x40\xe0\x0a\x4f\xcb\xa8\x79\xf7\xd5\xea\x66\x82\x95\x97\x61\x13\x57\x44\xda\x7b\xe6\x56\x39\x59\x7b\x87\xd7\x53\x98\x3a\xcd\xfd\x55\xae\xde\x12\xb9\xe8\x5c\x63\xc9\x59\xc1\x8d\x72\x70\x3a\xd9\xd0\x6e\x9e\x80\x14\xc7\xce\x76\xb3\xa2\x34\x37\xb9\x68\x51\x18\x41\x96\x38\x62\xde\xfa\x81\x9a\xac\xd5\x54\xb1\x76\x1f\x84\x7e\xf5\x2c\x5a\xb6\xd4\xe1\x14\x94\x15\x5a\xff\xa6\xb6\x3c\x75\x79\x74\xc6\x1a\x03\x76\x33\x69\xdd\x54\x69\x8b\x0d\x4e\x19\x3b\x0f\x80\x79\x65\xa3\x04\xb5\x12\xd7\x36\x59\xc0\x9b\xf0\xfc\x4c\xc7\xb3\x5a\xaf\xed\x69\x8d\x06\xbc\x0b\x59\x27\xf9\x21\x41\x9b\xed\x93\x10\x05\x98\x81\x2b\x46\x95\x86\x0f\xcc\x38\x5f\x5d\x5f\xbe\xae\xeb\x5a\x8c\xdf\xef\x9a\xec\x29\x85\xa9\x1c\x10\x74\xc1\xd9\x47\xf5\x06\x4d\x0a\x4e\xc6\x75\x6d\xcc\xf0\xfd\xe8\xcc\x6f\x38\x01\x02\xc6\xdc\x98\xe2\xf5\xb0\x26\x7f\xe9\x91\x6a\x1b\x9c\xd5\xc8\xd8\x94\x30\x4e\x9e\x05\xf7\x3c\x2d\x55\x08\xfd\x7d\x9b\x6b\x7e\x19\xc8\xc4\x1f\x08\x7a\xb2\x8d\xad\xf0\x11\x30\xf5\x2e\x6f\xe1\xda\x1c\xe7\xc5\xca\xdd\xb4\x05\x5c\x9d\xb3\x93\x85\xa6\x3b\x00\xfa\x3e\x59\x9c\x48\xf9\xdd\xe5\x5a\x22\x25\x0c\x5c\x74\x6a\x5a\xe3\x2b\x05\x7e\xb8\x1e\x30\xbe\x47\x5f\xba\x03\x40\x6a\x6b\xc1\x5b\x35\xc4\x3f\xe8\xe9\xb2\x32\x4f\x03\x95\x55\x5a\x1f\xfa\x3b\x41\xed\x7b\x5f\x6a\xa9\x0d\xbe\x0d\x6c\xaa\x7f\x5a\x34\x0d\x65\x2e\xc6\x5c\x73\xb4\x1c\x53\x11\x9c\xd2\x13\xc1\x5e\x50\x0d\x0f\x77\x02\x25\xb7\x05\xb0\x79\x55\x76\xe0\xf5\x87\x02\x05\xf6\x02\xe7\x94\xda\x05\xe4\x00\x2d\x15\xaf\x1f\xb5\x2e\xb9\x6b\xba\xd1\xee\x64\x1d\x89\x47\xb7\x01\x21\x0b\x00\x6a\x39\x41\x6b\x02\xf1\xbe\x7f\xc5\x22\x1a\x2f\x41\x64\x46\x62\xb4\x54\xc4\x79\x8e\x9e\xea\xec\x6d\x85\x28\x9e\x02\xc5\x68\xc9\xc5\x89\xfe\xfc\x03\x00\xf5\x26\x81\x91\x05\x2d\xe2\xf8\x40\x7f\xe6\x44\xe2\x18\xfd\x23\x51\x7c\xe9\xb3\x6e\xf4\x53\x1a\x99\xdf\x74\x7f\x09\x9c\x56\x55\x01\x36\x1e\xa6\x9a\x1e\x06\xf8\x63\x63\x24\x0b\xdc\x64\x6a\xdb\x68\x44\xa2\xd1\x44\x3b\xe7\x9f\xc0\xbe\xad\xc4\x92\x46\xa1\xce\xec\x16\x3a\xbd\xb8\x72\x8c\x9f\x5a\x3f\x19\x92\x9e\xbf\x91\xf4\x8a\x96\x49\x78\x63\x1b\xf2\xfd\x9d\x45\x56\x45\xa9\x5f\x63\xa8\xdb\x45\x48\x9d\x48\x26\x22\x4e\x7f\x7e\x74\x81\x57\x10\x0a\x45\x85\x84\xed\x53\xd6\xd7\x83\x89\xf5\x2c\xd5\xf4\x89\xfe\x8a\x13\x4b\x72\x1b\xf9\x15\xe7\x90\xa3\xa8\x8d\x89\x4b\x16\xb5\x73\xa4\x13\x43\x72\x09\xde\x05\x53\x40\x6e\x46\x17\xa2\xfe\x2c\xb0\x28\x25\xd1\x53\x9d\xa9\xf3\x18\xa5\x0e\x98\x5a\x66\x88\x89\x84\xf6\xda\xf3\x35\xbe\x84\x7a\xb1\xa6\x24\x28\x52\xf3\x1b\xb1\x8b\xbd\xd9\xc5\x78\x56\xee\xf4\xfb\x99\xde\x4a\x07\x49\xcc\x32\xe2\x07\xda\x24\x0d\xa0\x3f\xd0\x98\xc6\x2d\x3c\x11\x93\xcf\x51\x1e\xac\xec\xce\x5d\xd8\x7c\x05\x94\x40\x3a\x05\x87\xde\x6e\x74\x69\xd1\x99\x65\x57\x2f\x50\x19\x2e\xd6\x96\x4a\x53\x5c\xca\xc3\x88\x20\x89\x6c\xf6\x6c\x5a\xc8\xc7\x23\xe7\xd4\xfb\x07\xe8\x31\x6f\xde\x65\x66\x96\x8e\x88\x4c\x77\xf4\xa7\x89\xaa\x31\xba\x0a\x54\x94\xff\x1f\x49\x67\xad\x24\xbd\x0e\x05\xe1\x07\x72\x20\x33\x84\x63\x98\x31\x33\x67\x66\x66\xf6\xd3\xdf\xda\xff\x46\x5b\x9b\xb8\x64\xa9\x75\xfa\x6b\xd5\x19\xcb\x14\x4f\x74\xe4\xce\xd1\xa8\x2f\xe3\x95\x23\x18\x3f\x4b\x6a\x2e\xef\xd4\x52\xbe\x96\x63\x3e\x98\x94\x81\xd7\xc0\xca\x03\x53\xd9\x03\x44\xd4\x8e\x3e\x9a\x7a\xb1\xc6\xb8\x90\xfb\x8a\xe3\x89\xfe\x7b\xf3\xad\x34\x7e\x04\xf1\x90\x0c\xa5\x2a\xeb\x4a\x21\xc3\x35\x59\xf2\x54\x53\x3d\x2e\x3c\x7e\x1f\x7b\x29\x82\x82\x68\x13\x09\xc6\x81\x77\xb5\x5e\x51\xd8\xe3\x1a\x38\x83\x4a\x63\x74\x77\x0c\x1c\xe2\xf7\x4b\xd3\x14\x45\x5d\x44\x06\xe5\x85\x79\x64\xca\xc4\x08\x13\x54\x6b\xc8\xc1\x20\xa9\x3e\x80\x78\x0b\x74\x31\xf7\x7d\x3f\x40\xf6\x54\x61\x1d\xe7\x81\xfc\xdf\x44\xfd\xe0\x55\x74\x17\xe4\xb3\x0f\x61\x7b\xa9\xe3\x3d\xca\x88\x3e\xc6\x47\x28\xf2\x76\x2d\x60\x85\xf9\xdd\x04\x77\x7e\xed\x5d\x9f\x74\xd1\x1c\xde\xa9\xcf\xa8\x86\x53\x3c\x32\x37\xa8\x72\xa7\x47\xa4\xf2\x23\x81\x27\xf9\x91\xb8\x33\x3d\x54\x7a\x7b\xc3\x52\xbe\x1d\x67\xff\x70\x88\xd2\x27\x7d\x92\x88\xb6\x50\xfd\x72\x8b\x69\x43\x06\xba\x9e\xa3\xb9\xe7\x79\x51\x33\xd2\x3a\xb9\x33\x0d\x81\x7c\x30\x5e\x0a\x27\x8b\xd5\xf9\x2b\x0d\x7f\x60\x40\x2d\xcf\x16\xf1\x5c\x32\xf1\x22\xfc\x74\x8e\x33\xfb\xdc\x82\x04\x0b\xfa\x4e\x0a\x07\xef\xaa\x4d\xdb\xe6\x00\x93\xb9\xb1\xfb\xc3\x4e\x9e\xd1\x5c\x69\x6a\x3d\x32\x10\xc1\xf7\x51\x61\x88\x2f\x53\x84\x7e\xe8\xc3\xb9\x58\x33\x60\x27\xc6\x0d\xfa\x34\x5e\xe9\xee\x5f\x65\xd6\xd9\x4a\x93\x93\xa0\x9f\x93\xa0\x27\x08\x04\x60\xb3\x33\x7b\xaf\x46\x25\x36\xae\xb1\x67\x79\xa0\xbe\x49\xc4\xc1\xbf\x7b\xbe\x10\x3f\x0e\x45\x9c\x1e\x22\xb8\x78\xf9\x98\x57\xf6\x70\xdd\x7e\x36\x52\x48\x30\x2e\xf0\x2c\x13\x43\xe7\x2f\x75\xe7\x0e\x2b\x0c\x8e\x20\x61\x72\x15\x20\xb7\x52\xeb\xaa\x22\x14\x44\x75\x6a\xdd\xed\x32\x03\xfc\x18\x4b\x18\xd9\xef\x58\xe7\x1f\x66\xbe\x1d\xc7\xbe\xb5\x22\xfe\xb1\x59\xa0\x48\x8e\x1b\x1d\xa8\x19\x2c\xee\x77\x22\x65\x5a\xb8\x2d\x41\xf2\xd5\x8b\x59\xfd\x30\xbc\x61\x26\xde\xde\xec\x08\x8d\x73\xe0\x4f\x31\xe5\xe3\x16\xed\x6a\x25\x40\xcf\xf5\x9d\x51\x4a\x5a\xe9\xef\x9f\x1f\xfd\x71\x54\x6f\x12\x67\x95\xd3\x10\x4d\x5f\x7e\x46\x92\x16\xb1\x52\x3b\x84\xbd\x25\xda\xfa\xab\x3e\x82\xc7\x49\x54\x17\x3f\x31\xa2\x54\x29\x29\x85\x4a\x67\xdb\x25\x8a\x5a\xdf\xb7\x69\xfb\xd7\xfe\x0d\x8d\x83\xa6\x1f\x15\xd6\xed\x5c\x6c\x98\x05\x29\x76\x30\xb4\xf1\x36\x6b\xa3\x8b\xa6\xe6\x42\xc6\x73\xb1\xad\x9e\x92\xe7\x59\x01\xc1\x7d\x8f\xe0\xcb\xd3\x0f\xf3\xdf\xe4\x21\x00\xdc\xef\x1d\xaa\xfd\x05\x3d\xb6\xd4\x34\x8b\x3c\xbc\xf1\x4e\xbc\x14\x85\x19\x55\x25\x6b\x27\xe7\xe2\xcc\x95\x95\xc0\x14\xbf\x26\xde\xe0\x57\x9c\x97\x65\x10\x3e\x84\x36\x36\xd4\xe1\xda\x13\x5c\x80\x02\x6c\xb9\x34\x50\xd7\xb6\x6d\x67\x09\xa5\x31\x86\x8a\xb0\x86\xec\xa1\xcf\x14\x4b\xef\x1c\xa1\xef\xbc\xfa\x63\x98\xe8\x61\x8a\xed\x4a\xec\x18\x66\xfb\x2f\xb1\xd5\xdd\xb6\x59\xcc\x03\xbe\xed\x8d\x92\x80\x71\x93\x7b\x3f\x13\xe0\x02\x06\x7d\xf7\x87\x10\xaa\x77\x40\x1a\x24\x35\xb1\x16\x80\x12\xa3\x98\x21\x34\x73\x02\x97\x85\x27\xcd\xb2\xfd\xd8\xb7\x87\x84\x02\x73\xa1\x82\x7e\x77\x69\x08\xa7\x28\xf2\x4e\x8f\x87\xc8\xd5\x73\xb3\x24\xf7\xa8\xbc\xef\x0d\xdd\x76\x80\x61\x58\x2f\x46\xc1\xb7\xfe\xdb\x63\xe4\xb2\x2e\x39\x43\x40\x05\x63\xfe\x5a\xcf\xd8\x38\x59\x3c\x3a\x16\x12\x0b\xb5\xcd\xa9\xda\x2b\x55\x1f\x42\xb2\xc1\x6f\x23\xd4\xa4\x03\xec\x04\x8e\xcf\xdc\x6b\x55\xab\xd2\x27\x60\x25\xc1\x4f\xd6\x03\x69\x28\xec\x27\x84\xd3\x8a\x2d\x9c\x4c\x1d\xf3\x96\xd5\x79\xd7\xb0\x49\x50\xdf\x88\x5b\xaf\x90\x6a\x5a\x2c\x27\x24\x4a\xae\xfe\x90\x55\x3e\xd5\x6a\xe5\x28\xec\x3a\xc7\x57\xfe\xf6\x29\x9c\xf1\x82\x96\x31\x3f\xed\x67\x6d\x81\x3a\x57\x68\xe9\x4e\x83\x4b\xaf\x3b\xaa\x52\xed\x19\x02\x86\x04\x06\x53\x30\xe6\xb1\xe3\x1f\x81\x86\xb4\x3c\x3c\x80\xf2\xff\xfc\x3d\x7f\xd0\xe8\x3f\x1c\x4e\xd0\xa7\x7e\x1e\x00\x43\x13\x12\xa2\xf4\x8d\xdc\xe4\x3d\x31\x85\x2b\x33\xc4\x6f\x4b\x8f\x17\x84\xa5\x3a\x9e\x71\x53\xf0\x50\x69\xf8\x9a\x2a\xb3\x12\x24\x91\x1b\x58\x11\xbf\x45\xb2\xae\x54\x3f\x60\xe7\x4d\x1c\x61\x4f\x68\x01\xd8\x61\x12\x49\x47\x6c\x7d\x74\x28\xcf\xce\xbb\x33\x6a\x2a\xdf\xb0\x55\x6e\x21\x9c\xa4\x28\x0a\x1b\xe7\x79\x3f\xef\xea\xd6\xf6\x9f\xe7\x3b\x70\x98\x05\xdd\x97\xad\x8a\xff\xfb\x45\xec\x09\x4e\xf4\x20\xdd\x50\xcd\x10\xf9\x69\x40\x2e\x07\x4d\x75\xaa\x40\xf6\x79\xbe\xe0\x96\xe0\x91\x3c\xf5\x4a\x93\x87\xa0\x1b\x3a\xc1\xde\x9e\x0c\x5a\x2e\xc9\xfb\xe2\xb7\x9d\x89\x27\x68\x1b\x22\x85\xe8\x5c\x33\x74\xfd\x21\xe9\x72\xfe\x06\x0b\x1d\xe0\x37\x11\x33\x90\x06\xbb\x2e\x44\x95\xfb\x43\xab\x27\xb3\x65\x86\xc8\x56\xf8\xe6\xc8\x27\x46\x3d\x8d\xfb\xcc\xe1\x6a\x7e\x69\x70\x97\x21\xb6\x12\xd8\xcd\xd0\x9d\xfc\xed\xf5\x2b\xb2\xb9\x8f\x1d\xac\x7d\xf3\xaf\xcf\x35\xa5\x56\x82\x98\x41\x06\x72\x53\x53\x94\xce\xe3\xa6\x10\xa2\x8f\x0c\xa8\xa0\xbf\x32\x2f\x39\x84\x2b\xb3\x10\x90\xee\x28\x91\xd3\x87\xd8\x86\xef\x0c\x37\x67\xcf\x4c\xce\xfc\xee\x9d\xa2\xfa\x5a\x23\xe8\xc0\x48\xf1\x9d\x96\xa4\x70\xb6\xc3\xce\xba\x6d\x7b\x92\x42\x87\xed\xe6\x46\x97\x3e\x7d\x5b\x27\x16\x14\xc4\x38\x06\xbb\xb9\x13\x0e\xf7\xe5\x8a\x99\xbf\xa1\x29\x43\x3e\x45\x68\x14\xd7\xfb\x05\xe0\x7c\x57\x62\x03\x2e\x19\x3a\x91\x45\x8f\x21\xbc\xab\xcf\x49\x31\x44\xb2\x81\x03\xb3\x9a\x2f\x67\x40\xb8\x04\x67\x50\x61\x42\xbc\x6b\x6f\x18\x73\xba\xb0\xf3\x5b\xc5\xd0\x0c\x91\xf7\xc5\x28\xca\x3c\x01\xb4\x67\x8c\x09\xce\x78\x95\xf6\xf1\x2e\x49\xb9\xa3\x7c\x5e\xb9\x5a\x4e\x26\x36\x14\x14\x67\x9e\x63\x1b\x25\x04\xc5\x8b\xec\x69\xb0\x33\x04\x4d\x13\x28\x86\x11\xf8\x9d\x41\xd1\xbe\x33\x70\x62\xdd\xbf\x32\x67\x08\x12\x22\xe9\xf3\x7c\x5f\x18\xc6\x7e\xb5\x67\xd4\x66\x09\xea\xd6\x82\x4d\xbe\xba\x68\xa6\x36\xab\xf1\x9d\x04\x9e\xa5\xed\x3c\x18\xcf\x1c\x88\x9d\x8c\xee\xc1\xb7\xb9\x13\x65\x60\xc1\x68\xfc\x28\xc2\xa6\x0f\x00\xbd\xa0\xbc\xee\x57\xd2\xbe\x74\x61\x9a\x6d\x30\xa0\x60\x47\x55\x9c\x59\x83\xfd\xc7\x23\x48\x1a\x30\xc7\xba\x52\xef\xc3\xf4\xfb\x19\xba\xf9\x89\x6d\x28\x86\xfd\x9e\x17\x7d\x05\xb1\x5e\xc8\x67\x3b\x95\x1a\xba\x19\x09\xd4\x3e\x80\xd7\x2f\x00\x00\xa7\xd2\xf5\x64\x18\x8c\xc1\xb3\x4c\x15\x1a\x5f\x4d\x77\x88\x3a\xa8\xa9\x3c\x4a\x88\xff\x54\x96\x1e\x1b\xef\x94\xdd\x14\x46\xbd\xed\x2e\xb6\xf7\x4d\xe0\x16\x7d\xce\xe3\x49\x31\x12\x69\xb4\x55\x79\x1c\x17\x28\x97\x8f\xf0\xfb\x5e\xd7\xef\xcf\x9b\xe8\x82\x36\x41\x8f\xa4\xde\x63\x92\xf7\xd8\xdd\x67\x1d\x21\x7b\x2c\x37\x4c\x39\x76\x8e\xa2\x91\xaa\x26\xdd\x95\x23\x71\x03\xdf\x39\x52\xd4\x78\xc6\x2d\x49\x75\x63\x93\xb6\xbc\xa2\xf1\x4f\x5b\x07\xfb\x2c\x67\x31\xc0\x3c\x6b\xd0\x03\xdc\x54\x99\x52\x56\x55\x0a\x83\x5e\x8c\x29\x0a\x06\x41\x74\x86\x21\x1d\x98\x30\xf8\x23\x76\xe0\xfa\x02\xf9\x71\x8f\x0c\xf3\xa6\xd8\x4e\x1a\x9e\xe6\xce\xdb\x0d\x53\xe0\x0c\x8f\x13\xa4\x07\xea\x98\xfd\x98\x3c\xfb\x1a\x62\x1d\x1e\x65\xa3\x1b\x53\xf4\x25\x69\x66\x2f\xd1\x91\x90\x6b\xa3\xdb\xa7\x90\xf4\x1d\x9e\xc2\x14\x39\xc8\xda\x0a\x50\x04\x27\xfd\xf5\xa0\xa0\xad\x32\x6c\x9d\xfb\x07\x67\x00\xa4\x68\x65\x79\xd2\xe2\xf0\x02\x22\x36\x6a\x70\xfc\x71\xf0\x9c\x97\x45\x33\xfc\x12\x24\x84\x68\xfa\x07\x30\x0c\x1b\x45\xcf\x82\xb2\xcc\xce\x4d\x8d\x7c\x56\xb5\xc9\x8d\x44\xcf\xb5\xa0\x30\x8e\x5f\xa8\xf7\x0f\x92\x37\xe7\x6c\x0f\x85\xfb\x9e\xe1\x79\x42\xc5\x98\x9b\xe0\x85\x78\x2a\x66\xa0\x61\x08\x64\x2d\xa7\xa0\xf0\x81\x18\x86\xa1\x52\xfa\x47\x43\x19\x0d\x18\xe4\x4e\x93\x67\x1b\x2e\x84\xcb\x0c\x51\x6c\xce\xf1\x3c\xde\x22\xed\x0a\xc1\x0e\x7d\x26\xe3\x19\x06\x01\x8c\x51\xdb\x4e\x81\xf8\x0a\x6b\x93\xb4\x49\x51\xdb\xdb\x11\xd8\x70\x9e\xd8\x0a\x83\x12\x6a\xeb\xfd\x4b\xbc\xa2\x75\xfd\x28\xea\xc4\x62\x50\xff\x78\x97\xc7\x09\x50\xa7\x29\x85\x13\x14\x31\xaf\x21\xd6\x1e\x90\x67\x75\x7f\xf9\x99\x64\xa3\xb6\xcd\xdf\xf9\x8b\xa2\xf3\xde\x71\x17\xcb\x89\x1c\x83\x71\x0e\xce\xb3\x40\x96\xa4\xf1\x0e\x7a\xd1\x95\x7a\xfb\x7e\xaf\x06\xb9\x5f\xe8\xa6\x67\x9c\xbc\x3f\xe8\x28\x50\xbf\xaf\x35\x43\x27\x00\xa5\x88\x3d\x57\x62\x92\xdc\x4c\x50\xf4\x9b\xf4\xee\xfc\x72\x79\xb7\x70\xf7\x54\x88\xc5\x01\x31\x6c\xd6\xde\xc6\xf0\xc6\xc7\x69\x86\xc3\x70\x43\x38\x85\x91\xb2\x4c\xe7\x14\x55\x9e\xf4\x1f\xb9\x40\x39\x16\x86\x63\x87\xd4\xc7\xee\x6e\xcf\x06\xc4\x8a\x14\x7d\xec\x81\x4b\x5d\xa4\x59\x87\xa6\x19\xec\xe1\x1f\x3c\x20\xcc\xf9\x73\xf2\x37\x45\x13\x8e\x01\x8e\xbf\x67\xfd\xd5\xcc\xf1\x35\xd8\xb7\xa0\x30\x07\x82\x68\xf3\x88\x46\xe8\xf4\x4f\x8a\x70\x7c\x3f\xf8\x0e\x5c\xce\xd9\x70\x29\xfe\xed\xd9\x26\x6d\x59\x34\xce\x33\x69\xc0\x15\x83\x98\xff\x38\x7b\x19\x96\xfd\x8b\xfd\x58\xd7\x63\xfe\x38\x7a\xbb\x78\x57\xfd\x7c\x11\x86\xa6\x63\x83\x2a\xc7\x17\x73\x31\x32\x51\x67\xa0\x70\x99\x7c\x87\x5a\xd8\xc8\xd6\x39\xbc\x21\xd8\x7b\xbf\xa0\x0e\x6a\xbb\x35\x2b\xb2\xf9\x4f\x54\x82\xcc\x3b\x85\x24\x2c\x46\xd4\x01\xc5\x61\x85\xe6\xcc\x98\xc6\x7a\xc2\xfd\x0b\x00\x14\x6d\x7c\x88\xb2\x93\x74\xa6\x07\x5a\x1a\xe6\x09\x60\xa6\x2c\x4b\xc0\x53\x0c\xa0\xb3\xb6\xbe\xee\x5a\xac\x24\x01\x6a\x19\x82\x20\x21\x84\x40\x90\x97\x7a\xb6\x1d\xb8\x41\x93\xdc\xfb\xe6\xa7\x38\x79\xae\x73\x07\x27\x9e\x9f\x06\x9e\xe4\x46\x33\x5a\xce\x2d\xa7\xfe\xad\x8d\xfe\x55\xd3\xd9\x7f\xdc\xcd\x9c\x5e\x66\xac\x19\x4a\x36\xba\x89\xd8\x37\xa6\xb1\xcf\x76\x14\x32\x06\x88\x0b\x92\x96\x45\x6e\xea\xe7\x88\x2d\xcb\x96\x08\x6c\xf7\xcc\x37\x2b\x7c\x71\x4a\x17\x45\x53\x14\x60\x33\x4a\x77\x94\x2a\xcb\x2c\x3f\xf7\x16\x50\x8f\x8f\x78\x23\xdc\xdc\xe5\x8d\x89\xd9\x8f\x84\x40\xb9\x15\xfb\x7e\x61\x18\x87\x4e\x41\x99\x13\x5b\xa0\x02\x68\x3e\xf6\xb3\x30\xd2\x79\x26\x8e\x64\x68\xf9\xb0\x26\xd5\xc5\xd6\xbd\xb3\x3c\x29\x89\x81\x48\x3c\x83\xf2\x71\xbc\xb0\x67\x53\x01\xa0\x0a\x70\x13\xdc\x07\x6f\xc7\xb3\x9f\xe3\xcc\xa6\x3c\x3b\x3a\x43\xc5\x3f\x3e\xe8\x43\x34\x68\x34\x32\x9f\x7c\x5c\x99\xea\xe3\x0d\x4a\x61\x29\x20\xea\xba\xef\xdc\x7d\x93\xff\xf3\x92\x89\x99\x18\x1f\xf2\x18\x19\xd5\x65\xd0\xb2\xb7\x24\xb1\x3a\x81\x83\xd2\xfb\xd2\x50\x02\x00\x09\x30\xcf\xc8\x31\xe9\x07\x31\x50\x12\xc3\xc6\x16\x4b\x56\xa0\xb7\xf8\x7d\x9c\xe7\x43\xda\xa3\xdb\x43\x94\xde\x36\x00\x7b\x24\x2b\x1a\xd1\x77\xdf\xcf\x19\x1a\xc8\x36\x33\x44\xbe\x01\x80\xe4\x0c\x4d\x12\x58\x80\x87\x2c\x9e\x64\xa1\x53\x97\xe6\x70\x82\xd7\x71\x6e\x38\x17\xa3\x1e\x3a\x8e\x14\x2d\x44\x10\x96\xa0\x92\x13\x26\x51\xfb\x1a\x1a\x59\x51\x5c\xa6\xc9\xb5\x55\x18\x7e\xac\xc5\x9e\xda\x18\xc3\x37\xbe\x01\xd0\xe7\x4e\x2c\x87\x93\x08\x06\x72\x6b\xd4\xc8\x8f\x28\x37\x66\xe7\x53\xdf\xa7\x49\x2f\x73\xb0\xa6\x7d\x0d\x83\x02\x2a\xcb\x4b\x08\xeb\x26\x95\x9e\xc3\x5b\x6d\xe5\xcd\x87\x01\x36\x28\x1d\x80\xe9\x06\x34\xad\x88\x94\xf8\xb6\x28\xe2\x97\x33\xf4\x2c\xcb\x42\xee\x00\x32\xe1\xf2\x34\x47\xf2\x47\x9b\x38\xa1\x2d\x3f\xd8\x45\x48\xc6\x68\xcc\xf2\xe4\xf9\xfb\x66\x18\x5e\x85\x82\x08\xe3\xbb\x47\x16\xa9\x12\x4b\xcb\x33\x2c\x4b\x0f\x41\x7c\xac\x64\xc0\xe9\x53\xe7\x4d\xee\xe1\x0d\x3a\x0f\xa5\xf2\x73\x25\x8f\xd5\x22\xeb\xef\x8e\xd9\xf3\x6f\x74\x87\xd6\x88\x61\xa3\x81\xa2\x7c\xfa\x49\x3f\xe6\x25\xd0\xa0\xd0\xdb\x08\x8d\xb8\x62\x94\x48\xe0\x41\x80\xb9\xdf\x9d\x61\x1e\x12\xa7\x76\xf4\xfe\xe9\x1b\xed\x8a\x38\x18\x80\x09\xb0\x99\xe9\xf7\xc3\x4c\x59\x60\x92\xaa\x5d\x33\xe0\xaf\x0c\x50\xe2\xf3\x31\x4a\xe7\x85\x5e\x3c\x73\x02\x9f\x07\x44\xbd\x9f\x71\x7f\xc8\xb3\x68\x36\x86\x41\x31\x0c\x43\x98\xf7\x8b\x00\x1a\x87\x31\x4f\x9b\xb4\x49\x05\xa6\x09\x00\xdd\xf6\xfb\x59\x40\x54\x1c\xc3\x50\x69\xce\x68\x16\x93\xf7\xde\x36\x67\x5d\x28\x8b\x6c\xf4\x55\x1f\x2d\x4c\x05\xe7\x09\xe5\x88\xbc\x9e\xed\xe9\x22\x25\x48\x93\x3a\x53\xf6\x3d\x0a\xbe\x22\x23\xa9\xf5\x55\x7c\x9b\x97\x03\xd5\xd4\xdf\x3e\x85\xb9\x8d\xa8\x81\xd4\x6e\x1e\xd7\x60\x10\xad\xe9\x5f\xee\x4e\x20\x9a\x49\xd3\xc0\x94\x9a\x63\x2c\xcb\xd2\xce\xd9\x46\xf8\xaa\x0e\xbd\xb9\xed\x0b\x20\xfc\x06\x79\x5e\x72\xaa\xab\xb6\x56\x07\x19\xb8\x8f\x30\x04\x91\x93\x14\x85\xf6\x6b\x72\x9f\x0a\xfe\x6a\xb4\xc9\x50\x05\x76\x92\xd4\x4c\x00\x68\x7c\x0f\x30\xdc\x43\x3b\xc0\x32\x95\x1f\x10\x04\xf2\x38\x1d\x31\x70\x1c\x2e\x89\x84\x7c\xbe\x63\xac\xcd\x07\x31\x0d\xb1\xc2\x37\x3a\x51\x3c\xaf\x9a\xe7\x00\xe5\x89\x22\x51\x9d\xa0\xcd\x7d\xff\x4d\xbd\xea\x3f\xb0\xa3\x39\x7b\x9d\x99\xf5\x6c\xfb\x91\x35\x13\x90\x32\x47\xdb\x11\x52\xec\x35\xad\x5f\x07\x92\xc0\xf9\x73\x50\xf2\x58\x97\x91\x79\x11\x9c\xa1\x21\xc6\xb6\x0e\x71\x7a\xd0\x3c\xdb\x02\xff\x9b\xce\x2f\x04\x30\x9e\x3c\x5e\x47\x52\xf1\x52\x25\xeb\xfe\x47\xa9\xd6\x71\x06\xab\x77\x50\xb6\xa8\x8b\xf6\x95\x1b\x91\xa5\xc2\x70\x9e\x26\xd0\xde\x9c\xe5\x18\x62\x2d\xc6\x3c\x7f\x4c\x17\xf3\xd4\x49\x97\x0b\x0e\x8f\xd7\xe9\x67\xf5\x66\xef\x82\x61\x05\x5f\x6e\x97\xaf\xd6\x45\xa7\x7b\x71\x9c\xa6\xa6\x2f\x37\x41\x8c\xad\xf8\x66\xdf\xe7\xe7\x09\x96\xcd\x82\xc0\x91\x28\xd4\x6d\x37\x44\x8e\x2a\x41\x3e\xb1\x19\x54\x1c\x1b\x03\x93\x01\xb2\xaa\x32\x08\x7d\xe1\x58\x4a\x87\xdd\x32\xfe\xe5\x1f\x26\xa9\x1e\x73\xbb\x32\xfb\xc5\x88\x63\x3f\x31\x95\xbd\xe0\x74\x41\x86\x38\x49\x50\x4a\xa7\x18\x08\xc5\xb0\x36\xf1\xfc\x20\x88\x47\x96\x29\xe9\x5c\x7c\x7e\x77\x74\x04\x27\x65\x67\xcd\xed\x0a\x47\x99\x72\x19\x13\xaa\x5f\xf2\xf9\xf3\x97\x96\x88\x76\x92\x42\x5e\x8a\xa0\x72\xbc\x7b\xe3\x30\xdd\xec\x28\xfc\xc9\xc3\x9d\x0f\x41\x99\x2c\x0b\xc9\x18\xd7\x40\x99\x03\x3f\xba\xe9\x5a\xa8\xc5\x7d\x7f\xda\x36\xd0\x45\x9e\x41\x29\x71\xc7\xca\xb3\x24\x00\xc8\x33\x61\x21\x84\xb7\x7a\x38\x49\xb9\x93\xa3\x58\x7e\x75\x74\x34\x2d\x7d\xc7\xe9\x01\x15\xa7\xd5\x72\x1f\x9d\x36\x3c\x04\xb0\x80\xe6\xa1\xcf\x5b\x0d\x23\x11\x86\x38\xdc\x3f\x7a\x87\x6a\x70\xfe\x98\xb0\xe5\x48\xfb\xa8\x7e\x9b\x79\x3f\x0e\x51\x6c\xeb\x09\x93\x4b\x68\xe6\xe5\xa7\x3b\x90\x3a\x98\x82\x8b\xb2\xd0\x0b\x7f\xd8\x09\xc1\x6f\x3f\x14\x12\x72\x9a\xf1\x79\xee\x9b\xaf\xf1\x51\x59\xfe\x7e\x2a\xae\x74\x04\xff\x93\xf8\x52\xc5\x71\x52\x24\xd5\x80\x1a\x50\x05\x0f\x83\x09\x00\x7c\x3e\x52\xd9\x17\xac\xe5\x41\xf7\x33\xf9\xe3\x36\x9c\x30\x7e\xa5\x0c\xa1\x4a\x47\x3f\x68\x46\xe7\x23\xa7\x29\x17\xa5\x37\x10\x0e\x45\x69\x3a\xbe\x48\xef\x97\x74\x39\x32\xbf\x73\xe3\x03\x98\x2c\xff\x71\x46\xf3\x02\x9a\xfe\x5e\x65\x38\x0f\xd3\x55\x04\x24\x41\xe6\x98\x09\x4c\x18\x26\xd0\x7c\x8c\xdb\x15\x3f\xd6\x8d\x12\x5f\x74\xc8\x01\x43\x08\x39\x86\xe4\xae\x27\x7c\xec\x1b\x92\x3f\xb8\x18\x0f\x86\xc8\x0f\x1c\x2a\xad\x84\xc6\x9c\x2b\x56\xbe\x72\xfc\xef\x0c\x43\xdc\x50\x2b\xe1\x25\xab\xa7\xdc\xfe\xe7\x1d\x9f\xd3\x47\x99\x33\xd5\x51\x2c\xab\xb9\xae\x2e\x93\xaf\x45\xaa\x7e\x18\x9e\x58\x31\xe6\xcc\x77\xa4\xb2\x28\x17\x6d\xd8\x34\x4f\x8d\xba\x49\x1a\x5c\x82\xa7\x39\x96\x34\xad\x53\x62\xc6\xb4\xd8\x74\x37\xf2\x9c\x65\x4d\x68\xfd\xc2\x6b\xce\xe7\x4a\x3a\x68\xf0\x71\x6a\x14\x53\x66\xa8\x3e\x0e\x24\x88\x1b\xe3\x52\x34\x2e\xe8\x26\x80\x98\xd3\xc3\x02\x0e\xbb\xe9\xee\x24\x1f\x23\xce\x7d\xd4\x7e\x4b\xe2\x3a\xf7\xa7\x6a\x38\x58\xd9\xfa\xfc\x6a\x14\x4b\x9b\x28\x2b\xc2\x62\x99\x15\xe8\xa9\x80\x9b\x34\xf8\x6e\x14\xe2\xd4\x86\xbc\x2c\x98\xd7\xed\x88\x04\x42\xc1\xbc\x43\x7e\xe9\xcd\x07\xa9\xe7\xc0\xab\xc5\xe2\x18\x42\xd5\xcd\xcb\xb2\xe2\xbc\x93\x0e\xf6\xcd\x9a\x42\x7f\x2a\x65\xf2\xf4\x68\x1a\x9c\x0d\xcf\x30\x50\x49\xdb\x81\x69\x44\x14\x05\x4a\xed\xfc\xf7\x3e\x57\x34\xc7\x84\xc3\x42\xa5\x60\x62\xe3\x09\xfa\x79\x3f\xb0\x75\x1f\x79\x28\x26\xf1\xe3\x2d\x4f\x00\xd0\x00\xfd\x93\xf8\x0e\x04\xf2\x8c\x13\xe7\x63\x25\x62\x42\x09\x7e\x73\xaf\xdf\xe7\x9e\x96\x62\xb4\x69\x4b\x7f\x3b\xe6\x8a\x69\x62\x42\x68\x34\xbd\x5f\xb6\x09\x8f\x3e\xd8\xc2\xea\x9e\x27\x57\x10\x5d\x06\xa5\x34\x2a\x4d\x47\xd0\x32\x79\x71\x7f\x79\xa1\x30\xa8\xf8\x3c\xa1\x60\x18\x48\xdf\xb2\x1e\xf3\x8b\x01\x8d\x0e\xbb\xe7\xb7\xa1\x53\x19\x1c\x03\x63\x8b\xb4\x7a\xc3\x1f\xed\x36\xf4\xd9\xa5\xb4\xb8\x0f\x70\x8a\x97\xb9\x29\x84\x53\x8a\xd9\x11\xf4\x21\xb1\xd4\x3c\x61\x78\x4f\x8f\xbb\xec\xe8\x0d\x23\xa0\xb2\xf0\x72\x08\xed\x36\x9b\xe5\x04\x97\xcc\x77\xac\x86\x21\xd8\xbf\xad\x8e\x7e\x7f\x94\xac\xf9\x62\x6b\xcb\xab\x87\x0b\x85\x37\x5b\x0d\x61\x52\x95\x0e\x9f\xc9\x8e\x01\xd9\x34\x45\xd2\xfb\x9a\x5d\x40\x41\x15\x73\x3f\x7e\x68\x96\xe1\xba\x90\x47\x4c\x00\x02\x73\x61\x70\xa6\xc7\x3d\x59\xe2\xab\x06\xc9\x1e\x48\x11\xd0\x8d\x33\x58\xd7\x73\x86\xea\xed\x59\x49\x5e\x91\x78\x22\xd9\x8f\x17\x1a\x19\x6c\xa4\x09\x8c\xa9\x9e\xa5\xa5\x0f\x7d\x4f\x03\x0c\xc3\xc2\xf3\x1c\x01\x85\xdf\xf0\xa7\xaa\xd4\xa1\x48\x78\x98\x31\x4b\x40\xdf\x2f\x23\xac\x72\x18\x57\x8b\x11\x35\x3f\x40\xcd\x81\x52\xe4\x63\x44\x8e\xb1\x31\xba\xc2\x98\xbc\xf3\xa9\x13\xd3\x3e\xbe\x77\x7c\x57\x7f\xd9\x9c\xaf\xe3\xd6\x0e\x54\xf8\x0c\x0f\x14\x02\xf4\x8b\x15\xc0\xc7\xe1\x5b\x98\x4c\x11\x07\x63\x2f\x51\x0c\x4e\x6e\x63\xc9\x9b\xce\x3c\x5e\x88\xd4\x6d\xb6\x66\x70\xdb\xdc\xcb\x5b\xcb\x45\xaf\x71\x7d\x4c\xa1\xa6\x44\xfe\xf3\x1b\xc7\xbf\xcc\x9b\x19\x20\x67\x5e\x0b\xd3\xc9\x9c\x76\x99\x74\x8f\xd2\x45\x2c\x82\x90\x0e\xd0\x33\x52\xad\x12\x1a\x1e\xa5\xb3\x85\x49\x63\xc5\x59\x30\x68\x8a\x7a\x3c\x59\xd3\x84\x71\x9e\xbb\x44\xdd\x9d\xa1\xf5\x8f\x26\x2f\x5e\xb1\x2d\x34\x29\x34\x7e\x06\x94\x96\x4f\x56\x14\xcd\x49\x3c\x24\x0c\xef\xb7\x61\x9e\xd9\x59\x07\x6e\x7b\x8a\xa5\x39\xee\xfb\x79\x06\x58\x8e\xae\x41\x94\xb5\x5f\x83\x57\x1e\xdc\x98\x8b\xa0\x9f\x13\x51\xc4\xde\xa9\xc9\xb2\x32\x45\x81\x79\xac\x9e\x51\x60\xe9\x09\xce\x9f\x49\xb5\xeb\xea\xe7\x45\xdc\xdd\xa0\x84\xf2\x7e\xdc\x19\x84\x7e\x48\x32\x3f\x5e\x3e\x84\x11\x2b\x6c\x8e\x9f\x44\x98\x06\x53\xa0\xfb\x9a\xc0\x61\x16\x89\x12\x99\xc1\x91\xbb\xc3\xdb\x68\xd9\xac\xfa\x6d\x00\x7b\xcb\x9f\xaa\xa5\xf3\x17\xa3\x30\xec\x3c\x9d\xf0\xc4\x6d\x4e\xf2\x6c\xde\x66\xa1\x33\x3c\xb1\xdc\x80\x70\xba\x28\xe5\x2e\x5f\x09\xba\x62\x7e\x92\x11\xb2\x41\x31\x62\xcb\x8a\xc8\xa6\xbb\x0c\x87\xae\x84\x2e\x49\xf1\xfc\xe7\x37\x08\x04\xe8\xc7\xf2\x3c\x61\x11\x01\x74\x05\xdb\x8f\xe6\x23\x10\xbd\x99\xfa\x45\x56\xe1\x16\xe0\x26\x0d\x4d\x4f\x51\x00\x5d\xe0\x00\x67\x4e\x16\x6e\x2d\x74\x90\x96\xbd\x57\x71\x2f\xab\xcb\x86\x27\xae\xfd\xe4\x90\xf1\xe3\x1a\x3f\x0c\x7f\x88\x13\x3e\xa4\x1a\xa2\x21\x74\x8c\x8a\xc8\x20\x18\xdb\x8f\xf1\x4c\xd3\x4d\x1f\x11\xd2\x82\x41\xf3\x3e\xc1\x8b\xce\x65\x6a\x2c\x0f\x3d\x86\x2e\x9b\xb3\x04\xa7\xe7\x11\x7d\xc2\xbf\xcb\x8d\x61\xed\x9d\x86\xba\xa5\xbc\x44\x52\x9e\x9a\xae\x93\x29\x3d\x2c\x99\x67\x9c\xa9\xff\x07\x4c\xb4\x90\xed\xaa\x83\x30\xd4\x06\x09\x40\xac\x70\x51\xa4\xe6\x17\x63\x08\x5c\xa5\x28\xf4\xb1\x2f\xdc\xe5\x05\x30\x0a\x6b\xd2\xa2\x56\xaa\x26\x70\xb4\x0c\x52\x80\xea\x31\x73\xcc\xeb\xda\x8d\x8f\x43\x54\x70\xe1\xcb\xb6\x17\xff\xa4\x1f\xf2\xbe\x74\x56\xe0\xab\x60\x2f\xcc\x01\xd2\xfc\xd9\x8d\xa4\x89\xb5\xd4\xc3\x74\x86\x02\xd4\x69\x61\x2b\x82\x96\x75\xf2\xd0\x87\x92\x45\x82\xa1\x1c\x0d\xbe\xdb\xe2\xbc\x58\xde\x13\xe1\xec\xd7\x76\x06\xd4\x5b\x65\x7c\x50\x34\x79\x70\xce\x88\xe7\x71\x5a\xd2\xcc\xd5\x6f\xa0\xf0\x2b\x53\x4c\x91\x8a\xdb\x96\x06\x52\x10\x32\xfa\x88\x19\xc0\x88\x11\x3b\xb4\x0f\xd8\xa6\x2d\xc9\x47\xf1\x89\x50\x82\x06\x29\x9d\xc3\x3f\xe8\xa4\xc6\x2d\x8d\xe8\xb5\xb8\x95\x92\xd1\xec\x8c\x86\x19\x61\xea\xb3\x9f\x23\xeb\xcc\xe9\x5a\x3b\x6e\xef\x10\x8b\x86\x51\x38\x32\x73\xd4\x30\x11\x10\x4d\x79\x3b\xf2\x01\xa5\x40\x21\x84\x71\x3e\x13\xe5\x8f\xa6\xc2\x89\xd2\x4b\x25\xf7\xfe\x12\xad\xb0\x6c\x3e\xf1\x9d\x16\x24\x39\x8e\xc3\x0c\x50\x9c\x60\x72\xeb\x7d\x33\xb1\x2d\x5d\x7c\xbd\x02\x88\xdf\x4c\x96\x32\xa5\x0b\x00\x20\x0f\xe3\x08\x51\x0b\xb9\xad\x8f\xa7\xbb\x3e\x92\x63\x0c\x4e\x40\xf0\xb8\x0e\x8a\x69\x60\x2f\xfe\xc7\xda\x65\x09\x28\x95\xf8\x77\x5e\x78\x0b\x52\xd9\xb1\x52\x64\xa5\x82\x51\xf8\x1b\x9a\xfe\xed\x63\x78\x5c\x5f\x7d\x10\x0f\xe1\x94\x0e\x6a\x21\x91\xf1\xa5\xb5\x24\x11\x73\xee\xfd\xe3\x3b\x8a\xa2\x70\x71\x2f\x04\xe7\x39\xca\xd7\x2c\xa9\x29\x02\x00\xbb\x5f\x70\x9b\x32\xe3\xab\xd8\xab\xf4\x4a\x17\x81\x54\x17\xe3\x63\xf1\x7a\x03\xf0\x87\x29\xb6\x41\x9c\x7e\x03\xd3\x19\xbd\xa5\xff\xb5\x37\x99\x87\xe7\x46\x17\xa5\xd4\xf5\xbc\xc1\x51\xba\x9b\x63\x21\x66\xba\x18\x45\xa2\x11\x9e\x7b\xfb\x71\x5b\x1f\x40\x3c\x4c\xe6\x81\x83\xaf\x4e\x6a\x90\x72\xa6\xb8\x5b\x80\xe4\x70\x52\x92\x19\x76\x86\x00\x2d\xcf\xd5\x30\x9a\x67\xdd\x40\xb9\x14\x22\x55\x11\xac\xd3\xf9\x5f\x5b\xf0\x59\x9e\xbb\x37\xd6\x15\x3e\x4a\x78\x86\xc1\x68\xe8\x7b\x7a\x50\x7d\x2a\xcf\x77\x41\x7d\x6e\xe1\xe3\xd9\x2c\xcb\x5a\xd5\x97\x1d\x2a\xe1\xdf\x07\xb2\xda\x97\x09\x42\xbb\xac\x5f\xed\x61\x34\xa8\x64\x4e\x33\x8d\x43\x3b\x02\x39\x44\x8d\xe3\xda\xdf\xd4\x39\x14\x30\xe3\x9c\x1b\x5c\x0b\x98\x08\xb3\xc8\xce\xc5\x3e\x5d\xd0\xa0\x6c\xdb\xf8\x79\x3e\xdd\x5b\xc1\xbf\x09\xe3\xf1\xa0\x5e\x92\xb9\x8a\x7e\x54\x70\x6d\x69\x72\xef\xad\xf5\x68\xe3\x4b\xe9\x2d\x66\xbd\x10\xf3\x8d\x0e\x65\x27\xae\x67\xe2\x93\x6e\x12\xc2\xa3\x41\x43\x5f\x0f\x44\xd4\x1e\xcf\xe3\x24\x9d\xcb\xb6\xfc\x9b\xbc\x4d\xb9\x9c\xde\x7a\x9b\x0a\x85\x03\xf9\xe3\x4b\xf1\x13\x1b\x54\xc5\x13\xcd\xb2\x9b\xd9\xb4\xaf\x89\xeb\xf4\xce\x46\x19\xd8\xd9\x40\xa6\x38\xbe\x04\x26\x3e\xe6\xf3\x85\x08\xcd\x10\x73\x4e\xa0\xa8\xfe\x85\xa8\x34\x5c\xf4\x1f\x96\x32\x08\xa7\x50\xd4\x05\x4e\x8c\x22\x7d\x63\x44\x0e\x46\x71\x0e\x8c\x2e\xbe\x73\x32\xac\xd0\x89\x91\x86\x18\x88\xa4\x24\x89\xb4\x9b\x43\xd1\x96\x2a\x9b\xe2\x78\xd4\xb0\x6a\xd0\xc7\xb2\x34\xff\xcb\x5a\x1f\x36\xd1\x9a\xe9\xfd\xd0\x8f\xc4\x7e\xa4\x6f\xf3\x16\x67\x30\xf0\xf6\x71\x6b\xf1\xdd\x19\xa2\x48\x43\xa6\x33\x7b\x50\xb0\xd8\x0b\x9b\x32\x28\xa5\x3c\xdb\x8c\x93\x2a\xc4\x3e\x50\x88\x52\xbb\x2e\x92\x35\xc3\x5b\x9e\xc0\xe6\x9b\x22\xbc\x06\x9f\x2c\x77\xc1\x5f\x09\x1f\xc4\x4c\xea\xc1\xa3\x0c\xe7\x9a\xdd\xd6\x74\x95\x9a\x2c\x71\x12\xa7\x15\x3b\x5e\x2f\x13\xe6\x8d\x2f\x05\x1d\xc3\x54\x34\x7f\xe5\x12\x18\x1f\x13\x9f\xa2\x0a\x4d\xee\x1c\xf3\x6f\xf7\x4f\xde\x1d\x30\x94\x41\xae\xb0\xb6\xbb\x1b\x24\xe3\x73\x8c\x21\x14\xe9\x83\x9d\xd8\x4b\x6c\x4c\x02\x91\x9b\x09\xd2\x03\x1b\x43\x02\xdf\x02\x6d\x87\xc6\xa8\xf3\x18\x4d\x63\x2b\xed\x1b\xf8\x7d\xe8\xc3\xb9\xf6\x9a\x6e\xdf\xa0\xdb\x9a\xc0\x5b\xfb\xb9\x74\x44\x0f\xfd\x80\xbb\x06\xcb\xfe\x8c\x2d\x01\x45\x5a\x18\x26\xfd\x4b\x7d\xfb\x1b\xe2\xcf\xc2\x1e\x34\x38\x3c\x39\xa8\x15\xd7\xd6\x2e\x34\x6e\x6c\x4f\x12\x4a\x45\xfc\x9c\x75\x02\xbf\x5f\x06\x19\x4d\xaf\x1e\xfc\xde\x75\x15\x71\x35\x82\xf4\xbb\xa1\x49\xa4\xff\xa0\x60\x27\x94\xd0\x0e\xf4\x3d\x1a\x88\xbd\xe5\xca\x11\x78\x08\x92\x9f\x61\x8a\x0c\xeb\xf0\x12\x28\xaf\xb6\x01\x83\x0f\x80\x40\x9f\x44\xfd\x86\xf0\x8e\x28\xf1\x55\x9e\x58\xf8\x12\x93\xfb\xc9\xc2\x81\x38\xc2\xda\x12\x0a\x6b\xd5\xf2\x9f\xf5\xfa\x5e\x67\xca\xc3\x6b\x76\xb3\xe2\x8c\x18\xc5\x58\x9a\x57\xca\x46\x02\x9d\x6a\xef\xe0\x97\x45\xfa\x72\x1c\xb8\x7d\x8b\x9e\xd6\xab\xa5\xdf\xa9\x76\x6c\xa2\x3b\xd9\xce\x3a\x38\xbc\xbd\x69\xf0\x6c\x23\x94\xad\x7d\xf6\x22\x42\x4b\xa7\x35\xa8\xc0\x26\xf1\x88\xef\x7b\xa3\xa3\x32\xa7\x89\x5d\xa4\xda\x52\xb7\xe6\x62\x83\xce\x2c\x66\x2b\x7f\xe8\xc4\xbc\x68\x43\x7c\x58\x9f\x36\x47\x60\xac\x7a\x2f\xab\x08\x69\x41\x9e\x01\x95\x5a\x16\xed\xbe\x7b\xa3\xac\x1f\x78\xc5\x58\xca\xc8\x01\x55\x42\xad\xcd\x24\x4d\xdd\xe7\x37\x9b\xc6\x16\x20\x11\xa3\x9e\x3a\x18\xf5\xa7\x7b\x25\xf6\xe3\x14\xa8\x84\x27\xdd\x5c\x15\x98\x78\x12\x39\x34\xbf\x84\x6a\x8e\x04\x3d\xc8\x92\x53\x1a\x6b\x8f\x22\xc9\x3c\x7b\x4f\x72\x86\xab\x48\x27\x42\x2b\xad\xf1\x86\x6d\xad\xf4\x6e\x79\xd3\xc0\x39\x3f\xe7\x9c\xd7\xdb\x01\xb2\xab\xb6\xde\x4a\xe8\xb6\x3e\x48\xb4\xa7\xd9\xab\xb9\xa6\x0f\xe7\xbe\xe3\xf5\xc5\x01\xfe\xf5\xe8\xf8\x18\x89\x10\xf2\x1e\x50\x39\xb4\xbb\x53\xdb\x12\x64\x60\x5d\x25\xc9\x7f\x6c\x56\x10\x4a\x63\x73\x35\xa0\x77\xb1\xa5\x70\x92\x13\xb6\x66\x47\x10\xec\xb7\x96\x4a\xa0\x8f\xfd\xe3\x78\x9d\x6c\x0f\x0c\x4f\x9b\x21\x66\xdf\x26\x74\x36\x52\x27\x87\x83\x49\x47\x8b\xde\x78\xc2\x5a\x6e\x6d\x7e\x60\x25\x6f\x75\x06\x00\xbc\xe1\x4e\xe7\x66\x95\xc7\x0a\x23\x0d\x92\xd6\x82\x54\xcb\x2e\xb9\x37\xd3\xa2\xcc\x73\x12\x6c\xab\xe2\x74\xb3\xf2\xfc\x2d\xd7\xb4\x48\x4d\x4d\xef\xb5\xe6\x77\x9a\x3c\x99\xdf\x58\x17\xe7\x5c\xf9\x5a\x0a\x6b\xc9\x50\x78\x43\x61\x00\xe7\xed\xbf\xfb\x38\x6a\xdf\xf7\xc3\x3e\x0e\x82\x3e\x0e\xfc\x7e\x4e\xc2\x9e\x28\x42\x7c\xa9\xd9\x99\x93\xe8\xd2\xcc\x56\xf9\xb1\x04\xaf\x37\xef\xee\x3d\x17\x8d\x66\x2f\xb6\xb8\x49\xb3\x9d\xee\x0d\x4b\x27\xe4\x9e\x06\x58\xd1\x5a\x73\x7c\x7b\xc6\xee\xe2\x1f\x7b\x76\x40\x99\x4d\x19\xd1\xd3\x00\xd9\x79\xcf\xff\xea\xbe\xef\xfb\xae\xef\xc7\x41\xbc\x8a\x91\xca\xa6\xab\x83\x40\xd2\xb1\x42\xf3\x9a\x34\x93\xc2\x41\xe7\xc2\x55\xa7\x0a\x28\xfa\x48\xb9\xaa\xd2\x6e\xfe\xab\x93\x4c\xf1\x66\x87\x24\xf2\x2f\xd2\xc0\x7b\xb0\xd5\x5f\x05\xa6\x41\x09\x80\xda\x3f\xd4\x58\xcd\xb8\xa9\x44\x68\x71\x9e\x94\xe0\xc4\xba\x44\x0f\xbf\x6d\x55\x60\xc6\x9e\x1e\x89\xfb\x00\x11\x07\x8a\xdf\x25\xba\xe8\xa5\xae\xf5\x64\x94\x91\x9e\x9c\x25\x05\xf6\x7a\x45\x57\x85\x0f\xe6\x4e\xb6\x9e\xdc\xde\x90\x0b\x30\x23\xf0\x99\x2f\x6a\x8f\x92\x71\x2b\x43\xf2\x6b\xfe\x86\x54\x29\x09\x3b\x29\xce\x31\x29\xcd\x7e\xb1\x15\x55\x67\xea\x5c\xca\x51\x2b\x44\x3c\x97\xf0\x8e\xfd\x11\x42\xfa\x13\x72\x9e\xc7\x55\x09\x37\xec\x4b\x92\xe5\xc8\xf2\x45\xe9\xba\xae\x7e\x65\x3b\xd8\x3d\xc1\xb0\x14\xaa\x7d\xfa\xf5\x9c\x38\xbc\x03\x0d\xef\x4a\xfe\x47\xd2\x6a\x9a\x79\xa8\xb7\xbc\x4d\xe9\x67\x3d\xbf\x2d\x1a\xe4\x26\x19\xe6\x2d\xfd\xdd\x53\xfc\xbb\xbb\x54\xb8\x9d\x1c\x17\xba\x0b\x4e\xda\x2c\x6e\xb4\xb4\xcb\xd4\xa9\x54\xf1\x50\x22\xb8\xfe\xfa\xf2\x53\xc9\x8c\x18\xb4\xac\xca\xbd\x51\xc7\x1b\x37\x19\xed\x9e\x18\xda\x1d\x1b\x9a\x10\x88\xc7\xff\xbb\x93\x4c\x10\xac\x3d\x7c\x93\xae\x33\x32\x0b\x63\x82\x0d\xa3\x6f\x3d\x0e\xaf\xe1\xfc\xea\xf3\x6d\xa1\x03\x89\xee\x13\x69\x0c\xf3\x92\xfc\x49\xa6\x99\x96\x67\x5b\x35\xb5\xde\x54\xe6\x67\x20\xe0\xf3\xbd\x2a\x01\xa8\x0b\x39\xfc\x5b\x99\xf5\xa1\x4f\x45\xa1\x4f\xf5\x81\x77\xd5\x71\xf1\xe0\xeb\xb3\x83\xd0\x9f\x15\xad\xe5\x1f\x10\x19\x27\x9a\x66\xe8\xa4\xaf\xac\x40\x9f\x56\x09\x9b\x8c\x96\x1a\xcf\x3b\xc3\xa0\xc7\xa4\xc2\xc2\x0d\x8e\x87\x2e\x50\x2d\xb4\x53\x66\x50\xfb\xb9\x0a\x9c\x29\x5a\x7b\x45\xa6\xc7\x81\xca\x6f\x6e\x60\x51\xc1\x5b\x5b\x8b\x5b\xb9\xeb\xf5\xd2\xa3\xbd\xd9\xab\xb7\xd1\xad\xb9\xc2\xad\xb5\x11\xaa\xf3\xaa\x87\xec\x7f\x1a\x4a\x87\x8c\xaf\xf5\xce\xf6\x24\x56\x0b\xbf\xb7\xe7\x7f\xed\xc8\xfb\xb2\x7f\x32\xb5\x69\x50\x6a\xaf\xf1\x6e\x94\xf2\x6a\xaf\xfa\xd0\x06\x6d\x94\x8a\x39\xdc\xe1\xe2\x42\x29\x2d\x4f\xa5\x33\x77\x70\x7a\x19\xc1\xea\x93\x4c\x36\x96\xa2\x28\x62\x6d\xa9\xb2\x61\x11\xa3\xbe\x3e\xbc\xd3\x3e\x12\x56\xff\x0a\xe9\xef\xfe\x53\xff\x91\x0e\xc4\x90\x0e\xf1\x92\x0c\xf3\x3a\x93\x45\x3f\x27\xc1\x84\x59\x7f\xbb\x0a\x2a\xdb\x3b\x42\xe2\x21\xfe\xb7\x4b\xfe\xfe\xce\x49\x71\xa6\x14\x03\x39\xf1\xfa\xe5\x61\x32\x37\xbc\x26\xd6\x83\xd5\xc7\x5a\xca\xb8\x36\x1a\x88\x3f\x22\x54\xc3\xf5\xbb\x51\x45\xa6\x0a\xe4\x31\x2f\xc0\x8c\x66\xa5\x59\x8e\x20\x2d\x82\x07\x0a\x1c\xe2\xd1\xf5\xf1\xed\x5a\xd9\x09\x09\x24\xdb\xc3\x42\xb4\xa4\x6a\xa8\xd7\x18\x94\x29\x45\x31\x2e\x03\x4c\x73\x6c\xb7\xd1\x74\xe0\x5d\x76\xbc\x2f\xff\x78\x0d\x8d\x3b\xdf\x5a\x26\xd5\xe6\x31\x6b\x16\xd1\x2d\x8f\xff\xdc\xba\xeb\xbd\x09\x1a\x6f\xd1\xa0\x54\x29\xca\x56\x89\xc2\xfd\xc5\xb4\x7e\x4d\xd0\x8e\x91\xce\x1e\x33\x68\x48\xc8\xc2\xf1\x77\x0a\x6c\xb3\xed\xf3\x41\x6a\x7f\x5a\xb9\x2a\x3f\x19\x4d\xf8\x1e\x74\xc5\x96\x77\xe1\x53\x3d\xda\xaa\xbd\xda\xaa\x01\x73\x72\xbf\xb6\xe7\xff\xad\x86\xf5\x68\xad\xe9\x22\x8c\x19\x22\xcc\xe7\xd2\xf8\xdc\x82\xf5\xc2\x3f\x60\x5b\x31\x6d\xf4\x77\x05\x35\x8d\xd4\x19\x53\x65\xfc\x7c\xaa\x78\xa8\x10\x22\xbf\x32\x08\x4e\xe9\x35\xf5\xd0\x83\xab\x0f\xc8\x59\xa2\xca\x9d\x15\xda\x48\xa7\xe1\x62\x66\x84\x90\x44\xbe\xeb\x03\x91\xc8\x30\x23\x7a\x75\xf9\xed\xd4\x52\xc4\x77\x02\xe0\xf4\x01\x86\xea\xb2\x11\xcd\x15\x10\xcd\xf5\x50\xbd\x8d\x10\x24\x17\xbd\xd4\x74\x9d\x75\x56\x9c\x6e\x53\x3e\x95\xfc\x94\x23\x28\x4f\xec\x70\x3b\x82\x62\x88\x7e\x5e\x11\xe2\x82\xcc\xdb\x11\xeb\x8b\xc6\xe4\x57\xbe\x1c\x23\xa0\x98\xbb\xc2\x30\x8a\x19\x6b\x03\xb4\xa3\xea\x93\x78\x44\xdc\x8c\x15\x7c\xab\x69\xa4\xf6\xd2\xff\x3a\x70\x6e\x7e\x4b\xce\xea\x64\x9f\xef\x57\xa7\xfc\xcd\x47\x9a\xa0\xf9\x56\xa0\x69\x7c\x60\xe9\xe2\x47\x65\x7f\x55\x02\x77\xa7\xdb\xe9\x2a\x44\x76\x76\x85\xa5\x60\x69\x80\xa5\xfb\x82\xe6\x7b\x84\x22\x7b\x84\xea\x5d\xfc\xb3\x0d\x35\xe5\x22\x9e\x85\x73\xd1\x86\x73\xd1\x81\x96\xf2\x6c\x69\xf0\x27\x92\x61\x5e\x11\x68\x3c\x3b\x42\x2f\x4f\x6f\xd1\xdd\xc0\x57\x06\x1a\x12\xc2\xaf\x15\x7e\x2f\xcd\x40\x6f\x36\x98\x35\x82\x84\x34\x28\xaa\xec\xaa\x5c\x9f\x61\x3e\xd2\x0c\x4d\xab\x1b\xeb\xf1\x48\xb5\xa5\x81\xca\xd0\x94\x2c\xc1\x1a\x74\xd5\x2f\xe0\x9e\x60\x4d\x90\x1d\xba\x70\x23\xcd\x17\x38\x09\xfc\x75\x21\x93\x81\x6d\x94\xf5\xff\x4e\x24\xa2\x00\xb0\x9d\x87\x3d\x59\x74\xf3\xfb\xd0\x43\xe8\xe0\x70\x61\x86\x4f\xd4\x3b\x29\x32\xc7\xa3\x8f\x30\xe9\x1b\x67\x77\x74\x06\xb9\x0c\x2c\x11\x8a\xdb\x77\x4a\x7f\xc4\xae\x07\x6f\x6a\x0e\xae\x9f\xbe\xbd\xd9\x85\x1c\x81\xe1\x50\xac\xff\x6b\x3c\x35\x67\x2f\xe5\x63\x8a\xa4\xe2\x1d\x26\x63\xc3\x0d\xd1\x5c\x39\x8a\xf1\x26\x92\x3d\x18\xb0\xe2\x98\x42\x47\x83\x0f\x22\x34\x48\x74\x74\xf7\xc1\x9d\x0f\x43\x09\x65\x61\xef\x7a\xcd\xd5\x1f\x2c\x7f\x18\xd9\x9c\x1e\xa7\x9b\xe5\x9d\x64\x12\x74\x0d\xd0\x7d\xf5\x84\xd2\xda\x03\x52\x6f\x70\x70\x1e\x02\x3e\x53\x8f\x62\xd7\x1f\x61\xb4\x48\x17\xe7\x5b\x30\xc9\xdf\xf1\x2e\xd5\x87\x9e\xdd\x8e\x90\xdd\x8e\x30\x67\xac\x0c\x57\x12\x6a\xf6\x60\xcd\x5d\x1b\x49\xfe\x35\x5e\xfd\x0d\x6f\x5d\x93\x63\x5f\x48\x53\x71\x4e\x17\x38\xb5\x6b\x05\xce\x85\x0e\x34\xd2\x6c\x4c\xbf\x7d\xa7\x93\x31\x89\x15\xb7\x0f\x16\x71\xb6\x65\x1b\x42\x40\x07\xe4\xd9\x90\xf5\x9c\x10\x1c\x1a\x8c\xc8\xe1\xa6\xc3\x49\x7c\x16\xa5\x21\x4f\x1a\xc4\xc5\x9d\xfb\xad\xc6\x4c\x7e\x51\xb2\xc3\xfe\x0c\x30\x92\x09\x82\x66\x69\x3f\x1a\x3a\xf7\x97\x0f\x90\x3e\x2d\x01\x2a\x3b\x9c\x4b\x76\x43\x2f\x17\xb3\x08\x53\xfa\xe8\xb6\x6a\x16\x13\x5c\x4f\x28\xce\xf6\x47\x58\x08\x7a\x48\x7d\x09\xfc\x37\xa3\xb5\x97\x86\x81\x85\xe4\x61\xbe\x87\xa5\xc9\xe8\xd0\x48\x1c\xe5\xf8\x30\x07\x84\xe1\x07\xd8\x31\x95\xc8\x4e\x89\x2e\xf3\x0c\x48\xfe\x9e\x04\xf9\x98\xa0\xfd\x1c\x05\xf5\x14\xff\xec\x2e\xf9\x25\xcb\xbc\x38\xdd\xa2\xb4\x52\xc4\xb3\xa4\xc9\x50\x03\x6e\x70\xf0\x6e\x96\x21\x42\x5e\x99\x49\x2d\x59\x37\xc3\xed\xa3\xb2\x08\xd0\x01\x91\xdb\x55\xa2\x9b\x3a\x78\xc1\x4b\x8a\xf4\xd9\xa9\x00\xb9\x2a\x26\xfc\xad\x2e\x97\xbc\x6e\x7e\xa0\x6e\x47\x18\xcc\x81\xed\x01\x15\x2f\x76\x4c\xd4\xce\xe8\x23\xb9\x33\xca\x4a\x06\x95\x26\x76\xe2\xb8\xf6\x53\x6f\xb6\xf0\x06\x84\x7c\xa2\xdc\xfc\xa5\x3b\x4a\xe1\xd8\x40\xc3\x91\x25\xb0\x10\xc8\x4f\x2b\xb7\x32\xbd\x28\x30\x1b\x26\xf3\xd9\x26\xfd\x0f\x9d\x68\xea\xc7\x5b\x37\x28\x59\x92\x71\x26\xb3\x4a\x6a\xd9\x58\xee\xe6\x25\x31\x4e\x0c\x5b\x92\xa0\x9f\x03\x07\x77\x8a\x35\x79\xb3\xf0\x7b\x67\x01\x54\x86\xa7\x8c\x30\x6a\x80\xe8\x16\x5d\x80\x15\xfe\xd7\xe6\x86\x82\x52\x71\xaa\xa9\x53\x24\x33\xe7\x67\x06\x4c\x12\xa8\x2f\x3c\xb5\x6b\x56\x40\xe7\x0d\x8b\x28\x8c\x3d\x6a\xf2\x0c\x54\xcf\xc9\x87\xfb\x03\xd3\xa3\xf2\x9c\xf3\x0a\x17\x12\xb6\x84\x4a\x52\xab\x01\xba\xf7\x24\x1a\x75\xfe\xdb\x40\x69\x07\xc4\x0a\xd1\xdd\x20\xd5\x51\x98\xfc\x61\xc7\xcf\x3a\x8b\xa6\xd2\xd9\x69\xe7\xbe\x7c\x4d\x93\x85\x81\x97\x7a\xbc\x9d\x1f\x6a\x77\x3d\xc4\x78\x8b\xdd\xd9\x1e\x53\x50\x8e\xbe\xfd\xab\xfa\x4b\x71\x62\x96\xad\x02\xf7\xb1\x04\xff\x7b\xfb\xd5\x49\x5d\x74\x69\x76\xed\xad\x51\x7c\x9c\x9a\x27\xca\xd4\x30\x95\x17\x6b\xb4\xc4\x06\xb2\xa7\x7e\x94\x2c\xca\xb7\xf7\x9c\x86\x7b\x44\xfa\x4e\xe5\x78\x8c\xc5\x78\x97\x21\x67\x6c\xa6\xcf\x87\xfb\x7c\x1c\xcf\x66\x7d\x51\x90\xdb\x5b\x73\xc4\x16\x42\x7d\x15\x4f\x70\x3d\xf5\xba\x82\xfd\xce\xa9\x53\x73\x77\x48\x7c\xb6\x2a\xe7\x3f\x93\x9c\xee\xc3\x82\xb8\xcc\xcb\xe1\x0a\x79\xb4\x13\x74\x92\xe4\xd1\xf6\x40\x04\x40\xc6\xca\x1e\xce\xc3\x87\xaf\x68\xd0\x71\x74\xff\x44\xa4\x68\x91\x15\xfd\xad\xb4\xba\xdb\x88\xb9\x04\x9a\x3f\x6c\x00\xd0\x62\x56\x58\xcd\xd8\x32\x94\x7e\x1e\x66\xf0\x67\x55\x2e\x20\x44\x0b\xf6\xbd\xdc\x59\x9c\xc9\x1b\x54\x59\x05\x9e\x60\xa5\xe7\xd1\xa6\x8c\x85\xbe\x36\x93\xe3\xcc\x50\x47\xc2\x66\x2e\x92\x22\x2c\x87\x15\xd8\x73\x12\xf4\xee\xad\x14\xb7\x0e\x31\xd9\x03\x20\xb1\xeb\x9f\x76\xb4\xc8\x32\x23\xe9\xa3\xc0\x0b\x71\xac\x21\xd0\x76\xbd\xec\x78\x6b\xdf\xa0\xe0\x7b\x33\x26\x9c\x41\x20\x3b\xc3\xc5\x1c\x31\x4a\x37\x5f\x8c\xb5\x54\x96\xea\x51\xca\xad\x2f\xca\x5d\x16\x2a\x41\xb7\xf4\x47\x97\x46\x3b\x91\x46\x3b\xa6\x3b\xda\x06\x97\xa2\x38\xf8\x62\xb4\x1b\x9a\x9a\x76\xe7\x0b\xce\x40\x0a\xbe\xc6\x91\x96\x76\x8e\x37\xba\xaf\x49\x11\x9a\x83\xb9\xd6\x20\x44\xa6\xd2\x12\xbe\xec\xe4\x9f\x58\xba\x23\x14\x23\xf2\x1b\x66\x0e\x61\x4f\xce\xf2\x68\xac\x0b\x59\x95\x18\xc5\x40\x50\xee\x9e\x10\xb5\xa3\xcf\xd6\xca\x8a\xf8\x53\xb5\xf6\xcd\x6c\x06\x15\xf9\x4f\x56\xfa\xc3\xdc\x44\xb5\x90\x7f\xbb\xe1\x07\x2e\x73\x9b\xa9\xfc\x61\x16\xd4\x18\xdd\xba\xba\xba\x43\x44\x48\xa6\x74\x4b\x82\x5e\xb0\xd4\xb0\xe6\x25\x1e\xcc\xb7\xc0\xca\x13\xcb\x1f\x5d\x27\x21\xcc\x57\x9e\x25\x50\xfb\x87\xc8\x4f\xae\xd9\x7f\x85\x04\xff\x06\x2c\x18\xf9\xa1\x90\x5e\xa4\x37\x5b\xc6\x10\x24\x5b\x92\xd5\xf9\x02\xe7\x2b\xe3\x4f\x59\x9c\x62\xd7\x9a\x08\xcd\x24\xf7\x91\x7a\x89\x2e\xf2\x76\x85\x77\xe6\xa3\x3e\x3d\x34\xce\x92\x25\xd4\xcc\x43\x94\xfe\x0e\x15\x8d\xf6\x0c\xde\x3b\xae\x3d\xc6\x7c\xc0\x03\x9c\x3c\x95\x3e\x6c\x7f\x6a\xb0\xcc\x5b\x03\x91\x9d\x08\xe1\x7a\x8f\x66\xd6\xb7\xfa\xe2\x40\xe5\x87\x3d\x58\x67\xd7\xcf\xc3\x6f\x1f\x1f\xe1\x61\x8a\x3b\x4a\xe6\x98\xb9\x61\xdf\xce\x49\x41\xf1\xf6\x35\x57\x96\x4b\xe0\xd9\xfa\x50\x6c\x1f\x7c\x48\x44\x30\x1a\xb0\x4b\x4c\xa9\x93\xe5\x1e\x46\x73\x52\xd9\xa0\x52\xd9\x54\x5f\x3a\x2b\x67\xba\x04\x6f\xc7\x4d\x3e\xff\x21\x80\xf6\xfd\x54\xdf\xf2\x2f\x76\xd7\x82\x52\xe3\x06\x00\x9c\xe5\x71\x95\x57\x4d\xc2\xb4\x08\xd6\xf2\xb5\x64\x56\x92\x01\x20\x29\x87\xb3\x1c\x21\xb2\x25\x99\x53\xa1\x1e\xfd\xd8\xa0\x80\x8a\x05\x50\x00\x86\x2a\xf8\x37\x21\xc6\x0c\x00\xa3\xdf\x4b\x6e\x2f\xa5\x4b\x5a\xef\xaf\xa7\xc0\x14\x02\x8a\x84\x1b\x28\x7d\x02\xeb\xfa\x49\x77\x49\x45\xa7\x63\xb3\x38\x54\xf0\x2c\xa0\xd6\xe7\xb7\xb3\x49\x6c\xa8\x15\x9a\xfd\xf8\xf6\x4b\xd2\xa0\xd0\x82\xe8\x28\x35\x51\xf5\x57\x1a\xfb\x4d\x23\x9f\xa0\x3d\x00\xef\x60\x67\x50\xa9\xc9\xf8\xb8\xa6\x26\xfb\x10\xd9\xb9\x22\x10\x95\x9f\xe1\xf3\x2d\xc6\xe0\xc0\x1e\x79\x66\xa0\xd1\x2d\xbd\xd8\xb8\x63\x13\x2e\xe9\x3c\x05\xe5\x29\x5e\x30\x05\x35\x56\x5d\x85\x12\xf2\x4b\x21\x4f\x04\x90\xd5\x53\xf9\x75\x65\x2a\xc9\xa1\x4d\xd7\xc0\xb0\x3a\x30\x24\x03\x01\xf7\x80\x99\xf3\x03\xab\x9f\xf9\xc5\x7e\x22\x5f\xbf\xda\x43\x6f\x2e\x43\x96\x3b\xac\x08\xbc\x5e\xaa\xad\xc9\x12\x27\xb2\x5d\x60\x6c\x09\x42\x3a\x7b\x5d\xbb\x1b\x4d\xed\x08\x23\x3d\xb1\x3c\x54\x67\x24\x41\xa5\x34\x4b\xba\x4a\xf8\xb4\x07\x46\xed\x18\x9d\xa9\xdf\x03\x2b\x8f\x4e\x35\xbe\x48\x9f\x5d\x26\x43\x09\x01\xd1\xc5\x30\x19\xf1\x5c\x47\xe6\xfa\x86\x89\xfd\xed\x86\xe8\xfe\x66\xa1\xc0\x60\x3c\xcd\x7f\x75\xf7\xcf\x35\x8a\x23\xc4\xb3\x5b\xba\x84\x47\x7b\xb5\xd1\x8d\xeb\x48\x59\xbc\x9b\xc4\x2c\xf2\x8c\x76\xf7\x8b\x65\x66\xfb\x10\x86\x5b\xcb\xd0\xfe\xab\x2a\x6b\x11\xff\x9d\xbb\x78\xb6\x60\x33\x10\xc8\x7b\x7a\x6a\x30\x72\x74\xe7\xb6\x47\xf3\xd9\x25\x80\xd8\x32\x95\x78\x5f\x14\x46\x24\xe8\x7c\x60\x64\xf0\x47\x51\x4c\xe9\xfb\x5e\xef\x20\x34\x66\x7b\xfe\xd7\x43\x74\x97\x83\x37\x55\x79\xce\xf5\xed\x88\xfc\xd5\x5e\x6d\x31\x43\xe2\x81\x67\x15\x87\xcc\xf3\x0c\x57\x82\x3e\xb0\x74\x87\xe8\x47\xdb\x56\xe5\x19\xec\x96\x28\xcf\x10\x26\x7e\xbf\x7a\x8a\x09\x1a\x4a\xf5\x81\x38\xb0\x6d\xf5\x91\x6c\x94\x1d\x36\x58\x57\x5b\xc0\x17\xe5\xd9\xca\x7f\x20\x22\x3b\x5e\x57\x52\x28\x95\x1f\xd8\x9d\x85\xdf\xad\x9f\xbd\xf6\xec\x6f\xc3\x11\x6e\x2d\x14\x9f\x5a\xea\x9c\x72\x98\x07\x8d\x6d\xf2\x03\xb3\x0a\xf3\xe7\x48\x19\x53\x1c\xc2\x80\xb1\xbe\xac\xeb\xf2\x87\x1e\xea\x0f\xa6\x16\x98\xaa\x73\xf1\xd1\xb2\x5f\xb3\x05\x18\x78\x20\x47\xb1\xb5\x64\x9b\x51\x12\x3a\xa4\x28\x3a\x3c\x6e\x59\x3f\x23\x49\x40\xe4\x49\x64\xe5\xd8\x31\x0b\x92\x36\x77\x76\x24\x03\xaf\xfa\x55\x60\x28\xe2\xfd\xed\xd3\x38\x91\x28\x3a\x9c\xec\x3c\x2e\x50\x05\x7a\x13\xe2\x32\xe4\xa7\x58\x17\xb2\x65\x89\x03\xc3\xa5\xc8\xde\x4b\xe8\x09\x05\x33\x6c\x5e\x36\x66\x75\x3f\x9e\x9d\xee\x9f\x6f\x85\xfa\x43\x2c\x48\x71\x38\x7c\xa9\x6b\x23\xc5\xd5\xa6\xe0\xca\x28\x0f\xeb\x93\xc3\x01\xf3\xc5\x0f\x20\xcc\x4a\x36\x9e\xda\x4e\xfc\x25\x85\xc0\xff\x3a\x96\x79\x63\x09\x6d\xbe\x38\xe6\xee\x98\xdf\xdc\xa9\x3b\xa5\x4b\xc0\x7a\x7e\x5f\xe2\x3c\x54\xd1\xb9\xb9\xbf\xdc\x55\xc9\x82\xc7\x7d\xac\x91\x9f\x09\x7a\xe3\x20\x10\xa8\xcc\x3a\xf7\x4e\xd4\xe2\xe3\x48\x43\xa5\x8e\x16\x07\x21\x9b\x6d\xb0\xaf\x89\x85\x67\xba\xe8\xc6\xdb\xa0\x90\x85\x38\xfa\xe6\xc7\xba\x7e\x13\x79\xa8\x0e\x92\x85\x3d\xbe\x28\xcd\xa8\xdf\x59\x2a\xda\xda\x5f\x28\x0f\xeb\xa1\xe7\xb1\x8f\x8c\x69\x86\xc8\x3f\x92\xac\xee\x43\xfc\x73\xbd\x27\x17\xec\xcc\xc0\xa4\x31\x3f\x30\x13\xc3\xc8\x59\x41\xf7\x36\x10\x5a\xbf\x25\x68\x88\xe7\xf7\x9d\x81\xfa\xae\xbe\x43\xaf\x97\x12\x6d\x78\x27\x4e\x60\x4c\x2d\x43\x85\x4a\x92\x8d\xf9\xdd\xa8\xbf\xe0\x65\x40\x65\x4f\x4c\x89\x58\xd3\xf9\xef\x86\x2b\x3c\xa2\xf6\x95\xa0\x49\x78\xe7\x5d\xa2\xf1\xba\x57\xa3\x4c\x32\x08\x0c\xd6\xfa\xb2\xbe\xef\xfb\x79\x98\x63\x97\x69\xbc\x48\xc2\xe4\x68\xaa\x6f\xc6\xef\xd2\x29\x1e\x7a\xc3\x84\x96\x77\x76\x46\x7e\x1e\xc2\x7a\x40\x57\xd0\x96\x91\x45\x1b\xf1\xf5\xb5\x84\x3e\xe0\xf4\x28\x1c\xe8\xf8\xa9\xad\xca\xd3\x44\x68\x83\x6f\xb8\x68\xe1\x10\x1c\x62\xd4\x5b\x63\xfa\xef\x7c\xc9\x2a\xf3\x9b\xbf\x9c\xd6\x05\x13\xbe\x0c\xb6\x71\xb5\x48\x1e\x86\x07\x79\x8c\x14\xe3\xfc\x09\x3b\xf0\x7b\xd9\x1b\x7f\x84\xfc\xa8\xcd\x7b\xe0\xe0\x62\x8b\x79\xfe\xfd\x36\x74\x64\xd8\x6e\x1c\x3c\xd9\xf1\xfb\x28\xd3\x7e\xef\xbc\x30\xbf\x8a\x59\xdc\x47\xc8\xba\x4b\x02\x51\x2f\x60\x0b\x05\x40\x07\x7f\x39\x5a\x5d\x1e\x1e\x72\xf0\xcb\x66\xb7\x0f\x9a\x1c\x26\x26\x05\xcf\x7b\x11\x7c\xeb\x08\x3f\x2a\x3f\xd5\x7e\xba\x32\xe5\xb7\x42\xc1\xb2\x2e\xdf\xdd\xcc\x90\xd8\x4c\x7e\x36\x99\xcc\x63\x52\x42\x78\xfa\x0a\xb7\x66\x8f\x07\xee\x12\x13\xac\x70\x00\xbb\x21\xf5\x94\x46\x4e\xa0\x9d\x31\x53\x54\x92\x2a\x01\xe8\x06\x49\xbd\xc6\x0f\x39\xe5\x09\x2f\x4b\x54\xbc\xa3\xcc\x89\x51\x14\x23\x52\xfa\x18\xba\x35\x30\x5b\x89\xc6\x77\x94\xca\x11\x95\xf8\x49\x99\x21\xd6\x96\xc4\xca\xc6\xe0\x6a\x51\x04\x3a\x06\x66\x4a\xe7\x57\x50\x95\x29\x33\x0f\x00\xcb\xbf\x5e\xf1\x65\xa9\x66\x9a\x4b\x4c\x0a\xfe\xfd\x9c\xd5\xd4\xac\xc6\xb3\x44\xe6\x80\x4d\xbe\x5a\x9c\x62\x5d\xcb\x6b\x97\x9b\x56\xce\xc3\xbf\xc8\x14\xc9\x9b\xa8\xd5\x95\xa6\xa2\xcc\xf9\xbd\x8b\xf0\x9b\xed\xa1\xac\x22\xb8\x94\x44\xa6\x4b\x9a\xf6\x23\xe3\xe5\xf7\x5a\xbe\xcd\x1d\x6d\xa5\xe9\x5e\x93\x63\x61\xc9\xbe\x6c\x43\x02\x95\x29\xa0\xd9\x0f\xd9\x42\xbb\x39\xea\x63\x9e\x4c\x70\xa2\x8b\xad\x4d\x31\xb4\xf6\xe3\x37\x9d\xbb\x6a\xad\x30\xe9\xf2\x9a\xb4\xdb\xf2\xbf\x39\xca\x64\x57\x6e\x6d\xdf\x13\xa3\xea\x29\xf9\x1d\x6e\x7c\xd9\xbf\x42\xba\xf8\x17\xc7\x2e\xc8\x7c\xa3\x21\xde\x5f\x9c\xb6\x2b\x02\x5f\x8c\x6d\x17\xdd\x1f\xf2\x1b\x1c\xf1\x2e\x8e\x79\xc1\xa1\xec\x70\xa5\x2e\xd1\xc5\x25\x69\x26\x4f\xab\x0e\xeb\x31\xda\x9f\xab\x8f\x6c\x65\xfd\xfe\x6a\x33\xb9\xbb\x72\x07\x85\x3d\x61\xab\x29\xa3\x04\x2a\xdd\x9f\xc4\xf3\xfb\x5c\xfe\xd7\xf6\xca\xa6\xf7\xec\x09\x4f\xf2\x42\x8d\xb2\x8c\xff\x7c\xab\xe5\x8b\x90\x4c\x01\xa1\x26\xaa\xf2\xf7\x5c\x7e\xa0\xf0\x41\x91\x26\x98\x47\x93\x40\x20\x28\xff\x8c\xa8\x87\x85\x1b\xa2\x0d\x77\x86\x66\xb4\xb1\xd2\x4a\x4d\x6b\xf5\xfb\xcc\x9a\x1e\x77\x07\xd6\x95\x9f\x23\x54\x89\x66\x73\x0b\x39\x39\xe6\x25\xc2\x6e\xba\x9e\x88\x62\x76\x9a\x69\x91\x60\x86\xe9\x2b\xae\x17\x91\xae\x69\x08\x28\x37\x4d\xb2\x7b\xa2\xf4\xf1\xa2\x67\x07\x50\xa8\xfd\x9c\x49\xff\x49\xf7\x11\x4f\x4f\x33\xcf\x97\x5d\x46\x3f\x31\x70\x08\xe8\xc7\xb3\xf8\x16\xaa\xe7\xea\xab\xc6\x0f\x91\xe9\x0b\x12\xe3\x8a\xa1\x44\x9a\xd8\x91\xda\x65\x00\x20\xe8\x38\xd9\x83\x73\x24\xa1\x32\x9d\xd0\x52\x2b\xc5\xe2\x3b\xa9\x82\x1a\xf6\x0c\x8f\xc8\xc5\x04\x09\xeb\xad\x55\xf5\xc7\x11\x79\x83\x4b\xbd\x9a\x23\x09\xc7\xeb\x85\x18\x2f\x26\xea\x62\xd4\x9b\x22\x68\xca\x86\x55\x7e\x7c\x09\x46\x05\xad\x26\x88\xee\xf8\xef\x5e\x90\xcf\xa5\x5d\xdd\x48\xff\xfb\xc5\x9e\x12\x33\xe7\x40\xbf\xe3\x4b\x00\x10\xac\xd5\x24\x39\x5f\xf6\xa8\xa1\x36\x83\x4a\x23\x6c\x71\x68\xb4\xdf\x2f\xaa\xa5\xc1\xad\xbb\xf0\xa5\xfc\xf8\xfa\xa2\x0b\x63\x54\xf1\x8d\xaf\x0b\x13\xad\x97\x44\xfe\x30\x26\x45\x90\x44\x36\xa7\x3a\xca\x28\xa9\x68\x0e\xc4\x91\xb6\xf2\xf4\x9e\x48\xba\x61\x50\xb9\x23\x7a\xbd\x8a\xef\x0c\xe7\x06\x96\x43\x43\x6c\xc3\x91\x49\xb3\x5c\xca\xe0\x96\xe6\x0a\x68\x5e\xbd\x9b\x41\xd3\x35\xb5\x99\x32\xe3\x19\xc6\x58\xee\xcb\x02\x9d\xfc\xdb\xc4\x92\x1b\x91\x72\xf3\xb9\x3a\xf9\x62\x74\xd4\xf9\xfc\x31\xa3\x91\x9a\xe3\x29\x02\x10\xce\x52\xea\xfb\xac\x45\x9b\xe9\x4d\xdb\xd4\x3a\x91\x5c\x65\x7d\xc5\x7f\xdf\x4e\xbe\x61\x28\xd3\xb4\x34\x55\xde\x6a\x52\xcc\xd7\x4b\x62\x19\xbb\x65\xd9\x1c\x84\x67\xd8\x71\x60\xee\x0b\x92\x7e\x5c\xbf\x8d\x50\x89\xbb\xab\x60\x59\xc8\xa3\x3d\x0b\x36\x33\xc4\xac\x38\xf9\x62\x2a\xf1\x0f\xf8\x4d\x5b\x45\x4f\xba\x24\xf3\x0b\x5e\x52\xb4\xa0\x6f\x6e\x9f\xad\x08\x7d\x8a\xd8\xaf\x6d\x7c\x71\x9e\xe2\x9f\xae\x33\x46\xcc\xc1\x75\x33\x52\x5e\x36\xa3\xb3\x5d\xd7\x86\x1c\x3a\x74\x09\x6e\x91\xf4\x26\xe1\x26\xdc\x2a\x76\xfd\xe3\xba\x4a\x63\x6b\x8e\x65\x0b\xeb\x0c\x6e\x6f\xc0\x0c\x2f\x84\x89\x83\x1e\x50\x1c\x22\x4f\xaf\xfb\x74\x4f\xb5\x80\xef\x9a\xc2\xee\x21\xf3\x32\xb1\xbb\x6e\x8a\xac\x89\x2b\x77\x80\x68\x71\x2b\x71\x08\xa6\x22\x7d\x93\xbb\x1b\x68\x65\x6a\xcd\x15\x40\xb9\xa3\xe5\xb9\x91\xbe\x26\xa7\x18\x56\x62\x2b\x92\xa9\x63\x01\x23\x77\xa3\xc5\x60\x24\xe9\x96\x00\xe7\xd8\xb2\x57\x07\x95\x66\x37\xee\x49\xf7\x6b\x8d\xb0\xdc\x8d\x91\xe2\x20\x36\xda\x03\x78\x1e\x32\x48\x1b\xdd\x95\xdd\xd3\x74\xdf\x9e\x5c\x75\xe0\x5e\x8e\xb2\xd0\x50\x89\xc5\x36\x78\x08\x4b\xb6\x52\xcf\x30\x7e\x94\x53\x61\x57\x1d\xf4\x2c\x46\x60\x98\xa3\xfb\xda\x07\x4c\x97\x3f\x8f\x34\x4a\xd2\x47\x86\x37\xfa\xb3\xfa\xec\x0c\xa0\xb3\x8f\x3d\x7f\xec\x93\xc9\x1d\x6e\x8d\x57\xb8\x64\x4b\xbf\x77\x8d\xe3\xb9\x93\x06\xbc\xce\xce\xfb\xef\xd7\x2a\xe7\xc2\x55\x1f\x35\x6d\xc4\x65\x34\x9b\x21\x54\xc3\xc7\x1a\x9c\xe1\x7e\xff\x72\x21\x6a\xf2\x75\x97\x7f\x6d\xfc\xc9\x8d\xe9\x47\x3c\x80\xdb\x15\xa7\x5b\x80\x4b\xc0\x89\x58\x7b\x44\xa6\x7f\xaa\x22\xad\x22\x2f\x22\x6a\x6a\xd3\xeb\x8c\xe9\x68\xf1\x00\x1d\x6d\xeb\x93\xca\x57\x4d\xe7\x54\xda\xb1\xea\x0a\xc9\x24\xbb\xe8\xce\xb0\xf5\xa3\x6d\x5b\x24\xf1\x0c\x1c\x06\xab\x53\x58\x0e\x01\x1b\x84\xb6\x00\x69\xb6\xdc\xc1\xb5\x77\x77\x75\x2b\x04\xf1\xca\x25\x3b\x5f\x8b\xb3\x59\x2d\x3d\x27\x7c\x6c\x36\xbe\x4d\x85\xb2\xda\xb6\xf0\xdc\xd5\x01\x50\x22\x9a\x10\xd7\x0c\x66\xbb\x9f\xe3\x22\xba\xd8\x23\x57\x47\xeb\x6e\x4a\x27\x73\xa5\x09\x06\x3d\x98\xe8\xed\x79\x96\x79\xca\x40\xfe\x14\x29\x88\xcc\x62\x67\x8b\x55\xd3\x87\x37\xca\xf9\x6a\x72\x12\x2a\x98\x7d\x95\x7b\x37\xe6\xa0\x4a\x06\xa0\xa3\xbb\x27\xfb\xaf\xaa\x71\x0f\x39\x31\x2a\xdd\xdd\xdf\xb5\xd5\xab\x4b\x67\xc6\x3b\xc1\x49\xef\x96\xb3\xde\x64\xfb\x43\x2c\x98\x6e\x39\x26\x37\xa8\xf1\xd6\x77\xf7\x0b\x9c\x3a\x1b\x67\x88\xbb\xbc\xcf\xae\x72\x48\x1b\xf3\x35\x4c\x76\x7c\x06\xca\x26\x42\xbf\xeb\xdd\x13\x1f\xa6\xd6\xd8\xba\x3d\x55\xb8\x99\x16\x33\x33\xdd\xb7\x5b\x63\xca\xbb\x32\xa1\x66\xf4\xd6\x2e\x42\x60\xcc\x48\x74\x7e\x16\x0b\xfa\xe3\x47\x08\xf0\xf5\x87\xe4\xab\xcd\x10\x79\x27\x6d\x52\x0b\x8f\x8c\x3a\x46\xf4\x2f\xdb\xd9\x55\x26\xb4\xfc\xa4\x98\xec\x17\x65\xb2\xce\x6f\x06\x74\xef\x13\x6c\xeb\x0c\xa3\x35\x6b\x6b\x83\xf7\xd4\xee\x1e\x2f\xca\xc5\x18\x05\x7d\x83\x13\x99\xd1\x54\x73\xe2\xf5\x6c\x1d\xcc\xb8\xa8\x10\x13\x9d\x7d\x10\x28\x16\x6a\x29\x0f\xfd\x3e\x69\x76\x8a\xcf\x0e\x91\x6a\x4b\x3f\x0a\x56\x25\x39\xcf\x97\x4e\x9a\x87\x7d\xee\x62\x70\x65\x3a\x58\x56\x32\x39\xce\x81\xe2\xa1\xd3\x4b\x75\x42\x86\xb1\x39\x58\x04\xf4\x77\x0f\x14\x4b\x39\xaa\x0d\xec\xbd\x02\x12\xfa\x18\x02\xb6\x42\xac\x60\x22\x27\x48\x96\xe2\xd1\xd0\x3b\xd9\x7a\x7f\xb2\x2f\xdb\xae\xdf\xee\x08\xf9\xfa\x82\x5e\x40\xb4\xfe\x2d\x1f\x16\x62\x16\xda\x1d\x15\x38\xf8\x24\x66\x54\x52\x82\x86\x1c\x30\xee\x3d\x18\xb5\x23\x1d\xfa\x6d\xc5\x77\x46\xf9\x0b\x96\x42\x15\xf4\xaa\x83\xcb\xa6\xc2\x29\x76\xa2\x19\x24\x13\xb1\xb9\x63\x8b\xce\x75\x98\xf7\xb7\x41\xa2\x4d\x34\x29\xfe\xe4\x0d\xd2\xc2\x84\x67\x9b\x17\x86\xc1\x99\x81\xca\x8f\x3e\x64\x07\xc0\x6d\x3f\xb6\x8a\x44\xbe\x46\x1e\xca\xb8\x24\x39\x69\x96\x65\x5f\xfd\x3b\x0a\x3a\xb2\xf8\x8c\x2e\x41\x6c\x81\x9a\x17\x9f\x7a\x5f\xe0\x44\xfd\x76\x31\x5f\xfd\x79\xd8\xd3\xf1\x7e\x54\x18\x15\x1c\xb4\x87\x58\xe3\xe3\x05\x83\x50\x24\x0d\xc1\xfb\x54\xf1\xb8\xdd\xb1\x08\x23\xfa\x6b\xe3\x4c\x71\x49\x8a\x39\xae\xb8\xc2\x65\x23\x0b\x69\x62\xbf\xee\x18\x55\x3f\xd6\xc3\xcb\x5d\xd5\x7c\xbc\xaf\x1d\x8e\xef\xcc\x60\x32\x5f\x4b\x41\x9f\xf7\x5c\xce\x0d\x69\x7e\x58\x13\xfa\x03\x6e\x09\xe7\xf9\x26\xc9\x70\x67\xd1\x36\x8e\x78\x7e\x1f\xfd\xbe\xca\x33\x2d\x9f\x0a\xe4\xf6\xa2\xd7\x8e\xb7\xc9\x1f\x3b\xd8\xd4\xe1\x5b\x07\x17\x78\x39\x4d\xa2\x2b\x84\x38\xd2\xde\x1c\xdb\xcb\x1e\x31\x52\xe4\xeb\xbf\x00\x5d\x19\x05\x46\xaf\x7b\x93\xff\xf8\x4e\x80\x0b\x01\x4d\x97\xed\xc0\xac\x77\x4b\x2f\x25\x71\x47\xe5\x31\x51\xb3\xb7\xa6\xde\xf6\x7c\xed\x49\xb4\xd4\xc0\x0f\xb6\xad\x84\xe2\xf3\xcd\x80\x50\xa7\x03\xc2\x6b\xa3\x0f\xef\x6b\xca\xbb\x6d\x1f\x4b\x6d\x3f\xd1\x06\x7f\x2d\x42\x75\x8a\x28\x24\xb7\x69\xd8\xd2\x60\x50\xbf\xcd\xe3\xa1\x5a\x25\xd8\xdc\xda\x11\x86\x25\x40\x55\x9e\x1d\xd8\xac\x2b\xfd\x19\x22\xba\x9d\x6d\xbf\xba\x26\xd5\x5f\xeb\xf5\x8c\xb3\x24\x4e\xb7\xff\xc2\x74\xdf\xbe\x7c\x3d\x71\x53\x51\xf6\xf8\xc6\xf4\x9b\xd6\x93\xc2\xb6\x43\x20\x7c\xd9\xf3\x5c\xdb\xb2\xe6\x3f\x51\xfb\xc7\xee\xf5\x25\x73\x69\x72\x6f\x99\x78\x0e\x72\x12\x20\xfb\x8a\x90\x44\x72\x86\xd2\xef\x4b\xe8\x4e\xb3\xa9\xfc\x15\x8e\x17\x3d\x71\x7c\x2c\x8f\x66\x70\xa3\x86\xc0\x92\x5c\xe2\x70\x8e\xd2\x4e\x2f\x27\x7c\xd4\xce\x42\xa8\x82\x5e\x42\x55\xe6\x8d\xe5\xa0\x50\xfe\xa2\x04\xf7\x7e\x91\x5f\x2b\xb3\x84\x7f\x77\x5a\xbd\x40\x65\x08\xd7\xd1\x62\x58\x61\xe2\x48\xe0\xb0\x37\xbe\xa5\x50\x57\x86\x29\x0f\xd1\x9d\x6a\x47\x3e\x74\x71\x56\x93\xec\x78\x5f\x7f\x37\xc3\xf7\x2e\x74\xdb\xe6\x08\xfc\x58\xfd\xe5\x51\xec\xe3\xb3\x24\xc0\xd2\xb8\xfc\xa0\xe2\x35\x41\x77\x35\x32\x7f\x70\xdc\x08\xd4\x42\xef\xbb\xba\xc2\x2e\x7f\x1e\xe2\x18\x07\x9d\x53\x71\x55\xc0\x43\x98\x3a\x9e\xd8\x8a\xf2\xc2\xfa\x12\x2d\xdf\xef\x03\x2c\xdb\xa4\x47\xbb\xd8\x6b\x25\x70\x70\xf5\x57\x1a\x58\x22\x41\xfb\x5f\x3b\x18\x5f\xa2\xbe\x69\x93\xaf\x89\x3a\x72\xd0\xe3\x54\x9e\x6d\x8d\x35\x40\x7f\x44\x2e\x31\x3b\x69\xc5\x21\xb3\xfa\x84\x14\xa4\xed\x28\xdd\x9f\x68\x47\x8e\x05\x0e\x5d\x8d\x46\x2b\xa3\x3a\x6d\x3f\xa1\x2b\xb2\xf0\x1b\xf1\x9f\x00\xa4\x3e\x7e\x2d\x8e\xec\xe6\xd6\xad\xb5\x29\xca\x9c\x42\xcd\x49\x32\x0c\x95\xbf\x64\x98\x27\x40\xd0\xf4\xdf\xc3\x5d\x12\x49\x61\xa6\xf4\x31\x8a\xd9\xa8\xf2\x90\x04\x51\x67\xc3\x11\x23\x8e\x74\xcb\x0d\xf1\xc7\xac\x31\x9e\x07\x9e\x14\xbc\x31\x6a\xd3\xda\x90\x33\xe8\x3e\xa6\x17\x43\x44\xb7\x16\x7e\xf5\x00\xb7\xf8\x52\x62\x4a\x9e\x00\x78\xa4\x7c\x89\x22\xec\xf1\x1d\xb7\x3a\x7a\xc8\xcc\xd1\xfc\x8d\x23\x42\xf1\xd6\xa5\x13\x59\x5e\xfc\xe5\x51\xfe\xca\x44\xa8\x1c\x29\xfc\x0d\x54\x59\x7a\x6f\xe6\x90\x9f\x23\xe2\x38\xd9\xf1\x7a\xd8\x17\xf1\xbb\x22\x35\xd8\x60\xab\x40\xf8\xf2\x16\x6d\x40\xa0\x5c\xea\xcd\xaa\x1a\x1f\x79\xa8\xa2\xf7\xb5\xfc\x55\xd4\x1e\x5c\x08\x94\x66\xf3\xd6\xdf\xdc\x02\xed\xea\xc6\xce\x59\xa6\x68\xc4\xa6\x9e\xd8\xed\xfc\x65\xf0\xfa\xe9\x06\x97\x39\x46\xdf\x14\x26\x2e\xb4\x1f\x67\xd0\xa8\x3b\x50\x64\x12\xbc\xb7\x0b\xd1\x2a\xec\x58\x78\x77\x61\x70\x3d\xf1\x73\xcc\xef\xc8\x19\xef\xd5\x44\xe5\xad\x5d\x85\x0a\xdb\x71\x5b\xa7\x72\xd5\x3a\xbc\xf3\x9c\x07\xc8\xa1\x66\x0e\xd1\x8a\x7c\x4f\x17\x06\xb9\xa1\xb6\x8c\xe3\x27\x59\x10\x1b\x9a\x52\xef\x7e\x45\x3a\x45\x43\xde\xac\x38\x83\xf3\xc6\xf9\x8b\xd3\xd6\x16\xaa\xa8\xf4\x0c\x11\x46\xe1\x7f\xb9\x6f\x38\xc3\xb5\x3c\x9d\x87\xc8\x61\x97\x99\x52\x04\x65\xf0\xe1\xef\x55\x1e\x21\x37\x30\x4f\x31\x30\x72\x0b\xd3\x1d\x85\x3e\x21\x75\x65\xa8\x36\xee\x24\xf4\x01\x3b\x03\x4a\xe4\x52\xeb\x97\x10\xa2\x5e\xd8\xdc\x9f\x25\xbd\xb5\x64\xc8\xe3\xfb\x43\x59\xf5\xf9\xf3\xf8\x85\x28\x8e\x68\x61\x59\x4d\x3d\xc6\x74\x77\xba\xd9\xfc\x9e\xb6\xc7\x7f\x70\x93\xa9\x2f\x82\x2c\xc2\x53\x9d\x32\x4d\x63\x07\x53\xa1\x28\x66\xc7\xd2\x5f\xbe\x73\x1b\x4d\x7c\x66\x24\x2f\x83\xfa\xc2\x53\x36\xa9\x71\xd5\x78\x96\x5d\x9c\xa4\xc7\x3e\x95\x95\x90\x1c\x81\xfd\xd6\xba\xc8\x40\x37\x24\x46\x8a\x55\x38\x4a\x37\x2b\x8e\x4e\xf6\xe7\xf5\xf3\x63\x55\x4f\x7e\x6e\xbc\xfd\xf8\x38\x45\xbe\xdc\x97\xef\x5d\x36\x46\x14\xbe\x44\xd8\xf9\x37\x28\x60\x54\x9a\xfa\xc0\xd4\x4b\xde\x64\x6d\xa3\x47\xd3\xb8\xb5\xa4\x68\x6c\x51\x95\xb4\xd2\x71\xf6\x45\x11\x14\xca\x74\xb6\xf0\x1a\xc8\x17\x83\x42\xc7\x6e\x38\xf6\x8f\xd8\x5a\xdb\x68\x09\x21\x4d\x47\x4e\x82\xd9\xec\xd8\x88\x8a\xfe\x45\xba\x38\x3e\xd8\x89\xfd\x69\x47\x93\x55\x8e\x40\x48\xa6\x5c\x11\x88\xe2\x3b\x3d\x8f\x97\x66\x59\xe6\x09\xe4\x10\xc9\x96\xe5\xd6\x6f\x48\x42\x99\xc3\x85\x16\x90\xda\x39\x81\x28\xb6\x54\x80\x24\xf0\x9e\x94\x78\xa4\x89\xe9\x7c\xd3\x64\xfc\x23\x0c\xe2\x6f\xfc\x8b\x1e\x1c\x5b\x9a\x3c\x00\x70\x07\x41\x9d\x61\xfb\xce\xa4\x6e\x60\x7b\xb0\xca\x5b\x64\x04\x6b\xc7\xcc\x30\xb5\x49\xa7\xe4\x92\xbc\x4b\xa6\x80\x01\xe7\xb9\xec\xc1\x2e\xeb\x82\x94\x43\xb6\x88\x51\x3b\xa6\x02\x50\xd9\x1e\xfb\xa1\x31\x4b\x37\xc0\x25\xf0\x91\xa6\x3d\x4a\x2b\x39\x1f\x72\x9c\x4d\x71\xc5\x49\xc3\x91\x05\x48\x2d\x9a\xd9\x78\x33\xa6\xbd\x23\x2a\x41\xf7\x53\xde\xf6\xc4\x68\xa3\xbf\xff\x49\x24\xdd\xe9\x64\xea\xde\xb5\x88\x30\xa4\xaa\xaf\x28\xfc\xd6\x89\x02\xdd\xb1\xe4\x56\xcd\x97\x6a\x9f\xe3\xcf\x9f\x21\xba\xdb\x58\x41\x84\x9e\x5c\x1b\x5d\x9a\x4b\x97\xf7\x13\xb5\x86\xb7\xfa\x6f\x45\x3c\x70\x51\xef\x5a\xf4\xb9\x4e\x1e\x1b\x5f\xe2\xdd\xaa\xb1\x3d\x22\x37\x1e\x1a\x3a\xe6\x9c\xc4\x3d\x02\xd1\x9d\xdb\x78\x47\x51\x75\x6b\xe2\x33\x54\x9c\x21\xd5\x87\xcb\x23\x9f\xe8\xa1\x8f\x26\x75\x31\x05\x0d\xc5\xcf\xbe\xa7\xb5\x8a\xf2\xf4\x18\xf4\x74\xdd\x1a\x99\xab\x7e\x61\xf8\x24\x91\x1c\x25\xb5\xb1\x5d\x4f\x94\x6c\x02\x36\x8d\x51\xb5\xa1\xf5\x63\x5a\x65\xd6\xef\xe3\x60\x92\x01\x58\xe3\x03\x93\x55\x30\xfb\x6b\x82\x46\x59\x61\xb2\x11\x9e\xca\x94\x50\x40\x13\x3a\x34\x84\xe9\x4e\x8e\x21\xbe\xd9\xab\x95\x87\x60\x84\xc8\x4e\xdd\x24\x99\x33\x0e\x50\x64\x6d\x31\x63\x34\x1e\x9a\xd3\xd7\xdc\xa4\x74\x63\x1a\x8a\x35\xf4\x34\x44\xe5\xfa\x24\x55\x73\x9c\xfe\x65\x8a\x3c\xd9\xd9\x34\x11\x93\x55\xcd\x0a\x1f\x8b\x2d\xe8\x6f\xab\xcd\x03\x5f\xcf\x3c\x03\xf9\x8c\xed\xe5\xbf\xfd\xbc\x8f\x2a\xd2\x15\xf5\xfb\xb6\x9f\x59\x1a\xbc\x3e\x0e\xf6\x40\x8d\xb5\xf2\x03\x93\x27\xf4\x79\xf3\xe3\x1d\x56\x7f\xaf\xea\x47\x76\xbe\x3f\x64\xa7\x52\x58\x64\xd6\x13\xa1\x70\x26\x70\xd8\x3c\x0f\x73\x98\xfd\x5c\x25\x97\x4c\xc9\xb7\xee\x06\x48\xe9\x5c\x54\x6c\xbe\x07\x76\xc9\x50\x59\x57\x4c\x5c\xbd\xc6\x23\x78\x56\xe1\x98\x77\xe1\x28\x38\x31\xbb\x65\x39\xeb\x5a\x38\x5d\xdb\xcf\xbc\x0d\xfd\xbb\x1b\x9a\x48\xc0\x34\x99\x06\x7d\x50\xc5\xee\x51\x7d\x11\x93\x8e\x6b\x5a\x8f\x37\x14\xdf\xd7\x59\x73\x29\x0c\xa1\x92\x62\x28\x69\x28\x51\x0f\xa0\xfd\x5a\x2f\x52\xb9\xcf\x9b\x1d\x83\x41\x1d\x53\x34\x58\x99\x69\xd0\x27\xf3\x71\xbc\x7e\x7e\xd3\x05\x39\x61\x28\x57\xa6\x9f\x80\x13\xa9\x3e\x20\x10\x53\x4c\x41\xe1\x11\x93\xc8\x40\x90\x4e\x5f\x40\x7a\xb5\xc7\xa3\xc5\x24\x76\x8d\x44\x68\x6c\xcd\x14\xdd\x31\x5b\xbf\xdd\xbb\x8c\x75\x8f\xad\x37\xf1\xe8\xbf\x0b\x0e\xcc\x1f\xf8\x15\xe7\xd7\x49\x5c\xd2\xfd\x36\xb7\xd4\xbb\x32\x84\xa5\x3b\x09\x40\x46\xc9\x5d\x33\xf9\x1c\x1e\xcd\xfd\x83\x75\xf4\x78\x36\x06\xb5\x4a\xfe\xf3\x22\x62\x9b\x59\x67\xa0\x19\xf7\xae\x5a\xf4\x57\x74\x85\x6b\x97\xb8\xd5\xf9\xd4\x6c\x39\x12\x7f\xfc\xf9\xb9\xdd\x0d\x5b\x34\x4a\x2e\x08\x11\x4b\x44\x11\xef\xfc\x96\x0b\x47\x17\x55\xef\x1b\x27\x73\x73\xa4\x9d\xf1\x45\x95\xbb\x6f\x88\xd2\x1c\x43\x52\xff\xbd\xa4\xaf\x43\x6e\xec\x1c\x01\x78\x09\x44\x19\xa7\x26\x0c\x5f\x06\x04\x5c\x99\x86\xf2\x9b\x2d\x44\x76\x4e\xef\x4f\x9f\x82\xab\xfb\xf2\x51\x7e\x5d\x8b\xd2\x4c\xc5\xd8\x98\x56\xf0\x71\x6c\x9d\x51\xdd\xaa\xd8\xc6\xbf\xe2\x46\x1e\x1a\xe5\x1f\x04\x8d\x98\x51\x17\xf4\x74\xd3\x1a\x99\x4d\x2e\xa4\x90\xb5\x3b\xf7\x46\xde\x35\x08\x0f\xdc\x34\xc2\xc6\xdf\x6c\xb6\x40\x0c\x08\xbd\x5c\x8c\x99\x41\x21\xc2\x9a\x92\x5e\x22\x58\x91\x15\x11\x42\x97\xa1\xcb\x6c\x52\x9a\xe5\x08\x53\xe6\x80\x67\x57\x2e\xd8\x1b\x5c\x7d\x05\x30\x14\xa6\xf6\xe5\x98\x97\xa8\x47\x14\xcc\x47\xf2\x90\xde\x83\xfe\xf6\xfd\x28\xf8\x79\x44\xfe\x66\x45\xf6\x37\xb6\xee\xd4\xc5\xe1\x5b\xc7\x62\x35\x99\xa2\x6b\xd7\xe6\x91\xcf\x0d\x3f\x65\x6f\xc6\x44\xa5\x0c\x93\x25\x7d\xa6\x37\x94\x92\xc1\xa8\xfd\x47\xd3\x59\x2c\x59\xcb\x34\x5b\xf8\x82\x18\xe0\x36\xc4\x36\xee\xce\x0c\x77\x77\xae\xfe\x44\xbf\xdf\xf9\x07\x44\x74\x74\xec\x01\x55\x64\xad\x5c\x4f\x42\x65\x5d\x43\x31\x29\xd0\xf4\xc7\x49\xcb\x88\xed\xa8\x35\x7d\xb0\x11\x04\x15\x3a\xfe\xf0\xba\x47\x62\xb4\x9e\x55\xb6\xdf\x33\x34\x8d\x37\x2b\x21\xbe\x64\xef\x95\x12\xce\x54\x7e\x26\xcc\x6e\x47\x33\x10\xec\x9e\xfe\x8b\x36\x54\xf8\x61\x60\x8f\xf5\xdf\x2e\xc6\x3f\x86\xe1\x6a\x2c\xb3\x9a\xdb\x3d\x5f\x6c\x49\x83\x21\xfc\x4e\xf2\x87\x0d\xb5\xe3\x41\x91\x06\xbf\xb9\x39\x41\x44\xd1\x18\xab\xa4\x15\x17\x9a\xe1\x10\x95\x68\x18\xad\x84\xfe\x60\xa4\x67\x44\x83\xca\xee\x18\x29\x98\xeb\x59\xfa\xc0\xc5\x14\xf8\x5b\x30\x6a\x5e\x3a\x0e\x4d\x22\x7a\xfe\x09\xd1\x17\xa2\xd2\x8c\xfb\x63\x6f\xeb\xcb\x51\x5a\x4b\x9e\x9f\xe9\x4d\x11\xf9\xdc\x4c\x90\x7c\x8d\x9a\x4f\x51\xcb\xd8\x0e\x83\x2b\xec\x83\xc8\x4b\xfa\xee\x97\xc4\x3f\x72\x37\xc2\xfd\x3a\xb0\x84\xd5\x7b\xe5\x85\x19\xa0\x14\x49\xdf\x82\x92\xf4\x79\xa0\x44\xa9\xfc\x78\x41\xb9\xbf\x3d\x2d\x85\xa8\xd4\xd8\x06\x2a\x26\x17\xcd\x8e\x61\x49\x42\xc2\xca\x40\x68\xfa\x43\x3f\x53\xf2\x7a\x2a\xa7\x32\x1d\x55\xee\x9c\x0a\xa1\x41\xfb\x0a\x94\xa2\x52\xa3\x7a\xe1\xa2\x9d\xe3\x8e\x8f\x7f\xe6\x82\x1e\x78\x09\x01\xa9\xde\x8c\x48\x97\xba\x82\xee\x09\xcf\xe8\x25\x1d\xb0\xd9\x09\x44\x9c\xdb\x7a\xef\x2a\xb7\xae\xdb\x4a\x0e\xf9\xbf\x17\xf0\xeb\xba\x12\x3b\xf5\x81\xab\x83\x89\x38\x8f\xe0\x3b\xe2\xd8\x58\xf5\x2b\xfc\x60\xd4\x87\xf2\x08\x63\x4b\xa1\xfc\xb4\xfb\xfb\x59\x4c\x97\x67\x70\x69\x05\x85\x17\x3b\x27\x47\x9c\x4e\x4a\x4c\xff\xf5\x64\xb1\x2a\x3a\xd7\x28\x88\x3b\x16\x41\xe0\x04\x98\xd5\x07\xe6\xaa\xbe\x3b\xaa\xb1\x66\x27\x1b\x95\xc1\xfb\x70\x01\x80\x59\x4b\x4d\xcf\x04\xf0\xe1\x05\x82\x63\x16\xec\x4f\xe9\x16\x3f\xd0\xba\xf9\x58\x3f\x3b\xbd\x93\xdf\xec\x40\xa8\x36\x8f\x91\xee\xb4\xa4\x6e\x37\x01\xed\xcf\xf3\xa4\x96\xd8\x09\x49\x27\xf8\xb6\x49\xa2\xac\xea\x42\x33\xc3\x66\x30\x75\xf1\x21\x7c\x18\x7c\xcc\x5e\x5a\x06\x1b\x20\x98\xa3\x3e\x45\xad\x57\x8f\x9b\xce\x8e\x66\xca\x6f\x53\x8e\x39\x1b\x7f\x8f\x69\xd6\xb2\xb2\xe7\x59\x37\x8f\x0b\x51\x8a\xb5\x4c\xa6\xc7\x93\x1c\x8b\xe9\x14\x28\x79\x6c\xc1\x0a\xd4\x08\xb5\x80\x33\x71\x6e\x27\xaa\x19\x24\x71\x39\xcb\x20\x10\x26\x0c\x15\xac\x9d\xfe\x92\x1d\x89\x8f\x70\xb3\x6f\xfd\x33\xbc\x00\xae\xc0\x0f\x55\x30\xa2\xac\xa4\xc6\xd7\x9a\xf7\xf4\xb7\xe7\xe7\x01\xcf\xc8\xdc\x7f\xeb\x19\x5d\x61\xd2\xc0\x3e\x78\x59\xb9\x7e\xd1\x9c\x0e\x86\xf0\xfd\x10\xe4\x12\x3b\xc1\x52\x73\xeb\x99\x61\xed\x1e\x44\x3c\x13\xb8\xbc\x15\x75\x4e\xe4\xe7\x3f\x3e\xab\x25\x71\x6a\x7f\x24\x0d\x60\x41\x84\x94\x81\x06\x23\x48\x48\x3a\x73\xed\x91\xa0\x24\x14\xd2\x43\x40\xe4\xd1\x15\x6d\xd8\xe5\x1c\xcd\x75\xb1\x64\xdd\xa5\xfc\xd5\xb3\x28\xc3\x07\x2b\x86\xc3\x92\x09\x8f\x9e\x71\xa9\x8d\xc5\x46\x10\x14\x91\x83\x50\x8e\x63\x60\xb3\xc6\xdd\x42\x20\x9a\x1f\xe2\xea\x94\x55\x48\x41\xb3\x9a\xd3\x42\x97\x53\x06\x83\x10\xe3\x70\x8e\xab\x39\xd4\x1b\xa8\x0f\x7d\x0c\x33\x4c\x90\xc5\x9d\x9b\x52\x21\xfd\x08\xc4\x05\xda\x6d\x25\x80\x84\x06\x00\xad\x27\xdb\xad\x4c\xf2\x0b\x4d\x0a\x3f\x10\x9c\x73\x46\x29\x56\x29\x4e\x34\xc6\x4a\x0b\xc8\x6a\x8c\xe3\x2d\xa5\xaf\x41\xeb\xc1\x12\xa1\x9a\xc6\xcf\xd9\x9f\x36\x07\x29\x0c\xa3\x80\xaa\x3a\xea\x8d\xcf\x8b\x24\x8c\x86\xad\x38\x91\x34\x3c\xb6\xf9\x09\x7a\x99\x8b\x09\x71\xe0\x0c\x61\xd1\xf1\x0b\x9c\x98\x1a\xcb\x4d\xc6\x71\x74\x0f\xa2\xc1\xbe\xaa\x39\x0c\x58\x23\x57\x80\x8d\xce\xf1\xb2\xf2\x0e\x8a\xa8\x40\x68\x16\x4c\xbc\x94\x6d\xe5\x42\x13\xbf\x9d\x3e\x81\xfc\xce\x4d\x0d\xf7\x43\xb0\x16\xd8\x5d\x96\x97\x37\xef\x2d\xe9\xcf\x02\xa2\x40\x00\x11\x85\xf9\xa7\x4c\x37\x8c\x6f\x95\xf4\x50\xd0\xaf\x16\x7a\xdf\x54\xed\x1f\x08\x16\x00\xe9\xe2\xd5\x3e\x2e\x54\x67\x89\xb6\x42\xac\x18\x2d\x34\x42\xde\x2b\x6e\xa8\x78\x34\xf0\xec\x80\x85\x44\xde\xf9\x44\xaa\xf1\xe4\x7c\x9b\x7b\xc1\x8e\xd0\xa8\x03\xff\x0a\x6a\x7c\xf7\x4d\x3d\xc6\x2f\x6d\x7e\x71\x07\x3e\x29\x9b\x03\x99\x81\x66\x0d\xde\x13\x6b\x2c\x02\xaa\x27\xbd\xd3\xf4\x7c\x34\x08\x4e\x4f\x8d\x7e\xd8\xd3\xc6\x54\x6a\x39\xb3\x94\xd7\x6a\xbb\x12\x25\x9a\x9d\xba\x38\x06\xc3\x6a\x07\xe8\x4b\x81\xd6\x85\x92\xbb\xa5\x0a\x6d\xf0\x26\x1f\x2c\x96\xe4\xc9\x77\xfb\x2e\x77\x72\xcb\xf4\xd6\x36\xd0\x2d\x95\x3b\xc6\xce\x82\xef\x45\x98\xdd\x4c\xf2\xc8\x8d\x52\x9e\xc0\x0a\xf0\x69\xaa\x68\x76\x18\xe3\x93\x3e\x39\x30\xf4\xed\x6f\x58\xe1\xb4\x88\x14\xa8\x31\x7c\xdd\x9a\x6e\xa1\xab\xa0\xa1\xe4\x9f\x12\x30\x27\x6f\x57\x36\x1a\x35\xde\x9b\xaf\x71\x16\x67\xad\x78\x40\x20\x53\x72\x3e\x1b\x1a\x80\x61\xca\x20\x5a\x3b\x00\x76\xde\xb8\x3b\x37\x80\xd2\x2a\x35\x8f\xa4\x53\x1a\x00\xd2\x23\xfc\xfa\x9c\x1f\xb6\x22\x65\x6b\xfd\x59\x16\x38\xbd\x73\x5d\xe2\x38\xc0\x0b\x5e\xb2\x6c\x51\x80\x1c\x10\x48\xbc\x7a\x91\x83\x4e\x6d\x56\x18\x3b\x32\x3d\x88\x75\xa7\xe9\x41\x8b\x13\x85\xf1\x32\x6a\x31\x13\x4f\xb1\x53\xeb\x8c\x09\x8c\x05\x49\x54\xb2\x70\x0b\x0e\x6b\xf2\x30\xa3\x4a\x98\x73\xf7\x84\xc7\x5e\x05\xdb\x57\x98\xb5\xff\xa6\x2d\x46\xd8\x1a\xd2\xc3\x85\x23\xf8\xba\x2b\xaf\xc8\x85\x0e\x4d\xcf\xe6\xf4\x55\x22\x2d\xb8\x59\x69\x31\x12\x29\x08\x02\x18\xa1\xb0\xc2\xe9\x13\x31\xb5\xd4\x0b\xda\x57\x04\x8e\x13\x43\xa4\x87\xdd\x18\xe6\xa6\xb4\x65\xae\xf6\x2f\x79\xfa\x60\x72\x68\xdb\x72\xc3\xdb\x5d\x68\xf4\x80\x8f\x76\x73\xa1\xad\xa5\xba\x70\x20\xe5\x5e\xee\xe5\x72\xd8\xf0\x42\x26\xdd\x91\xcc\x80\x0a\xad\x7a\xfc\xb4\x2b\xb2\x92\x29\xa8\xed\xd6\xd8\x01\x02\x32\xf5\xed\xe7\xa7\x8d\xaa\x13\x1a\x23\xe3\xdc\xa2\x58\x7b\xb0\x1e\xbf\xe8\xf4\xdc\x1c\x54\xfa\x04\xc4\xa2\x5b\xac\xaa\x4d\xeb\x81\xcc\xad\x4f\x01\xac\x24\x6b\xa9\x89\x6d\xe8\xa0\x38\x0d\xb6\xc0\x13\x24\x42\x8c\x2c\xca\x2b\x82\x29\x4c\xc3\xd3\xa7\x54\x33\x63\x6c\xe1\xea\xb4\x15\x24\x61\xb3\xb7\x09\xc4\xce\x81\x8d\xb9\x57\xad\x5d\x76\x6c\xf5\xa3\x3c\x99\x44\x3c\xb3\xc2\x3f\xc3\xc1\x6e\x26\x50\xcf\x63\xf3\x60\x12\xaf\x6f\x31\x64\x4c\x1a\xd9\xe0\x6f\xf9\x5a\xff\xe7\xd8\xfe\x31\x7e\x59\x3a\x8a\xec\x7c\x63\x69\xeb\x9b\x12\xdf\x1e\xe1\x16\xda\xb7\x28\xb6\xbf\x46\xfb\x5d\x28\x49\x1c\x93\x83\xec\xc9\xc5\x39\x32\xef\x22\xb5\x5d\x0b\xf5\x3f\x3d\xfd\xad\xc5\x09\x3a\xf7\xe3\x64\x16\x27\xca\x92\x42\x07\x8c\x11\xf9\xb0\xc6\x98\x67\x27\xc5\x87\xc6\xb0\x81\x68\xa9\xc4\xb3\xcd\x00\x58\x9d\x68\xd6\x00\x91\xff\xb5\xa4\x03\xe5\xf0\x08\xe6\xb5\x3e\x3c\xaa\x58\x43\xc8\xa5\x06\x2a\xfc\x12\x6d\x78\x60\xe8\x5e\x5a\xd2\x4d\x55\x96\x6c\x03\xf2\xed\xb0\x2a\xd7\x2f\x5b\xb0\x7e\xe5\x41\x54\x15\xa2\x3c\x41\x84\xf4\xa3\x03\x56\x3b\x72\xa2\x2e\x67\xbb\x0f\x2e\x95\xbb\xd8\x77\x5a\xa7\x47\x12\x4a\x9d\x91\xcc\x6f\x0b\xe1\xfd\x50\xef\x40\x63\x2e\x6f\xfd\x71\x7f\x13\x14\xc9\x27\xe5\xd6\x79\x1b\x62\xd9\xd4\xec\xe6\x4e\x62\xc4\x5e\x11\x4a\xab\x93\xba\x07\x6c\x36\x28\x81\x80\x7f\xf7\x70\xa2\x69\xac\x9b\x06\xe6\x97\x56\x74\x99\x80\xa8\x8f\x40\xcb\xe2\xb7\x76\xda\x16\xd9\x80\xd6\xe7\xc3\xbf\x18\x3e\x38\xb3\xb2\xa6\xb8\x2c\x42\x1f\xb2\x9b\x1f\xc0\x58\xcf\xaa\xc9\x92\xac\x0d\xc4\xce\xac\x5c\xec\x73\x85\xe4\x3a\x35\x9f\xa5\x3d\xed\xf8\x81\x60\x5a\x8e\xad\x36\xde\x89\x92\x0f\xe7\x95\xf2\x1e\x6a\x5e\x72\xa1\xb1\xb2\x30\x41\x0b\x18\xbf\x65\x81\x09\xa2\x18\x2d\xc7\x9a\xbe\x79\xe8\xce\x1c\x6b\x7e\x4b\x8c\xd0\xad\x20\x31\x90\x47\x20\xf2\xaf\x6d\x55\x18\x94\x3a\x0e\xa3\x4a\xeb\xe1\x0d\x20\x3d\x7e\x55\x85\x8f\xc9\x58\x8a\xcd\xcf\xa1\x45\xa7\x4f\x4b\x99\x14\x9f\x13\x75\xe5\x76\xbe\xb9\x40\xd4\xdf\xd1\xd6\x25\x9e\x50\xe7\x9f\x67\xa7\x59\x52\x93\x89\x58\xc6\xa8\xf2\xe6\xcd\x4d\x95\xb1\xfc\xd1\x93\xbe\xa9\xef\xc2\xd7\x82\x24\xcc\xe0\x97\xc1\x34\x42\x16\x27\x21\xf1\x5e\x58\xf5\xeb\x4f\x28\x67\x75\xdf\x7a\x39\xab\x71\xf3\xe9\x33\xdb\x48\x08\x37\x76\xdb\x8c\x13\x2e\x59\x14\x9a\x38\xe3\xb8\x6e\x41\x8a\xf1\x73\xe6\xda\xff\x57\x9f\x6c\x31\x99\xfb\xc1\xdc\x71\xaa\x75\xac\x85\x90\xa0\xac\xe9\x58\x8b\x6b\x3a\x2e\xcb\x4b\x88\xbf\xbd\x10\x1e\xd1\x99\x63\x6c\xb0\x22\x98\xf6\x8a\x0b\x21\xd6\x7a\x96\x39\x96\xab\x09\xed\x29\x56\x2c\x89\xf4\x8f\x0a\x5d\x28\x1d\x97\x95\x3e\xbf\xb4\x71\x33\x4d\x07\xb0\xce\x62\x30\x49\xf2\x04\xc4\xe8\xe3\xed\xea\x8b\x15\xa8\xa4\xe2\x44\x53\xcd\x46\xb3\x79\x17\xc5\xf3\x0a\xbe\xe7\x94\xe7\x2c\x42\x29\xf0\x62\x1f\x75\xaa\x69\xbc\xcc\xd8\x6b\xc8\x16\x98\x84\xc8\x65\xa4\xfc\xc6\xc6\x2a\x4e\xab\x5b\xb5\x93\x3b\x41\xb7\x76\x5c\xc1\xb0\x42\x7b\xa1\x85\x49\xf2\xc2\x14\x5b\xfb\xa3\xdb\x27\xe5\x28\x7f\x07\x2a\x93\x28\xb8\x47\x06\xe7\x3a\xce\x59\xed\x15\xc1\xe2\x52\xc6\x64\x8c\x27\x11\x5c\xee\x0c\x26\x00\xf0\xa3\x56\x0e\xae\xbc\x8f\x87\xd8\x4e\xf0\xdd\xd2\x0f\x92\x90\x1d\x3c\xad\xb4\xf6\xf0\x6f\xdc\xcb\x9a\x8e\xbe\x09\xbb\x47\xe6\x42\xb8\xc5\x3b\x47\xba\xae\xc4\xc9\xb1\x0c\xa2\x11\xf5\xf8\x15\x57\x0f\x6b\xee\x7d\x76\x81\xf0\xce\xab\xda\xec\x68\x96\x04\x36\x64\xf0\x92\xa9\x44\xda\x40\x2b\xae\x8f\x8b\x3d\x10\xda\x17\x7a\xae\x9f\x02\x5a\xfd\x51\x00\x3e\x08\x28\x85\xa5\x75\x34\xa0\x5d\x6d\xa9\x93\x69\x98\x8c\xc6\x78\x99\x19\xff\xce\x42\xcf\x06\x41\x14\xd5\xb3\x20\xcd\x35\xe6\x2a\x5d\x3c\xfd\xfe\xf4\xdf\x0f\x8a\x88\x04\x7a\x15\xf0\xb0\x1d\x3c\xf1\x82\x12\x22\x62\xef\x9d\x21\x29\xc3\xa5\x7f\x2b\x36\xf9\x13\xc4\xb2\xa2\x4d\x07\x3c\x9a\xec\x85\x20\xa0\xdf\x02\x02\x74\xa1\xe2\xc7\xaa\xaf\xab\xa4\x2f\x1d\x21\x66\xb0\xd9\xab\x70\x1b\x7c\x1d\x77\x15\x84\xcf\x05\xb3\x85\xc3\x8a\x66\x07\x5a\xce\x1e\x94\xb6\x2f\xff\x76\x1a\xc1\x32\x29\x9f\xfe\xc5\x26\x64\x28\xe2\x6d\xfe\xee\xf9\xb7\xee\x37\x47\xde\x73\xbd\x49\xdd\x83\x6d\xda\x9c\x54\x27\xc4\x4d\x10\x5e\x5e\xe1\x38\x9a\x3e\x52\xfd\x3a\x55\x74\xfa\xa4\x16\x27\x6c\x11\xe4\x4e\x0a\xd6\x56\xe9\x9f\x63\x4b\xcd\xae\xde\x7f\xd2\xb9\x82\x7a\x85\x7b\xee\x92\x59\xce\x1c\xb2\x2b\xa9\x24\xbc\x1a\x6d\xc1\xcb\xf2\x19\xd3\x3f\x27\xd7\xd8\x34\x23\xb8\xae\x6c\x73\x3a\x51\x5a\xf6\x3e\xa7\xa2\xb3\xa3\xfa\xe8\x50\xab\x11\xc6\xd5\x21\x73\x8c\xcb\x8d\x62\xb7\xdb\x17\x71\x35\x0a\x45\x44\x01\x5e\xf2\xeb\xb9\x2c\xaa\x0b\x15\x17\x44\x58\x52\xc8\xcf\x84\xd8\xec\x91\x06\xab\xcb\x1b\x2b\xe2\x8f\x02\x2b\xb8\x61\x5d\xba\x3a\xaf\xaf\xb9\xef\x1c\xa2\x0f\x1a\x03\xcd\xc6\x71\xfb\x59\xdd\xd4\x04\x94\xd9\xd4\x92\xef\xa6\xb4\x3f\x9f\x41\x60\x1f\x74\xa3\x9a\x33\x3f\x58\xae\x26\xfe\x44\x9a\x40\x78\x08\x91\xaf\xc9\x27\x51\x88\xb4\xfd\xcd\x72\xcd\xd4\x32\x3f\x25\x48\xa1\x7b\xf5\x50\x4b\x28\x49\x0f\xe6\xe4\x39\xa6\x94\xef\x5a\xf7\xbc\x80\xd7\x1f\x6c\x03\x84\x52\x3d\x0b\xa2\x54\xcf\x24\xc3\x4f\xa1\xed\xa6\xae\x2d\x41\x34\x30\x54\x1f\xf4\x3a\xc6\x1d\x86\x54\x25\x21\x77\xa8\xfa\xc3\x9e\x89\x4f\xbd\xbc\x7a\x6b\x01\x15\xb2\x05\xc7\xef\x56\x74\xbc\xa1\x56\x46\x0b\xd1\x03\x19\x96\x34\xac\x65\x75\x9a\x47\xe5\x67\xd7\x82\x28\x82\x95\x0f\x1b\x5e\x0e\x6a\x02\x17\xf1\x09\x12\x59\xd3\x6d\xa5\x91\xa3\x91\xee\x77\x60\x80\xcc\x33\x76\x95\x30\x3d\x58\x7c\xc4\x1d\x60\x09\x10\x3d\x40\x28\xd4\xb2\x78\x1d\x57\x2d\xd3\x7c\x2a\xe2\x0d\x54\x44\x3f\x36\x86\x7f\x82\x6e\xc7\xda\x0c\x32\x38\x68\x5a\x92\x87\xa8\x43\x17\x73\xbd\xde\x43\x06\xbb\x1e\x01\x00\x96\xd4\x98\x14\x8e\x54\x63\xe5\x4f\xd0\x6c\x87\x2b\x4c\xb4\x2c\x75\xb1\x6f\x9d\x35\x13\x44\x13\x82\x9d\xfe\x73\x4a\xc0\xbb\x85\xcc\x89\xa4\x91\xfb\x90\x4a\x8f\x34\xab\xd9\x08\x47\x8b\x8f\xcd\x7d\xdb\xc6\x7b\x31\x80\xed\x06\xa6\xe5\x74\x5e\xff\xc4\x8f\x7e\x98\x06\x37\xb9\xc2\x7c\xfc\x37\x87\xec\x50\x63\xe0\xce\xff\xc6\xfc\x61\xeb\xbb\xd2\x9a\xce\xbc\x95\xd2\xad\xac\x09\x21\x8a\x4a\x0f\x9f\xe3\x42\x27\xf9\xd4\x54\x4c\x3a\x2d\x83\x38\x4a\x30\x67\x99\xbb\x6c\x0f\x40\xe3\xad\x8f\x61\xd0\xe7\xd1\x84\x3a\xe5\xb1\x52\xd7\x50\xa1\x07\xc9\xf1\xc9\xff\xbc\x67\x79\xed\xb4\x9a\x4f\x0a\x17\x53\xd5\x8d\x6c\x04\x50\x9d\xcd\x6e\xb7\x9c\xc0\x78\xce\x3a\xf8\x9b\xad\x45\x32\xc5\x74\xb7\x6b\x4f\xef\xbf\xe7\xd7\xa4\xe1\xaf\x87\x7c\xa2\xdc\xda\xb8\xe6\x53\x5d\xae\x28\xd8\xf0\xfc\x89\xbf\xcd\x88\x76\xdb\x39\x15\x9f\xc4\xea\x5f\x5e\xd8\x95\x1d\xe1\x1d\xbb\x83\x68\x2b\xe2\x93\x12\x94\x9e\x0d\x06\x40\x67\x3a\x06\xf1\x83\x69\xb0\x82\x24\xfe\x7e\x50\x09\xc3\x43\x83\x65\x15\x9c\xaa\x3e\x0a\x34\x2e\x34\xbb\x15\xad\x3b\x50\xb0\xfb\x76\xdd\xa5\xf1\x70\x4b\x56\x2e\x19\xc2\x9b\xc7\x18\x10\xc2\xcb\xec\x24\x3b\x07\x67\x13\x46\x5d\x2c\x7c\x7d\x2d\x04\xe3\x01\xb7\x5f\xd4\x5a\x56\x9c\xde\x6b\x07\xea\x2e\x19\x14\x29\xb7\x95\xd8\xaf\x50\xb3\xed\xce\xf1\x37\x9e\x49\x3a\x22\xde\x86\x90\xa3\x6a\xd7\x8e\x2d\x31\x55\x8f\xcd\x86\xe6\xf0\x77\x64\x2d\x16\x4a\xd6\xed\x52\xa5\xf1\xd9\xaf\xda\x58\x28\x89\xcf\x9a\x2c\xd7\xac\x20\x42\x47\xb8\x6b\xe5\x9b\x54\xe7\x68\x2f\x13\x45\x4b\x7f\x3e\x58\xcd\x40\x1a\x5e\x6c\xf0\x1b\xed\x57\x81\x90\x44\x13\x81\x71\x8a\x47\x05\xac\x3e\x5c\x27\xbb\xfd\xde\x43\x2d\x31\x33\xbc\xf7\xe5\x59\x7d\xf7\x2b\xcc\x08\xdd\x9b\x0b\x0b\x95\xc3\x5f\xa3\xaa\xb4\xde\xdf\x93\x43\x55\xf6\x8c\x08\x87\x5d\x80\xf0\xdb\xbd\xee\x37\x03\x55\xed\x60\xb7\xcb\xb2\xc2\x44\xe2\xf4\x1f\x94\xde\xa2\xbe\x94\x21\x93\x89\xe2\x38\xa7\x04\x37\x80\x50\xa2\x7b\xcc\x63\xe2\xd7\x8d\xfe\x58\xdb\x47\xad\x0d\x65\x1f\x87\xea\x17\x8e\x31\x3c\xb2\xca\x39\x10\x40\xaf\x0b\x25\x11\x01\x5e\x20\xa2\x52\xd6\xf4\x21\x85\x86\xfe\x74\xd4\x78\xc0\x8d\x98\x6b\xca\xad\xa9\xa0\x2d\xab\x01\x63\x60\x8a\x9b\x57\x4d\x73\xfb\xcb\x41\xc0\xa5\x4f\xc2\xa8\xb8\xea\x90\x82\xc7\x6a\x47\x34\xa9\x2d\x2d\x5c\x10\x64\x57\x45\xb4\x60\x3b\xa5\x68\x60\x6f\x86\x91\x19\x56\x71\x84\x9f\xcf\xbe\x67\xdc\x2f\x2f\x55\x5c\x7e\x6a\x58\x49\xf4\x17\x07\xd0\xe2\x91\xa0\x25\x78\xca\xce\x22\xf1\x6a\x0b\x58\x29\x35\x98\xb2\xf2\x6c\x4d\x23\x44\x11\x1b\x0c\x2c\xaf\x26\x5f\x63\x1d\xdb\x2d\x9c\x8b\x93\x04\x90\x19\xf7\xae\x70\xc7\xaf\x42\x66\xe3\x37\x33\xb1\xc8\x22\x68\x75\xfa\x3f\xc3\xb3\xbf\x02\xe0\xe2\x1e\x60\xeb\xf6\x77\x6f\xc6\xf4\xed\xec\x9a\x6f\x53\x4e\x78\xc6\x84\xc9\xa2\xcf\xed\x69\x0d\x44\x3f\x43\x8b\xee\x02\x0c\x75\x81\xe9\xa5\x5c\x4c\x3e\x1d\xf0\x8c\x3a\x24\x5e\xd9\x51\xb5\x59\x55\x3e\x17\xb0\xa9\x56\xc6\xf8\x6b\xa7\x4f\x28\x73\xf7\x4f\x8a\x48\xb9\x83\x01\xe6\x22\x44\x47\xa8\xe6\x5a\x2f\x6e\xda\x12\xf9\xcb\xf9\x23\xf5\x9e\x50\x13\x6a\x0e\x0b\xbb\xd7\xb8\x38\xa0\xb3\xf4\x1d\x36\x0f\x9e\x39\x85\xf0\x05\xc6\xc3\x51\x1a\x79\xfb\x44\xc4\x4f\x6f\xdc\xf1\x6d\xc4\x4e\x0e\xc9\x0c\xc2\x44\x2f\x6a\xe5\x1c\xfb\x3a\x10\xb2\xb8\x1e\x96\xca\xf5\xc9\x95\x25\x19\xcf\xab\xcb\xbb\x85\xa8\x6d\x3a\x2c\x15\xd9\x35\xc9\x17\xfd\xf4\x51\x94\xf4\x20\xba\x94\xe0\xd2\xfb\x80\xe2\xe7\xf8\x65\x7b\x74\xaa\xd8\xce\x9b\xf2\x50\x44\xa2\xf8\x6f\xe6\xa5\xbc\x03\x61\x70\xe9\xa4\x12\x49\x45\xd3\x43\xd9\xbe\xc0\x6e\x66\x36\xeb\xa1\x01\x15\x92\x77\xdb\xc2\xfc\xb3\x3c\x88\x5e\xc5\x88\xe4\x99\x98\x1f\x90\x8b\x16\xc9\xe2\x44\xdb\xfb\xd4\xea\xd8\x1f\x64\x54\x99\xac\x60\xc9\x0e\x29\x47\x0f\xac\xa4\x6b\x71\x5c\xd6\x58\x8c\x01\x4a\x93\x3e\x9c\x3a\x25\xf0\xb2\x4e\xf7\xd7\x40\x44\x45\x03\x05\x65\xfc\x92\x76\x37\xa6\x3d\xcc\x8c\x69\xb6\xff\xe2\xe3\x1a\xba\x66\xfe\xc4\x21\xfe\x40\xc3\x5b\xd6\x75\x5e\x69\x2b\xd6\xd8\x6a\xc2\x7f\x2f\x9d\xd7\x86\x9f\x63\x9f\x2f\x9a\xa0\xdf\x70\x3f\xb5\x92\x56\x8c\xbe\xbd\xc0\x9a\xbe\x17\xce\xaf\x5e\x95\x98\x08\x74\x51\x06\x9b\x44\x88\x3c\x6a\x2a\x31\x4f\x37\xca\x3a\x9f\x67\x6a\x3d\xd2\x06\x6c\x6f\xd0\xe4\xd7\xaa\x3f\xac\x32\xd3\xdd\x82\x9d\x20\xf0\x04\x7f\x89\x5b\xae\xde\xb5\xbc\x8c\x2c\x36\x09\xcd\x2e\x06\x59\x48\x11\x76\x28\xa3\x31\x4a\xe5\x6d\xc1\xa1\x20\x54\x9c\xa7\xf1\xa1\x00\x0e\xde\x19\x97\x55\xc5\x71\xeb\xc8\x90\xc7\x4b\xc3\x7d\x8c\x2e\x46\xcc\x39\xfb\x14\xe4\xb5\x20\x74\x6e\xe5\x06\x05\x2e\x15\x1a\x3d\x13\xd8\x5a\x7e\x58\xb8\x68\x48\x82\xe2\x8a\xe4\xdf\xdf\x1c\xe0\x14\x29\xde\x45\xb2\xd0\x0d\x75\xdf\xfa\xa6\x72\x33\x12\x28\x3f\xb8\x88\xd8\x25\x2a\x31\x1f\xea\x16\xb1\x73\x76\xc9\x74\xdc\xfa\xd2\x30\x4a\xef\x20\xb6\xbb\x50\x9e\x42\x24\x29\x36\x36\x6c\x55\xdb\xed\x94\x9a\xff\xf4\x81\x2e\xa7\xe0\x24\x8b\x38\x5b\xaf\x16\x5b\x13\x13\x28\x51\x6f\x81\xc0\x39\xd7\xad\x26\xe7\x6b\xed\xf7\xd2\xe5\x15\x25\x86\x4d\x2f\xe4\x31\x7e\x41\x7a\x02\x2c\x18\x69\x71\xb1\xdc\x75\x2b\xab\x5c\x7d\xb5\x64\x81\x08\x30\x59\xa2\x07\x40\x8e\x78\xec\x70\x2e\x16\x66\xe5\x5b\xf4\x49\xb0\x99\xf3\x2a\xd4\x39\x74\x0b\xce\x5a\xf0\x1e\x5c\x05\x77\xce\xb2\x7e\xdd\x63\x40\x1f\x3c\xc0\xa5\xae\x2b\xb1\x4b\x34\x40\x72\x69\x8c\xa2\xd2\xdd\xe1\xa0\xbc\xd1\x6a\x79\xe7\x92\xc0\xa2\x19\xbc\xa2\xce\xc7\x02\xee\x94\xa0\xb4\xc2\x09\xac\xff\xe3\xc2\x7f\xef\x29\xc9\x30\x52\x81\x07\x70\xfc\xac\x1e\x74\x02\x34\x23\xf0\x94\x54\x26\x1d\x29\xa4\x34\xa5\xde\x3d\xdb\x05\x5f\x7a\xa2\x6a\xce\x6b\x57\xe4\xf4\xdd\x37\x8d\xe4\x4c\x96\x22\xb0\xa9\x7b\xd0\x5f\xc1\x41\x82\x9d\xa4\xe1\xf0\xc7\x99\xbb\x32\x77\xce\x34\xaf\x6a\xbb\xb6\xc7\xdd\x72\xb0\x5e\xb9\xd0\xa6\xc2\xa5\x82\xdb\x53\x07\x93\x78\x67\x89\x04\xb8\xc2\x29\xd2\xbd\x1a\x2d\x6e\x05\x00\x7a\xbd\xf3\xdb\xe0\x15\xdd\x70\x20\x43\x40\xb7\xdb\xf1\x1d\xc9\xba\x67\xa6\xcb\x03\x60\x41\x5f\x68\xee\x28\x41\x8a\x4b\x59\xa0\x32\xd0\x06\x84\xd7\xea\xb0\x87\xc4\x29\x09\x65\x1b\xf4\x92\xfe\x99\x74\xb6\xbd\xc7\x26\xbf\x22\xc1\xe9\x56\x9b\x28\xbc\x85\xa2\x92\x7c\x4b\xe9\x72\xf7\x7f\xac\x67\x77\x69\xc6\x0c\x46\x1b\x92\xc7\x0b\xf0\xd5\x91\x2f\xc4\xba\x72\xc7\x01\x89\x62\x2f\x44\xc9\x5b\xd8\x46\x72\x17\xe5\xe7\x0b\x39\x4a\xc9\x99\xe4\xe8\xae\xea\x70\x3f\xf6\x26\x2c\xb6\xd1\xc7\xde\xaf\x29\x21\xd6\x27\x67\xce\x7f\x8c\x3d\x88\xfc\xbb\xc2\xe5\xb2\xa6\x3d\x62\x74\xc9\x2b\xcd\x3f\x6b\xfa\x3e\xe3\xa5\x76\xfe\x27\x79\x28\x65\xf0\x1e\x44\x99\xd7\x71\xba\xcf\x91\x05\xf0\x9f\xce\x55\xaa\xdd\x50\x23\xa0\x53\x95\xac\x5a\x68\x98\x3e\x80\xc1\x72\x4e\x1c\xfd\x70\x40\x69\x2b\x3f\x37\x02\xcd\xec\x3c\x98\x26\x26\x07\x2e\xbc\xb0\x96\x95\x4a\x93\x3c\x78\xe4\x85\x78\xaf\x5b\xbe\xc2\xbe\x61\xc5\xf5\x33\xd2\xa8\xb0\x89\x7e\x8a\xbb\x5f\xbc\xc5\x16\x30\x59\x58\x74\x47\x8f\x0f\x4d\x68\x19\xa7\xd7\xaf\xe1\x4c\xd6\x81\x97\x5b\xfa\xe2\x7e\xdd\x5a\xda\x4b\x2d\xaa\x2b\x0c\x38\x7c\x24\x6b\x3a\x6e\xab\xc8\xae\xf8\x4f\xa9\xbb\x56\x98\xdc\x73\x47\x00\xb0\x6a\xe1\xec\xf0\x95\xce\x8d\x55\xfc\xac\x46\x7b\xf6\x8d\x66\xc4\xb2\xea\x42\xcb\x6b\x53\x6f\x1d\x00\x0a\xfb\xf7\xf8\xc1\x50\xfa\x5b\xf0\xcd\xb8\x49\x08\x81\xe7\x17\x2f\x5d\x5a\xd1\x56\xab\xa0\xec\x50\x78\xda\xb8\x80\xb4\x08\x84\xe4\x1d\x48\xf0\x33\xa2\x8c\x50\xe5\x7e\x91\x5d\xba\xef\x08\x39\xba\x01\x10\x7e\x72\x49\xe5\xea\x39\x11\x9d\x99\x30\xbb\xcd\x98\x61\x54\xd7\x0b\x7a\x86\x89\x84\x71\x10\xfd\xe5\xce\x68\xeb\xf5\x55\x4f\xda\x3d\xfb\x24\x60\xe5\x36\x68\x97\xaf\x9b\xa5\x8d\x9e\x6d\xff\x90\x07\x84\xb9\x17\x96\x9d\x9b\x2e\x07\xcf\x44\x20\xef\x2d\xb5\xef\xfe\x57\x51\x8e\x73\x53\xbc\x63\xd2\x7b\x02\x56\x50\xc6\xe6\xcf\x6f\xa1\x74\xbe\x30\xa8\xb6\xe1\x2b\xea\x4c\xad\x85\x92\x34\x1c\x85\xc1\xa8\x64\x17\xf5\x6f\x27\xa3\xd2\xc6\x63\x70\x64\xe1\x39\x31\xdf\xee\x36\xc6\x73\x9c\xfa\xa1\xd9\x90\x2d\x08\x62\xfd\xfd\x1a\xa8\xb7\xa1\x61\xb0\x85\x8e\x39\x05\x29\x29\xdc\x00\xce\xa5\x69\x1d\x78\x45\x4f\xa3\xe6\x34\x63\x49\x2e\x38\xfb\x1a\x1e\xca\x8c\x57\x89\xc1\xa7\xc5\x78\x23\x5f\x11\x58\x63\xd9\xe9\x79\x1f\x02\xd0\xfc\xcb\x72\xb7\xc9\x52\x28\x35\x35\x57\x94\xa1\x1f\x00\xb2\x3d\xc4\x7d\xac\xdf\x9c\xa8\x0b\xd1\xd6\x86\xd5\x0e\x9e\x65\xcd\x4b\x64\x6a\x6e\x11\x98\xdc\xe4\x72\x06\x23\x14\xc3\x5d\xc9\x97\x53\xa6\xf2\x0e\x9a\x00\x1f\x71\xb8\xb6\x7d\x08\x35\x2c\xf5\xcc\xf8\xa0\xb7\x42\x44\x9c\x01\x08\x4a\x1d\x80\x4a\x03\x7e\x74\xf6\xa8\x6e\x2b\x74\xb0\x8e\xdd\xeb\x43\x5f\x5e\x07\x16\x13\x77\xcb\x59\xca\xb5\x60\x2d\x93\xc7\xbf\x16\xb5\x5d\xeb\xb9\x77\x22\x1f\x3d\xac\x57\x05\x89\x3e\xa9\x4b\x75\x07\xf6\xc3\x7f\x62\x0e\x4e\xae\x12\x74\x2c\x3a\xa1\x44\xcc\xd1\xdd\xbe\x8a\xdb\x7a\xef\x80\x0b\x7c\x2a\x9e\x1f\xb3\xc6\x46\x6c\x73\x5a\xb5\xcb\xd5\xe0\x74\x31\xd8\x9c\xa5\xc8\x6f\xe0\x6e\x8f\x06\x80\x75\xe8\x76\x1b\xd7\xa6\x8a\x06\x1e\xcf\x1f\xb0\x34\x5c\x56\xe0\xda\xc8\x39\x86\x40\xaf\x76\x04\x06\x02\x47\x89\x7f\xfa\x56\xbc\x49\x63\x97\xbd\xfd\x2c\xdc\x22\x8a\x60\x20\x6b\x3e\xaa\x79\xd9\x0f\xc7\x80\x26\x82\xf9\x9a\x8a\x3a\xa8\xa3\xbb\xee\x41\x34\xa5\xef\x4e\xd1\x4f\xac\x0d\x04\x18\x26\xe3\xd2\x39\x97\xd8\x5d\x40\x50\x55\x76\x18\x99\x6f\x00\x92\x6d\xf7\xe4\xa2\x58\x06\x75\x1f\xec\x31\x39\xd9\x02\xcd\xdd\x94\x78\x3e\x46\xf4\x47\x43\x82\x7d\x53\x5f\x19\xcb\x4d\xfe\xe9\xb1\xd4\x10\x39\xb6\x92\x1e\x2a\x63\x3f\xc8\x11\x70\x2c\x27\x0a\x04\x63\xd7\x82\xdf\x8a\x3f\xcf\x1b\xb9\x7e\x73\x5d\x38\xb0\x9b\x7e\xa4\x3d\xb2\xf7\x52\x97\x06\x05\xb5\x6a\xa7\x95\xa7\x80\x80\xc8\xe7\xd5\x2f\x56\x9f\xde\xb8\xac\xfb\xb6\x8d\xd8\x2e\x5f\xd0\x75\x30\xff\xc7\xba\xe1\x16\x7c\xce\x29\xe9\x50\x4d\xfd\xe2\x4b\x74\x95\x76\x9e\x55\xe4\xaa\x69\xa4\x04\x2b\x0b\x45\xdf\xdf\x8f\xb7\x97\x60\x47\xc7\xe4\xd3\xc3\x04\x34\xa3\x6c\x8e\xeb\x0c\x67\xbb\x78\xf5\x89\x77\x2c\x0e\x84\x66\xd1\xb1\xca\x0e\x84\xbe\xb2\x91\x30\x23\x04\x5d\xb0\xd3\xdb\x13\x91\xad\x6b\x1e\x97\xa9\xa6\x17\x8f\x93\xf6\x8a\x29\x43\x60\xf7\x88\xf0\xc2\xd2\x29\xa0\x32\x7f\x8f\xed\xdf\x3c\x5e\x74\x56\xf4\x33\xa0\x58\xae\xaf\x4f\x82\xa8\xad\x57\x03\xbd\xdf\x09\x34\x45\x8e\xe5\x8f\x51\x8d\xe9\x9a\xa4\x5a\xc2\x4f\x15\xcf\xaf\x0b\xdd\x06\xb7\x0f\x7e\xac\x83\x71\x0b\xf7\xa3\x40\xab\x7b\xb2\x6a\xc9\x6c\x41\x92\xbe\x05\x7d\xae\x05\xc9\x45\xb6\x8e\x4f\xc9\xdb\xd8\xb6\x93\x71\x50\xaf\x50\x09\x60\x9e\x41\xfe\x25\x61\x34\x74\xc9\x8e\x02\x76\x55\x13\xef\x81\x29\x8a\x5d\x55\x37\x97\x4a\x08\x98\xec\xad\x6f\x7e\xae\x1e\xf0\x35\x66\x56\x2f\x5c\x50\xeb\xbe\xe4\xdd\x5a\x58\x27\x68\x01\x45\xbd\x13\x05\x20\x77\x33\x21\x6a\x8e\x9c\xe3\x1d\x9e\x4b\xd3\x9d\xf1\xdb\x9a\x91\x34\x41\x97\x60\x06\xad\xc5\x2d\x62\x05\x42\x16\xd0\x40\xa6\x0a\x2b\xea\xa8\x17\xeb\xbc\xc3\xc6\x4b\x1b\x8f\x5a\x87\x10\x75\xb8\x89\xb6\x8c\xb6\x4a\x93\x36\x72\x28\xde\xf5\x86\x14\x26\xbc\x20\xeb\x9d\x38\xed\xc8\xc9\x3c\x30\x65\x24\x00\x4c\xae\x4d\x5e\x44\xd9\x2f\xa6\x93\xa3\xda\xf4\xe3\x9e\x12\xa7\xcb\x9e\x8c\x8b\x0f\x43\xb3\x03\x79\xf2\x4a\x8a\x31\xfa\xc5\xb9\x4a\xa8\x69\x02\x12\x6e\xaf\x31\x1d\x6d\x13\xf2\x49\x6b\x15\xb1\xbc\x19\x9a\x2e\x00\xa2\x5e\x61\x07\xdf\xbb\xda\x2f\x74\x17\x4f\xe1\x12\xb2\x9b\x47\x96\x3b\xa0\xec\x71\xd3\x1b\x71\x9d\x57\x8d\x06\xc4\x18\x86\xca\x47\xb7\x9b\xf0\x2b\x43\x2f\x94\xa4\xd9\x95\x72\x7f\x83\xe1\x85\x68\x87\xf7\x48\xbc\x5c\x3d\x4a\x9c\xdb\xfa\xcd\x3f\x84\x5e\xf8\xe3\x5f\x9d\xd9\x53\x7a\xce\x7c\xe5\x69\xed\x64\xd5\xea\xf5\xfb\x2a\x92\x30\xe6\xa6\xac\xf1\x83\x21\x21\xce\xed\xea\x02\xa5\x36\xf9\xa6\x7e\x47\x08\x98\xe6\x9a\xf2\x6e\x0e\xe4\x26\x28\x6c\x99\xfa\x9c\x16\x22\x2a\x4e\x14\x8f\x51\x11\xa1\xf3\x0b\xc4\x00\xf5\x3e\x42\x88\xae\x2a\x09\xd0\x3d\x3b\xe1\x44\xdd\x04\x2d\x20\x50\x93\x61\xf7\x26\x0a\x37\xca\x8b\xa9\x35\x2e\x81\x68\x0a\xa3\x80\x6d\x43\x28\x67\xa6\x93\x33\x7a\x70\x40\x9d\x3c\xed\x51\x2a\x4a\xaa\x29\x8b\x23\xe5\x00\x20\xcb\x3a\x7f\x2d\xf1\xd9\xb3\xf8\x11\xb2\x31\xfa\xdd\xb9\xcc\x1d\xe4\x44\xdf\x20\x49\xe6\xc7\x09\x74\x82\x02\xe5\x52\x0c\x08\xac\x72\x26\x63\x2a\x04\x71\x2f\xbb\x1e\xd5\x59\xb6\x74\x08\xba\x32\xe9\xd7\x85\x12\x58\x22\x74\x72\x88\xa6\x47\x0d\x91\xd5\xfe\x59\x28\x4c\x3b\x7e\x25\x4c\x17\x95\x8c\x3b\x96\x1b\x12\x8a\xbd\x20\xef\x02\x74\xb5\xe0\xf2\xca\xf8\x85\xe0\x5a\x99\x00\x8e\x9b\x0c\xac\xe3\xb0\x5e\xe8\x06\xb1\x6c\x08\x96\x8c\x42\xb8\x6e\xe3\x97\x16\x8a\xe9\xab\x91\x76\x09\x04\xc6\x71\x79\xc8\x33\x2d\x85\xf0\x96\x5c\x19\x46\x01\x2e\xf3\x68\x2e\x75\x9e\x5a\x4b\xdc\xe3\x2e\xbd\x01\x24\x97\x62\x73\x73\x2a\xdd\xe2\x39\x52\xe4\x9d\x5c\xd7\x2e\xa3\x3f\x46\x97\x86\xa1\x52\x06\x15\xa4\xcf\x3f\x31\xa5\xaa\x68\x3f\xc9\xe3\x1b\xbd\x64\x1f\xbb\x06\xac\x56\xa8\xb0\x3c\xb4\xb4\xca\xc8\x1a\xc9\x03\xa1\x71\xf0\xc5\xf3\x77\x52\xde\x20\x08\x82\xa8\xed\x71\xd6\x6c\x7c\xa5\xc3\x40\x7e\xac\x65\x23\xee\xfa\x85\x62\x99\x3b\xe7\xd6\x25\x0c\x87\x35\x9d\x96\x54\xdc\x12\x31\xd5\x07\xba\x44\xa4\xe2\x7c\x8c\xec\x17\xc7\xfe\x52\x8b\x50\x7f\xf5\x37\x1f\x48\xfc\x8c\xad\xea\xb9\x61\xb8\xd0\x29\xc4\xba\xae\x83\x01\x80\x14\x9a\x3d\xe0\x75\xa2\xd9\x6e\x91\x07\x6d\x79\x11\xec\x45\x3f\xc7\xf7\x03\x89\xc5\x22\x16\x2a\x24\x7b\xdf\xd2\x9b\x28\xce\x6d\x46\xd6\x3d\x92\x76\x09\x54\xf8\xd9\x2d\x3b\x79\xa2\x95\x67\xd3\x4f\xfd\xb9\x4f\x8b\x03\x2a\xc3\x4e\xa7\x00\x2e\xc2\xa2\x8d\x41\xb4\xdf\xa8\xef\x86\x72\x43\xaa\xc5\x95\x06\xc0\x8c\x25\xbf\x00\x27\x0c\x64\x22\x71\x53\x50\x80\x96\x7f\x2c\xc6\xe2\x65\xee\x00\x24\x12\xa6\x86\x88\xc3\xa8\xbc\x30\xa7\xd4\x17\x6e\xbd\xb2\xd0\xd5\xef\x17\x99\x5b\x81\x3e\xc2\x64\xc0\x69\x5d\x56\xbe\x9f\xa9\x23\x93\xd0\xa6\xf8\x0e\xc8\xba\x47\xb1\x66\x9a\x91\xf5\xee\xdf\xf6\x8d\x6f\xc3\x69\x82\xce\x22\x89\x58\xb7\xf5\xd9\xff\x75\x22\x18\xf1\x36\x1e\xd9\x3a\x15\x9d\x39\x15\xcf\x6d\x21\xca\x69\x26\x76\xc5\xa4\x20\x4b\x7e\x96\xcb\x0f\x74\x0e\x95\x3f\x3b\xfd\x52\x18\xac\x50\x37\xc0\x2d\xe7\x23\xc8\x02\xfd\x1e\x92\x09\x33\xd2\x9a\xde\x22\x0d\x83\xb3\xdb\x5d\x57\xf8\xc2\x0c\x3c\x23\x86\x25\xd9\xdd\xc1\xe5\x42\xc6\xfa\x0d\xa7\xea\xa0\xaf\xb6\x87\xec\x1e\x1c\x43\x84\xd6\x5c\x97\x2d\xad\x65\x81\xa7\xec\x2b\x4f\x79\xf9\xd3\x71\x8a\x2e\xef\x78\x26\x0c\xf5\x18\x89\x34\x1c\xae\x3b\x46\xb4\xc5\x10\x91\x3d\x1b\xbf\x72\x59\x03\x8e\xd3\x03\xc9\xb9\x26\x1c\xd8\x59\xc8\x7d\x75\xfa\x3b\xf9\xd9\x37\xbc\x10\xee\x26\xd5\x7b\x55\x5d\xd8\x36\x38\x37\x08\xbc\xe2\xd1\x46\xeb\xaa\x3b\x0f\xe1\x2b\xe3\x1b\x88\x54\x66\xee\x7c\xed\x1a\x10\x5a\x1b\x04\x2a\xc1\x26\x4c\xed\x31\x46\x34\x43\xb6\xe2\xea\x70\x51\x91\xf5\xfa\xda\x43\x2f\xd1\x17\xea\x89\xe6\xf0\xd7\xa4\x1e\xdd\x70\xfe\xa0\xb8\xfe\xa0\xa4\x74\x79\xad\x1b\x68\x3f\xab\xb1\xac\x62\x33\xff\xb7\x17\x79\x5a\xfe\x1d\x04\x61\x6e\x33\xf1\x37\x59\xe7\xb4\x12\xe6\xb1\xa5\x48\x47\x81\xe6\xef\xba\x6b\x38\x3b\xd6\xca\x76\x52\xeb\x0f\x1c\x91\xbd\x93\xb9\x1f\x34\x98\xd9\xdf\xb4\x66\x07\x52\x0b\xe6\x3b\x6d\x00\xa9\xf4\x53\xf1\x3b\xbe\xc5\x1c\xe6\x34\x3c\x2f\x94\xe4\x80\x22\xd9\x91\x54\xf6\x05\x41\x3a\x80\x4b\x53\x5f\xbd\xd3\x3f\x01\x5a\x0d\x67\xb5\xd8\xef\x5c\x7e\x02\x2b\xbb\xc2\xe3\x1b\xea\xd7\xe8\xe0\x19\xb7\xe5\xfc\xdd\xa1\x76\x10\x7c\xe2\xa5\xcd\x4d\x55\xe4\x81\x90\x38\xf0\xed\x1a\x4f\x89\xc9\x18\x0c\x4c\x94\x61\x44\xe9\xcd\x2d\x83\x5c\x6e\x1c\xa6\xe3\xb0\x6e\xc1\x0a\x97\xd7\xf4\x2a\x41\xdf\xea\xb5\x24\xb2\xbb\x35\x3d\x8d\xec\x0a\x03\x34\x28\xd4\xc4\x91\x93\xa2\xe6\xbc\xb8\x17\xb6\xc3\x03\x21\xff\x9a\xb2\xd0\x76\xdb\x82\x65\x07\xf2\x96\xfa\xf4\x73\x8b\xc8\x87\x1b\x8f\x40\x5c\xce\x5e\xb5\x16\x3b\xb5\x16\x07\xc0\x6a\x83\x69\x90\x0e\xc2\x60\x48\x02\xb8\x88\x42\xa8\x90\x02\xb8\x8a\x6e\x9d\x65\xfe\xbf\x95\x40\xe5\xfd\x5d\x10\x65\x15\xab\x6c\xc9\x1d\x5e\xab\xc4\x79\x4b\x8b\xb0\x16\x26\x58\x4a\x1e\x03\xf2\xc7\xd9\xb2\xd8\xaf\x05\xe6\x6f\x19\xd9\x37\x12\x45\xcd\xea\x88\xbc\x57\x6e\x23\x5c\x7f\x43\x12\xfe\xc5\xa4\xc9\x36\x36\xe2\xc6\xc8\xb1\xa4\xb7\x81\xd5\xac\x20\xc4\x62\xb3\xa9\x6f\xe8\x99\xc0\xe5\x7c\x39\x7d\xe2\x95\x5f\xfc\x1c\x3b\xf4\x63\xc9\x11\x96\xdf\x37\x3c\x30\xd5\x5f\x35\xeb\x13\x80\x2a\x08\x28\x2e\x3b\x4f\x3e\x29\xd4\x6b\xb9\x8f\x2c\xb1\x58\x8e\x64\xc5\xdc\x2b\xbe\x78\xae\xcc\x0e\x08\x9b\xb3\x10\x4f\x9a\x1c\x37\x41\x95\xc6\xe7\x42\x8d\x3c\xcd\x1c\x23\x43\x5d\x93\x1e\x62\xfb\xc4\x47\xa4\x5a\x40\x65\xfc\xee\x5a\xd8\xb7\x9f\xf4\x73\xfc\xe0\xef\x12\x9d\x3e\x41\xc1\x8f\x72\xe9\x10\x9f\x36\x02\xe8\x93\xbf\xff\x88\xce\x9c\x48\xcd\x80\x82\x36\x44\x57\xd2\x5c\x97\x6f\x5f\x7d\xeb\x2f\xe5\xd2\xfd\x3e\x4a\x79\x1d\xd9\x1c\xae\xa6\x2c\x38\x51\x7b\x1d\x68\xe0\x72\x97\x59\x65\x99\x00\xce\xa3\xce\xf5\x83\x82\x9f\x79\x2f\x61\xe2\x78\x07\xac\xbf\xc8\x61\x88\x05\x26\x64\x7b\xa3\x59\x21\xc1\xff\xb8\x8b\x08\x87\x25\xe6\x38\x1b\x70\x46\x7d\x2c\xe8\xf3\xf7\x9d\x7f\x6b\xca\x5b\x28\x82\x77\x03\xec\x2f\x47\x77\x0f\x05\x12\xe7\xb5\xbd\xd8\xc8\xaa\xee\xa4\xd4\xe2\x5a\x98\xdf\xd5\x06\xf8\xb1\x9b\x52\xb6\x54\x16\xcf\x30\x95\xc3\xf6\x57\x2d\xb1\xfb\x07\xc4\x4f\x5a\xc7\xd2\x43\x55\xbf\x25\x1d\x97\x30\x18\xec\x37\x1b\x96\x30\x08\x32\x00\xd6\xea\x16\xa0\xba\xc2\x62\x7a\xc1\xb6\x7f\x2f\x51\x54\x47\x47\xaf\x9f\x21\x7e\xa5\xe2\x70\x72\x82\xee\xc8\x15\x94\xf9\xf2\x56\x00\xa6\x20\xf6\x3b\xfe\xdb\xc3\x1f\x8f\xca\x8e\xa4\x86\xa7\x3f\x86\x27\x7c\xfa\xa7\xc3\x46\x11\x05\x10\x65\x31\x3d\x9b\x0c\x4b\x1a\x32\x56\x44\xe9\xbc\x8d\x1a\x5f\x8e\x3a\x81\xbf\xd4\xf1\xb8\xac\xf1\xa8\xba\x53\x02\x19\x4a\xd2\x86\xc3\x9c\xe1\xb9\xef\x96\x42\x74\x00\xe0\x0f\x15\x4d\x88\x83\xf9\x06\xba\x2d\x8c\x94\x4d\xe3\xe7\xfc\xab\x0f\xdf\x77\x22\x2f\xb4\xc9\x5f\xd5\xcd\xe8\xaf\xc5\x61\x11\x37\xaa\xdd\xfc\x66\xb4\xd1\x3b\x16\xea\x4f\x00\xc4\x6c\xa5\x73\x20\xd8\xa8\x4c\x5a\x00\x2e\xd8\x7a\x88\x5f\xd2\xef\xd7\x40\x4d\x35\x75\x08\x4a\x6b\x4a\xd5\x91\x8e\xf0\x01\x96\x99\x21\xbe\x0d\xdb\xfb\xb5\x2f\x34\x2e\x95\xee\xf0\x2a\x7a\xf1\xa1\x71\xb6\x7f\x0c\x22\xd0\x67\xbf\x87\xfc\x08\x5a\x77\x66\x87\x15\x7b\x55\xfe\x6e\xda\x71\x95\xf6\x7d\xe3\xc4\xc3\x25\x50\xe0\x89\x6a\xc2\x4f\xaf\xc7\x4f\x8f\x02\x78\x00\x4c\x29\x10\x97\x54\x7c\xd9\x91\x74\x4c\xce\x2c\x84\x97\x34\x1c\x96\x24\x1c\x9a\x38\xd6\x93\x3c\x5e\xdd\x61\xb1\xc5\xb5\x28\xbb\x98\x71\x91\x41\x60\xb0\xc2\xac\xf9\xf1\xa1\x2d\x0f\x3a\x9d\xf5\xf6\x5c\xae\x92\xad\x98\x02\xac\x6a\xa3\x83\xd5\x90\x6c\x02\x4d\x89\x42\x72\xb0\xcf\x91\x13\x7c\xc0\x45\x07\xe0\x6f\xc7\xd7\xb8\xad\xc5\xae\x7c\x69\xb3\xbf\xb9\xcc\xcc\xaf\xa6\xaa\x4a\x16\xdc\x8b\xd5\x33\xf3\x15\x5c\x47\x4f\x78\x63\xa8\xb0\xd6\x76\xdb\x82\x18\x2f\x2c\x70\x53\xe4\x8a\x7e\x1b\x98\x2a\xb2\xc7\xc6\x9a\xb3\x23\x8e\x8a\xc4\x6e\xf4\x4e\x60\xfd\x03\x38\x3a\xdd\x59\xd6\xa6\xac\x15\x4e\xe9\xe9\x52\xf0\x31\x1e\xf7\xb5\x8f\x6c\xff\xc7\x3a\xf9\x15\xc9\x7c\x40\xb3\x3d\xf9\xeb\x76\x5e\x66\x3a\xb7\xe0\x1f\xa9\x6c\xe4\x16\x4a\x32\x63\x04\xfc\xdb\xa9\x30\xda\x62\xc9\xcb\x0b\xb7\x75\xa4\x3d\xdf\x05\x41\xb2\xcd\xd4\x77\x9f\xc3\xc1\x89\xf7\x50\x0b\x4e\x28\x33\xc6\x37\xf0\xf7\x4f\xff\x0c\xc8\xf5\x3f\x06\xdf\xab\x0c\x29\xce\x6e\x71\xdc\x76\x8a\x10\x72\x14\xdb\x1b\x0a\xa3\x25\x2d\x87\x59\x75\x35\xcb\x55\x59\x40\xe2\x6e\x10\x5d\x9f\x44\x7f\xfd\x41\xf1\x9e\xb1\x65\x6e\x4f\xb2\x21\x6a\x8c\x4c\x0c\x14\xd0\x71\x93\x41\x89\x63\x40\x06\x94\x9a\x27\xaf\x44\x83\xa0\x0b\x92\x06\xfa\x8e\x22\xc9\x01\x3f\x63\x6e\x68\x42\x34\x9b\x2d\x3c\x4f\x34\xf7\x1c\xa1\xec\x93\x69\x4d\x34\x8a\xf2\xf2\xdf\xcc\x88\xce\x6a\xb0\xfd\x41\x65\x6d\xd5\xc6\x14\xfe\xd7\x82\xb8\xfb\x66\x87\x39\x91\x90\xa8\x80\x16\xfb\x78\x3e\x7c\xc4\xa5\x21\xd5\xf6\xd3\x8a\x9c\xcc\xb1\x58\xd7\xac\xcb\x9c\x8e\x4f\x7e\x8d\xea\xb8\xcc\x69\x61\xea\xd9\x1f\x9f\x0a\x0b\x35\x55\x2b\x4a\xfa\x81\xe2\xee\x5b\xfa\xa4\xc5\x89\x64\xde\x45\x16\x23\x7a\x90\x16\xd7\x48\x0b\xa7\x1f\x08\xc5\xc2\xc5\x0a\xa7\x58\x19\xfa\x75\x17\xd3\xcf\x70\xd9\xa1\xae\xd8\x6e\x2b\x95\x96\xd5\x4d\x1f\x0d\xb2\xcb\x6b\xc1\xd4\x8a\xfc\x1c\xec\x76\xe4\x74\x59\xd3\x11\xcf\x19\xfc\xd5\xd7\x72\x5c\xd6\xb4\xe9\x83\xdf\x99\xad\x64\x1e\x8e\xcb\x92\xa4\xe1\xbe\x31\x0f\xf6\x9b\x57\xbd\x55\x5c\x09\x94\x9a\x30\x69\xd3\x7a\xdc\x42\xc3\x88\x08\xf2\x8d\x47\xf8\xb0\x91\x54\x16\x7f\xb3\xa1\xac\xd5\x45\x83\x2a\xee\xee\x8c\xe1\xd2\xe5\xc9\xb3\x7f\xcc\x4c\x8f\xc1\xa5\x44\x43\x92\x8a\xcd\xee\x31\xc4\x8e\x3f\xc7\xa9\x3d\xa1\xd2\x48\x9c\x2c\x33\x7d\x74\x59\x13\xa4\xf3\x0c\x3a\x7d\x09\xee\x05\x3f\x57\xc8\xae\x57\x78\xf7\x4d\xfd\xd7\xeb\x79\xba\x08\x83\x73\xe3\xd9\xb0\x96\x61\x48\x42\xfa\xca\x90\x29\x3b\x20\xf2\xe0\x1e\x19\x27\xc2\xf1\xee\xea\x1d\x27\xd2\x71\x59\x9b\xde\xf9\xa5\x6e\x2b\x41\x74\x15\x05\x70\x11\x68\x6e\xbf\x30\xb0\xa5\xf5\xa6\x08\x30\xb2\xec\x62\x14\x60\xe1\xd2\x47\x71\xeb\x31\x42\xa9\x2c\x48\xbc\xf2\x6b\xb6\x01\xa1\xc3\x01\x2f\xf9\xb6\x89\xa3\xdf\xb7\x13\x25\xc1\x3e\xb5\xf6\x92\xe6\xe4\x15\x00\x58\xbe\xd5\xe7\x8f\xed\x8b\x61\x43\x9c\x76\x45\x4a\x95\x91\xa9\x4b\x92\xd2\xc6\xa1\xc8\x2a\x7d\x5d\x1e\x20\x49\xf3\x00\x06\x52\xac\x74\xb2\xf3\x64\xe1\x0f\x65\xf0\xc9\x4e\x17\x18\xa1\x8b\x51\x44\xc0\xe6\xb4\x12\xe3\xc2\xd8\xff\x3c\x64\x6e\x5d\x5c\xdc\x72\x8c\xaa\x6f\x29\x7c\xf8\x42\x77\x47\xd8\x1e\xdd\x60\x22\x0f\xa2\x28\xd8\xa7\x18\x25\xed\x3b\x79\x0b\xd9\xe7\xdb\x58\x48\x2c\x52\x9c\xdf\x86\x16\xd2\xbf\x73\x72\x7e\xf9\xb3\xb0\xd1\x88\x95\x83\xe2\x0e\x83\x1b\x11\xae\xd7\xff\x79\x43\x57\xea\x28\xb1\x2f\xb5\xa7\x54\x28\xb0\xa2\x33\x1b\x12\xd8\x48\xa8\x06\xe1\x62\xa1\xd8\xc2\xb4\xf1\xa1\x50\x3d\x57\xe4\x57\xde\x0f\xc1\x81\xc2\x8e\x73\x6c\xcc\x53\x44\x47\xdf\x00\x4b\x02\x65\xc0\x16\xfa\x3f\xc4\x9c\x55\xae\xa9\x11\x85\xf3\x92\x31\x33\x46\xe1\x1e\x81\x96\x6d\x44\xe6\x15\x3b\x80\x8e\x43\x1d\xf9\x12\x0a\xf3\x7f\x4f\xa5\xf5\xfd\x4e\x49\x2d\x48\xd1\xe2\x10\x7b\x39\xe0\xc8\xe0\x0f\x6a\x38\x4e\x36\x0d\x3e\x80\xe8\x93\xac\x50\x9a\x89\x39\xce\x34\x90\x4e\x40\x2a\x12\xd9\x82\x63\x0b\x08\x2a\x21\x8c\x04\x04\x8f\x07\x3f\x10\xb2\x6c\x44\x64\x53\x2a\x5d\x66\x65\x8d\xbb\x7b\x79\x36\xfc\x43\x53\x49\xd7\xcf\x87\x26\xb1\x1d\x0c\xbe\xf5\x82\x61\x55\x21\x1f\xf4\xd5\x1a\xf1\xab\x61\x7c\xa3\x1f\xb2\xe2\x42\xdf\x94\x2e\x65\x01\xe8\x15\xf0\xc3\x29\x52\xab\x94\x4a\xe1\xd1\xa1\x2e\xdc\x7a\x5c\xda\x38\xd6\x09\xf7\x77\x87\x4c\x2c\xb2\x6d\xcd\xe3\xca\xf4\x1a\x5c\x13\x1e\x5b\xba\x5b\xe3\x4f\xa0\x4a\xf3\xc5\x95\xdf\x9f\xef\xfb\x53\xcc\x5a\x96\x55\xae\x5e\x3b\x67\x06\x39\x44\xd0\x6d\xe7\x77\x5b\x70\xe4\x11\x0b\x37\x7a\xf4\x43\xc6\x1a\x68\x6e\xbc\x1e\x08\x51\x80\x16\x5b\xb2\xa3\x38\x05\x14\x06\xc1\x55\x08\x96\xc1\x04\x29\x58\x79\xad\x2f\xaf\x4e\x49\x95\x6a\xd4\x68\xf3\x76\x03\xba\x31\xc9\xde\x03\x95\xde\xf0\xee\x23\xe1\x57\xe2\x6a\x81\x07\x81\xd6\x03\xde\xb7\x9f\x44\xc1\x93\x5b\x22\xa7\x6e\x8f\xc8\x3f\xa6\x10\xce\xab\xda\x62\x85\x25\xb6\x99\x49\x75\x98\x3a\x64\xd1\x03\x7a\x1b\xe1\x88\x12\x68\x75\xd0\xcc\x1b\xc9\x0c\x3e\x62\x6d\x6e\xa2\xe3\x27\x5c\x71\x36\x2e\x36\xff\xcd\x57\xf7\x60\x24\x9b\xd6\x58\x66\x0d\x4f\xe0\xd9\x70\xc7\x43\x82\xbd\x87\xca\x94\x3c\x05\x02\x1a\xad\xd0\x3a\x56\x92\xf1\x29\x01\x79\x9d\xfa\xee\x6b\x2b\xb7\x2a\xed\x60\x40\xa2\x8f\xd3\x4b\x87\x57\xc4\x32\x32\x5b\x5e\xb2\x67\x4d\x28\xc1\xaa\xcd\x98\xca\x9d\xf1\x10\xa3\x34\xa7\x42\x33\xb3\x5b\x9d\xd7\xb6\x30\x3b\x5f\xfb\xc5\x40\x54\x71\x04\xdb\x2f\x2a\x7d\x07\xba\x4c\x2d\x61\x3a\x2e\xb3\x86\x53\x40\xc7\xc3\x76\xa3\xf6\x9a\x18\x12\x37\x63\x8c\x9b\x0d\xd3\x95\x54\x73\xc2\xc7\xd6\x09\x56\xab\x2e\xff\x60\xb5\xb3\xcb\x70\xa8\xbe\xfb\xe6\xe1\x14\xa5\x38\xd7\x38\xf1\x34\xfa\x6f\x7f\xde\x8f\xb3\x9f\x50\xc1\x81\xa8\xe9\x60\x4e\x90\xe5\x5a\x8c\x3d\x33\xc5\xb8\xd2\xb0\x9a\x04\x3c\x71\x20\x15\xc9\x20\x4d\xef\xcd\x9c\xbc\xa7\x02\xce\x90\xc7\x7a\x55\x6c\x64\xf7\xf7\xb7\x0e\xe6\x97\x01\x58\x71\xff\x30\x1a\x41\x1a\x39\x49\x0c\x9f\x01\xe3\x3e\x5d\xef\x15\xcc\xed\xe6\xb7\xca\x34\xbe\x14\x41\x9d\x21\x64\xa1\x79\x0f\x78\x63\xf2\x66\xe4\x67\xf4\xe2\xf3\x2a\x73\x55\xca\xa8\x1b\x0c\x80\xde\x44\x04\x9d\x56\xa5\xbc\xff\x8b\x78\xba\xa2\x7b\x76\x2e\x24\xef\x61\xa0\xfe\xc7\xda\xa1\xd4\xab\x26\x8b\x48\x44\x61\x4d\xb1\x5c\xa4\x5c\x7f\xdc\xbd\xc2\xc7\x76\x44\xf2\x40\x7b\xcd\x84\xc9\xfb\x71\x5e\xb7\xba\x7d\xeb\xbc\x93\x5f\x93\xf2\x73\x7f\xed\xdc\x93\xfa\xd7\xf9\x09\x6f\x3f\x8b\x61\xfb\x12\x3b\x0d\x08\xd9\xdc\x54\x52\x9e\xde\x8d\xe5\x9b\xea\x76\x5e\x2f\x22\xdc\x37\x16\x0d\xd2\x61\xdb\x4c\x94\x3d\x3b\x8d\xf6\x3f\xdf\xa1\x03\x9a\xd9\x61\xfa\x41\x17\x51\xf0\x54\xff\xee\xf9\x6f\xad\x36\x5c\x61\xb7\xee\x94\x4e\x85\x92\x06\x43\x2d\x9f\x49\x10\xf1\x4d\x9d\xf5\x4e\x0f\x15\x3c\xce\xfb\x22\x1f\x8c\x87\xaa\xb6\xf2\xf9\xf0\x7b\xfd\xe6\xe3\x48\x96\xa7\x25\x00\xea\x7d\xd8\xbd\xfe\xab\x3b\x2b\xfa\x6e\xb4\xe1\x05\xc1\x7b\xc3\xdf\x90\x65\xf4\x88\x18\xe5\x87\xed\x15\xc6\xb3\x27\xcb\x90\x5c\x52\x62\x0c\xb9\x23\x1f\xbd\x53\x0a\xd3\x35\x37\xa8\x81\xec\x5b\x47\xa8\x2f\xba\xfd\x92\x84\xce\xd8\x0d\xf2\x7c\x8f\xfe\x3d\x28\x6e\x78\xb7\xdc\xc6\x82\x7c\xdd\x5e\x58\x4d\x5a\x30\x26\xd2\xf5\x6b\xb9\x4e\x22\x38\xfd\xa0\xb9\xe8\x05\x53\x4d\x44\xd8\x1c\x72\x46\x5b\xdf\xea\x04\x0c\x5c\xb7\x88\x18\x7d\x11\xfc\x7c\xb0\x58\x98\xf4\xda\x02\x45\x70\xfc\xe8\x87\xe6\x3a\x1f\x5c\x16\xb6\x97\x26\x7c\x64\xa1\x7f\xb4\x7e\xaf\xb2\x4d\xb8\x0b\x95\x35\xb5\xf1\x68\x72\x75\x6c\x3b\xdc\x12\x87\xc3\x72\x46\x1e\xbe\xaf\x6d\x4c\xc8\x3c\x63\xff\x3e\x0d\x6a\x3c\xf5\xa5\x76\x8b\x34\xae\x8b\x28\xf1\x07\xab\xee\x5f\x61\xea\x5a\x92\x06\x35\xe0\xa4\x39\xd4\xff\x0a\x46\xa6\x8a\x98\x89\xad\xff\xe5\xbd\x5f\xc4\xe3\xf2\x13\x04\x3f\xef\x49\x5b\xe1\xe5\x9e\xd2\xf0\x1b\xbd\xea\xa6\xf8\xd4\x7a\x6a\x28\xd6\xdb\x3b\x28\xb5\x5d\x97\x79\x73\xec\x31\xf1\x03\x8b\x61\x5c\x47\xbf\xb2\x97\x32\x9b\x5b\x9f\x43\xcb\x5b\x20\xba\xff\x12\xa2\xd9\x5c\x5d\xeb\x9e\xb7\x5f\xd4\x98\xe3\x0c\x76\x33\x3e\x9a\xaa\xe4\x1b\x66\x05\x75\xec\x56\x22\x47\xd3\x7c\xeb\x11\xad\xfd\x46\xb2\x38\x8a\x12\x0d\x5a\xea\x1a\xe6\xb6\x34\x66\x82\xab\x63\x6b\x72\x97\x58\x02\x18\x17\xf0\xfa\x83\x31\x6e\xa5\x6a\x43\xde\x60\x23\x9b\xb3\xa2\x10\x3a\xb6\x9d\x66\x70\xb6\x7a\xf0\x3d\x67\x3f\xba\x5c\x01\xe6\xb5\x5e\x4e\xa6\xa4\x13\x7c\x1f\xff\x9a\x99\x27\x54\xba\x79\x0d\xbf\xa4\x16\xc8\x80\xd2\x47\xf0\xe0\x6f\x5d\x9a\x72\x60\x6c\xd7\xd4\x87\x4b\xbd\xb6\x43\x1d\xe9\xe6\x50\x64\xb4\x44\xee\x3d\xa1\xb9\x39\xf5\xa9\xf1\x17\x2f\x36\x11\xd9\xf5\x42\xb6\x59\x4e\xd2\xf6\xaf\x2c\xc8\xf3\xdb\x2f\x31\x2b\x90\xfe\x88\x36\xe2\x29\x2e\x82\x04\x6b\x46\xbc\x77\x7c\x1b\x1a\xc0\x89\xb6\x37\x35\x27\x92\x85\xa9\x27\xc6\x33\xf2\xbf\x7a\xb7\x92\x86\xf5\x2c\xb3\x4f\x53\x55\x5f\x11\x05\x14\xcd\x9a\x0e\x8a\xec\x50\x90\x93\x91\x24\xbd\xa2\x83\xb8\xce\x8b\xe7\x27\x16\x3a\x66\xbb\xa8\xc1\x58\xf5\xbd\xec\x4b\x08\x3d\xef\xd6\x38\x0c\xdd\x1e\xd4\xb1\x3a\xba\xe2\x93\x2b\x62\x0f\x6b\xe2\x83\xe6\x7b\xa6\x5d\x16\xff\x50\x40\xa4\x2d\x58\x1f\x2f\xe1\x25\xe0\x4a\x59\x7d\xb3\x90\xbe\x63\x84\x31\xe0\xd3\xb4\x9c\xcc\xb9\xc2\x0d\x48\x7f\x14\x58\x9c\xd3\x97\x3c\xee\x19\xf1\x0f\x84\x5b\x92\xf4\x2a\xd6\x85\x90\x95\x78\x12\x49\x6e\x73\x73\xf8\x97\x3f\x21\xb1\x34\x83\x51\xa9\xe7\xe3\xcd\x7c\x78\x96\x02\x19\x90\x69\x39\x89\x2e\x9c\xfa\x99\x52\xf4\x62\x3c\x4b\x70\x3e\x43\x3e\xf8\x5e\xe1\x15\x8f\x29\x17\xa8\xcb\x76\x83\xf7\x87\x9d\x24\xde\xdc\xea\xbd\x2e\x2c\x93\x2d\x03\x7f\xea\x32\x6d\x8b\xc2\xd7\x78\xdb\x77\x1b\x01\x5c\x1b\x8d\x1a\x4f\x6d\xe4\xe2\xb6\x73\x3e\x0f\xe8\x25\x92\x22\x55\xb4\x0d\x10\xd9\xf1\x82\x60\xfb\x1d\x6d\x08\xc4\x74\x20\xa4\xa7\x4c\x7c\x7e\x6a\x28\x49\xc3\x08\x5e\x8d\x28\x8a\x76\x88\xb7\x40\xdf\x42\x9c\x6a\x3b\xa7\x22\x8b\x77\xae\x40\x9a\xdf\xae\x3a\xfa\x44\x16\xeb\xe3\xbf\xb5\xff\x9e\xd2\xc9\x20\xf1\x17\xfa\x2f\x95\xa6\xf9\x9a\x69\xb5\xb4\x75\x9b\xde\xbd\xd6\x0b\x8a\xf5\x8e\x5e\x3a\x1c\x29\xc4\xef\x0d\xbd\x1a\xf2\x95\xbe\x33\x3c\x1f\x56\xbc\x3e\xb1\x5c\xf6\x3c\x5e\xa0\x48\xcf\x79\x15\x1a\xcd\x85\xce\xb0\xa8\x37\x84\x88\x15\x73\x41\xcc\xbc\xb7\xd6\x67\x92\xa5\x28\x38\xa7\x0e\x07\x68\x14\xab\x1e\xfc\x56\xe9\x32\x18\xb3\xf1\x2f\x27\x44\xd2\x05\xcf\x0b\xa3\x90\xa4\xf9\xef\xdb\x6f\x2e\xbd\x96\x16\x47\x25\xc1\x76\x9b\xdf\xef\x3e\x61\xe2\xc7\xb3\x58\x6e\x4a\x19\x49\xa5\x08\x7e\x66\xfd\xf2\xe6\xc7\x9a\x1d\x7c\x71\xa1\xdb\x83\x53\x44\x36\x43\x6f\x09\x11\x06\x78\x46\x31\x20\x36\xae\x3f\x29\x04\x5d\x9e\x50\x56\xa2\xed\x2e\x37\xae\x4a\x29\x90\x33\xe7\x0c\x9d\x33\xdb\x40\x7d\x98\x5d\x47\x0f\xdb\x55\xcd\x8b\x80\xae\x3f\x86\x0e\x9f\xc8\x77\xaa\x3d\x6f\x6f\x4e\x14\x60\x75\x71\xaf\x48\x7c\x61\x2e\x2b\xa6\xce\x4c\xf4\x0b\x65\x83\xc9\x2f\x86\xe9\x6d\xc9\x4b\x76\x98\x38\xb7\xa5\x3c\xd1\x39\xf0\x79\x1d\x53\x95\x26\x05\x2a\xf1\x86\x78\x3e\x1e\x50\x23\x0c\x86\xcc\xfc\x76\x2c\x8e\xec\x96\xf3\xd9\xbc\x93\x5f\xbd\x93\x09\xab\xac\xaa\x85\x02\x8a\xca\x9a\x3e\x60\xba\xfc\x81\xa4\x5f\xac\x53\xdf\x6b\x8b\xf2\x94\x2c\x9e\x3e\x51\x5c\x7f\x20\x0c\x25\x9a\x3a\x1c\xc7\xce\xfc\x2b\x76\x84\x38\x52\x34\x3b\x14\xb1\xba\xec\x94\xca\xa8\x82\xb4\xb7\xb7\x52\x48\xde\xe0\x5b\xad\x6a\x79\x89\x10\xed\x5b\xec\xfc\xd8\x6b\x43\xb6\x4c\x2b\x0d\x37\xb9\x9a\xe9\xdd\x71\x5d\x89\xfd\x8a\x28\x4d\x99\x14\x7b\x32\xba\x4d\xb4\x5e\x96\x19\x06\xb2\xd6\x9d\xd6\x86\xef\x68\x8f\xfd\xe2\xa5\x18\xce\x61\x2d\x90\xa9\xcd\x2b\xda\x7a\xa9\xd0\x1b\x41\xa0\xdc\x18\xa6\x03\x92\xb2\xdc\x62\x52\xa0\x6d\xaf\xfa\x1f\x7b\xe7\xbe\xf6\x43\x18\x78\x8f\xea\xdc\x76\x98\xc4\x86\x0c\x7e\xc6\x8d\x6e\x81\x08\x73\xca\x48\x60\x51\xdf\x5d\xb3\x8c\x22\xe9\x71\xb3\x18\xf0\x33\x9a\x12\xa4\xf8\xfb\x7b\xc4\xcd\xad\xbb\xa7\xcf\xde\x55\x6e\x4d\xf4\x71\x7b\xb0\x37\x00\xeb\x2e\x3f\x64\x0e\xdf\x0d\x18\x6e\xbb\xa3\x49\xc1\x24\xaa\xc1\x0e\x81\x11\x41\x1a\xc4\x4b\x04\xa4\x3f\xef\x07\x6b\xfb\x5e\x29\x80\xf2\xb2\x6d\xa4\x0d\xc4\xbe\xa9\x8f\x20\x11\x8d\x59\x4d\x38\x00\x1a\x08\xa9\x1d\x08\x81\x45\x28\xd2\x41\x60\x01\x88\xab\x87\x9a\x1c\x3c\xb8\x0e\xa5\x46\x29\x50\x82\xf9\x39\x8b\x99\xdd\xbb\x86\xff\xc6\x40\x65\x4a\x71\x6e\x34\xae\xd1\xc5\x30\x49\x03\xa3\x91\xc7\x7e\xdd\x8a\x6f\xb7\xae\x5b\x0a\xaf\xf8\x11\x92\x27\x42\x47\x74\x1c\x06\x63\x32\xe0\x67\x36\xe1\x20\x48\x95\x96\x04\x72\x34\x08\xe0\x4d\xd5\x2b\x20\x48\x14\xfa\x54\xba\x35\xb6\x12\xe7\x16\x92\x49\x9f\x86\xbf\x66\xce\xc1\x78\xaf\x64\x9b\x81\x5e\xec\x39\x4c\xb8\x14\x68\x39\x0c\xe7\x86\xa0\xf2\xe7\x2f\xa7\x6a\x8f\xa7\x76\x88\xe9\xb2\x89\xb0\xcc\xab\xd9\x42\x8c\x97\xc8\xbc\xdc\xfa\x4b\xf6\x62\xd0\xa2\xba\x33\xbb\xfe\xab\xb5\x70\xbf\x9e\xad\x29\xbb\xac\x18\x8b\x97\x79\xa3\x7b\x4b\xba\xb4\x24\xe8\x2d\x2c\x84\x3f\x61\xe5\x3a\x8d\x21\x09\xfd\x07\xca\xf9\xe2\xd9\x33\x02\x28\x94\xd9\x60\xee\x95\x15\xa4\x5e\xf8\x57\xd7\x3b\xb6\xf4\x3d\x36\x02\xa1\x01\xad\x51\x95\x76\x3e\x35\xee\xde\x35\xeb\xf1\xc3\x5f\x93\x00\xea\xb5\x41\x6b\xc6\xdd\x94\x61\x4e\xff\xfa\x25\x34\x7e\xf8\x93\x48\x00\x64\x87\x9b\x4f\x0c\x48\x88\x07\xe1\x44\xb3\x1d\xff\x45\xdf\xd3\x03\xb9\x6c\x99\x92\x48\xf2\xe9\x41\xa8\x94\xa4\x51\x40\xa0\x21\x55\xf3\x1d\x88\xc6\xc7\x19\xe8\x7b\xfd\xef\x92\xc6\x07\xee\xf7\x60\x0a\x60\x23\x6e\x7c\xc5\x23\x79\xf9\xd3\x04\x02\x77\x7d\xd8\x28\x17\x42\x36\x76\xca\xec\x9a\x9b\xfc\xf2\x48\xd0\x3b\x99\x9e\x62\xc9\x8f\x6c\x50\x6a\x16\xd7\x1d\x44\x4e\xe9\x17\xf5\x3d\x78\x01\x6a\x38\xe2\x4b\x0e\x89\x9f\x31\x4b\x18\x30\x66\xad\x13\x89\x75\x04\xf0\x7a\x30\x40\x9d\x3c\xdf\x2a\xd5\x88\xe6\x1d\xc8\xe9\xb1\x94\x65\xc5\x9f\x2c\xd7\xae\x04\xff\x71\xde\x7f\x07\x7b\x36\x99\x33\xef\x11\x0a\xe2\x91\x85\x3f\x79\xf8\x33\xed\x08\xb4\xd0\x68\xa1\x14\xab\x8c\x06\xdc\x2c\xa6\xe4\xcc\x46\xfc\x4f\xa2\x02\xe3\xab\xec\x3b\xb7\xa0\xb3\x85\xf2\xd2\x92\x5e\x30\x69\x82\x20\x09\x9b\x45\xe3\x8a\x2b\xf3\x97\xcc\xf6\x49\x59\xd0\x8e\x41\x56\xed\xb4\xfd\xfd\xe5\xec\x88\xc3\x22\xe2\x18\xc9\x8d\x7d\x2b\xcc\x91\x12\xd9\x5e\xb5\x07\xf1\xe5\x39\x60\x62\xc9\x89\x68\x80\x74\x97\x7d\x13\xc8\x3f\x36\xae\xc5\x65\x48\x92\xba\x1a\xf0\x8a\x4c\x53\x6f\x61\x19\x5b\xbc\xcf\x4c\x92\x3e\x98\x1a\x15\x35\x47\x35\x25\x50\x69\xed\xd4\x67\x50\x32\x51\x94\x30\xd4\x77\x1c\xc8\x1c\x25\x95\xa7\x61\x05\xc1\x46\x7c\x4a\xd5\x95\x5e\x6c\xe6\x58\x6c\xe6\xac\x02\x89\x92\x03\xad\x6f\x9f\x94\x37\xff\xd3\x68\x9a\x9e\x2e\x74\x0c\xfb\x85\x88\x26\x1c\x28\xbc\x78\xcd\x4d\xb2\x03\xea\x4d\xbd\xa9\xf4\x72\x66\xd1\xc3\xef\xf4\x5c\xd6\x9c\xaf\x8e\x51\x04\x59\x00\x1d\x38\xcf\x87\x8c\xbf\xe7\x45\xc3\xf2\x1c\x4c\xfe\xdf\x70\xb9\xba\x56\x63\x0a\xf5\x97\x69\xa5\x1c\x31\x15\xd7\xf5\xdc\xd4\x25\xbf\xe6\xfa\x7d\x1e\x7a\x7f\x13\x37\xd0\xc7\x17\x4a\xc4\x66\x87\x47\xf5\xed\x17\xdb\x8b\x24\xed\xc5\xce\xe7\x62\x6a\x9d\x0a\x7e\xa5\xcc\xca\x8e\x5c\x9a\x52\x08\x67\x08\x89\x13\x80\xbd\xd8\x3a\xd0\xc8\x90\x9c\x18\x22\x34\x92\xef\x27\x39\x50\x1a\xd6\x6c\x78\xac\xe9\xb8\xf1\x56\x71\x3f\x43\xc3\x08\x76\xca\xdb\x70\x61\x79\x70\x61\x7c\xb9\xc4\x63\xc0\x62\xfd\x7b\xb5\x79\x68\x1e\x74\x58\xae\xde\xc9\x9f\x0f\x1b\x36\xba\xa6\x63\x4f\x86\x2f\x50\x95\x3b\x52\x45\x28\x4d\x76\x30\xf1\x9a\x9b\xc3\xe4\xcf\x48\x5d\x13\xf5\xe1\x14\x98\x22\xcd\x1c\xeb\x8f\xd7\xe2\xaa\x2b\xec\xcc\x25\x9b\x99\x24\x44\x83\x78\x19\x7d\x1e\x04\xe1\x9d\xd1\xd5\xf4\xe1\xe0\x93\x72\xe2\xfb\x9f\x76\xf1\x51\xdf\x1a\xfd\xc9\x01\x78\x71\x05\xab\xf5\xe5\x28\x52\xd4\x05\x6f\x43\xc6\x6a\x7d\x58\x73\x53\x95\xce\x7f\xf2\xa7\x97\x96\x44\x0b\x82\x7f\x0a\x95\xc0\xb3\x28\xdd\x3c\xcc\xed\x9d\x68\x86\x94\xd4\x17\x36\x27\x94\xbc\x82\xf9\xee\x36\x27\x60\xb9\x79\x13\x1b\xe1\x0d\xaf\xa2\x54\xda\xe3\xb3\x9c\xc0\xd8\x8e\xf4\xce\xab\x7a\x65\x07\x42\x9f\x28\x48\x1e\x60\x80\xc0\x07\x59\x9e\x3e\xfc\xd2\x95\xb2\xc1\x04\x50\x29\x03\xd4\x1f\x6e\x90\xe4\x5a\x93\xab\x43\xf5\x42\xb8\xd0\x3c\xfa\x77\x1e\x35\x84\x49\x46\x72\x66\x03\x1e\xfe\x80\x49\xd2\x7a\xbc\x4c\x58\x67\xb1\x09\x7c\xcf\x1d\x20\xf6\xcf\x60\x0a\x82\x20\x63\x61\xe0\x9a\x30\x5e\x06\x65\xae\xfb\x39\x50\xd8\x72\x24\x2b\x04\xa2\xdb\x7f\x00\xa1\x76\xeb\x7d\xa0\xc4\x4e\x4a\x08\xc7\x7c\x12\x28\xfc\xd8\x7d\xb8\x89\x22\x33\xa0\x43\x76\xfd\x1f\xd3\x0b\xb3\x2f\xb0\xf8\xef\x4b\x5e\x20\xb7\x6e\x20\x73\x86\x9f\x1f\xb0\x37\x5e\x36\x8e\x28\xc4\x72\xdd\x72\x4e\xb3\xd3\xc3\x41\x16\x0b\x51\x46\xe7\x15\x6d\x3b\x62\x9c\xf8\x9e\x19\x5f\xf2\xf8\x17\x40\x1c\xe7\xb5\x91\x2b\x61\x36\x3d\x20\xcd\xa0\x04\xa0\x56\x69\xa9\x9d\xca\x93\x6a\x33\xa7\xbd\xb2\x5a\x71\xa3\xdd\x60\x37\x46\x0a\x05\x30\x2c\x0e\xf3\x9e\x4f\xd9\xbe\x22\x6f\x80\x6c\x7e\x94\x49\x5f\xb1\x92\xd2\xb7\x8d\x94\x7c\xb0\xc2\xff\xf2\x36\x2b\x21\xae\xf5\x98\xa5\x92\xd1\x00\x30\xc4\x30\xad\x7b\xbc\xdd\xe0\x9a\xfa\x52\xe8\xef\x6f\x1c\x65\x55\xd7\x0e\x4f\x52\x4c\xad\xd4\x6c\x4a\x97\x67\xb2\x68\xef\x48\xb7\xa1\x58\xc7\x9b\xc9\xdb\x58\x6e\xf8\x41\xe0\x3f\x0d\xfb\x17\x63\xae\x3c\x2d\x64\x39\xeb\x22\x1f\x10\x4f\x5a\x54\x92\x8a\x17\x5c\xe7\xa0\x40\x65\x1e\x51\x89\x2e\xb8\xb9\x40\xd7\x23\x93\x30\x08\xa2\xe4\x40\x35\xfe\x4b\x64\x29\x70\x75\x44\x1d\x5e\x19\x99\x31\x4f\xfd\x2e\x62\xc1\x47\x93\x4f\x33\x28\x04\x05\x8a\x90\x35\xbf\xab\x7a\x82\x43\x0a\xa1\x79\x2d\xb5\x16\xdb\xfe\xc6\x9f\x6a\x4d\x9e\xeb\xb3\xe7\xde\x4f\x69\xe8\xca\x61\xc5\x08\xdb\x14\x99\x67\xe3\xa6\x37\x32\x60\xf1\xc7\xbc\xda\xf4\x2d\xd4\xc4\x90\x71\x2c\xb2\x0d\xe7\xfe\x25\x97\x79\x11\xe4\x66\x35\x9a\xfd\x27\xda\x7f\xf4\x3d\x31\xa1\x70\x4f\x0b\x9a\x56\x68\x1d\xa1\x24\xa3\xd0\x08\xcb\x28\xac\x2b\xf1\xf7\xdd\x87\x9a\xab\x85\x99\x81\x80\xf9\xab\x6f\x3a\xcb\x3a\xfd\x1e\x74\xa5\xd5\x61\xb1\x75\xb7\x9c\x6c\x7a\x2c\xb2\x67\x29\xb2\x27\xc4\xa6\xd0\x57\x1e\x48\xce\x97\xec\xe8\x06\x03\x24\x78\x7e\x8b\x8f\xfd\x18\x59\x09\x35\xaf\x77\x30\x80\x69\x2c\xef\x19\xbe\x50\x18\x94\x3f\x85\xe6\xc3\x99\x8a\xd1\x85\x10\xeb\xf8\xc0\xfd\xc6\x72\xef\xc2\xd7\x3f\xfb\xb5\xfb\xdd\x39\xfd\x90\x02\x22\x81\xb6\x3c\x68\x56\xd3\x9f\x3d\x2a\x61\xc0\x66\xd7\x2c\x0a\x42\xef\x89\xc1\x80\x27\x91\xd6\x2b\x3a\x1e\x45\x27\xbe\x0d\x2d\xcc\xcd\xf0\x61\xc8\x7b\xa8\x69\x0f\x42\xbb\xab\x8f\xec\xbe\xf6\x23\x12\x73\x22\xd2\x7a\x16\x58\x38\x84\x1e\xdd\x4b\xb9\xbe\xe4\x9f\x32\x1b\xb1\xf3\xda\xfd\x46\x41\x40\x0f\x25\x64\x45\x91\x1d\x71\x06\x27\x02\x48\x21\xd1\xca\x8a\xca\x94\x0a\x00\x94\x6d\xe5\x9c\xb8\xa3\xc7\x17\xd3\x95\x18\x79\x33\x39\xa6\xb6\xff\x18\xcd\x7f\xaa\x3f\x1d\xf1\x5b\x79\x59\xd2\xf0\xc4\x4a\xe9\xc4\x2a\x69\xc0\x7b\x3a\x0f\xab\xce\x5f\x54\x4f\xa9\xee\x84\x3e\xbf\x94\x2c\x5e\x78\xc5\x44\xb6\x8e\x1f\x3c\x45\xd8\x9a\x51\xfc\xca\x43\x4f\x1e\x88\xa4\xb5\x4f\x30\xb1\x38\xbc\xb9\xe0\xb7\xbd\xfd\x57\x67\xc8\xda\xa8\xac\x05\x00\x40\xd5\x52\x39\x59\xf6\x7e\x1b\x83\xad\xcc\x09\xa8\x9e\x52\xe6\x38\x1b\xcb\x2d\x07\x2e\xb3\xfa\xda\x65\x1e\xe2\xe0\x77\xdf\xd4\xf6\xc9\xcf\x77\x66\x8e\x64\x4c\xc6\x5a\x5c\x2e\x88\xd6\x1f\x68\xaf\x15\xe9\x0f\xcd\x46\xde\xb6\x79\xd4\x36\x89\xf6\xcf\x23\x76\xb1\x5f\x29\x3b\xa6\x2b\xdd\x03\xf2\x49\x1f\xc7\xbc\x9e\xc4\x16\x0c\xe8\x12\xe3\xb0\x82\xa2\x76\xdb\x4a\x9e\x7a\xa8\x08\xbe\xd0\xdd\x7b\x62\xe9\x3e\x35\xab\x0c\xc3\xd4\x8c\x30\x08\x76\x60\x4f\xa8\x50\x60\x2a\x37\xaf\xee\xf8\x79\x41\x10\x04\x29\x5c\x5e\xbd\x07\x6b\x8c\x7d\x00\x39\xaa\xbc\xeb\xba\xae\xba\x30\x2f\xac\x0c\x4a\x0c\xfc\x3c\xab\x6a\x6e\x2f\xc2\xdc\xd0\x2f\xf8\x2f\x76\x87\xdb\x32\x79\xc0\x1c\x42\x4c\x3e\xe2\xdf\xb1\x8d\xca\x9a\x9e\x5b\x8d\xc9\xdc\x69\xd4\xbe\xc4\xde\x95\x97\xec\xd0\xbf\x33\x2b\xe4\xd1\x63\x7e\x87\x31\x7e\x36\x43\xce\xdb\x43\x01\x8e\xdc\x75\xc9\x57\xcf\xae\x70\xf0\x4c\xc6\xb3\xe4\x12\xb8\xe2\xa3\x7b\xc2\xa0\x70\xfe\x80\x08\xda\x83\xa1\x5a\x10\x69\xf0\x3b\xd5\x2d\x23\xdb\xad\xb0\x6b\xdc\x37\x7e\x09\x0d\xd2\xd7\x8b\xaf\x85\x39\xb9\xe1\x83\x43\x84\x29\xf1\x14\x50\x99\x2f\xdd\x79\xcb\x9a\x8c\xd0\x4f\xe1\xe2\x88\x5b\x54\xbb\xe7\x05\x6c\x45\xf3\x7b\x52\x6c\x01\xd1\x78\xf9\x4b\xb1\x34\x94\x2f\x55\xff\xcb\xbf\x6c\x1d\x8b\xb5\x30\x86\xf0\xdb\x2f\xa5\xce\xd8\xee\x00\xd0\x50\x2f\x6e\x46\x9c\x9b\x12\x96\x9e\x46\x03\xa3\x05\x5a\x30\x47\xe6\x42\x87\x52\xf9\x17\x01\xfb\xc1\xcf\x16\x34\x21\x50\xdc\xe9\x65\x63\x3f\x31\xfb\x81\xfc\xbb\xff\xcb\xc6\x62\x03\x2e\x3c\x9f\x65\xbd\x9e\x8a\xea\xa9\x6b\xa0\xe9\x26\x08\xda\xeb\x07\x1c\x34\x6b\x67\xe6\x38\xc3\xb9\x2c\x98\xa6\xcc\xd8\x76\x18\x61\x76\x1e\xd5\xed\x67\x20\xa6\x0a\x71\xc2\xc6\xe2\x42\x38\x36\x61\x67\x92\x34\xce\x6f\x21\xd2\xd1\x59\x62\xea\xd0\x5c\x88\x19\x1c\x12\x3c\xef\xa4\x69\xc3\x9f\x2b\xbd\xa5\x6b\x2c\xb1\xdd\xf0\xaa\x5c\x90\x94\xa9\x54\x1a\x9b\x7d\x66\x9c\xfa\x99\x3d\x8e\xed\x4c\xc8\x0c\x1c\xd4\x3b\xbc\xb3\x6c\x4d\xf3\xc1\xd2\x19\x37\xc5\x31\xff\xf8\x5e\x64\x7b\x47\xb5\x4d\xe4\x10\x9b\x86\x79\xc3\xa0\x5f\x64\xce\x64\xec\xa0\x76\x65\xd0\x22\x81\x7a\x66\x58\x5a\xe6\xa0\x9c\x1f\x4b\x7d\x78\xca\x3d\x19\x1d\xc1\x11\x83\x61\x29\x1c\x94\xcf\x1e\xec\x92\x4f\xaf\xc7\xfd\xc0\x3a\xfe\xf5\x2b\xb1\x7f\x76\xca\xeb\xc5\x43\x97\x82\x03\xc1\x96\x9b\xe8\xb0\xe3\x07\xba\x4b\x6c\xb1\xca\xd5\x83\x3e\x79\xd4\xea\x96\x70\x16\xce\xd6\xf4\x2c\x78\x5d\x2d\x8f\x66\x4d\x1d\xf6\x0b\x34\x4b\x38\xdf\x41\xb8\x56\x51\x2b\x6f\xcb\xd0\x92\x85\x77\x83\xc0\x0f\xb4\x87\xa4\x6f\xc2\x12\x7d\xe5\xf7\xe7\x77\xb6\x01\xa1\xd9\xb6\x8b\x67\xa4\xb0\x8a\x28\x80\x0d\x2d\x5b\x56\xb5\x9d\x69\x93\xf4\x44\x98\xbf\x81\x2d\xd8\x12\x9f\xe5\xf3\xd5\x95\xbd\x78\x0f\xfd\x9f\x0c\x1b\x9e\x7f\xed\xb2\x9b\x57\x3a\x13\x52\x9c\xd6\xde\xba\xf1\xb1\xe2\x9b\xce\xaa\xda\xca\xd7\xe7\xa7\xe5\x74\xc2\xd6\xb9\x6f\xbf\x1d\xcd\x28\x65\x05\xea\x08\x8b\x49\xbb\xfe\x1b\x8f\xe4\xa6\x1e\x51\x46\x87\xe4\x60\x01\x12\x81\x0c\xa3\xfd\x4e\x95\xb7\xb1\x3f\xf6\xf0\xc4\x84\xd2\x3f\xe1\xf1\x03\xd6\xae\x7f\x8a\xe6\xf6\xeb\xba\xaa\x1d\x93\xaa\xb6\xf0\xb7\x66\xda\x78\xac\xe9\xd2\x08\x87\xb3\x5e\xe5\x1d\x90\x2d\x8f\x3e\xb3\x03\xcb\x7d\x06\xad\x92\x57\xf6\xf1\x5c\xc6\x31\x7d\xcc\x6f\x92\xc3\xb9\xe6\xe3\xed\xe0\xdc\xff\xdb\x1f\x00\x93\xc3\xb9\x96\x87\x38\x79\xec\xc0\x1f\xe0\x06\x93\xa2\x98\xf4\xcc\x4d\xa9\x40\xf0\xf3\x03\xcb\xce\x0d\x47\x09\x29\xc0\x55\x04\x92\x89\x66\x98\x1a\x34\xde\xd1\x55\xd6\xe6\xb8\x2d\xd9\x60\x8a\x34\xbf\x9a\xe8\x58\x5f\xb0\x1d\x3e\xb1\x03\xb8\xa8\xce\xe9\x4b\xe0\x13\xcd\x0e\xcd\x85\x9f\xcc\x55\xda\x79\x55\x57\xbd\x91\x43\x4f\x33\x90\x3d\x4e\xdd\x79\xb3\xfe\x35\x0f\x78\xc0\xae\x67\x65\xaa\xb2\xb8\x7a\x5b\x31\xd3\x9d\x51\x1e\x4b\xda\x6c\x24\xcc\xad\xe5\x1f\x7e\xa9\x96\xa7\x6e\xf9\x13\xa5\x4a\xcf\xf0\x15\x25\x56\xce\x6d\x54\xda\xd8\x94\xbc\xb9\x56\x71\x0e\xca\x16\x43\xa4\x5b\x18\xc8\x38\x3e\x54\x03\x4e\x85\x8f\x4c\x59\x74\xa5\x38\x37\x31\xe0\x3e\x45\x60\xd6\x5f\xf7\xe0\x2d\xe8\xd5\x3f\x91\x87\x89\x7f\x35\xbc\x95\xad\x5d\x7f\x54\x7e\x02\x6d\xb3\xb6\xff\xfb\xef\xfb\xe9\x48\xc0\x26\xe1\xdf\x00\x66\xec\xf4\x20\x50\xf4\x94\x6f\xc6\xcd\x79\x51\xac\x4f\xa6\x98\x89\x5b\xe7\xc2\x7d\x52\x3a\x37\x7d\x13\x3d\xa7\x62\x8f\xeb\xc4\xab\xc9\x05\x21\x7b\x81\x06\xb7\x60\x66\xad\x0b\x6a\x38\xd6\x77\x4a\x94\xa0\x9c\xf8\x0c\x6b\x71\xb1\x84\x46\xe9\x09\x7f\x15\x5f\xa6\xbf\x84\x81\xee\x13\xd1\x66\xb8\x53\xe9\xbd\x89\xcf\x2d\xef\x66\xe0\x4c\xfd\xf6\x87\x02\x2a\xa1\x59\xec\xaf\xce\xbb\x1a\xce\x39\x50\x83\x68\xcb\xcb\xd1\xdf\xad\xeb\xa0\x76\xd3\xfa\xe8\x51\x97\xf2\xd2\xb2\x44\xad\xea\xba\xf0\x91\x5e\xf1\xeb\x81\x93\x66\xe3\xa4\x31\x24\x98\x92\xb4\x9b\x22\xd7\x08\x90\x60\xc3\x5d\x8c\x44\xc9\x9b\xeb\x02\x66\xb3\xc2\xaf\xe7\x3f\x1f\x3e\x4a\x88\x2c\xd0\x0e\x2f\xe5\x83\xbf\xb4\x3f\x3e\xda\x82\xf5\xd3\xba\x5f\xf8\x00\xa0\x4e\x1e\xe6\x27\x23\xf7\x60\x8f\xff\x04\x13\x81\x63\x98\x22\x4b\x69\x80\x7f\x38\xfb\x3d\x34\x5c\x2c\xd9\x4a\xec\x1b\xf3\x0e\xc1\x30\x24\x9c\x77\x72\x8c\x20\xf4\x8c\xd5\xf4\x5f\x2f\xf2\x2c\x61\x6e\xbb\xe5\x6d\xe4\x9d\x64\x0b\x3b\xfc\x40\x77\x2c\x24\xef\x40\x98\xc1\x25\xf3\xab\x7f\x9b\x66\xc0\x4f\xf9\x95\xea\x6f\xc1\x00\xb0\xbd\x91\xf0\x8b\x17\x81\xcb\x0d\x69\x61\x86\x24\x0c\x1e\xdf\xe6\x07\x82\x24\x81\xea\x68\x1a\x8e\x91\xeb\xbd\x5e\x0d\x76\x39\x80\xf9\x4e\x76\x20\xd3\x97\xe3\x37\x53\x0c\x3d\xf7\x81\xf0\xc6\xb8\x5b\x4c\x0e\x52\xf0\x4b\x16\xaf\xe9\xba\x32\x0b\xe5\xd7\x33\xfb\xd1\x14\x56\x20\x02\xf9\x14\x27\x72\x87\x0f\xd4\x92\x58\x4d\x5b\x10\xd1\x41\xc1\x96\x20\xb5\xac\x46\x1b\xfc\xfe\x6c\x2a\xb3\x5b\x49\x7d\xf7\xf5\x8c\x30\x33\xff\x8c\x91\x76\x6e\x20\xff\x98\xd1\x9c\x57\xa5\xfd\xf3\xca\xb6\x2e\x61\x27\x9a\xff\x31\xe5\x42\xfa\x83\xe4\x50\xef\xff\xb1\x74\xd6\x5a\xd3\x32\x4b\x14\xbe\x20\x02\xdc\x42\x9c\xc1\xdd\x32\xdc\xdd\xb9\xfa\xb3\xde\xef\x3f\x93\x4c\x32\xb0\x58\x3d\x5d\xb5\x9f\xdd\x54\x57\x5b\xef\x1b\x73\x75\xc9\x8f\xb4\x73\xcd\x0c\x1c\xd9\xd0\xf1\x4b\x0d\xc6\xc3\xa6\xb0\x99\x5d\xae\xd9\x05\x90\x93\x04\x99\x5c\x0b\x39\x80\x8d\x94\xab\xd7\x74\x5c\x52\x82\x2e\x25\x4e\xf8\x03\xcd\xf7\xcb\x1b\x67\x46\x32\x6b\xb2\xf5\x73\xc4\xdb\x38\x14\x1d\x5f\x61\xf7\x50\x75\xf7\x2d\x84\x17\xce\x1b\x52\x2a\xb7\x30\x8e\x6d\x48\xa5\x0e\xe1\xf8\x41\xec\x17\x21\x9d\xa3\x25\xb0\x36\xaf\xf1\x82\x39\x4e\x66\xaa\x0c\x04\xa3\x62\x23\xd3\x24\xce\xff\x75\x1f\x4e\x91\xec\x36\xf0\xfc\x9b\x3c\x2d\x33\x25\xaa\x82\x83\x56\x87\x21\xe6\x9c\xd9\x4d\x56\x9c\x08\x9b\xbe\x4b\x85\x5f\x80\xd1\xf9\xb0\x98\x9b\x3a\x6f\xfc\x5b\xaf\xda\x37\xe6\xa1\x67\x96\xed\xaa\x08\x6e\x4c\x48\x1b\xf1\x32\x29\xaf\xc9\x51\xfa\xed\x62\x30\x50\x34\xa7\x0f\x33\x56\x60\xea\x4c\x38\xce\xc5\xd8\xff\xd5\x2d\x3b\x24\x61\x88\x66\x07\x46\x9d\x16\xc8\xac\x8d\xbf\x0d\xef\x53\x5e\x32\x79\x9c\x17\x4c\xd2\x30\x42\xe5\xaa\x18\x07\x87\xba\x0c\x92\x29\x2c\x48\xc1\xc4\x1c\xb7\x2f\x03\x33\xff\xfb\xcd\xfe\xc4\xac\x71\x1c\xa4\x29\xf1\xec\x03\xbe\x54\xc7\xdf\xae\x70\x34\x71\x28\x53\x68\xd4\x30\xb7\x97\x1c\x48\x5b\x2f\x6a\x2a\x3d\xad\x72\x77\x6d\xf5\x60\x21\xcd\x05\xd2\xea\x0f\x8a\x4d\x95\x96\xce\x74\x0d\xcc\x88\x88\x30\xcc\x4a\x1b\x8f\xb2\xb7\x20\x8e\x58\x89\x75\x16\x1a\x47\x08\x6f\xaf\xee\xff\xdb\x57\x3d\xc8\x44\xf2\x20\xea\x13\xeb\x79\xfb\x16\x3f\x22\xe8\x67\xcf\xab\x50\x7c\xaf\x54\xa9\x8e\x45\x16\x45\x71\x3a\xf6\x02\xbe\x86\xf4\xbe\x6c\x47\xbd\x6b\xb1\x43\xb5\x05\x1f\x36\xa2\x40\xf6\xd8\xfb\xa7\xc7\x52\xdd\x72\xb7\x25\x83\x40\x65\x92\xbb\x69\x5b\xc4\x99\x23\x95\x09\x80\xf7\xec\x1b\x4f\x42\xd1\xe5\x35\xd9\xb8\xd9\xce\x2b\xa1\xb7\x4e\xe2\x9f\x21\x7f\xde\xe0\xcf\x60\x40\xcc\x8a\x8f\x49\xc4\x66\xd6\x4d\x8c\xb1\x78\x71\xf7\x29\x62\xaf\xa8\xe1\xeb\x50\x87\x15\x3a\x22\x9b\x0f\x1b\x9f\xad\x1d\x79\x16\x1d\x07\xfe\xe3\x65\xa3\x49\xa8\x1e\xab\xa9\xd8\xaa\x07\xc6\x77\x4b\x4f\x26\x4b\xf4\x30\x9d\xdb\x9c\x39\x3e\x58\xbf\x9f\x63\x66\x9b\x52\x5d\xf1\xae\x7f\xba\xe7\xcb\xfc\xac\x73\x77\x29\xbe\xe6\xed\x7f\xb3\xc6\xdd\xd7\x85\xaa\x19\x22\xe0\x8e\x66\x3c\x05\x73\xe4\x67\xa4\x0d\x41\x10\x84\x52\xec\x26\x55\x8e\x1a\x9f\xdc\x3d\x44\xc3\xe3\x1e\x0f\xd3\x54\xb5\x6b\xfe\x6c\x3b\x4c\x22\x39\xbd\x4b\xbc\xd8\x2a\x30\x8d\x29\xf3\xbb\xb9\x02\xd3\x40\xda\x70\xe6\x63\x54\xdd\x2a\x8f\x17\x06\x13\x0e\x13\x9a\xd8\xbf\x85\x7e\xc9\x16\x49\x6f\xd4\x30\xf5\x76\xeb\x57\xea\x16\x80\xd6\xf8\x31\xd3\x4d\x51\xa0\xf9\xf5\x99\xa7\xe8\xaf\x9b\xf8\x57\x00\x1b\x36\xc3\x06\xd4\xa8\x14\x51\x08\xef\xab\x64\xa6\x68\x76\x88\x02\x4f\xe6\x2c\x4e\xef\x77\x22\xcf\x80\xec\xfb\x05\xf7\xaf\x05\x07\x6b\xb4\xdf\x00\x3d\x16\x86\xd5\xc2\x3e\x5a\x3b\x3d\xec\x25\xcd\x36\xa7\x55\xb5\x18\x31\x95\x08\x5b\x3a\x02\xc2\x6f\x86\xd8\xef\xf0\xce\xb3\x35\xcd\x06\x54\x21\x91\xde\x43\x05\xa2\x13\x30\xb7\xdb\xaa\x01\xf4\x92\xa7\x56\x33\xc9\xca\xad\xeb\xba\x99\x8f\xee\xb4\xa3\x30\x46\xfe\x5b\x58\x6d\x6f\xb7\xf4\x4f\x7c\x47\x65\x4c\xe8\xb2\x4b\x04\x38\xfe\x08\x8b\x71\xde\xe8\xc3\x38\xa0\xb2\x70\xa0\x9a\x98\x7b\x5d\xd7\x74\xb7\xf2\x07\x30\xfd\x58\xa8\x39\xd6\xc1\xcf\x6c\x02\x62\x14\xca\xac\x76\x1f\x14\xaf\xc7\x6f\xa3\xba\xe8\x15\xce\x52\x05\xea\xa1\xc2\xf3\x27\x4b\x23\x33\x8c\xe3\xfe\xb4\xff\x4d\xe9\xf2\x8d\x63\xdc\x60\x37\x83\xcb\x3c\xd1\x1d\xfe\xc2\xc3\x16\x86\x85\xf3\xfa\xcc\x98\xbe\xe6\xdf\x71\x21\xaa\xd4\xcc\xc9\x98\x9c\xd9\x4c\x0a\x3f\x7b\xa9\xf4\x64\x64\x22\x1b\x94\xff\xf8\x6b\x8e\xd4\xd2\xea\x15\xe4\x85\x8e\x5f\x06\xbf\x12\x89\x4c\xd1\x86\x0e\x30\x6f\xdf\xa6\x21\x3a\x54\xce\xd7\x05\x72\x57\x64\xe7\x60\xd4\x1c\x05\x44\xbf\xae\xb1\x84\x50\xe0\xf4\x58\x72\x67\x0a\x2c\xd7\x2e\x6e\x38\x9c\xbf\x8d\x3b\xb7\x56\x7e\x18\x06\x41\x48\x92\x2e\xaf\x88\x7f\x23\x77\x37\xf1\x39\x65\xdb\x1d\xd3\x1b\xe7\x07\x02\xd7\x55\xed\x7a\xfb\x2a\x09\x76\xfb\x80\x7e\x3f\x4d\xcc\xb4\x1c\xd3\xaa\xee\x7c\xf7\xbe\x98\xdf\x8e\xf0\xb6\x9c\xe0\x30\x62\x27\x5d\xa6\x59\x96\xfb\x49\xc4\xb0\x02\xdd\xf3\xfc\xe3\x4e\xd3\xd5\xd7\xf5\xc7\xa9\x35\xd7\x38\xac\x6b\x5b\xbc\x2c\xd7\xd5\xc9\xe6\x24\x8c\xa3\x85\x13\x6c\xe5\xb6\x90\xe0\x46\x59\xf8\x37\x59\x66\xd0\x15\x60\x90\x18\x05\x1a\xc0\x41\x06\xad\x6a\xbb\xcc\x42\xcd\x32\xeb\x9e\x03\x45\xa5\xfa\x13\x80\xdc\x43\xe2\xfa\x9a\xb8\xde\xbd\x00\x65\x05\xcf\x73\x3f\x3e\x47\x7f\x88\xd1\xd5\x75\x24\x3d\x7b\xfa\x2a\x5d\x4b\x4f\xd1\xe9\x69\x15\x0b\xdd\xdc\xf8\xa6\x99\x57\xc3\x50\xdf\x0b\xa7\x92\xe1\x56\xb4\x76\xe1\x37\x31\xec\x6d\x16\xa5\xd5\xc9\xf6\x70\x89\x4d\x02\x81\xb5\x16\x02\x37\x6f\x44\x36\x01\x7a\x72\xa6\xc8\x9d\xf2\xf9\x3b\xdb\x11\x2c\xc7\xfd\x60\x0e\x3e\xb2\x40\x07\xf1\x46\x3e\xd6\xb3\x98\x12\xd8\x30\x8e\x9e\x00\x15\x8f\xd9\x81\xea\x26\x24\xfb\x54\x91\x7d\xc3\x86\xf3\x92\xbb\xe3\x0d\x8c\x75\xaa\xaa\xca\x94\x33\x8d\xec\xd4\x71\x5d\x6b\xac\xd2\x6d\xed\x60\x6c\xf6\x17\x66\x06\xf1\xe5\x05\xb1\xb8\xaa\xef\x72\xee\x16\x10\xb8\xea\xf5\xb8\xc4\x73\x13\x8f\x81\x02\x65\x79\x90\x22\xee\x6d\x0a\x94\x7a\xce\xef\xe5\x62\xdf\xf9\x31\x0f\xe7\x8e\x9b\xd1\x10\x07\x71\x8b\xc6\xae\xdc\x84\xc1\x90\x24\xc2\xb1\xc3\x20\x08\xd6\xf5\xce\xfc\xca\x97\x8a\x04\x4f\x78\xcc\xd7\xfd\x52\xb5\x9d\xe7\xf3\xb7\xeb\x31\x24\x1e\x3f\x4e\xef\xc7\x74\x6c\x66\x44\xc5\xe9\x12\x72\x02\x64\x7e\x8d\xae\x44\x14\xb2\x2e\x60\xd3\x7d\x73\xc8\xdb\x33\xfa\xec\x92\x1e\xb8\xa9\xcf\x35\xe5\x0e\x61\xd4\xd3\xbf\x7d\xf1\x29\x2b\x13\xdd\xc3\x3c\x64\x20\x0b\xa5\xc1\xbd\x0e\x81\xd2\x12\x5a\xa5\x4d\xa4\xf5\x2c\x28\xec\xaa\x95\xbd\x0e\x89\x12\x6d\x6d\xd4\xae\x35\xc6\xf4\x92\x19\x6b\xe4\x0b\xff\x1d\xcb\xf6\x52\x95\x85\xa6\x85\x5d\x77\x43\xb5\x41\x04\xb4\xdf\x07\x3c\x48\x4e\x9b\x6c\xbf\xd5\xac\x67\x83\xcf\x90\x64\xd8\x47\xbf\xb4\x64\x0e\x5a\x54\x5f\xda\x66\x6c\x7a\xa9\x4b\xe5\x81\x1b\xb0\xb5\xc2\xe2\xee\x5d\xcb\x51\xf6\x7d\xd8\x92\xb5\x8d\x8e\x34\xb1\x88\xfb\xa1\xc4\x63\xb1\xb6\x53\x5f\x36\x68\xc3\x97\x31\x7d\x7f\x8e\xbb\xae\xc3\x56\x7f\xf3\x81\x93\xb2\x25\x33\xe7\xd5\xec\xc6\x2e\xb9\xf4\x2e\x4e\xd3\x71\x58\x51\xf2\x80\x14\xf1\xaa\x1b\x1d\xb7\x16\x84\xfc\x7d\xb0\x21\x74\x0e\xc8\x49\x37\xea\x1e\xa4\xb8\xc2\xd9\x61\x4a\x99\x32\xb8\x93\xff\x2b\x65\x27\x10\x8b\x71\x2d\xfb\x45\x75\xe1\xb7\xb9\x0e\xc6\x66\x7e\x66\x84\xed\x01\x40\xb3\x54\x0a\x56\x13\x0a\xa2\x13\x2c\xf4\xfb\x7a\xae\xbe\x95\x1d\xab\xa3\x02\x60\xd7\x30\xf8\xc9\x41\x04\x0d\x5a\xe4\x4f\x14\x1b\x3f\x94\xbb\x81\x92\x54\xc4\x54\x7a\xa2\xe0\xf5\xce\xf8\xdc\xa8\x48\x3a\x16\x97\x4d\x16\x5c\xd9\xbd\x22\xa1\x80\xb0\x88\xcf\x9a\x3e\x4a\x9e\x3a\x44\x56\x6b\x87\xf8\x6d\x7b\xdc\xe5\xe0\x74\xde\x58\xda\xaa\x8d\x3b\x43\x95\x25\x8f\x1e\x5a\xda\xf4\x58\xca\x6a\x56\xa7\x5e\x86\x6e\x42\xe7\x50\x9b\xfa\x1e\xbc\xbb\x2a\x7f\xfc\x02\x43\x72\x3f\x86\x88\xce\x47\x28\x46\xef\x75\x4c\x75\xbf\x47\x77\x85\xd5\x81\x8e\xbd\x50\x32\x5c\xc0\x6f\x3d\x10\x1d\x28\x97\x3f\x9b\x61\x5a\xbd\xd3\xbf\xdf\x6b\xfc\x32\x9e\xa6\x75\xdf\xd6\xa4\x73\x1c\x04\x23\x63\x61\x45\x1c\x92\x32\x12\x1e\xfa\x1e\x54\x21\xd4\x82\x33\x1d\x93\xd1\xd1\x2a\x8b\x3a\x73\x4e\xa7\x65\x17\x32\x97\x49\x7b\xf3\x5e\x31\x85\x1e\x9b\xed\xb3\xfa\x00\xf0\xd2\x6b\xee\x61\xd3\x86\x47\xab\x16\x6b\xe3\x51\x39\xed\xa8\x69\x9c\x7d\xea\x1a\x2a\x6a\x7d\x77\x76\x52\x2e\xbb\x77\x8d\x3b\xd1\xea\x14\xb8\xf7\x0e\xd1\xa2\xc7\x57\xdb\xa4\x52\xca\xd9\x60\x82\x2e\x97\xd3\x7f\x8c\x97\x39\x24\x34\xda\xc6\xc9\x5b\x6a\x5b\xfb\xf4\x4b\x33\x51\xaf\xfe\x89\x73\x3a\x44\xc9\x89\x52\xf2\x5c\x45\x64\xcd\x41\x85\xec\xd0\xc7\xf8\xe5\x6d\x58\x56\xdf\xac\x87\x63\x9e\xee\x6a\x66\xc0\xa2\x35\x3d\xbf\xdd\x17\x44\xf6\x0e\x2b\x3d\xd5\x6c\x96\xe1\x98\x01\x3b\x45\xfe\x77\x06\x82\x15\x21\x6a\x92\xc3\xfe\xbe\xa5\x88\x32\x34\x69\x35\x60\xc0\x88\xfd\xbe\xc2\xaa\xef\xbd\x0e\xc2\x20\x08\x0e\x54\x63\xd8\xcd\x27\xc7\x63\x24\x4b\x7b\x7a\x39\xbf\xca\x4b\xcb\xe3\x0f\xc6\x64\x34\x79\xf1\xe5\x1c\xf5\x07\x8b\x19\x1c\x85\xfd\x15\x80\xac\x83\x69\x23\xcf\x4a\x77\xef\x9b\xba\xae\xed\xc8\xb1\x35\x8d\x16\x42\xe0\xaf\x65\xd4\x60\x94\x5c\xf7\x19\x46\xb3\x22\xa6\xc6\xb2\xc3\xb5\x25\x85\xdf\xa6\xf2\x7c\x09\x05\x00\x15\x98\x97\x5a\x0c\xa5\xdd\xab\x77\x24\xfd\x02\x9d\xd7\xde\x4d\x03\x2e\x6a\xe9\xa1\xe4\x81\x0d\x23\xa4\x7e\xfc\x25\x2b\x18\x09\x13\x34\xb2\xb9\x0b\xd3\xa7\x0c\xc3\xd9\x42\x93\x67\x2e\xe1\xe6\xeb\x3a\xaf\x84\x8b\x0a\x75\x44\xb5\xc0\x7b\xcf\x2a\x52\x05\xf3\x9e\x01\xcc\x1d\xff\x1a\x5f\x7d\x13\x8f\xd0\xaa\x26\x2e\xc5\x39\x95\x14\xc8\x40\x49\xfa\xc5\x2b\x80\x2a\xa9\x50\x95\x3b\xa7\x35\x11\x46\xa1\xec\x72\xc2\xce\xdf\xb9\xfd\x5b\x07\x3e\xfa\xb7\xc6\x4c\x4e\x68\x74\xcf\x4f\x64\x3d\x08\x96\x54\x6d\x52\x2d\x8c\x12\x67\x80\x7e\x67\x7f\xde\xdc\xaf\xd3\x27\xdc\x99\x33\x49\x73\xd0\x82\x73\x62\x4c\x0b\xb7\x00\x3a\x34\x17\xef\x33\xc1\x28\x58\x86\x1a\x46\x22\x7d\xcf\xed\x20\xde\xd4\x31\x52\xa9\xf6\x57\xb5\x5d\x91\xac\x18\x55\x53\x63\x15\x18\x21\x8b\xef\xd7\x8c\xfe\xba\x2e\xab\x2b\x00\x8d\x77\xd3\x5a\x89\x96\x68\xb6\x0b\x1c\xe0\xbc\x67\x6a\xd0\x55\x20\x93\x8c\xc0\xd8\xb7\x0f\xc2\xa3\xd3\x27\x2d\x57\x0c\xd2\xd8\x6c\xc2\xfb\x1e\x9d\x88\x5c\x73\xad\xb2\xf1\x8f\xdb\x38\x50\x6c\x41\xba\xc3\x4b\x08\x37\xf9\x63\x2d\x3d\xd6\x8e\xc4\x10\x2d\xae\x5f\x80\xed\x41\x12\x06\x53\x82\x14\x75\x7d\xdd\x6c\xe9\x77\x33\xbd\xa5\xd2\x86\x10\xc6\xc8\x67\x4a\xef\xb6\xa1\xf7\x3d\x33\x02\x1f\x59\x38\xbb\x77\xa6\x7c\x3b\x06\x54\xe7\x17\x2f\x96\xe0\x9d\x53\xb5\x20\xeb\x41\x76\x38\x59\x9c\x53\x75\xc0\xf2\x84\xf5\xaa\x94\x19\xe3\x4b\x15\x60\x71\x7a\x3e\x64\xcc\x04\x75\xfe\x31\x5b\x8d\xd4\x11\x12\x22\xb7\x44\xcf\x3a\xed\xbd\x52\xa9\xf0\x7b\x99\x94\x01\x18\x45\x03\x37\x99\xdd\x9c\x12\x27\xd9\xad\x36\xc5\xa8\xb5\xf8\xd2\xe5\xc4\x1f\xa4\xd8\xc2\x06\x72\x65\x27\xba\x98\xec\x80\x66\x21\x55\x45\x9f\x12\x5c\xff\x7a\xf5\x58\x28\x4a\xb9\x1a\xcf\xf4\x6f\x61\xf6\x13\x92\x16\xc0\xe6\xbf\xb9\xc6\x31\x83\x6f\x31\x8c\xf3\x07\x05\x8e\xda\x2f\x7e\xc7\x43\xe0\x9a\x9a\xfb\x26\xbc\xf7\x61\x69\x6f\xbe\x64\x62\x02\x78\xbf\x3e\xba\x81\x09\x79\x93\x27\x8f\xc4\x15\x2e\x4f\xfb\x38\xbd\x36\x0a\x36\x18\x1a\xba\x01\x7c\x9d\x68\x21\x7e\x5a\xce\x57\x94\x5b\x03\xd3\x71\xd4\xd4\x71\x08\x97\x4c\xc2\xc0\xe0\x30\x8c\xb9\xba\x42\xa4\xbe\x3b\x9e\x5f\x91\xb7\xf4\xbb\x75\x02\x56\x74\x74\xf1\xa8\x02\x85\x90\xaf\xea\x7b\x79\x10\x6d\xf0\xf5\xac\x47\x9f\xb2\x83\x99\xde\xd9\xbb\xc8\x48\x1a\xc0\xa8\x9c\x9b\x26\xf3\x5c\x59\xf8\xa3\x57\x03\x66\x57\x50\x36\x68\x22\x0c\x17\x51\xfc\x13\xd9\x3a\x17\xf5\x6f\xae\xa7\x03\x2f\x13\xab\xcc\xb1\x88\xc1\x00\x30\xdb\x9d\xfc\x57\xad\xd1\xf6\x80\xd6\x84\xdf\x02\x2f\xd4\x11\x4c\x98\xdf\x9e\x49\xcd\xec\x6a\x1a\x47\x9c\xd7\xd6\xb7\x8e\xd9\xbb\xd7\x45\x01\x95\x15\x5c\x20\xd6\x96\xd4\xd0\xb9\x32\xe5\x32\x0c\x83\x07\x70\x10\x38\x11\xf3\x45\x60\x6a\xec\x85\x92\x14\x91\x0f\xdf\x85\x82\x59\x4c\x18\x3e\x79\x59\xbb\x89\x0e\x54\xd5\x6e\x6b\x5f\x4c\xa8\xf5\xda\x69\x87\xad\x5d\x91\xab\x90\x3f\x95\x32\x7b\x48\xe7\xab\x0b\x26\x31\xf0\x66\xae\x07\xec\x6e\x53\xed\xe8\x4a\x9a\x63\x24\x18\x9c\xe8\x89\x6b\x90\x3a\x3d\x6a\x50\xec\x28\x70\xc3\x12\x3e\xb2\x48\xee\x1e\x28\xb3\x26\x2f\xa6\xc3\x2b\xba\x68\x60\x02\x12\x2e\x39\x43\xd2\x18\xeb\xe8\xc3\x97\xd0\x1f\x78\xfe\xd4\xeb\x5d\xe5\xf6\x1a\xb8\xb5\x05\x21\x88\xc4\x28\x98\xbe\x01\x65\xb6\x1a\xcb\x1c\x29\x79\x9e\x65\x0e\x00\x2c\x9f\xdc\x13\x28\x2b\xaf\x79\x67\x81\x66\x0f\x63\x56\xfe\xa5\x2e\x6d\x78\xf1\xd4\xab\xf2\x91\xd5\x20\xbb\x85\xd2\x39\x50\xf1\x11\xf8\xd5\x25\x50\xc4\x7a\x3b\xad\xfd\x6b\x71\x6f\x0e\x9b\x6f\x0f\xdd\xd2\xf4\x72\x59\x93\x1a\xc8\xe8\xe5\x47\xb8\x05\xfc\xf5\x17\x2f\x48\xfc\xa6\xaf\x4e\x2b\x84\x7d\x44\xd6\x3e\xea\xe3\x3e\xaf\xef\x79\x6b\x7d\x0a\x54\x32\x28\xe2\x9a\x73\x9b\x09\x0d\x94\x57\x26\x09\xc5\x89\xc8\x32\x28\x23\x64\x71\x1d\x21\x59\x28\x33\x60\x3f\xd7\x68\xf6\x90\xff\x63\x46\x0b\x91\x9c\x0a\x6a\x1c\x0c\x2a\xbd\xec\xd3\xdf\x7d\x53\xc5\xfc\x0c\x7b\x14\x4a\x18\x4c\x55\xdb\x79\x1d\xbd\x64\x24\x32\x0a\x2c\x65\x9c\xce\xf2\x12\x3c\xaf\x48\x04\xc0\x3d\x10\x9d\xfc\x25\xa0\x8b\xb7\x75\x4d\xe5\xab\xbc\xd3\x55\xdf\xe4\xd9\xed\x74\xa2\xe4\x8e\x85\xdd\xdb\x35\x05\x01\xc0\x0b\xcf\xb5\xa5\xd8\xc7\x10\x6c\x31\x14\xac\x76\xc7\x34\x3c\x67\x09\xb7\xa0\x51\x72\xd3\xc7\xa0\x1f\xa2\xad\xef\x95\x18\x2e\x11\x0c\x49\x20\xe0\xb3\x1f\x88\x4f\x51\xf1\x4c\xdf\x94\xa4\xd8\x55\x7a\x59\x3f\xb5\xc4\x6c\xec\xaa\x34\x12\xbb\x34\x71\x28\x72\xdc\x30\xbc\x12\x96\x2b\x30\xe3\xec\x1c\x2d\x38\x7b\x26\x5d\xd1\x86\x2a\x03\xbe\x17\x51\x04\xf7\x73\xa8\x51\x97\xf5\x42\x4c\xbd\xfc\x58\x55\x11\x77\xbc\xfa\xfd\x10\x58\xfd\x57\x8f\x4e\x9c\xdb\x5c\xdf\xb7\x58\xf4\x3a\x4f\x96\x08\x39\xa2\x75\x2c\xb0\x54\xa8\x7a\x42\x63\x0e\x7d\xe6\x33\xae\xe8\x18\xfd\x0a\x5a\xc4\x5f\xd0\x2b\x20\xdd\x10\xe3\xb2\x46\xc6\xf8\xa5\xc4\xbe\x49\x9e\xfd\x04\x04\xe5\xf2\xbf\x6f\x81\x24\x4f\x39\xa1\xa2\x4f\x06\x2f\x69\x66\x38\x3d\xdc\x25\x7f\x4b\x8e\x2d\x08\xa0\x48\x2e\x67\x83\x80\x70\x58\x92\xe2\x44\xfd\x21\x3a\x3f\xfc\xd6\xf9\xec\x40\x88\xe6\x4a\x84\x20\xb7\xb4\xfe\xbe\x73\x4b\x60\xf2\x10\x03\x2d\x1c\xed\x88\x8e\xe3\x41\xae\xee\x0d\x00\xcc\x2c\x08\xc8\x59\xa6\x1e\xf6\x30\xe7\xeb\x3c\x7d\x8e\x6d\xb9\xb1\xc2\x37\x75\xc6\x96\xca\xca\x9a\x60\x4e\xe0\xba\x8f\x38\xfc\xad\x5e\x83\x85\x20\xd9\x6f\x2d\x49\x8c\x2b\x4d\x85\x84\x34\x13\x8b\xd8\x37\x47\xf5\x48\x0b\xde\x1f\x9c\x80\x6e\x30\x1c\xd9\x89\x68\x09\x55\x03\xc9\x58\xfc\xe6\xca\x7c\xb1\xdd\x9e\x55\xae\xae\xdf\xff\x8f\x83\x89\x81\x12\xe5\x4c\x83\x36\x03\xce\xbf\x7d\xed\x67\x74\x8b\x83\x3f\x6f\x82\x4d\x55\xde\x32\xdf\x73\x81\x17\xcf\x92\x5f\xd1\x83\x91\xe5\x62\x2f\x22\x78\x41\x6f\x60\xbe\xdf\xc7\xf6\xf8\x62\xe3\xdd\x2b\xf2\x9c\x92\x84\x41\xe0\x07\x45\x3b\xfa\x90\x2d\x24\x06\x22\x71\x86\x91\xb5\x5b\x80\xd0\xf8\x89\x66\x07\xd2\x5c\x0b\xff\x9a\x9d\xf1\xa2\xc9\x0b\xb6\xb7\xbc\xf2\x68\x01\x65\x86\xd4\x30\xbb\xce\xbd\xfb\xf6\xfb\x12\x8a\xa4\xdc\xba\x0f\x44\x27\x64\xf1\xbb\xb9\x4a\x0f\x94\xe0\xa7\x80\x79\x9b\x81\xe8\x17\xc3\x25\x5f\xaa\xb7\x05\xfc\x54\x45\xa9\xd3\x18\x4a\x8d\x50\x19\x86\xdf\xab\x77\xf9\x74\x8a\xd5\x20\x66\xc2\xb7\x8f\x43\xb8\x41\x36\x31\xa4\xd7\x15\x66\x31\xd5\xfe\x56\xc7\xd9\xb7\x51\x04\x72\x96\xad\x1f\xb6\xa9\x65\xc0\xfd\x92\x84\xcf\x66\x5d\x26\x80\x69\x73\x09\xab\xf7\x9c\x1d\xe9\x2d\xa4\xe4\x35\xb0\x45\x8d\xf1\xa3\x80\xca\x14\xb0\x4b\xbc\x60\xed\x47\xc4\xac\x87\x14\x53\xd2\x69\x5d\xd9\x4b\x9c\xcb\x39\x1d\x5e\x59\x38\x93\x98\xa9\x6f\xf8\xf9\xa4\x60\xfa\xe8\xf9\x35\x22\x1c\x5a\xc6\x0f\xbc\x0e\x1d\xea\x7b\x7c\x16\x0e\x27\x4b\xbb\x47\xdd\x49\xf2\x43\xbc\xf9\x83\x90\x8e\xdb\x0a\xed\x81\xa6\x08\x6e\xd4\xd9\x3a\xad\xba\xfb\xd6\x81\xde\xab\x88\xd7\xd8\xe4\xfc\xb7\xa4\xe1\x40\x57\xe4\x24\x42\x06\xd7\xce\xed\xd9\x77\xc2\x6b\x9c\xa4\xb3\xbf\xd5\x2a\xd5\xec\x4c\x5e\xd6\xf4\x41\x0f\x1e\x87\x12\x31\x99\xcf\x5e\x0f\x47\x9d\x22\xc3\xf2\x77\x9f\xfd\x0b\x42\xec\x2d\x4c\x81\x59\x45\xa8\xed\x70\xe4\x08\x37\x00\xac\xe8\xb6\x88\x67\x25\x2d\xac\xc9\x9b\x2b\x89\x6b\x87\x7b\xad\xac\x51\x10\xa9\x1b\xba\x99\x62\xe1\x0d\x40\x6b\xdb\xf9\xd4\xfe\xe6\xce\xe0\x47\x8a\xe8\xe4\x11\x65\x46\xe6\x73\x0b\xe8\x98\x8e\xcb\xfa\xc7\x45\xfb\x68\x65\xf4\x40\x55\xf3\xdb\x5f\x1a\x09\xfe\x1a\x4e\x16\x41\xed\xa5\x58\xb0\xba\x84\xf7\xbd\x5d\xba\x3c\x91\x6e\x26\x52\x61\x7f\x71\x08\x87\x38\xb0\xfd\xd7\x53\xd0\x9a\x36\x81\xf8\xb1\xfa\xc8\x3b\x8a\xb4\xee\xf0\x4e\x9a\x2f\xbe\x13\x49\x0b\x3a\xe1\x85\xce\xdd\xbb\x03\x95\x15\xe9\xa1\x80\xeb\x99\x0d\x42\xba\xec\xa5\x3a\xa9\x9e\x97\xcb\xd9\xea\x39\x71\x4d\x75\xd1\xe1\x6f\x91\x72\xbe\x6b\x44\xba\x56\x68\x67\x06\xa5\xf0\xb9\x19\x9d\xd1\x3c\x13\x6d\x74\x21\xb2\x9b\x56\xe2\xcf\x3c\xd0\x3f\xfd\xc9\x64\xb7\x3f\xb4\x16\xad\x11\xf2\x05\x4c\xb9\x1b\x5e\xeb\x62\x28\xa9\x75\x1e\x98\xc0\x4b\xb4\x42\x65\xad\xed\x03\xf2\x70\x9b\x9a\x30\x3d\x01\xfb\xe9\x94\x4a\xf7\xc3\xa6\x85\x4f\x11\x05\x1e\xbf\x58\x33\xf8\x51\xa0\xd1\x7f\x49\x13\x47\x22\x61\x20\x49\x1a\x62\xab\xd4\x21\x9d\xd2\x47\x5f\x63\x90\xd1\x41\x80\x05\x06\x02\xc1\x03\xa5\x52\x3f\x63\x3a\x91\xcb\xfa\x64\xb9\x77\xcf\xa1\x76\xbc\xaa\xed\xe8\x92\x74\x7c\x9b\xad\x2a\x35\x58\xc2\x35\x36\x11\x38\xf9\xf5\x6d\xf0\x7d\x8d\x5f\x5e\x09\x38\x3a\x6f\x9a\x8b\x14\x66\x84\x4a\xcf\x4d\x55\x02\xb3\xe1\x73\x9a\x8e\xc6\xf8\x61\xb9\xa6\x0c\x53\x07\xd3\xcb\x84\x57\xeb\x4a\x02\xb4\x53\x25\x44\x62\x10\xe5\x34\xf3\x11\x93\xd6\x43\x2d\x31\x42\x4a\xd2\x85\x13\xb0\x3d\x9f\x3a\x2e\xeb\xe8\x86\x81\xd0\x52\x7a\xc9\xcf\xd7\xe7\xdd\x52\xa2\x07\x2e\x3d\x7b\x62\xab\x28\x89\xc3\x04\x10\xdd\x39\xef\x68\xf5\x49\x96\x67\x66\x8c\x70\xb8\x72\x11\xc6\x03\xde\x20\x3a\x79\x91\xe6\x88\x5d\xbf\xb7\x56\xfd\x32\xf9\xcd\x5f\x20\x30\xc7\xee\x49\xdc\x39\x9c\x16\xd5\xd3\xc7\x4e\xe2\x33\x79\x9e\x01\x41\xbc\xb0\xd3\x90\x3b\x50\xc1\x41\xab\x7e\x6e\x4f\xab\x94\x0c\xe8\xc0\xbb\xb4\xa0\xdf\x19\x71\x4a\x32\xc6\x12\x5f\x13\x66\xfb\xc3\x7b\x5b\x0e\x87\x25\x45\xa3\x0b\xfa\x89\x4d\x8d\xab\x86\xec\x89\x00\x6b\xa2\x19\x65\x32\x90\xc1\x87\xa3\x0f\xf2\xf5\x9b\x9f\xd1\x2b\x86\x0d\x4c\x07\x6c\x12\x7a\x03\x0a\x9f\x6f\xff\x08\xae\x60\x1f\x84\x4e\x5b\x3f\x9f\x63\x6c\x81\xa3\x3e\xeb\x23\x69\x7f\x83\x3f\x4f\xc1\x80\xea\x67\x3d\xa1\x45\xcd\x19\x90\xea\x4c\xcd\x0d\x6d\x3c\x6a\xa5\xd2\xfa\x0d\x3f\x28\x30\x6e\xb0\x4d\xef\x37\xc2\xae\xf3\xa3\x96\xac\x9f\x89\xfc\x69\xd6\xac\x89\x2d\xe2\x43\xfd\xba\x23\xc7\x96\xfe\x69\x38\x9a\x3d\x0f\xf3\x22\x1e\x2c\x5c\xed\xde\x06\xda\x92\x54\x64\xf1\x7b\xaf\x8d\x94\x7d\x6b\x89\x99\x9d\x61\xad\x66\xaf\x4e\x64\x45\xb6\x19\x37\x21\xa7\x66\xab\x0b\x9d\xe9\x84\xce\xf6\x77\x5f\x54\x98\x97\x02\x7b\x56\x78\x65\x26\xaa\x5e\x09\x03\x27\xfb\xfa\xcb\x78\x72\x73\x00\x31\x8c\xea\x7e\xdd\x43\x81\x42\xfb\xdc\x02\xaf\x7c\xd0\x3c\xc9\x02\x03\x70\x8b\xdf\xf7\xfd\x7c\xb1\x9f\x41\x88\x91\x60\xf0\x31\xfe\x40\xf4\xde\xb5\x39\x5f\xa3\xdb\x40\x57\x27\x3a\x1b\xe1\x01\x5b\x6b\xfa\xee\x13\x4f\x4f\xe4\xbc\x47\xda\xc3\xa8\x66\xea\x2e\xab\x37\xc5\x53\xc5\x12\x33\xac\xb3\x0b\x8a\x23\x4a\x5e\xd2\x27\x5a\x78\x3e\xac\x2b\xd3\x6c\x86\x43\x93\x3d\xc4\xfd\x63\x7a\x85\x4c\x91\x63\xe6\x81\x9b\xaa\xf9\x43\xf5\x06\xa5\x11\x2a\xd1\x1a\xe1\x15\xce\xf6\x0f\x3f\xf9\x1a\x33\x19\xf8\xc9\x17\xd1\xc5\x1c\x4e\x49\xf6\xf0\xc3\x23\xb8\x02\xec\xeb\xa2\x1c\x1b\x3c\x51\x98\xba\x33\x14\x0f\x82\x24\xf4\xdf\x2e\x7f\xf4\x4a\x86\x69\xc8\xcc\x99\x8c\xe0\x15\xfa\xe2\x3f\x1c\x02\x23\x68\x50\x5c\x7f\x15\x2d\x14\x44\x32\x2b\xd3\xc3\x32\x1a\xf0\xb4\x19\xb9\xb9\x13\xb1\xc1\xdf\x82\x91\x4c\x77\x41\x54\xd1\xd7\x56\xdb\x32\x23\x7f\x2d\x21\x10\x32\x33\x4d\x14\x55\x35\xaa\xe7\x16\x86\x4a\x78\xce\xee\x09\x8f\xc9\xb1\x71\x2a\x35\x9d\x42\x8b\xb8\xd4\xdc\x58\x92\x84\xc1\xa1\xad\x15\x7f\xef\x1a\xf3\xf7\xc8\x11\x7c\xa4\x2d\x59\x21\xbf\x3f\x0e\x29\x23\x6b\xec\x45\x04\x66\xa8\xaf\x35\xf2\x35\xcb\x24\x6a\x35\xdf\x6b\x73\xaf\x6e\x98\xc0\x79\x7a\x30\xaa\x50\xd0\xc3\xb9\xa1\xd2\x8c\x65\xd9\x34\x18\xb6\x5e\xec\x0a\x25\x71\xc3\x70\x6e\xa7\x0a\x44\xc7\xdf\xc4\x16\xe9\xcc\xcf\x0f\x3b\x98\x06\xf3\x58\x62\xaf\x9f\x7d\x39\xfd\x97\x7c\xce\x0c\x09\xac\xda\xf8\x7b\xdf\x77\xe1\x16\x1c\xc1\x85\x3b\x93\x7f\x46\x53\xf7\xac\x3f\x91\x23\x7c\xf4\x4c\x2c\x0d\x77\xf1\xfc\x12\xea\x54\x4a\x6d\x06\x11\x3c\x09\x03\x0c\x63\xfc\x32\x58\xee\x02\xb5\x3c\x03\xd9\x81\x02\x63\xfa\xd6\xe3\xd0\x6c\xdf\x70\xe1\x40\xf7\x84\x67\xfe\x5e\x1a\xdc\x96\xd7\x89\x56\xd9\x17\x75\x0f\xba\xb2\x37\x47\x8d\xef\xf7\x60\x80\xf2\x17\x1b\x2f\x5e\xf4\xca\xe8\x65\xc7\xab\x78\xad\x6c\xbd\x14\x42\x17\x60\x7e\xee\x0f\x55\x5a\x06\x49\x35\xf6\x81\x59\x52\x4f\x3b\x1c\x21\x37\x04\x9d\x5f\xb5\x42\xf6\x15\x35\xed\x41\x4d\x95\x54\xa6\xff\x8b\x09\xd6\x7b\x37\x51\xea\x9c\xdd\x9d\x9a\x05\xc2\xaa\xeb\x93\x2f\x58\xa0\x5b\x8c\x30\x2b\x10\x49\x09\xc1\xac\x40\x8d\x5c\x19\x86\xf1\x43\x8d\x46\x22\x97\xa0\x07\x12\x7a\x61\x33\x35\x24\xd8\x70\xfd\xbd\x0d\x91\x34\xd0\xc4\x6f\x54\xa6\x39\x1d\xf1\xf5\x37\xb4\x44\x10\x55\x3d\x6c\x7c\x79\x06\x4b\x10\x96\x5b\x18\x21\x85\x35\xd5\xd8\xb9\xb0\x0d\x2d\x12\xa1\xdb\x7f\x7d\x32\x1e\xbd\x75\xe8\x49\xbd\x03\x46\xab\x45\x50\xec\xab\x3a\x05\xc0\x09\x93\xbc\x64\xf9\x6d\xe0\x8b\x21\x46\xbd\xf4\x28\xa9\x7d\xd4\xc1\x27\xfe\xc1\xff\x31\x19\xd9\xd1\x88\x97\x60\x58\x5b\x7e\xe7\x6f\x00\x9b\x7c\x9b\x88\xae\x0a\x16\x09\x73\x6f\x17\xb3\xbf\x9c\x9c\x3b\xfd\xad\xe8\x53\x6b\x89\x75\x6d\x67\x81\xbb\x6f\x42\xff\x89\xcb\x5e\xf6\x4e\xbc\x87\x64\x83\x95\x50\x7b\x81\x7f\xba\x46\x01\x99\xbe\x05\x40\x69\xf3\x83\xe3\x8b\xcc\x5d\x96\x6a\x4f\x98\xcd\xdc\x30\x8a\xd4\x3d\x83\x51\x0c\x8b\xed\xf4\x99\xd4\x95\x3b\x78\xae\xfa\x4c\xe5\x53\xf7\x77\x3d\x71\x6e\xeb\x2a\xc6\x4c\x6c\xaa\x5d\x59\x12\x3b\x12\x74\xac\x67\xa4\x4b\xfd\xe3\x35\x8b\x1c\x57\xc2\x2f\x20\x82\xc6\x8d\x6a\xd4\xe2\x23\xd8\xd1\x35\x24\xeb\x30\x38\xb2\x13\xad\xd0\x69\x87\x32\x03\x9a\x97\xe3\x75\x32\xb2\x18\xe9\x92\xb6\xa4\x2e\x50\x0b\x61\x74\xce\xd8\xc3\x07\x64\x70\x05\xe9\x64\xc0\x37\xc2\xa9\x48\x1c\x92\xb2\x1a\x55\xbc\x50\xb3\x46\xef\x9a\x9c\xfd\xb9\xc2\xf5\xd0\x60\xa0\x95\x17\x54\xd0\xfd\x13\x81\xe6\x41\x46\x09\xea\x31\x6f\x62\xb9\x55\xbd\xa6\xa3\xd2\xfc\x54\xa7\xaf\xfb\x14\x63\x90\x22\xe8\xd9\x3a\x96\xba\x1e\x37\x53\x11\x86\x7e\x8f\xad\x96\xdf\x4e\x0a\xef\x77\x03\x99\x35\xa5\xe1\xb0\x78\x0c\xa8\xc1\xe6\xe4\x49\x5d\x71\x6a\x1a\xfa\xca\x50\x20\x80\x7c\xf2\xf8\x83\xe8\x08\xc1\x56\xff\x79\x4b\x4a\x92\x39\x44\x16\x14\xce\xee\x7f\x6c\xc4\x60\xf2\x4f\x1f\xbd\xbc\x2b\xe7\xaf\xce\xbf\x79\xe8\x1e\x94\x98\x07\x30\x1a\xbf\x42\x9f\x14\x31\xbf\x55\xae\x5f\xca\x68\x21\x67\x1f\x63\x6b\x55\x70\x85\x46\x0d\xb5\x81\xe0\x7c\x5f\x71\xb7\x01\x20\x8f\xeb\xb4\xa2\xdc\xd5\xe0\x42\x76\xd2\xd2\xaa\x7f\x62\xe9\x4c\x7c\x40\x1e\xab\xd4\xcc\x81\x6d\x09\xce\xed\x5b\x12\x68\xca\x9a\x18\x77\x72\x46\x4e\xef\xbc\xaa\x4b\x7c\x46\xfd\x8f\x3a\xc0\x1e\x04\x60\x77\x83\x09\x3c\x08\x44\x47\xb8\x19\x19\x10\x30\xca\x54\x10\xb9\x3a\x2f\xff\xf7\xe1\xa2\x6b\xf9\xce\xdf\x70\x63\x7b\x69\x96\xb1\x7c\x84\x76\xbf\x68\xee\x57\x5c\x48\xe7\x99\xe8\x47\xe1\x66\x32\x72\x37\x1a\x5d\x48\x6c\x22\x73\xdc\x50\xa2\xd0\x23\x32\xd0\xd7\x06\xe2\x8d\x0b\x37\xbe\x21\xf1\xf9\xf0\x11\x4b\xd1\xdd\xb4\x65\x7f\x0b\xcc\x2e\xb7\x8b\x7f\x62\x91\x4a\x42\x7c\x23\x83\x40\xe7\x03\xb9\x85\x7b\x99\xf4\xed\x21\x0f\x82\xdd\xef\xd6\x1b\x46\x05\x24\xd3\x9a\x5c\x34\x45\xec\x48\x79\xa9\x99\xde\x17\xf9\xe4\x68\xf5\x2c\x08\x88\x8d\xe4\xf0\x7e\xd9\x9a\xd5\xe9\x8b\x67\x6b\x22\xd4\x06\x84\xcb\x4e\x91\x46\x71\x30\x3b\x60\xf7\x88\x5c\x57\x9f\x3e\x9b\x89\xc4\xdb\x17\xd9\xac\x57\x97\x9e\xa9\x43\x2d\x40\xba\xcc\x95\xdd\x56\x2f\x9d\xab\xb5\x28\x1f\x9e\xc0\xce\xae\xd7\x6a\x83\x88\xc2\xc2\xf6\xd2\x38\xd1\xad\x6e\x48\xdb\x30\x46\x2f\x0b\x50\xe3\xce\x19\xbb\xc2\x04\xef\x4d\x27\xbd\xea\xd5\xc0\xd0\x3d\x1f\x19\xca\xb9\x75\xfb\x45\x4b\x74\x24\x2f\x40\x52\x56\x7c\x8b\x29\x60\x82\x2e\xe4\x0f\x87\x42\x8b\x13\x7f\xd2\x3a\x3a\x15\x8f\x83\x3f\x81\x67\xe9\x1f\x22\xb5\x32\x7b\xc7\xf6\x05\xd7\x48\x62\x86\xe3\x5a\x56\xd6\x98\xf0\x86\x1b\x6d\x03\x35\xda\x61\xd6\x90\xce\x86\xa2\x64\x4c\x49\xa2\x6b\xe5\xae\xfc\xe9\xcf\x03\x8e\x96\x42\x5e\x9a\x95\x4a\x52\x13\x07\x06\x38\xc2\x8f\xed\xff\x58\xfb\x36\x80\x64\x5c\x16\x84\xf4\x13\x6c\xad\xda\x67\x86\x4a\x10\xbc\xf3\x84\x28\x07\x94\xa4\xef\xa6\x14\x6c\x91\x8d\x03\xc7\xea\x88\xd9\xb3\xd9\xfa\x3c\x4e\x34\x6b\x91\xfc\xba\xf9\xec\xb1\xe0\x34\x00\x27\xf5\x9f\xce\x66\xc2\xa5\xe3\x95\x26\xbb\x6e\x44\xc2\x9f\x31\x7e\x65\xa5\x87\xe7\x78\xfc\x00\x77\x5c\xb6\x95\x04\x4e\x39\xd2\xa2\x4a\xb8\x22\x68\x2d\xc1\x59\xf7\x47\xa5\x2d\x7e\x80\x2f\xd1\x13\xfe\x08\x9d\xf3\x6a\x35\xc3\x03\x3f\xed\xb4\xba\x7f\xef\xfe\xe9\xf2\xf4\x83\x24\x1c\xce\xc5\x51\x58\x4d\xb9\x3a\x98\x14\xa9\x37\xeb\xb0\xb7\xa0\x2b\x7d\xb4\x2e\x02\x6d\x13\x33\xd4\x60\x24\x75\x10\x39\x1d\x33\x92\x06\xfa\x05\x6e\xc0\xa5\xea\x13\xd3\xa3\xde\xba\xad\x47\x8e\x9d\xbc\x05\x7d\x56\x1b\x37\x2f\xbd\x36\xe7\x20\x57\x58\xa5\xb8\xd0\xb4\x60\x43\x29\x31\x27\x84\x18\x93\x31\x09\x18\xda\x09\x87\x99\xc8\x28\x32\x67\xc0\x0b\x75\x11\x9d\x13\x62\xc3\xff\xb7\x6e\xb8\x39\x0b\x9a\xcc\x70\x10\x04\x01\xc0\xa3\x9c\x05\x4e\x04\x80\x0b\x07\x65\x85\x1b\x0c\x8b\xd6\x84\x92\x13\x0f\x11\xa5\x29\xc8\x48\x8c\x0e\x57\x82\x54\xa9\x75\xd9\x2c\x23\x93\x6a\x0d\x5e\xa8\x82\xdd\xd9\x80\x9b\x5e\x0d\xf3\xbe\x4d\xf1\x4a\xff\x97\xd8\x12\xc5\x85\x76\xc5\x9c\xbc\x19\x36\x3c\xd5\xfd\x28\xc6\x94\xbd\x74\x8f\x40\x10\x80\x3a\x5c\x75\xfd\x49\x01\xb5\xe9\xab\x0e\xe0\xf1\x89\x65\x51\x9e\x71\x5a\xd6\x6c\xbc\x2d\x92\xd6\x89\xca\x52\xb9\x79\x1f\xac\xf4\xf9\x38\x54\x1f\x5e\xbc\x6a\x96\x9a\x07\xf9\xba\xac\x7c\x52\x84\xf6\x65\xfd\xb6\x17\x17\xd9\x6f\x46\x0f\x84\x44\x5b\x9d\x9e\x3e\x9a\xec\xce\x0d\xcc\x1d\x0a\xac\xc4\x96\x28\x7f\x23\xb8\xd1\x80\x86\xe3\x9e\xe4\xb9\xb5\x0f\x76\xc9\xc0\x8d\x28\x2f\x4c\xf1\x32\x98\x1f\xe7\x86\xde\xb8\x68\x23\x00\x56\xeb\xb2\xa6\xbd\xa3\xf1\x0c\xa6\xfe\x6a\x31\x0e\x44\xd7\x1f\xe6\x01\xb4\x81\xdc\xf0\x7c\xd8\xb9\xb1\x62\xea\x16\x7c\x3f\xbe\x31\x04\x49\x0c\xcb\x0d\x0c\x24\x85\x1d\x51\x62\x79\xd1\x2b\xe9\xd9\x53\xa5\x60\x52\x8d\x84\xee\x06\x04\x3f\x9c\x82\xe9\x08\x6c\x15\x4c\xe3\x88\xc8\xa4\x17\x94\x37\x67\x87\x11\xeb\x4e\x77\x65\x27\xc3\xbe\x6b\x47\x2a\x4b\xf8\xcd\x95\x82\x8b\x3f\x78\xa5\xb3\x03\x3c\xad\xa8\x50\x33\xd1\x13\xd7\x4f\x6a\xf0\xee\xe2\x5a\x25\xde\x0f\x8d\x7b\xfb\x2a\xf1\xfe\x78\xe8\x5b\x20\xc0\xa2\x2b\x4b\x73\x05\x5a\x5e\x81\xe4\x36\xc5\x21\x09\x13\x7d\xf4\xf8\xe7\x25\x78\x46\x34\x5f\x4a\x69\x72\xc5\x08\xc9\x74\x5e\xd5\xba\x26\x19\x06\xec\xfa\x72\xdb\x9f\xa9\xc7\xcf\xac\x25\x7a\xcd\xb8\xc2\x69\xc5\xf5\x91\x04\xe9\x26\x08\x83\x51\x71\x2e\x96\xfe\x57\x27\x4d\x56\x97\xc4\x0f\xd4\xa3\x43\x99\x41\xb4\xd5\xe9\x0d\x34\x3e\xbf\x12\xef\x5c\xae\xfe\xa9\xf0\x91\x85\xcd\x9c\x0a\x02\x87\x7c\xf9\xa9\x89\x5e\x73\xe3\x73\x3e\xd9\xa3\xc0\x74\x04\x7d\xd2\xf2\xae\x33\x28\x55\x09\x4a\x46\x13\xf7\x8f\x57\xc3\x61\xc9\xfc\xca\x64\x29\xf1\x82\xf7\x41\xa9\x50\x30\xba\x50\x5c\x45\x8f\x28\x1b\xa8\xb2\xb2\x67\x19\xf1\xba\xc6\x02\x7b\x93\x4e\x2b\xe0\x07\x9e\x49\xf0\xe5\x17\x88\x57\x0b\x04\x14\xbf\xed\xf4\xe7\xc0\x9a\xbe\xa3\x1e\x84\x9b\x8f\xe9\x4e\x0d\xc6\xef\x38\xa8\xc5\xfe\xe3\xc5\xce\x04\x7f\x55\x9f\x9c\x99\x89\x4c\xdc\x63\x70\xda\x40\x38\x68\xcb\xc7\x26\x7f\x65\x08\x7d\xfd\xf2\x44\x0a\x06\xdc\xfd\xf3\xe6\xc3\x96\xc2\xc6\xbd\xe9\xae\xe0\xb0\xe0\xe5\xff\x79\xc6\x44\xfb\x8c\x94\x69\x6e\x57\xea\x2c\x0d\x6d\xe3\x51\x5f\x4c\x36\xad\x3e\x18\x20\xab\x05\x81\x72\x52\xe0\x76\x06\xb0\xb2\x36\x87\x2a\x40\xe4\xb8\x0e\x1f\xf3\xae\xcd\xc7\x65\x4d\x6b\x45\x9f\x2e\xbf\x20\xac\xf9\x34\x9d\xee\xc2\x02\x78\x48\xc2\x60\x47\x33\x50\xbc\x25\xf4\x43\x3e\x76\x4c\x2a\xa1\xb9\xc9\xc3\x94\xbf\xbd\x5f\xff\xf4\x2b\xe1\xf4\x6f\x01\xbf\x47\xe2\x55\x21\xfb\xc9\xfb\x28\x68\xe6\x5c\x31\x7c\x82\xe2\x00\x78\xbd\x38\x05\xa7\x47\x28\x0e\xae\xdf\xfe\x2c\x2f\x25\xee\x5d\xe6\xd9\xcb\x1a\xb7\x80\x20\xdc\x1e\x38\xc5\x08\x71\xae\x0c\x02\xa9\xa3\xa2\xab\x05\x67\x22\xf1\x29\x2a\x6e\x1b\x7e\x74\xcf\x01\xd5\x46\xcc\xb6\xcd\xd6\x13\xbe\xa6\xe3\x62\xc9\x1e\x76\x27\x78\x65\x1e\x1f\x06\xdb\xca\xfb\x6b\xef\xbd\xd2\x42\x62\x71\xb0\x49\xc5\x21\x22\xb1\x6c\xa2\xce\x0c\x84\xa0\x8a\xea\x40\xd2\x33\x8e\x06\xbc\x8c\x40\x52\xfe\x68\x50\x06\xe2\x3f\x7e\x3a\xed\x1b\x66\x29\xb0\x52\x3a\x02\x01\x1c\x43\xfa\x12\x1b\x5e\xcc\xea\x40\x18\x20\x39\x20\x16\x66\xac\xe3\xd9\xcb\x60\x48\x42\x94\x3c\x1a\xf3\xcb\x0b\x9d\x9f\x4b\xaf\x4f\x84\xa7\xa8\x54\xdf\x48\x8f\xf0\x05\x10\x0e\x8c\x80\xa0\x5f\xd4\x37\x39\xc2\x75\x2e\xb1\x52\xa4\x88\x6a\x80\x83\x50\x2a\x8e\xf1\x0b\x5b\x20\x0e\x92\x9f\x60\xca\xfa\xf4\xd3\xa5\x18\x7d\x73\xc6\xbd\x77\x4d\x5c\x91\x4c\x18\xef\xdb\xbc\xa2\x6d\x33\x46\x54\xb6\xd8\xb9\x0f\x91\x63\xcb\x7c\xd9\x3c\x2f\x15\x2e\x24\xbe\xb9\xcc\xae\x46\xf3\xeb\xd5\x29\x4d\xfa\xfa\xdd\x94\x51\xf2\x20\x45\xef\xa6\x01\xd9\x12\x8b\x97\xa5\x45\x4b\x5e\xb3\xc1\xf2\x02\x10\xad\x01\x5d\x64\x76\xb1\xd1\x29\xb7\xd9\xe5\xe6\x49\x04\x92\xc0\x18\x46\x73\xdd\x49\xb9\xa9\xb8\xf8\xb0\x3f\x0f\x25\x36\x7e\xf0\x73\x96\x4a\x75\xa9\x0b\x25\x17\xfc\xa5\x9f\x64\x27\xc2\xa2\x3a\x5e\xbc\x23\x8d\x63\x47\xe2\x9f\xf9\xab\xf8\xb4\x48\x29\x24\x9d\xe1\x15\xed\xa9\xb6\x4f\x85\xe8\x4f\xf5\x4b\x6b\xb8\xaa\xd3\x8a\x42\x9b\xe4\x51\x27\xf4\x03\xf1\x89\x2d\x1a\xf8\x1e\xa1\x9b\xdf\x31\xef\xbd\x49\x82\xe9\xe2\xa0\x24\x06\xca\x30\x96\xc0\x0c\xf9\x9e\x2c\x0f\xa6\xb3\x62\x47\xa1\x2c\x49\xfa\xf1\x2f\xae\xa2\x9b\x32\xe5\xb2\xbe\xf1\xe2\x74\xe7\x49\xca\xe3\x01\xaa\xfb\x02\x21\xab\xbf\x7c\xd3\x1e\xe5\xaf\x4f\x2a\x5e\xa3\xf6\x7b\x8c\xd3\xa7\xcd\x27\x64\xf2\xce\xfe\x4a\xd0\x67\xa3\x3a\xe5\x9b\x09\xbd\xe3\x9c\x38\x56\x2b\x73\x4a\xb8\xa4\x7f\xa7\xbc\xf5\xb1\x46\x7b\xa9\xeb\x42\x35\x5c\xef\xf6\x76\x26\xdc\xfe\x90\xa6\x4d\xdc\x97\x34\x1f\xf1\x93\xbc\xd4\xc1\x25\x0a\x73\x5a\xd4\x72\xd8\x33\xf5\x00\x5a\x05\xa3\xca\x2b\xca\x90\xd1\xb7\x66\xa5\xfa\xb1\xc3\xc4\x2f\xd0\xae\x49\xcf\xaf\x38\x3c\x73\xca\x20\x44\x2c\xaf\xea\x27\x4f\x4c\x3d\x82\x50\x28\xbf\x26\xc3\xdd\x51\x08\x1f\x59\xd9\x0e\x3e\x03\xa0\x77\x9c\x5b\xf2\xc4\x95\xd6\xcd\x30\x0c\xc7\x30\xae\xef\xb0\x01\x37\x6f\x2a\x64\x30\x44\xf7\xd0\xd4\xe1\x65\x10\x70\x71\x40\x65\xb9\xe8\xac\xf0\x2a\xeb\x99\x23\xef\x6b\x4c\x05\xb4\x21\x58\x9d\x10\x52\x99\xb3\xf9\xdc\x70\x11\x05\x8c\x5b\x58\x7c\x43\xbd\xb4\xbe\x0d\x2f\xf1\x55\xd9\x19\x49\xb4\x73\xf1\xcd\x8d\x91\xf9\x59\xdf\x83\x6f\xe8\x55\x75\xc1\x60\x88\xaa\x09\xef\xec\xb5\xb5\x35\x50\x65\x42\x63\x57\x5c\xd7\xf4\x0d\x5c\x4b\x44\x2e\xdd\x3b\x4f\xa8\x3d\x13\x78\x21\x7c\xa5\xc7\xf9\x29\x53\x65\xa6\x66\xa9\xa7\x70\xde\x94\x21\x58\x6c\xca\x28\x53\xe2\x5a\xb0\xde\x3a\x3f\xaf\xee\x96\x5a\x2b\x91\x18\x23\x40\x96\x27\x51\xb0\xf5\x9d\x40\xdd\xd1\x0e\x2d\x5e\xfd\xc8\x56\xc0\x10\x16\x49\x4c\x67\xec\x0e\xd4\xb8\x78\x1b\x32\xea\x3a\x7c\xd5\xd2\x6c\xb7\x95\x3c\x97\x16\xc9\xd6\xfc\x96\x84\x07\x0a\x70\x2f\x72\x73\xe0\x1a\xb5\x42\x2d\x73\xc1\x4d\x50\xe3\xcb\xff\xe6\x59\xd7\x4c\x83\xf0\xec\x5e\x8b\x53\x19\xcc\x80\x8f\x5a\x3a\x68\x76\x80\x00\x80\x95\x73\xfb\x0a\x8d\xe3\xbb\x20\x6a\x74\x31\xc2\xd7\x84\xb9\x6a\x2d\x23\x30\xe5\xa0\xa4\xa1\xdc\x3d\xf7\xad\x1b\x47\xae\xf3\x4a\x4f\x84\xc3\x52\xfd\xf2\x76\x7e\xf5\xce\x1a\x3e\xfc\x6f\xd0\xae\x80\x4f\xda\x58\x6c\xc0\xe3\x78\x47\x47\x77\xad\x4d\x75\x05\xda\x02\x51\xb1\x53\x4b\x72\xde\x06\x02\x7f\x8f\xcb\x23\x40\x82\x06\x88\x5b\x4f\x4b\xb7\x73\x10\x83\xaa\x94\xf8\x08\x7d\x05\xd1\xe8\x0c\x84\xd5\x60\x83\x01\x7f\x0b\x08\x45\x61\x68\x3b\xeb\xc8\x64\x82\x37\x23\xda\x90\xfe\x5b\x06\x83\x82\x94\x37\x9f\x54\x24\x3b\xee\x3b\x21\x39\x92\xaf\xfc\x70\x0e\x44\xc5\xcd\xcf\xa9\x7d\x0a\x6a\xf4\xa6\x5f\x66\x9a\x5d\x5d\xdb\x3a\x6e\x7a\xfd\x6b\xbd\x7e\x26\xe1\x3b\xdf\xdc\x7f\xd9\xcd\xfd\x7d\x93\xb4\xad\x69\xaf\xfc\xf0\x35\xf1\x61\xba\x92\xd1\x53\xd0\xe3\x3f\x0e\x54\xb5\xf5\xbd\x58\x66\x30\x3c\x1f\xa7\xc0\x92\x22\x52\x40\x73\x66\x24\xd2\xf0\x77\x09\xfd\xad\xc8\xfa\x9c\xef\x02\xb8\xf0\xa3\x6f\xa1\x2a\xe2\xc4\x9f\xdc\xa2\xd8\xde\xef\x04\xd4\x60\x02\xf1\x89\xe8\x33\xaa\x2a\xfd\x47\x35\x73\x52\x70\x7d\xee\x6b\x55\x1f\xa1\x72\x87\xea\x9f\xfe\xfd\xac\xab\x35\xe5\xef\x28\x69\x9a\x1a\x84\x7d\x5a\x7c\xa2\x52\xa6\x8e\x19\xbb\xdb\x64\x2e\xae\x9f\x55\xa3\xa3\x9f\x17\x43\x61\x4c\x24\x8b\x13\x34\xbf\x1c\x09\x0e\xea\x02\x29\x53\xe6\x91\x23\xd8\xac\x5f\x69\xcd\xdc\xb7\x94\xc7\x89\x64\x71\xae\xcb\xf1\x2a\xd1\x10\xe5\x29\x3d\x96\xeb\xd1\xaf\x7f\xec\x82\x06\x01\xb2\x00\xb5\xe1\x7b\xc0\x0d\xdf\xc3\xd1\xb7\xb8\x5f\x1b\xef\x2a\x46\x65\xc6\xf8\x09\x8f\xee\xaa\x1e\x06\x99\x50\x21\x17\xc5\x85\xaa\x5c\x3d\xff\x78\x84\x17\xd9\xab\xe2\xd7\x6a\x52\x4a\xf4\x20\x1b\xbf\x32\xbb\xda\x8e\x57\x2b\xfc\x0a\xb5\x9a\x78\xb0\xce\xe5\x93\xec\x4d\x89\x2f\xa2\x00\x0e\x83\x64\x8b\x0f\x61\xee\x73\x47\x88\x8a\x13\x45\x7b\x5f\x70\x25\xef\x51\xae\x0a\x5a\x71\x1a\x80\xe0\xcc\x58\xcf\x75\xdd\xb7\x95\xe5\xe6\x55\xdd\x37\xf5\xdd\x37\x01\xbb\x54\x95\xdb\x09\x54\xa1\x65\xf9\xd9\x53\x17\x4c\xb2\x9a\x30\x5d\xdf\xed\x9c\xa2\x8d\x57\xb5\xed\xd9\x20\x70\x19\x1b\x92\x47\x4b\x1a\x37\xff\x2f\xfd\x0f\x4b\x1a\xb6\x79\x30\xe0\xa5\x0f\xe3\x4c\x9c\x87\xf4\x08\x9b\x93\x99\xe2\x16\x6f\x23\x9e\x31\x49\x9d\x67\x03\x3b\x56\x51\xac\xed\x07\x62\x10\xfc\xab\xa5\x66\x7e\xec\x10\x1e\x1b\xb1\x16\xd3\x86\x93\x5e\x42\x91\xf1\x19\x41\xf2\x60\xe7\x87\xe6\x42\x74\x65\x76\xff\xae\xb5\x7e\xb1\x49\x55\x1a\xb2\x5c\x7d\x3a\xa8\x60\x8f\x97\x61\xc1\xd5\xf5\x8f\xb3\xd7\xb1\xd4\x42\xf8\xdc\x66\xe2\x76\x29\xd5\x2c\x7a\x5c\x2d\xc1\x0a\x26\xf2\x6b\x5e\xdb\x79\x5d\xe7\x55\x60\x9a\xbe\xb4\xe8\x69\xa2\x25\x20\x86\xff\x6e\x2f\xdd\xb7\x74\x44\xdb\x8d\x43\x12\xe1\x2e\xb3\x23\x24\x92\x3f\x20\xee\xe2\x3e\xad\x3f\x5a\x53\x07\x3b\x49\x7c\xd7\xe2\x7c\x69\x7f\x63\x11\x4f\x02\x1c\xc3\x45\x86\x4f\xd8\x68\x34\xcc\xd2\xfb\xdd\x5a\xd0\x66\xc7\xba\x78\xe4\x04\x43\x32\xab\xff\x1d\x2f\xbe\xa8\xae\x70\xb4\xd0\xf6\xaf\x47\x16\x06\x54\xa6\x6c\xad\x85\x52\x9e\x91\x5d\x92\x3c\x9a\x40\xf9\xa8\xd1\x4a\x06\xe8\xed\x77\xd0\xc4\xe5\xd1\x25\x58\xce\x13\xb3\xfe\x39\x5d\x3c\xbe\xfc\xf5\xd0\x8a\x6b\xf4\x82\xa9\x18\xc6\xc4\xb4\x1c\x57\xd5\x23\xb9\xaa\xd0\x95\xae\x5e\x3c\xc7\x60\xc3\x13\x52\x43\x3a\x42\xb4\xfa\x00\x09\x9d\xf7\x5e\xd8\x47\x83\xa0\x73\xde\x5b\x1e\xdd\xeb\x89\xf0\xb5\xa7\x18\xa1\x8f\x0b\xc9\x92\xc0\x0f\x04\x47\x4b\x06\x3a\x9f\xd4\x57\x2a\x3e\x2f\x16\x67\xab\x11\x2e\xb0\x4b\x68\x00\x25\xa7\x8f\x37\x87\xc5\xed\xc0\x07\xda\xc9\xc9\x44\xa3\x59\x97\x79\xfb\xd6\xf1\xe2\xec\x78\x3a\x87\x9f\x31\x39\x33\x1e\xb8\xa9\xd2\xd2\xea\x4a\x7a\xf4\xed\x26\x51\xf1\xa2\x22\x11\x0e\x23\xa7\x6f\x03\xca\x5a\xa3\x2a\xfb\xad\x5a\xdb\xfe\xba\x1f\x62\x94\x8f\xf6\x90\xf4\x4b\x0e\x60\x74\x48\xdf\xf7\xd1\x01\xa4\x36\x90\xfe\xe5\xff\x22\x49\x27\xcb\x6b\x34\xa7\x6e\x59\xd3\x71\x7d\xc0\xc6\xf0\x42\x78\xcf\xc4\xc7\xf7\xe9\x32\x59\xfd\x41\xf1\x5e\xf0\x42\xe5\xee\xa1\x13\xa3\x06\xa2\x0f\xc8\x33\xc9\xf9\x73\x1b\x57\x86\x18\x35\x56\x94\x4f\x1d\x87\x22\x8b\xc0\x3a\x7d\x5a\x20\x83\xf9\xa6\x9c\xc8\xca\xfc\x37\xce\xf8\x47\x9a\x36\x96\x1b\x33\x4a\xa9\xcb\x90\x5f\x11\x8e\x59\x96\x0c\x92\x70\x8b\xae\x07\x18\xbf\x06\xef\xe6\x7a\x78\x8d\x17\x3f\x7c\x84\xa3\x1b\xa2\xe3\x07\xc2\xa3\x7b\xfe\x67\x7e\x78\x8b\xa4\x05\xd0\xc5\xbb\x3f\x7a\xca\x59\x87\x30\x7c\x18\x5e\x0e\xdb\xdd\x2b\x54\x16\xfa\xd6\x20\xd1\x9f\x51\x46\xea\x45\xc9\x32\x01\xdb\xd3\x4b\xea\xf6\x0e\x8f\x13\xa2\x45\x11\x56\x1b\x0d\x55\xb4\xa4\x67\xf3\x9c\x76\x5b\x5b\x87\x16\xc2\x5e\x0e\xeb\x9e\x8f\x1a\x48\xd7\x42\x79\xe4\xbc\xfe\x60\x78\x3d\x56\x6e\x5a\x8b\xad\xc4\x61\x65\x63\x88\x4f\x49\xc8\xd6\x98\xa9\xad\xc8\x5a\x5c\x13\x91\x48\xce\x79\x6b\x80\x16\x6e\x30\xf4\xbb\xa2\x68\x23\xe9\x16\x0d\xec\x07\xcf\xc9\x35\x3e\x46\xf2\x40\x08\x2c\xae\x00\xb0\xaa\xe6\x22\x3d\xa3\x49\xc7\x2d\xf1\x09\x15\x82\x6b\xe6\x52\x6e\x89\x73\x3b\xb1\x10\xef\x33\xfd\xf5\x67\x19\x25\x00\x4b\x6c\x5f\x3d\xbc\x21\x83\xa7\x40\xf9\x49\x26\xdf\xda\xe0\x15\x41\xc9\xe2\x65\x55\x37\xa9\xd0\x10\x2d\x17\xc2\xed\x97\x34\x0e\xc5\x26\x0d\x07\x3c\xd4\x9e\x52\x5d\xd3\x7e\x21\xb5\x57\x64\xef\xf4\xab\xe2\x84\xf2\xa7\x38\xfe\xb3\x2c\xc6\x97\x7f\x46\xb8\x15\x27\x59\x76\xbd\x62\x9c\xe1\x27\x05\xc2\x11\xa2\xe5\xc9\x0b\x98\x2a\xb6\x08\x4e\x73\xb5\x1d\x1b\xe5\x15\x5d\x28\x61\x84\x9f\x97\xec\x08\xad\x00\x14\x50\xd1\x27\x9f\x47\x22\x14\x88\x8e\xef\x03\xdd\xd4\xe1\xb4\xbb\x23\x48\x76\x85\xf5\xaa\xd6\x58\x4c\x67\xfa\x9c\x9b\x92\x1f\x4d\x76\x67\x79\x90\x7d\xe7\xd6\x1b\x3a\xba\x3b\x64\x58\x25\x13\x28\x79\xa0\x52\xd7\x1c\x57\x32\x92\xd2\x5b\x9f\xfb\xaa\xd6\x3f\x4b\xbe\xce\x7b\xf6\x35\xd1\x04\x61\x65\x38\x42\xf8\x88\x81\x19\xca\x49\x1a\x95\x46\x1c\x98\x0e\x44\xcb\x68\xd4\x18\x3f\xbd\xbb\xd9\xf4\xb9\x36\xc6\xc5\xce\x3f\x8d\x87\x68\xcd\x9d\x87\xa0\xe7\xea\x5d\xdb\x60\x84\x2e\xbb\x7e\xb7\xb8\x7e\x71\xdd\x78\x8a\xa5\xa7\xdd\xc7\xaa\x42\x67\x8d\xaa\xfe\xf8\x3e\x73\x0e\x74\x45\x77\x52\xc8\x70\x40\xf6\x0e\xb8\x09\xe8\x07\xdd\x90\x6f\x36\x78\x63\x44\x63\xdb\x32\x3d\xd8\xb0\x22\x9e\xc4\xe2\xba\x89\x58\x43\xf6\x48\xf8\x44\x3c\x05\x22\xa8\x36\xa6\x65\xd5\x74\xd5\x7d\x53\xde\x8d\x26\x68\x50\x2f\x0d\xfd\xb3\xa1\xc4\x2a\x03\x68\x32\x28\x90\xb9\xb2\x64\x47\x09\xda\x9c\xbc\x2d\xda\x51\x06\x4b\x40\xb5\xc5\x56\x75\xda\x30\x4c\x97\x0d\xe9\x2b\xbb\xa9\x23\x02\xd8\xbe\x0f\x0b\x05\xc1\x36\xa3\x8d\x7b\x05\x49\x07\xf9\x92\x83\x9f\xe6\xbb\xf6\x93\xa9\xe6\xa2\x17\x41\x93\x75\x08\x41\xf0\x82\xff\x04\xf9\xb0\x8b\x72\x89\xf2\x40\x74\xb2\xe2\x44\x33\x1c\xc7\xc0\x55\xc3\x5f\xfa\x0f\xe8\xfb\x92\x4b\x4c\xaf\x27\xb2\x63\x24\xd9\xfe\x12\x88\x3c\x13\x9f\xe0\xc5\xab\xaa\xb9\x93\xd1\x0d\xac\xf9\x16\xf7\x5f\xc3\xfc\x26\xeb\x42\xa8\xca\xfa\x52\xe4\xa9\x7f\xca\x45\xf2\xb0\x0e\xa4\x54\x43\xf5\xa6\xaf\x65\x21\x7a\x64\x07\x42\x9a\x68\x70\xa7\xc7\x79\xca\x1e\x32\x05\x80\x37\xe1\x24\xa0\xb7\xd8\x69\x74\x31\x8c\x0b\x89\x19\xf7\x02\xff\xbd\x99\x41\x00\xd7\x9c\x19\x23\xbe\xc3\xcb\x4b\x98\x09\xf1\xc7\xa7\x32\xff\x60\x44\x71\xd9\x33\xef\x56\x8e\x0f\xb1\xac\x9d\xcb\x1a\x82\x5e\x2e\x6e\xd0\xb1\xd1\xd4\x8e\xf0\x98\x5f\x7e\x0c\xef\x19\x41\x21\x72\x5c\xd9\x06\x13\xa4\x33\x14\x56\x87\x65\xd3\x31\xa1\x1b\xbc\xb3\x5f\x9d\xfd\x68\xf6\x23\x2a\x12\xe8\x7a\x44\x83\xc9\x8e\xc2\x8b\x93\x6a\x10\x14\x0f\xb9\x7a\x56\x65\xfa\x01\xf3\x2b\xba\xa6\xb7\xd4\x27\x7d\xbb\xc5\x31\x59\x53\xf2\x18\xd1\x00\x3e\x64\x1c\x81\x5d\x61\x41\xe5\x07\x04\x23\xba\x04\xed\x38\x0f\xd7\x21\xff\x52\xfd\x97\x8f\xeb\x7a\x6e\xa8\x5d\xe2\x55\x45\x52\x63\x8e\x4d\x66\x74\x9d\x93\x29\x74\xce\xca\xbd\x29\xe7\xa3\x06\x5a\x0d\x54\x13\xfd\x65\x8d\x5f\x53\x7c\x2d\x05\x4e\x00\x46\x65\x04\x50\xed\x5f\x2a\x66\xf6\x47\x68\x38\x60\xd5\x91\xb3\x67\xd2\xe4\x2d\x70\x7e\x6e\xf1\x5d\x90\xe5\xd4\x8e\x5d\xcc\xaa\x0a\x6e\x85\x1b\x4c\xcb\x8e\x9f\x08\x4e\x07\x13\x60\xd5\xa2\x19\x93\xbb\xe6\xe4\x2d\x07\x4a\xf6\xbc\x05\xcc\x95\x42\x5f\x03\x80\x02\x20\x47\x06\x07\x42\x26\x1e\x4e\x11\xc5\x89\xba\x21\x1c\xf2\x49\xf0\xe1\x34\x70\x79\x37\x38\x9b\xbf\xe6\x06\xba\x99\xb0\x16\x5d\xd1\xec\x19\xa9\xac\xa3\xbc\xa2\x38\x8e\xd9\x86\x32\x14\x4f\xf8\xf2\x3d\x0a\x32\x4f\xb8\x75\x7b\x17\xb8\x76\x5e\x55\xec\x4d\x75\xf9\x83\x47\xde\xf2\x69\x81\x23\xf8\xe5\x42\x2f\x84\xb4\x50\x40\x13\xbb\xc3\x9c\x31\x63\x04\x9d\x4b\x80\xb2\xe6\x49\x8f\x70\x4b\x76\x24\x50\xfe\xd0\x34\x4c\x60\xc5\xf5\xaf\x1f\xa2\xfe\x11\x96\x3b\x35\x9e\xaf\xe4\x11\xfb\x1c\x38\x36\x81\x3e\x90\x9f\x51\xf2\xa7\xa1\xd9\x70\xe9\xc4\xba\xae\xf3\xd0\x3e\x89\x37\xd4\xa5\x74\x1c\x2b\x92\x65\xc7\x00\x7c\x29\x6b\xeb\x9c\xf9\xde\xbd\xc5\xd1\x27\x56\xcd\x06\x55\x5d\x3c\x66\x0f\x47\x56\x82\x97\x29\x7b\x29\x72\x74\x36\x75\x00\x68\x76\xd4\x61\x69\xf9\xa5\xac\x03\xf2\x53\xea\x70\x76\xc8\x2c\x54\x48\x5f\x76\x0d\xa8\x36\xb4\xc8\x42\x04\xac\xaa\x28\x6a\xa4\xc1\x14\xd0\x62\x0b\x00\x5c\x9e\xf2\x92\x6d\xb4\x4f\xb0\x86\xcb\x0c\x26\x36\x71\x78\x82\xd5\xb1\x65\xd7\xa3\x8f\x0a\x35\xe9\x56\x43\x98\xd7\x46\xd2\x2b\xb9\x20\x93\xb7\x9c\xf5\x0b\xae\xef\xb7\x50\xe0\x8e\x0a\x72\x95\xdb\xc2\xa1\xa5\xb0\x86\x85\x52\x4c\x43\xf6\xf6\xe6\x93\xb2\x13\x99\x35\x5b\xc3\x24\xa6\xac\x74\x00\x64\x01\x23\x70\xec\x81\xf2\xd8\xe0\x4e\xf3\x5e\x1d\x86\xd2\x14\xad\xb9\xf7\x4e\x9a\xdf\x41\x96\xdf\x91\x49\xf0\x91\x7a\x4a\x0b\x08\xc1\x99\x8d\x24\x37\x7e\xd5\x43\x55\xf2\xb3\xc1\xa4\xfc\xe4\xa1\xf2\x84\x3f\x62\x52\x42\xa3\xcb\x11\x80\x01\x8f\x84\xa2\x16\x7e\xcc\x75\x99\x7f\x20\xa2\x54\x18\xe0\x07\x85\xe3\xb2\x66\x07\xb2\x15\x1b\x9a\x26\x86\x74\xe7\x72\x7b\xe5\x9a\xe6\xce\x6b\x79\x91\x3b\x12\x5f\xd3\x47\x98\xdd\x7c\x80\x5e\xea\x1c\xb3\x08\x57\x91\x92\x9f\x21\x35\xd5\x94\x61\xe4\x1a\x4e\x81\x7f\xd6\x8c\xff\xe6\x9c\x43\x84\x7c\x9c\x50\x00\xfb\x8c\x39\xc4\x81\xae\xf9\x81\x17\x08\x2a\xa6\xa4\x50\xd9\x90\xcf\x88\xde\xa5\xc8\xb1\xe5\xf7\xa1\xfd\x57\x41\xaa\x7f\x7f\xfe\x31\x8d\xa0\x33\x35\xef\x9d\x67\x68\xcd\x83\x68\xcb\x85\x3a\xcb\xd5\x61\xa3\x0c\x0e\xe8\x38\xac\xe9\xc3\x9e\x6c\xda\xbb\x3f\x99\x1e\x33\x63\xe4\x23\x3b\x73\x2c\xf1\x19\xde\x27\x2d\xcc\x3f\x6f\xf2\x9c\x26\xfb\x98\x25\x54\xc9\x53\x04\x52\xdf\xac\x4c\xc4\x09\x67\x07\x1e\x9f\x51\xab\x7d\xba\x9f\x13\x90\xe1\xf9\x96\xcc\x63\x3d\x2f\x1c\x34\xf0\x65\x17\x00\x5a\x33\x54\x9a\x90\xb9\xfe\x6b\x0e\x99\x29\x3b\xbc\x23\xf0\x98\x22\x46\x97\x22\xc3\x80\x64\xce\xe2\xc3\x0a\xcf\xf0\x3e\x6c\x24\xfd\x1f\x8f\x29\x6e\x25\x3f\x54\x08\xb6\xe8\xeb\x52\xa5\x6f\x3c\xf0\x8e\x5e\xa9\x31\xbe\x78\x16\x17\x08\x09\xec\x01\x12\xa9\x00\xdf\xca\x37\x2d\x47\xf0\x47\xbf\xa4\xda\x22\x5d\x8d\x03\x84\x07\x0c\x97\xf6\xe5\x59\xc9\xd5\xf3\xae\x70\xe5\x42\x96\x8b\x41\x03\x14\x18\xa1\xf6\x17\x39\x0f\x51\x5a\x32\x55\x11\x40\x7e\xdc\x32\x1c\xd6\x23\x4c\xd0\x25\x81\x74\xa0\x97\x18\x74\x6e\x62\x54\x25\x5d\x30\xe7\x27\xfb\xc6\x41\x3a\x9f\xa3\xc6\x67\x43\x86\xd4\xb9\x8f\xce\x33\xb5\xf6\xb3\xc0\x6f\x4a\x10\xa7\x4f\xfe\x08\x45\x0a\xc7\x25\x2d\xc1\xf2\x8a\xce\x68\x12\x1f\xdb\x17\x38\x54\xe0\xfd\xc7\xe0\x1f\x0c\x50\x38\xe4\xe8\x12\xe0\xb5\x82\xdb\xf4\x1e\xea\x26\x37\xb8\x60\x8f\x0f\x97\x55\xdc\x8b\x11\xfd\x6f\x1e\x6d\x21\xb2\x6f\x21\xbc\x7b\x02\x6c\xb4\x45\x71\x45\x03\x5e\xa6\xfd\xa2\xc6\xa3\xd2\xc6\xbd\xd2\xda\xbd\xc2\x95\xc3\x9c\xf2\x7e\x91\xfe\x69\xca\xe4\xb1\xcf\x6f\x98\x97\x86\xd2\x15\x53\x16\x5f\x9a\xc0\x8b\x96\xd1\x37\xba\x44\xa3\x82\x0e\x53\x23\xf1\xca\xd8\xa9\xd1\xad\xdf\x2c\x13\xf4\x41\xd5\x9d\x57\xa3\x8b\xff\x1d\x80\x96\x19\xee\xdc\xfb\x38\x2f\xff\xf9\x6e\x07\x2a\x64\x1b\x36\x3c\xef\xdf\x56\x0d\xb8\x48\x45\x7b\xb5\x1a\xb0\x2a\x87\x29\xf8\xd7\xa2\xea\xef\x53\x44\x2d\x15\xfd\xa9\x54\x8b\x9d\x4a\xdb\xfb\x75\x2f\x2c\x51\x8f\x97\xd9\x88\x4b\xde\x94\x98\x95\xff\x97\x23\xe2\x68\xe1\x0f\xd2\x44\x43\x52\x7c\x95\x2a\x24\x09\xdb\x97\xd9\x3f\x4e\x60\x7a\x74\x6c\xa9\xd1\x53\xb6\xd9\x42\xe3\x7d\xa7\xc1\xde\x42\xa1\x14\x2f\x87\x20\x1c\x56\x15\x59\x9f\x2e\x0e\xc5\x87\x34\x6d\xa5\xec\x49\xd8\x9c\x2e\xe2\x33\x29\xb2\xa0\x35\x64\xce\xad\x89\xfa\x23\x99\x64\x4f\x25\x2f\x38\x37\x15\xf8\xd7\x80\x77\xa1\x81\xba\x4e\x52\xa9\x59\x53\x69\xd9\xd3\xc8\x44\xb3\x82\x26\xdc\x74\x5c\x56\xa2\x24\xc3\x99\x6c\xb0\x43\x68\x7c\x5f\x34\x9d\x1e\x07\x1c\xea\xdb\x27\x62\x50\xc2\x70\x58\x56\x67\x1a\xc4\x24\xf4\x27\x3e\x05\xbe\xf0\x2a\xae\xf5\x08\x2f\xd0\x1a\xca\xc8\x2e\xad\x4e\x66\x48\xf9\xcd\x87\x05\x27\x30\x90\xe2\x2d\x30\xcc\xdc\x22\x24\xb8\x71\x99\xe2\xc5\x12\xee\x59\x54\x55\x33\x55\x55\xe4\x98\x52\x0a\xa4\x9b\x68\x83\xb1\x46\xb4\x58\x34\x07\x2a\x6b\xfe\x1a\x4d\xe0\xc3\xd8\xea\x48\xc0\xfb\xee\xd2\x83\xff\x8c\x17\x5d\x45\x44\xd9\x74\xff\x0e\x05\x48\x91\x7f\xdf\x73\x3a\x36\x3d\x57\xaf\x6d\xe2\xfb\xb0\xe1\xf9\x8f\xff\x0b\x18\x9b\xb3\x16\xe0\x9a\x55\xd6\xa6\x71\xba\x02\x57\x58\xf8\xad\x03\x29\xbd\xd0\xa5\xbd\xd4\xa5\x11\xd4\xbc\xbd\xf5\xa2\x3a\x52\xd0\x0a\x8b\xf0\x5b\xc4\x5f\x20\x36\x76\x28\xfe\xab\xfa\xb2\x27\xfc\xcf\xf1\x84\xc1\x90\x00\x95\x07\xea\x86\xc5\xf7\x79\xb7\x10\x00\xb8\x80\x24\x48\x78\x99\x26\x1f\x63\x1b\x6d\x44\x61\x48\x5c\xe3\xd9\x55\xc5\x32\x6a\xe3\x23\x46\xc7\xdc\x06\xef\x5c\x8b\x31\x6e\xf1\x2e\xc9\x7c\x33\x23\xd0\xa1\xd9\x90\xc1\x47\xfe\xdf\xe3\x37\xfe\x6f\x48\xc2\x40\x74\x72\xff\xf2\x32\xe4\xec\x83\x22\x0c\x7e\x8d\xea\x9e\x1b\x41\x09\x81\xe8\x24\xf4\x67\x9d\xc5\xdf\xf8\x2a\xdf\x35\xdd\x98\x6f\x10\x61\xb3\x19\xe8\x7b\xe1\x95\x45\xb4\x4a\x7c\x14\x91\x88\x3a\x56\xd7\xe7\xdf\x6c\x91\x34\x50\x59\x53\x5c\xe8\x23\xf7\x22\xa5\x39\xba\x76\x88\x9f\x03\x8b\x98\x2f\xe5\x49\xcf\xaf\x26\x69\x9f\x86\x93\x70\xd9\x52\x20\xea\x83\x17\xb2\x39\x2e\xd1\x27\xbe\x73\x5f\xdc\x22\xae\xd8\x11\x7e\x8b\x24\x23\x08\xe7\xb8\x3f\x97\xfc\xd8\xea\xcf\xa3\x4e\x35\x66\x40\x45\x14\x26\xe5\x3d\x68\xe2\x0b\xe0\x65\xa9\x4b\xeb\xa5\x5d\xc9\x8e\x24\x56\xa8\xf5\xae\xbc\x96\x08\x86\x6e\x06\x9d\xee\x61\x1f\x59\x7b\xa9\x57\xe5\xe8\xbc\x67\x70\x9f\x03\x21\x69\x62\x1c\x1b\xf2\x87\x93\xe4\xf2\x5e\xe4\x86\xea\x52\x03\x4e\x39\xdf\x66\x07\x82\x8b\xe7\x4e\x54\x41\xb0\xa4\xc4\x19\x13\xfd\x2f\xa5\x95\x85\x7a\x66\xa2\xd0\xa7\x78\x56\xe7\x19\xd4\xb0\x52\xdc\x82\x15\x96\x64\x93\xd9\xfe\xed\xc1\x49\xf2\xf3\x8f\x25\x76\xe0\x25\x10\x3e\x07\xa2\x9a\x52\xb9\x7a\x85\x8f\x2c\xda\x43\x2c\x5c\x56\xe2\x24\x49\x8a\x07\x94\xfa\xb1\x32\x7f\x96\x49\x9a\xa0\xc7\x0f\xfe\x82\x2e\xfb\xf4\xef\x7b\x4a\xfe\x0e\x0f\xd9\x6c\x7c\xad\x69\x20\x2a\x41\xc8\xe2\xec\x92\xe8\x87\xc9\x9a\x18\x5b\x86\x57\x30\xef\x55\x22\x02\xec\xb9\xef\xf5\x07\x9f\x43\xe9\x50\xc9\x99\x05\xdc\x09\x66\x07\xfd\x50\xc4\xaa\x96\xd7\x87\x61\xeb\x46\x8c\x4b\x9f\x58\x2c\x95\x13\x85\x89\x53\xb4\x0c\x74\x0b\xe9\x86\x5e\xc0\x03\xcd\xf0\xe2\x4d\x6e\xdd\xdb\xbf\xfe\xbc\x14\x51\x25\x00\x89\xe3\x88\x33\xa1\x24\x21\xa2\x91\x0a\x14\xd7\xe6\xa7\xc5\x56\xfa\xcb\x47\x9a\x26\x98\x9e\x50\xe9\xdd\x8b\xcd\x27\xbc\x0c\xc9\x89\xa6\xe1\x3e\x51\x58\x23\x6a\x5e\x5a\xbf\xbb\x9a\x81\xa8\x27\xd3\x57\xa7\x0e\xba\x10\x6c\x64\x79\x67\xcf\x91\x4d\xaa\x48\x30\x24\x3e\x6d\x79\xb4\x6d\x6e\x05\xd3\xfc\x9c\xcb\xee\x85\xba\xe7\x6a\xca\xb0\x9f\x27\x76\x5d\xd5\xd9\x25\xfa\xbe\x64\xb9\x7b\xa6\x0b\x40\x7f\x15\x9b\xbb\x9a\xfe\xe5\x88\x35\x7d\x9f\xf3\xec\x12\x4b\x38\x15\x57\x4f\xc9\x99\x8c\x38\x40\xeb\xce\xc3\xff\x70\x30\x2f\x49\x3d\xb4\x5f\x73\x87\x71\x27\x0e\x45\x4c\x92\x7d\x5a\x50\x93\xd3\x0a\x1e\x74\x41\x93\x99\xc0\x98\xf0\xbe\x6b\x82\x77\xce\x13\x25\x9b\x86\xc0\xc8\xa3\x9c\x16\x62\xef\x56\x79\xa4\xf3\xe7\xc5\x9b\x23\xce\x86\x0f\xbf\x09\x44\xae\x80\x89\x54\xdf\x1d\x31\x9a\x18\xf9\x4b\x2a\x09\x5a\x40\xa1\x21\xff\x69\xbc\x2f\x5a\xbe\xc0\xac\xe2\x48\x26\xbb\x54\x46\xdd\x8d\x91\x5a\x1b\x23\x8a\x53\x6c\x4c\x79\xf1\x10\x3d\x28\x8e\x9f\xca\x81\x9a\xf5\x7a\xa1\x07\x27\xb5\xb9\xee\xb4\xa4\xe1\xa4\xbc\xba\xa9\x73\xe0\x39\x45\x9f\x32\xff\x98\x4e\x62\xc7\x6c\x22\xef\x57\x12\x7a\x9a\x4b\x7e\x2e\x74\x6c\x30\x4e\x16\x87\x88\xe4\x6a\x5b\x10\xf4\xb9\xc0\x80\x59\x3b\x86\xf9\x82\x27\xea\x3d\xbf\xf9\x57\xf3\x08\x59\xce\x2a\x26\xdf\x27\xef\x57\xe2\x92\x86\xdb\x85\x90\xec\x34\x60\x94\xc9\x71\x91\xb0\x3f\x67\xf5\x35\xf7\x9f\xe8\x76\x4d\xa5\xd3\xe5\x15\x3a\x98\x74\x46\x03\xfe\x27\x16\x69\x6b\x56\xe0\x86\x51\xa1\x61\x7a\x35\xce\x7b\x1f\x86\x28\x4d\x0c\x03\x2a\xdd\x4e\x1b\x50\x53\x40\x9f\x18\xd2\xf0\x02\x46\xe7\xa0\x3b\x69\xae\xdc\xb0\xe8\x9f\x0f\x5b\x91\xb6\xab\xfa\x8e\x28\xbf\xd1\x68\x7d\xd9\x80\x57\x4b\xc3\xf9\x04\xd3\x55\x94\x60\x3b\x7c\x07\xc2\x8c\x9f\x07\x2a\x94\xd7\xe9\xf6\x42\xb0\xbc\x24\xf9\x44\xc7\xae\xba\xc7\x00\xe8\xa6\x0d\x73\xcf\x2b\xdc\xaa\xbc\xb2\x0c\xee\x8e\x7d\x53\xa8\xdb\x5b\x64\xe3\x20\xc9\x91\xf4\x8a\x34\x58\xfd\xb1\x4c\x2d\x1d\x0e\x3a\xa6\x89\x39\x92\x09\x80\xdd\xb1\x00\x02\xb4\xeb\x0f\xea\x3b\x6a\xe0\xc1\x83\x8f\xcd\xbf\x36\x70\xad\xeb\xda\x2e\x4b\xa7\x67\x47\x76\x9b\xd6\xb3\xf4\x44\x75\x8c\x24\xcf\xb6\x0e\x3a\xaf\x25\x92\x15\x67\xc9\x31\x6d\xac\x23\xd4\x99\x38\xbb\x54\xf9\xc7\x98\xb4\xf1\x28\x4d\xb4\xe6\xf4\xb1\x64\x53\x14\xd5\x93\xe2\xa4\x5d\x10\xe1\xa5\x15\x2e\xb9\xf3\xa6\x12\x74\x71\xfd\x59\x17\x6d\xa8\xf2\xc6\xe6\xf3\x0c\x26\xe8\x6f\x79\x41\xa5\x75\x76\x4f\xd6\xb6\x76\xa7\x2d\x07\x09\xc2\x1b\x2c\xad\xd5\x9a\x29\xd4\xda\xc8\xf2\xd5\x27\x69\x84\x4a\x94\xed\xb1\x45\x50\xd1\xd7\x75\x5c\x1e\xa7\x81\xdd\x7d\xdb\x3f\x2e\xee\x35\x63\x9f\xa7\xed\xfe\x49\x24\x0d\xc0\x03\x0a\x65\x38\x6d\x48\x57\x05\x52\x1e\xe3\x96\x47\x96\xde\x0e\xb7\xcf\xb1\xc4\x76\x54\x19\xf2\xe0\x6a\x48\xb1\x7f\x71\x70\x01\x77\x8f\xd2\x95\xeb\x4a\xec\x60\x65\x35\xcc\x97\xc9\x31\x65\x8c\x54\x42\x00\x25\x13\x16\x26\x42\x5f\xd9\x0c\x4c\xb6\x03\x58\x52\xe7\x15\x3b\xb2\x35\x24\x0a\x63\x5f\xfe\xe9\xc4\x24\x50\x4a\xd1\x90\xa0\x31\x88\x8f\x1e\x58\x96\x6c\x44\xc4\x9f\xbf\xfe\x7e\x9d\xbe\xb3\x32\xff\x87\x1a\xb0\xee\xd9\x82\x18\x48\xc3\x9f\x56\xcf\x6f\xa2\xd3\xc5\x11\x9b\x85\x2e\x80\xdf\x4d\x40\x45\x14\x90\x25\xf8\xde\x0c\x31\x31\x63\xf4\x3e\x68\x67\xde\x31\x6c\x77\xd5\xac\xc6\x12\x85\x46\x67\xf0\x97\xec\x87\x24\x70\xf6\xf7\xad\x67\x95\xb9\x8b\x6a\x85\x96\xfc\x8c\x54\xb7\x9e\x7f\xec\xe2\xc2\x85\xf7\x23\x2c\xde\x99\x71\xbc\x8c\x86\x8e\xf5\x6e\x79\xb2\x26\xd8\x9c\x3a\x32\x98\xc7\x40\x6b\x4c\xb5\xda\x2d\x1d\x03\xd6\xce\xbd\x15\x65\x48\xaa\x8d\x00\xae\xdd\x24\x15\xea\x4e\x5d\xb5\xfa\xa0\x6a\xeb\x5d\xd8\xd0\x52\x74\xd1\x91\x5c\x60\x07\x74\x86\x32\x7d\xda\xb2\xc5\x58\x95\xe5\x8a\x4b\xe2\x62\x8f\x48\xad\xbb\x15\xde\x33\xdf\x30\x65\x44\x0d\xba\x1d\xd4\x15\x24\x39\xab\xd1\x89\xa1\x9c\xbe\x32\x38\x46\xc8\x3b\xa0\x54\xee\x5a\x3e\x09\xb8\x26\x17\xcb\xa2\x6c\x41\x8e\xc8\xff\x98\x2f\xb0\x33\x5a\x56\x27\x3c\xa1\x2c\x98\xd4\xee\x9d\x8c\x62\x28\x35\x7c\xcd\xd0\x17\x04\x39\xae\xb8\x3a\xd1\xd2\xb8\x17\xbc\x10\x35\x7c\xf8\x94\x1a\xce\xa9\xea\x32\xd1\x00\x2e\x1c\xc1\x50\x1d\x41\x6d\xf2\x23\xda\x86\xf6\xcb\x56\x54\x0f\x00\x81\x87\x54\xd3\x72\x07\xc1\x6a\x78\x34\xdb\x26\x09\x8f\x2c\xe0\x89\x6f\x2a\x37\x47\xe7\x8c\x63\x4c\x52\x58\x9d\xab\x73\x16\x44\x8d\xae\x6e\x5f\xb1\x44\x0f\x1c\x42\x3e\x9d\x05\x68\xee\xd1\xbb\x9a\xe0\x13\x39\x23\x9d\xd3\x89\x03\x2f\x34\x31\x91\xd9\xa5\x4e\xc1\x46\x88\x3c\x4e\x1d\xa6\x8b\xb2\xaa\x5f\x43\xea\xba\x07\xc1\xb6\x76\x18\x9c\x30\x1b\xbf\x02\x00\xac\x28\x58\x84\xd1\x43\x77\x82\x4e\x22\x2c\x9d\x3f\x11\x97\x19\xca\x8c\x39\x36\x54\x0e\x4f\x3c\xbe\x75\xdc\xc9\x12\xb5\x50\x61\xbd\x55\xf1\x08\x31\x97\x8b\x7b\xac\x30\x97\x5b\xb1\xcc\x1c\x29\x79\x66\xec\x1b\x2b\x3a\xfd\x33\xd2\x31\x79\x62\xb7\x16\xfb\xb1\x5e\x35\xa7\xe1\xd0\xb8\xfc\xcf\x77\x80\x60\xad\x85\xed\x58\xfd\xe1\xdf\x3b\xa9\x78\x64\x6a\x66\xf4\x94\x51\x91\x4d\x77\x5d\x56\xb5\xc1\xca\xa9\x17\x1b\xdb\xb1\x46\xbe\x75\xa6\x86\xc2\xa5\x67\x8f\x63\xbe\x24\x2a\x22\x9c\x57\xbd\xcb\x8b\xdb\xd0\xdc\xf7\xf2\x31\x0d\x78\x8f\x31\x2b\xbf\x99\x2b\xcc\x29\x07\xca\x8f\xb4\xd1\x5c\xe7\xc1\xf2\x23\xa0\xc2\x8a\x50\x32\x98\x68\xe2\xc6\x77\x78\x02\x01\xcd\x7c\xef\x3d\x8d\x68\xaf\x92\x60\x08\x40\x2c\x52\xfa\x8b\x69\x24\x35\x04\x4e\xf4\x45\x5e\x5c\xe2\x90\x63\x14\xaa\x25\xd2\x50\x6c\xaf\xa9\xdd\x92\x15\x8e\x97\x9f\x99\xad\xc4\xb9\xc7\xa3\x32\xd6\x53\x60\x6a\x1f\x90\xd1\xc6\x98\x7d\xd7\x2d\x93\x7a\xbd\xfc\x82\x3f\x8f\xe2\xf8\x7b\x48\xd2\xeb\x87\xdc\x8c\xe2\xe4\x5d\x91\x06\xe5\x11\x66\x30\x0c\x7c\x99\x2e\x55\x8b\x95\x9c\x69\x2c\x72\xfb\x75\x70\xdd\x5e\x67\xcc\x9d\xfd\x33\x06\x1a\x88\x68\xc2\xe4\xe1\xf4\x8a\x66\x33\x2c\x2d\x26\xc4\xd9\x2e\xe7\x7b\x18\xf0\x4b\xa5\x28\xd9\xdf\xd4\xad\x0c\x5c\xf1\xb1\xc2\x5c\x39\x00\xdc\x47\xa0\x08\xaf\x91\xdc\xd0\x19\xd6\x05\xc5\xa8\xea\xeb\x40\xfd\xf2\xc3\xa5\xa4\x0f\x44\xcf\x87\xcf\x3b\x35\xa5\x8a\xbd\xe9\x38\x1c\xd6\x56\x9e\xc0\x55\x8c\x24\xbf\xa3\x00\x9c\xc2\xc4\x03\x21\x83\x0e\xcc\xc3\x75\x25\x4e\x74\x1f\x4f\xd1\xbd\x00\x11\xbe\xc7\x6f\x3b\x10\xe2\xbd\x18\xc1\xb9\x2e\x62\x6e\xb2\x79\x8d\x11\x9e\x01\x93\xb6\x19\x41\xe4\x54\xee\x3c\x8c\x86\x42\xf6\x16\x58\x11\x15\x93\xc6\x31\xda\x5b\x28\x5a\x47\xd1\x91\x17\x3e\x79\x2e\x97\x24\x99\x48\x0c\x31\x84\xe7\xda\x88\x38\xe0\xc4\x2f\x2b\x4e\xd8\x7c\x0c\xec\x9b\xc0\x3c\xe4\x1f\xb6\xba\x64\xf8\x0b\xd1\x1b\xd3\x19\x0d\x07\x2f\x84\xc0\x8a\x19\x64\x6a\x8d\xbb\xcf\xbd\xc4\x75\x4f\xb6\x7b\x7a\x8d\xc0\x79\xa0\xba\xf0\xc7\xce\x99\x04\x50\xe4\x2e\x83\x07\x30\x45\xd8\xd4\xf6\xc3\xb8\xac\x69\x75\x91\x80\x48\x19\xdc\x02\x11\x15\xbc\xb2\x2c\x03\xae\x15\x25\x31\x56\x41\x7b\xa9\x45\x0e\x64\xc9\xf3\xd8\x96\x26\x9d\x43\xdd\x09\x90\x14\xb2\xab\x97\x66\xa7\x90\x7d\x12\x16\x53\xf1\x7d\x35\x6e\xbe\x78\xfe\xe7\xa1\x44\x2e\x03\x1f\xe8\x2c\xc9\xdd\x63\x6c\xd1\x5b\x20\xda\xf3\x03\xc9\x69\x80\x03\xce\xa3\x40\x9c\x17\xb1\xc2\xcd\x6b\x52\x88\x83\x47\xe8\x2d\x3d\xa6\x62\xef\xde\xb5\x56\xe0\x20\x80\x13\x82\x2e\x5b\xc1\xa4\x54\x4a\xe2\x9b\x4d\x78\xcf\xf3\xdd\x35\xee\x3e\x5a\xe9\x56\xd6\x61\x83\x09\x4c\xe5\xea\x7f\x05\xbf\xec\x2f\x17\xf9\xe6\x46\xf9\x1c\x5a\x88\x3f\xaf\xb9\xf4\x6f\x51\x5e\x8a\xcf\xb0\x56\xe4\x6e\x6a\xb0\x6f\xda\xdb\xfc\x7a\xef\xc3\x6f\x12\x21\x83\xcc\x80\xdc\x4e\x1e\xb6\x04\x71\x20\x3a\x8f\x3e\xa7\xdf\xc3\x3f\x3f\xf1\x7b\x66\x2a\xc3\x7e\xf3\x91\x9a\x1e\x17\xcb\xd5\xca\xae\x0f\x46\x32\xf8\x90\x21\xd5\x94\x3f\x95\xe9\xe1\x3d\x11\xb8\xb5\x3f\x8f\x92\x13\x8f\x4e\x6f\xc8\x60\x53\x1f\xbc\x86\x39\x06\x38\x52\x6e\x3d\x92\x2d\x5f\x43\xd6\xdf\xdf\x67\x57\x11\x18\xed\x43\xb8\x4d\x1b\x4c\xe8\x57\x45\x89\x8e\xed\x3f\x33\x96\x35\xe8\x46\xa9\x6d\xec\x29\x3d\xdc\x02\x43\x74\x97\xda\xd7\xfc\xa0\x58\x88\xec\xef\xa1\x2d\xb5\x0d\xbf\x1f\x0f\x1c\xec\x82\xc8\xfc\x42\x8d\x11\xc9\x3f\x18\xa4\xe3\x65\x44\x06\x3a\x6c\xf0\x9e\x04\x58\x63\x4b\x4c\x80\x93\x65\xc6\x48\x3a\xf0\xa0\x3f\xbe\x0f\xfb\xc5\x07\x9e\x96\x84\x2d\xb1\x06\xd2\x9e\x74\xc7\xb2\x48\xe0\x96\x04\x5a\x6a\x2b\x36\x7b\x36\xbe\xe0\x03\x15\xbc\x3f\xf1\x07\x88\x2e\xc3\x97\xfc\xcd\x0b\xaa\xea\xa8\x82\xc5\x5e\x73\x4b\xb7\xe2\x4c\x72\xa4\xa0\x9f\xf9\x09\x63\xc9\x44\x42\x35\xfe\x1f\x7b\xdf\xad\x73\x31\x8f\x6d\xd7\xdf\xc7\x70\x67\xa8\x50\x4e\x30\x5c\x48\xe7\x28\xe7\x1c\x3a\xe5\x9c\xb3\x00\xbf\xbb\x71\xbe\x01\x8c\x7f\xdc\xdd\x7e\x08\xa8\x10\x41\x70\x8b\xe4\x02\xf7\x5e\x14\xc9\xf5\x26\xba\xdc\x51\x74\xb4\x9f\x00\x48\x5c\xd4\xa4\x08\xc8\x17\x58\xb4\x44\x17\x08\x3a\x3b\x8b\x95\x99\x22\x13\x43\x7b\xcd\x0c\x77\xb2\x10\x8c\xc0\xad\xe9\x0d\xe8\xbd\x43\xe4\xfd\xe4\x08\xb5\xf1\xa8\x3e\xd3\xa4\xe8\x6d\x8c\x5c\x50\x42\x6a\x69\x9d\xc9\x8a\xd3\x2d\xcb\xba\xd0\xa2\x44\x4c\xa5\x8a\xa7\x31\x9a\xcb\xd7\x9d\xd0\x69\x06\x94\xfa\x36\xbc\x7e\x8b\x6d\x8f\xe4\x8f\x31\x82\x25\x7c\xfd\x63\xa3\x0b\x07\x19\x35\x61\x74\xb3\x6a\xef\x00\x18\x09\x48\x05\x45\xa5\x1d\x20\x6f\x70\x97\xa7\xd8\x02\x44\xa1\x8d\xbe\x50\xe5\xe1\x0b\x80\xe7\x89\x12\xdb\xa1\x27\xbd\x1c\xf8\xa3\x3b\x61\x74\x01\x96\x27\x61\x73\xb4\x49\xe6\x00\xbd\x26\xc1\x6e\x9f\x62\xc2\x5b\xc4\x97\x46\x48\x7d\x85\x09\x7c\x82\x13\x30\x51\xed\x22\x1c\xf1\xc8\xe3\xd8\xd7\xec\xaf\xa3\x34\x46\x84\x1e\x53\x2c\x13\x28\xe3\x84\xe8\xd2\x3b\x6b\x2c\x77\x4b\x9e\x71\x39\xdc\xc0\x29\x20\x6b\x01\xd1\x19\x96\x64\x94\x71\xd0\x68\xc7\x2e\xaa\x79\xf3\xc3\xff\x9a\xb5\xcf\x10\x19\x7c\x9f\x15\xca\x5d\x4d\xfd\x60\x07\xb9\x19\xe2\x17\x0c\x49\x1c\xbd\x80\x92\x46\x04\x3a\x9c\x89\xa2\x07\xe9\x5e\x5c\x21\x52\x17\xd5\x23\xcc\x7f\x84\x6e\x49\x9a\x89\xd0\x54\xe0\x28\xa2\x73\x48\xe8\x64\xa7\xee\x8e\x16\xda\x33\x82\xe4\xa7\x9e\x12\x91\xe4\x18\xaa\x8d\x00\x1d\x7d\xb2\x9e\xb7\x3d\x4f\x7a\xd4\x72\x22\x8c\x5a\x1b\x5b\xb9\x07\x92\xc5\xf7\xeb\x2a\x5e\x1f\x80\xb5\x94\xaf\x6f\x19\x27\x0b\x5a\x99\xc4\x46\x67\x59\xa4\xe5\x8e\x72\x7c\x5f\x75\xc6\x11\x7e\x91\xeb\x73\x4d\x8a\x3b\x63\x18\x17\x5e\xf5\xa2\x3e\x94\xa8\xa0\xfb\x4c\x13\x61\xc8\x24\x44\x51\x5d\x71\x34\xd4\xd3\x63\xda\x6b\x61\x47\xb9\x19\x9e\xc3\x2a\x2d\xca\xa7\x1d\x4e\x88\x5c\x8b\x52\x2d\x0f\xd4\xef\x2f\xd5\xf3\x79\xbb\x30\xe9\x9b\x48\xc6\x19\x30\x46\x64\x85\xc5\xf6\x42\x52\x7d\x95\x1f\x85\x4a\xbc\x5e\xb6\xbf\xec\x45\x16\x47\x88\x90\xf3\x12\x0b\xe3\xb2\x47\x8e\xd7\xcf\x8f\xfe\xf9\xd3\x27\x9b\xa5\x68\x41\x9b\xa8\x07\xc2\xc6\x8c\x36\x07\x06\xb0\xab\x30\x83\x30\xf1\xcd\x57\x73\xe2\xee\x4a\xc7\x3b\x4b\x3f\x8f\x6f\xc3\x0f\x90\x6d\x1e\xc3\x13\x0f\x17\x47\x8c\xff\xe0\x71\x79\xa0\x93\x9f\x45\x1f\x82\x3c\x94\x61\xf5\x37\x62\x0b\x51\x3a\xf6\xf1\x02\x6d\x2b\x10\x84\x80\x92\x68\xcd\x38\xda\x08\xaa\xc8\x0c\xe1\x0b\x9e\x86\x48\x38\xe3\x1c\x43\x78\x59\xa4\x0a\x9e\xed\x18\x40\x54\x7f\x24\x32\x44\x69\xd0\x6e\x68\xac\xf7\x28\xa7\x71\x2c\x4a\x35\x5e\xec\xc7\x13\x09\xf0\xbc\x9b\x04\x82\xf6\xd4\xa2\x4e\xf7\x16\x8b\x71\x55\x9e\x3c\x91\xa0\x35\xa6\x09\x3a\x65\x32\x4c\x90\x18\xf0\x98\x16\xa5\xdd\x40\x43\x47\x0b\x64\x71\x9d\x51\xed\x29\x49\x47\xca\x91\x04\xea\xd2\x1c\xab\x87\xe2\x78\x3b\x0a\xa6\xbd\xa7\x59\x0c\x14\x13\xfa\x38\xc6\xe8\x58\x1d\x0c\x28\xcc\x38\xf0\x7a\xbe\x7e\x43\x9b\xb3\xb9\x6c\x0b\xd4\x5b\x50\xef\x50\x4e\x37\x68\x56\x9c\xee\x08\xd4\xc0\x77\xe9\x09\xa4\x40\xf3\xc2\x37\x24\x01\x9b\x08\x08\xf1\x1b\xd8\x08\xea\xc3\x36\x78\xb4\xc5\x67\xf1\x81\x48\x07\xda\x59\x53\x6c\x7b\x84\x2c\x3a\xc8\xf0\x2f\x65\x5e\x94\x4a\xcb\xea\xb3\x23\x0b\xf3\x85\x1d\x07\x0e\x29\xc7\xa3\x42\xde\x4c\x09\x2a\xd6\x90\xb2\x39\xbc\xd7\x9a\xb0\x5a\xdc\x9e\x4e\x5b\x52\x02\x28\xf7\x2f\xcf\x29\x8f\x14\x63\x7f\x7b\xc4\xf6\xe1\x8d\x78\xf6\xf2\x5a\x5e\x94\x0d\x85\x75\x8e\x70\x3d\x82\x67\xbd\x23\x6d\x76\xec\xce\xe5\xe9\x67\x77\x4a\xa1\x51\x47\x2a\xac\x5f\x7c\x83\x72\x6d\x74\xa7\x16\xbc\x6f\xcb\x13\x59\x20\xfb\x32\x9d\xf2\xad\xaa\x49\xfa\xe8\x0a\x54\xc2\x8a\xcc\x7f\x60\x1a\x3c\x29\x3c\x3f\x1a\xc6\x7b\x79\xdf\xf5\x50\xf3\xbd\x37\xd8\x65\x9c\xcc\xe5\x6e\xc9\xfe\x86\x30\x5d\x7a\xf4\xb9\x52\xe2\x41\x6e\x75\xef\xec\x69\x61\x86\xbb\x21\xb6\x00\xdb\xbb\xf3\x36\x2d\xc9\xf0\xe3\x01\xc5\x92\x19\xa2\x53\x01\x6a\x9f\x1f\x03\xcc\xf3\x76\x16\xf8\x0f\x5c\x1a\xa3\x3b\xb8\xc3\xbc\x28\xf4\x99\xf9\xda\x6b\xbc\x60\xa5\x09\x34\x7b\x5a\x27\x2c\xb4\xf6\xf1\x6e\xac\x52\x8c\x29\xbd\x5c\x9a\x3b\x11\x41\x85\xad\x3b\x1e\xe4\x68\x26\xf3\x0d\xdd\xa0\x51\xca\x73\x52\xdb\x43\x98\xf1\x9d\x3d\xa2\xec\x32\x71\x31\xda\x89\x34\x7a\x61\x74\xd9\xb5\xd2\x3a\xd9\x5c\xdf\x8c\x34\xcc\xb1\x44\x52\xa3\xe5\x9d\xc7\xeb\xe5\x52\xbe\xce\x7c\x4d\x90\xce\x10\xbf\xf7\x46\xa4\x72\x05\x71\x73\xea\x94\xe8\x9d\x85\x30\x0d\xd2\xfb\x85\x3f\x66\xd5\x7d\x13\x5d\x04\x1c\xab\xf7\x4e\x07\x00\x66\xda\x55\x25\xfe\x48\x77\x02\xa3\xb2\xd2\x40\x51\xfd\xc9\x6a\x46\x01\x0a\xb7\xc3\x55\xbb\x82\x32\x55\x60\xab\xf4\xc9\xa8\x81\xaf\x23\x7f\xf5\x17\x44\x29\xd8\xf6\x96\x50\x7a\x8b\x05\x07\x8a\xcd\xee\x31\xc8\xa3\x44\x40\x59\x95\x66\x31\x3b\x42\x88\x94\xbf\x2d\x06\xa4\xe6\x28\x68\x2b\xce\x77\x3e\x7f\xff\xfc\x63\x05\x95\x46\x22\xe3\x14\x90\x48\xec\xb0\x51\x65\xa9\x42\xaf\x31\xba\xee\x8d\x81\xfd\x06\xf8\x93\x9a\x20\x7b\x63\xd0\xa6\x8c\x92\x34\xc7\x27\x4c\x33\xc8\x85\x59\x5f\x0f\x91\xea\xbf\xe8\xff\xc3\xf8\x84\xa4\x02\x9f\x06\x29\xdf\x0d\x29\x4d\xab\xa1\x8b\x63\x3c\xc7\x6f\x9f\xd0\x43\x3c\xc4\x74\xf1\xfa\x0b\x54\x9c\xe3\x91\x0e\xf8\x28\x3b\xb4\xc3\xb3\x57\x44\x35\xd2\x61\xd7\xea\x3a\x28\xcd\x34\xbb\xf5\x45\x1e\xd6\x7b\x65\x71\xec\x04\xad\xbd\x94\x26\x4a\x19\xdf\x6a\x21\xb2\x02\x26\xe2\x21\x1a\x08\xe0\xf0\x1e\x20\x4c\x10\x7d\x21\x0e\x75\xc1\xbe\xf5\x35\xd5\xd7\x09\x39\xdd\xae\xae\x98\x5d\x7e\xd7\xf9\xaa\xb2\xb0\x34\x14\x78\x5f\xbf\x88\xf0\x65\xc7\x0a\x6b\x14\xba\x15\x07\x48\xb4\xe9\xd0\xe3\xd9\x09\x4a\x15\x7e\x01\x4e\xa6\xac\x4c\x42\x42\x84\xaa\xd7\x1f\x20\x0f\xcf\xfb\x9a\x3c\x4f\xe4\xea\x34\x78\xb7\x8e\x66\xe5\xc1\x79\x79\x03\xf5\x1d\xe7\x41\xf8\x9a\x2a\xc5\x3b\x5b\x09\xb4\x2f\x2f\xeb\x33\x05\xb9\x31\xe6\x88\x08\xc8\x75\x8a\x50\xe7\x78\x0b\x58\x0e\x96\x07\x94\xe9\x22\x57\x4b\xce\x79\x7a\x22\x70\xae\x04\xba\xe8\x42\x61\x5d\x39\xd5\x6c\x6a\xd4\x4a\x8f\xd6\x10\x62\xed\x03\x64\xb1\xfa\xc0\x40\x2e\x57\x1f\x0b\x37\x65\x7d\x42\x26\x32\x33\x54\x75\xe0\xdd\xe6\x74\xff\x5c\x21\xaa\x30\xf9\x4e\xda\x7f\xf3\x35\x0e\x94\xe3\x93\xa9\xd0\xa7\x4a\x58\x13\x25\x7f\x7d\x73\x6f\xa9\x70\x5b\x00\x2d\x07\xbe\x1f\xc2\x30\xee\xad\x51\x9c\x7f\x42\x92\x06\x5a\x0f\x53\x39\x62\x58\x17\xb4\x9c\x91\x2d\xcc\x2f\x42\xef\x17\x38\x79\x8c\xaa\xd0\x5a\x90\x36\x93\x60\x9c\xf7\x64\x0f\x7f\xfd\x54\x9e\x28\xb1\xfb\x2f\x5f\x6b\x65\x8b\xb8\xc9\x4b\xe6\x0f\xee\x60\x74\x61\x7a\xb0\xe6\x1a\xee\xeb\xd6\x53\x29\x82\xd4\x61\x94\x7d\x4e\xad\xa7\x39\xbe\x80\x7a\x17\xca\xa3\xb5\xa2\x9b\x13\x75\xe8\xf5\x72\xe0\xc1\xba\xeb\xfb\xa1\x0f\xe5\xdc\xbd\xbf\x1f\x74\x57\x95\x67\x4f\xfd\x1e\x7a\x22\x1c\x7c\xba\x57\x7b\xb5\x59\x2b\x45\xfa\x00\xff\xf4\x60\x7b\x69\x16\xb0\x55\x79\xa8\x95\xbb\x1d\x09\x11\x0f\xde\x19\x2f\x9e\xb7\x7d\x3f\x0f\xb8\xa4\x53\x6a\x48\x77\xbd\x57\x53\x9d\x6b\x8d\x63\xed\x86\x72\x31\x7f\xe8\xf0\xbd\x41\x71\x9c\x66\x5a\x23\x77\x84\xb8\x65\xf5\xc3\x79\x9f\xf3\x84\xc9\x17\x94\xde\x0c\x55\x90\x6e\x4d\x6e\x68\x56\x1d\x42\x1f\x6a\xd3\x25\x79\x73\x50\x98\xfe\xe7\xed\x03\x76\x5f\x13\xe3\x07\xb5\x21\x1d\xf0\xd4\xd5\x53\xdc\xf8\x34\x97\x74\xcf\x10\x2a\xbf\x19\xe1\xd3\xbd\x26\x7c\xd1\xa8\xd0\x05\x09\x9f\x34\x38\x67\x2d\x8f\xa7\x4a\xf1\x7d\x10\x32\x9b\x49\x58\xe7\xa6\x41\xb9\x0f\xee\xda\xd4\x2e\x14\x0a\x22\x6d\xb3\xb5\x55\x94\x6d\xfa\x54\xc9\x92\x0c\xcb\x02\x94\x83\xf6\xe3\xd7\xaa\x03\xfd\x86\xe4\xdc\x2a\xca\xad\x33\x5d\x75\xa1\x46\x6a\xa5\xdb\x2c\x64\xd6\xed\xfe\xee\x04\x6e\xa6\x59\x41\xf6\x35\x81\xf7\x24\x58\xe3\x03\x22\x12\xdd\xba\x8f\x0f\x8b\x2d\x72\x93\x8e\x08\x4c\x87\xe9\x8e\x50\xe1\x53\x0a\xc8\x48\xaf\x09\xb2\xc3\x24\x3d\xb2\x77\x9e\x05\x5c\xe6\xf6\x76\xe8\xc3\x34\x0e\x26\x79\x02\x17\xa7\x39\x11\x5a\x6c\x04\x6d\xad\x9d\xfd\x3e\xbc\xfe\xd2\x83\x60\x39\xa2\x24\x9d\x68\xcf\xee\xb0\x14\x91\x3a\x54\x79\x7a\x0b\x1e\xc2\x4a\xd0\xcf\x89\xe5\x09\x40\xc0\xdf\x81\x5c\xc7\xa1\xef\x67\xb5\x76\xba\x5b\xe5\x5a\xb7\xfe\xb5\x5e\x8d\x34\xae\x4d\xfd\x3c\xfb\x9c\xe2\x4c\x75\x68\x2d\x4a\xed\xf2\x7b\x92\x3f\x46\xb3\x23\x64\x51\x9a\xe1\xc2\x47\xc7\x77\x22\x84\x1a\xca\x49\x7b\xf3\xcd\xf1\xad\x21\x32\x0f\xec\xdb\x19\x27\xa6\x63\xf5\x66\x2b\xdb\xe0\xf5\x37\x74\xed\x69\x90\xaf\xa1\xbd\x73\xbf\x8f\x85\x35\xcd\x34\xa8\x3f\x7a\x96\x01\xa0\x3b\xc3\xe9\x16\xc6\xfb\xf4\x61\x98\xaf\xd4\xfc\x69\xed\x36\xd8\x21\x95\xa8\x48\x3f\x60\x0e\xd1\x00\xb7\x91\x2b\x51\xf4\x30\x49\x0b\x6d\x81\x81\x07\xfd\x77\xce\x4a\x41\x4d\xf3\x19\xb1\x45\x69\x02\x32\x3f\x42\x92\x46\x54\x37\x1a\xea\x1a\x72\xcb\x06\xda\xd5\xf2\x84\xc8\xe2\xfc\x79\x62\xe0\x6c\xc9\x85\xc7\xd8\x5b\xfb\x92\x80\xeb\x76\xb8\x61\x73\xa6\x74\xe3\xa2\xdd\x12\x6a\x3b\xa4\xa2\xba\xe6\x9f\x29\xff\x00\x79\xb1\x21\xdf\x01\x4d\xf6\x01\x16\xaf\xd4\xe6\x18\xe6\xbb\xfc\xe2\x68\x54\x85\x5f\x1a\x24\xe8\x82\x02\x9a\xe9\xd9\x56\x05\xe8\xc1\xab\x52\xd8\x49\x30\xc6\x9f\x6f\xcc\x8b\x33\x9b\xad\x73\x18\x18\x86\x61\xb4\xe6\xa5\x55\x07\x92\x31\xa0\xb4\x39\x9f\x37\x43\x10\x69\x45\x18\xf7\x7b\xdb\xf3\x8d\x77\x27\xf3\x8d\x34\xc2\x74\x82\x34\xf1\x6f\x4d\xe1\xeb\xd3\x04\x89\x0b\xa6\xd8\x22\x4a\x61\x5a\x98\x36\xcb\xf7\x1b\x93\x26\x4e\xff\x1d\xde\xed\x13\xbc\x38\xc2\xf4\x54\xfc\x0c\x13\x18\x33\x65\x01\xb3\x06\x3b\xa8\xea\xb2\x54\xb8\x21\x5f\xb4\x7f\xc8\x5a\x61\x80\x56\x9a\x6d\x8d\xa8\x25\xa6\xd0\x8a\xe2\x6e\xc3\x8d\x37\x24\xd5\x11\xd0\x9e\xba\x50\xfd\x5b\xca\x3f\x2b\xec\x7b\xb1\xcf\xb4\x3e\x14\x68\x0c\xae\x0c\x01\xa5\x29\xa2\x0f\x20\xf2\x82\x5d\x25\xfb\xdb\xc1\xac\x95\x89\x3f\x18\xb2\x57\x26\xd4\xab\xa7\xa5\xec\x55\x6a\x7c\x95\x31\x8c\xf4\x01\x17\x62\x98\x9b\x08\x30\x5b\xec\xd0\xcb\x12\x5d\xe0\xec\xc0\x7a\xea\xd6\xfb\xe5\x98\xe7\xc0\x1f\x63\xba\x54\xd6\xf9\x4f\x7a\x48\x5f\x1d\xa4\x7c\xa1\xb2\xbf\xd6\x5c\x92\x65\x35\x1a\xf4\x76\x7c\x71\x82\x2e\x4c\x91\x82\xb3\x3d\xdc\x35\xc8\xbc\x01\xf3\x7e\x35\x54\x0f\xc8\x7c\x46\xd3\x59\x1f\xc0\xc4\x68\xe7\xb6\x62\x36\xc6\x10\x58\x10\x24\xfc\x13\x41\xc8\xfc\x0c\xa9\x54\xb8\xb3\x52\x94\x1f\xaf\x9f\x97\x60\x80\x82\xd5\x54\x59\xcf\xe7\x7d\xed\x5f\x07\xe7\xa1\x6d\x75\xae\x5d\x75\xa0\x5d\x75\xe8\x67\x63\xac\xcf\xb3\xad\xf2\xcf\x94\x4d\x01\x2a\xff\x90\x0d\x06\xeb\xb6\x37\x38\x6f\xed\xf3\xba\xbb\xfd\x62\x1a\x01\x0d\x56\x81\x44\xbd\x85\xb7\x1a\x71\x62\x19\xe6\xc3\x88\xb8\xe0\x8e\x25\x4a\xd0\xc5\x81\xa6\x34\x35\xc8\x4e\xd4\x9f\x28\x92\x8e\x31\xac\xbf\x64\x8e\xa9\x73\xb1\x2e\xc4\xbe\x26\x43\x3c\x24\xc8\xbe\xc6\x01\xdc\x47\x88\xf1\x15\x52\xdf\x32\x61\xdf\xf7\x13\xba\x38\xa7\x47\x6d\xa0\x5d\xf9\x05\x1e\x8e\xf9\x62\x58\xa4\x6f\x08\xf9\x0c\xfd\x9c\xec\x6d\x84\xc0\xad\x87\xa8\x7d\x83\x6e\x01\x99\x0b\x43\x7d\x31\xf4\x26\x62\x80\x02\x16\x7b\x0e\xd0\x05\x5e\x52\xf4\x00\x27\x41\x3f\x0f\xf6\x10\x0f\x7f\xbf\xff\x9a\x08\xe6\xa8\xeb\x37\x8b\xc2\x89\xa0\xfb\x6c\xc5\x30\x2c\x87\xcb\x36\xc7\x7b\x79\x18\xc2\xb4\xe9\x24\x42\xdd\xc1\x7a\x30\x2f\x89\xde\x7a\x8f\x5e\x49\x02\x0c\xb1\x8c\x78\x97\x45\xd8\xe3\x56\xa7\x7e\x10\xca\xe9\x70\xe3\x07\x7a\x07\x4d\x92\x7e\x86\xfa\x56\xfa\x91\x00\x44\x6f\x99\x49\xe8\x5d\xeb\xd6\x5c\x0f\xf9\xa1\x68\x4b\x93\x47\x6f\xa3\xcb\x2a\x7f\x30\x2e\x7b\x58\x76\xbc\x7e\x71\xba\x59\xb0\x87\x58\xb0\xc7\x99\x08\xc6\xf9\xf7\x5d\xbf\xda\x58\xcb\x12\xfc\x15\x8c\x29\xb3\xa7\x43\x9f\x2c\x6e\xab\x30\x85\xd6\x82\x12\x1d\xc1\x37\x44\x77\x2d\x44\x73\x39\x44\xaf\x23\x89\xfd\x54\xd5\xf4\xc1\xb0\x43\x6d\x66\xcd\xe5\x72\x00\x2c\xfe\x94\xd8\x92\xa2\x8f\x09\x67\xc4\x01\xb7\x73\x14\x90\x5d\x88\x63\x15\xee\x2e\xfd\x53\xf0\xbb\xb7\x74\xc0\x9b\x24\xe0\xf7\x14\x83\x36\x93\x31\xf6\xba\x94\x1f\x0a\x54\x1f\x6a\xd4\x80\x32\x7b\x69\x10\x3c\x2f\x5c\x7f\xa9\x53\x7d\x33\xd4\x7f\x2c\xa7\x2f\x71\xf3\x4f\x3a\xd2\xf3\xf1\xa2\x0c\xcb\xec\x5b\x65\xe2\x04\x8c\x93\xf2\xa9\xfe\x84\xab\x95\x56\xc2\x41\xdd\x67\x19\xd9\xaf\xbc\x4f\xf5\xb7\x6f\x4f\x69\x96\x25\xe8\x97\xa4\x4d\xad\x74\x67\x99\x05\x13\x86\xbe\x4f\xbe\x6c\xbf\xe8\xb9\xf8\xeb\x5f\xd7\xa2\x2e\x86\x91\x38\xa9\xe3\x06\x7f\x88\xc5\x97\xa0\x3f\xdd\x68\x3c\x19\x29\xbf\x1b\xa8\x92\xc0\xb4\xa9\x9f\x6b\xe3\x59\xcf\xeb\xa5\x81\x9f\x0b\xbf\xff\x73\x78\x5b\xd7\xcd\x4b\x22\x34\x44\xb8\x10\x4e\xe7\x8b\x45\xfb\xaf\x05\x50\xd9\x81\xf6\xaf\x07\xe9\xff\x82\x2b\xb4\xbb\xbf\xc7\x83\xf5\x34\xd0\x82\xba\x81\x74\xd7\xf2\xf8\xdc\xfc\x62\x1c\xff\x1b\x83\xa7\xb7\x7d\xbf\x08\x3b\x5c\xb0\xfb\xf8\x37\xa0\xb5\xe7\xff\x02\x38\x38\xf4\xc7\x4f\xb7\x73\xd2\xc8\xc7\x41\xdc\x47\xa1\x59\x94\xbf\xea\x73\x1b\x49\x8f\x15\xd7\xd1\x14\xd8\x8b\x7b\xf7\x3d\xfe\x5b\x51\xe0\xa8\x28\x63\xe0\xf9\xbe\xed\xfd\xda\xfe\x77\xb7\x8a\xcf\xe6\xa1\x0f\xe7\xcb\x07\xdf\x20\x85\x65\x2f\x28\xd1\x73\xd1\x86\x84\xd6\x5f\x7e\x8e\xa8\x4d\x20\xd2\x8a\x52\xe5\xa1\x8e\x77\x5b\xd5\xc5\xee\xe1\x27\x5b\xe5\xd7\x04\xb2\x80\xb7\x03\xc5\xfe\x78\xbd\xd4\x8b\x39\xc5\xed\x7d\x9c\xf8\x9c\xb4\x0c\xff\xda\xa0\xb8\xac\xeb\x7d\x9a\x38\xf8\xa1\xbf\xea\xef\xb5\x53\x61\xa3\x93\xe1\x3c\x42\x84\xaf\xbd\x21\xd0\x80\x7a\x1b\x2f\xb4\x76\x05\xa5\x44\x31\xae\x49\x30\x2f\xd2\x26\x31\x54\x95\xb6\xd8\xc5\xfc\xbf\x74\x71\x0a\xbc\xa7\x21\x36\x32\x1a\x83\x62\xe5\x9d\x59\xcc\x3f\xd2\xc7\xb2\xdf\x87\x63\xfe\x2d\x7d\x3b\x4e\x4b\x45\xe6\x9f\xe5\x38\xa6\x88\xc2\x2b\xfb\xb7\x62\x86\x65\xdf\x5b\xc6\xfe\x33\xcb\x62\xf1\xba\x64\xaf\x7f\x2b\x86\xb3\xa2\x70\x5f\xff\x34\xc1\x32\xe2\xc0\x53\xe2\xff\x6f\x33\xfb\x8f\xcd\xff\xd8\xfc\x6f\xd8\x3c\xa1\x72\x05\xea\x3e\x34\x76\x71\x40\xba\xbf\x5c\xc7\xf3\x0d\x5b\xc1\x3f\x91\x24\xfd\xef\xff\xf1\x3f\xff\xd7\x7f\xfd\x9f\xff\xfa\xbf\x01\x00\x00\xff\xff\xbb\x94\x2f\x4d\xe9\x06\x02\x00")
+var _pagesAssetsStylesContainersCss = []byte("\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\xff\xac\xb9\xd7\x8e\xe3\x68\x9a\x28\x78\xdf\x4f\x91\x3b\x83\x05\xce\x39\xec\x6c\x7a\x57\x85\xbd\xa0\x11\x45\x27\x7a\x7f\xb3\xa0\x27\x25\x7a\x27\x92\x85\x79\xf7\x85\x22\x22\x23\xb3\x4c\x57\x75\xcf\x6c\x20\x95\x11\xfc\xf9\x7f\xde\x7f\xfa\xdb\x3f\xca\xbe\x2f\x9b\xfc\xeb\x56\xcf\x6b\xdc\xd4\x67\xbc\xd4\x7d\xf7\x75\xe9\xfb\x26\x89\xa7\x5f\x8a\xbe\x5b\xbe\xce\xf5\x99\xff\x04\x43\xd0\xff\xfd\x5f\x7f\x7a\xf9\xcb\x9f\xbe\xfd\x9a\xef\x43\x3f\x2d\x5f\xeb\xf7\x4b\x7f\xff\xff\x01\x55\x16\x2f\xf1\xff\x08\x4f\xb5\xb4\xcd\xd7\xb4\xcf\xf2\x5f\xda\x78\x2a\xeb\xee\xeb\x54\x97\xd5\xf2\xd3\x3f\xe0\xbc\xfd\x73\x51\xbf\x43\xbe\x78\x69\xe2\xee\xed\xed\xbb\xb6\x9e\xf9\x1b\x92\xa4\x6f\xb2\xbf\x40\xd2\x3f\xbe\x26\xeb\xb2\xf4\xdd\x2f\x43\x9c\x65\x75\x57\xfe\x84\x0c\xfb\x5f\xc0\x2c\x53\x1d\x77\x65\x93\xff\x32\xf4\x73\xfd\x7a\xf3\x53\x9c\xcc\x7d\xb3\x2e\xf9\xcf\xef\xcc\x43\x3f\x2f\xfd\xf0\x13\xf4\x17\x68\xd2\x78\x78\x7f\x8e\x93\x26\xff\xe5\x59\x67\x4b\xf5\x66\xe1\x9f\xbf\x71\x02\xfd\xfc\xae\x92\x9f\xa0\x9f\x93\x7e\xca\xf2\xe9\xf3\x8f\xaf\x69\xdf\x34\xf1\x30\xe7\x3f\x7d\xfb\xe3\x2f\x68\xcd\x6d\xdc\x34\x5f\xb3\x3a\x6e\xfa\xf2\x83\x14\x0e\x41\x7f\x29\x69\x52\x97\xbf\x06\xa2\xfe\x05\xa0\x1f\x69\xfd\xb9\x6b\xfc\x88\xff\xf7\xba\x4c\xe2\xf4\x51\x4e\xfd\xda\x65\x2f\x71\xfb\xe9\xa7\xff\x4c\xe1\x8c\x2e\x8a\x6f\xca\x80\x87\xfd\xcb\xdc\x37\x75\xf6\xe5\x3f\xd1\x18\x27\x49\xec\x53\x71\xd4\xbf\xc5\xe3\xd7\xe4\x5f\x67\xf3\x6b\x52\xfe\xf2\x7b\xbe\xb2\x2c\xfb\xf9\xf7\xfc\xbf\xf9\xc0\xcf\x4d\x5e\x2c\x7f\xe9\x0a\xbf\x62\x67\xa9\x97\xbf\x8a\xcd\x1f\x39\x7a\xbb\xfe\x07\x4c\xe5\x50\x9e\x15\xf9\xcf\x1f\x4f\x10\x04\xfd\x9c\xae\xd3\xdc\x4f\x3f\x0d\x7d\xdd\x2d\xf9\xf4\xa3\xb6\xbe\x73\x3f\xe5\x4d\xbc\xd4\x5b\xfe\xf3\x0f\x59\x07\x19\x96\x9f\x7f\x1b\x56\x3f\x6f\xf9\xb4\xd4\x69\xdc\x7c\x8d\x9b\xba\xec\x7e\x6a\xeb\x2c\x6b\xfe\x1d\x2f\xfc\x9a\xf6\xdd\x92\x77\xcb\xbf\x2e\xe8\x07\xc0\x1f\x88\x5a\x14\xc5\xa7\x34\xd8\xb0\xff\x8a\xd9\xae\x9f\xda\xb8\xf9\xb9\xdf\xf2\xa9\x68\xfa\xe7\x4f\xf1\xba\xf4\xff\xb6\x35\xbe\xa6\x4d\x3f\xff\xbb\x36\x79\x07\xfa\x81\xdd\x9f\x96\x29\xee\xe6\x21\x9e\xf2\x6e\xf9\xb2\x4e\xcd\xff\x7a\xbb\xf0\xff\x26\xfd\xfe\x8f\xb2\x2e\xfe\xf7\x97\xae\xff\x3a\xe5\x43\x1e\x2f\x5f\xe6\x74\xea\x9b\xe6\x4b\x9a\xbf\x19\xaa\x7a\x97\x04\xc6\x7f\x34\xd4\x6f\x52\x0e\x0c\x0d\xfb\x9b\xc7\xbd\xac\xf9\x91\x4b\xf0\x7f\x2f\x0c\x3e\xf4\xfb\xa5\x2e\xa6\xb8\xfd\x37\x84\xfd\x35\xdc\x8f\xd9\xe5\x1b\xe7\xe4\xdb\xc3\xef\xc2\x36\x69\xe2\xf4\xf1\x5f\xff\x48\xab\x78\x5a\xe6\xaf\x75\xd7\xd4\x5d\xfe\x35\x69\xfa\xf4\xf1\xcb\xef\xfd\x31\xab\xe7\xa1\x89\x8f\x9f\xbe\xb6\xfd\xf9\x79\xb7\xdf\x3f\xcf\x7f\x04\xff\xaf\xff\xf3\xe5\x55\x1c\xbe\xfc\x11\xea\xbf\xff\x9f\x9f\x8a\x7a\x9a\x97\xaf\x69\x55\x37\x19\xf0\x4f\xef\xfd\xf2\x6b\xc4\x9f\x6c\xb6\x79\xb7\xfe\x68\xd3\x37\xe7\xfb\x9e\x95\xdf\xd2\x54\x9a\x7e\xf9\x4f\x82\x20\x3e\xfe\x4b\xd3\xf4\xdb\x85\x79\x39\x9a\xfc\xa7\x37\xe9\xbf\x1d\x7d\xd8\x6a\xd8\xbf\x85\x67\x96\x17\xf1\xda\xbc\x47\xdc\x87\xf7\x7e\x81\xd1\x61\xff\xc2\x4c\x75\xdc\xfc\x7d\x8e\xbb\xf9\xeb\x9c\x4f\x75\xf1\xbd\x3a\xf4\xeb\xf2\xe2\xf1\xa7\xae\xef\xf2\x1f\x03\xe1\x0b\xf4\x07\xfe\xf2\xd2\x5e\x96\xef\x3f\x21\x10\x04\x41\xbf\x12\xeb\x5b\x25\xfc\x51\xba\x2c\xcb\xde\x5c\x15\x04\xe7\xb9\xf9\x47\x39\x2f\xf1\x52\xa7\xff\x48\xfb\x16\xcc\xb3\x7a\xe9\x27\xf0\x1d\xe6\x6b\x52\xfe\x63\xe8\xca\xff\xfd\xe5\xdd\x81\xbf\xee\x5f\x96\x7e\xf8\xf2\xca\x7d\xdf\x4b\xd7\x3f\xcf\x44\x4d\x3d\x2f\x1f\xba\x79\x13\xe1\x43\x30\x64\xd8\xff\x58\x34\xe8\xe7\x25\xdf\x97\xaf\x59\x9e\xf6\xd3\x9b\x5b\xbe\xbf\xfe\x27\x29\xe9\xf7\x12\x7e\xed\xd7\x25\x9f\x5e\xee\xf3\xf7\x3f\x7a\x5b\x77\xdd\xfb\xdb\x5f\xfe\xb9\xd9\x3e\x84\x89\xe3\xf8\xb7\x64\x97\x7e\xf8\x73\x9a\xbf\xfc\xa6\xaa\x7f\x77\x81\x97\xbd\xbe\x89\xf8\x87\x38\xbe\x73\xf6\x0d\xc7\x97\xaf\xf0\x67\x68\x7d\x20\x82\xbe\xbc\x8e\xbe\x21\x7a\x79\x0e\x36\xec\xbf\x0d\x89\x3f\xc6\xfa\x56\xac\x5e\x18\xff\xec\xfa\xb4\xfc\xf1\xf9\x77\x01\x3f\xd1\x7c\x24\xa7\xb7\x9c\xfb\xdf\xc0\xf8\x9d\xb1\x1f\xf1\xfc\xf3\xf8\xfd\x4b\xa1\xfe\x35\xd0\xbf\x66\xe7\x0d\xe5\x6f\xe4\xfb\xe9\xa7\xa9\xef\x97\x3f\x02\xfc\xe5\x2d\xab\x7c\xe4\x42\xe8\x4f\x2e\xfe\xa8\xc2\x7f\x15\xe4\x07\xa6\xfe\x55\x90\x8f\xc6\xf3\x57\x00\xef\x89\xe6\xcf\xa0\xb2\xa9\x1f\xb2\xfe\xf9\x87\x60\x7f\x78\xbf\x9e\x5f\x8d\x6d\xf6\x63\xbd\xae\xdb\xb8\x7c\x8f\xe5\xff\xab\x6e\x5f\xf3\x43\xdc\x2d\x3f\xf7\x43\x9c\xd6\xcb\xf1\xd3\x3f\xd0\x9f\xdf\x92\xfb\x0f\xcf\x45\xdd\x2c\xf9\xf4\x53\xdc\x0c\x55\xfc\xbf\x3e\xce\xff\x1f\x14\xfa\xdf\x7f\x4a\xf0\xcf\x35\xfb\x87\x11\xff\xa7\xa0\x9f\x1a\xfe\xf7\x41\x3f\x34\xfd\xef\x03\x7e\x2a\xfb\x23\xcf\xa0\x28\xfa\x83\xc6\x7e\x9d\x83\x68\x9a\xfe\xfe\xee\xcf\xc2\xec\x1b\xc5\x3f\x2b\x81\x7f\x68\xc1\xef\xf9\xf8\x95\x5a\x7e\x60\xe4\x33\x5b\xfd\xfa\xfc\x0f\xcd\x53\xbd\x5a\xb0\xff\x86\x6d\xfe\x39\xdc\xef\xf2\xf4\x37\x85\xa4\xc5\x97\xff\x24\xe8\xfc\xe3\x3f\x32\x2e\xfe\x82\xb5\x38\x7d\xb5\x18\x7f\x48\xbd\x1f\xf2\xee\x0f\x3a\xce\x24\x49\x7e\x9c\x4f\x3e\xab\x6c\xd2\x2f\x4b\xdf\xbe\x15\xbe\x3f\xa4\x54\xf4\xe9\x3a\xff\xb7\x5c\xf4\xcf\x20\xff\x89\x22\xfa\x29\xee\xca\x3f\x2e\x80\xdf\x52\xc0\x77\x03\xbe\xb5\x0b\x5f\xa0\x7f\xb5\x9a\x7d\x3a\xe8\x8f\xcd\xe9\x7b\xfd\x21\x5f\x05\xe9\x7b\x0b\xf1\xa7\xdd\xc3\xfb\xaf\x8f\xa6\xf2\xbd\x83\xf8\xde\x05\x7f\x45\x29\xea\xad\x28\xfe\x8b\x3c\x7d\x9b\x85\xdf\x57\x08\x7f\xa8\xc5\x5f\x5f\xf9\x6f\x98\xe1\x5f\x40\xf0\xdb\x22\xfd\xb1\xd1\xf8\xe3\x8a\xfe\x89\xef\xe5\x32\x7f\x4e\xf1\x75\xe3\x2f\xaa\xc6\x07\xc1\x6f\x33\xe7\x7f\x0b\xdb\xef\xd8\x7f\xc7\xf6\x2d\xe9\x7c\x2b\x7d\xdf\x46\xef\xa2\x28\xfe\x9a\xd0\x1f\x5e\xa8\xf2\xf4\xf1\xaf\x3a\xf4\x6f\xa9\x66\x59\xf6\x2b\xaa\xf5\x92\xb7\xbf\xfc\xd0\x60\xfe\x75\xf3\xfc\x4f\x7a\x4e\xe8\x57\xfd\x33\x99\xb7\x6f\x81\x81\xbc\x4d\x55\x55\xbd\xe4\x5f\xe7\x21\x4e\x5f\x20\xcf\x29\x1e\x7e\xc7\xc2\x6f\x9f\x5f\xad\xc4\xb7\x18\x7b\x97\x81\xcc\xdb\x6f\x14\x3e\xfc\x02\x79\xdb\x56\xfc\xa8\x84\xae\x7f\xd3\x4d\xd2\xef\x5f\x7e\x8b\xf0\xef\xbf\xb9\x58\xa7\x7d\xf7\xbb\x4b\xbf\xa6\x08\x23\xbf\xc7\x1f\xa7\x69\xde\xfc\x73\xb8\x0f\xc6\xa0\xdf\x00\xbe\x49\xf4\x6d\x0a\xff\x77\x94\xfd\x7b\x2c\x7f\x58\xfc\xde\xde\xbc\xb1\xf6\xf7\x7f\x03\xe0\x37\x0c\xa5\x69\xfa\x4f\xb2\xfd\x5f\xe0\x79\xa9\xf2\x97\xff\x69\x2f\xf2\x86\xa9\xaa\xcb\xaa\xf9\x5d\x0a\x7a\x7f\xf5\x2a\x66\x7f\xb4\x41\x22\x72\xba\xa0\x7e\x53\xd8\x7f\x7d\xf8\xee\xab\x59\xbf\x2c\xf9\xef\x87\xc7\xef\x93\xc3\xd7\xf7\x12\xf4\xea\xfb\x3f\x8f\x96\x7e\x78\x3d\xff\x81\x31\x3f\xfc\xec\xf7\x8c\xbe\x69\xe3\x07\x3e\xdf\x53\xf2\x4f\x9f\xc9\xf9\x73\x29\x41\x0c\xfb\xfb\x8e\x8b\xf8\x93\xed\xc4\xab\x41\xfe\xe3\xf1\xec\xdb\xae\x82\xf8\x23\xf6\x7e\xdb\x88\xff\x05\xcf\x7f\x78\xfd\x4d\x90\x37\x06\xdf\x98\x78\xe7\xe7\x47\x6a\xfd\xfb\x16\x76\xce\x9b\x3c\x5d\xfe\xd0\xc1\x7e\x4b\xf0\x2f\x21\x7e\xa3\xbc\xff\x49\x09\xc4\x5f\xe1\xfb\x05\xfa\xbd\x6e\xde\xe2\xe4\x97\xef\x2d\xe0\xcf\x59\x3d\xe5\xe9\x9b\xf2\x9b\x65\xfa\xf9\xbb\xc4\xdf\x4b\xfc\x9f\x59\xe8\x63\xa4\x7e\x37\xcd\xdb\xd1\xbf\x68\x8e\x77\x3e\x3e\x6a\xc4\x0f\xd6\xfe\x01\xdd\xef\xba\xa1\x37\xc0\xb6\xcb\xdb\xbe\xab\xd3\xaf\x55\xdd\x2d\xbf\xfc\x76\xa0\x5f\xbb\x2c\x9f\x7e\xb7\x78\xf9\x35\xe0\x9c\x0f\xf1\x14\x2f\xfd\xf4\xa3\x1a\x7e\xb5\xb7\xfc\x1e\x02\x6f\x0c\xbe\xe6\xe0\xbf\xfd\xed\x1f\x2f\x1b\x7c\x6d\xe2\x24\x6f\xbe\xfc\xf2\xb7\x2f\x5f\xbe\x7c\xf9\xdd\x72\xf3\x6f\xff\xf5\xb7\x7f\xac\x5d\xfd\xeb\x5b\x1f\x44\xa8\xb7\x9f\x9f\xbf\x03\xbe\x07\x66\xbd\xc4\x4d\x9d\xbe\x41\xbe\xb7\x93\x5f\xd3\x61\xfd\xa7\xf8\x7f\xc0\x07\xbd\xfd\xbc\x01\xd6\xdd\xef\x40\x7f\x43\xf4\xbf\xfe\xf6\x8f\x29\x7e\x7e\x7d\x49\x30\xff\x88\xbc\x88\xdb\xba\x39\x7e\xfa\xf2\x1f\x5c\xbf\x4e\x75\x3e\x7d\xd1\xf2\xe7\x7f\xbc\x93\xf9\xb1\x6c\x7d\x19\xa6\xfc\xeb\xab\x72\xbd\x93\x9b\xfb\xe6\x63\xab\x57\x2f\x4d\xfe\x6b\x8a\xc2\xdb\xcf\xdb\xbd\x21\x2e\x5f\x03\x5f\x9c\xe5\xd3\x97\x0a\xfe\xb8\xf6\xec\xa7\xec\x0d\xd5\x4f\x5f\x92\x29\x8f\x1f\x5f\x5f\x07\x6f\xd7\xdf\xbe\xcf\xf8\x3a\xf5\xcf\x3f\x64\x30\x7d\x67\xf0\x3f\xfe\xfe\xe5\x3f\xda\xbe\xeb\xdf\xf8\xfa\x8f\x1f\xb5\xf9\x32\xdd\x97\xb7\x76\xf2\xed\xf0\x07\x3f\xfa\xf2\xe6\x5e\xef\xc7\xbf\x49\x26\x5f\x96\x7e\x78\x7f\xf1\xb1\x6e\xfa\xf2\x89\xe0\xc7\x2e\xe6\x0b\xfa\x9b\xd3\x77\x87\xfd\xdd\xf1\x2b\x61\xfe\xee\xf0\x23\xb1\xbe\x9f\xff\xd7\xdf\xfe\x31\xaf\xc9\xab\xf6\xc4\xf5\xab\x57\xf9\xd8\x16\x7e\xad\xbb\x61\x5d\x3e\x04\xff\x15\x65\xec\x1b\xb6\xf7\x84\xf7\x05\x83\xde\xd1\xfc\x67\xd3\x97\xfd\x37\x4d\x35\x7d\xbc\xbc\x85\xcb\xfb\xd5\x8f\x1c\xfb\x05\x79\xdb\x9f\xfe\x8e\x41\xe4\xf3\xf4\xf7\x89\xfa\x7b\x0e\xf9\xdd\x8d\x77\x0d\x7f\xb0\xfe\xbb\xb7\x9f\x09\xe2\xdb\xf6\xf9\xb7\x17\xde\x67\xf8\x57\x4a\xfb\x8f\x2c\x5e\xe2\x9f\xde\x9e\xc1\xa1\x2b\x7f\x4e\xe2\x39\x27\xb0\xbf\xd7\x1e\xab\x5b\x4f\x48\xb9\x96\x3d\xc3\x30\x8c\x66\xbb\xd5\xc5\x2d\x19\x86\x25\xdd\xd7\x63\xcd\x31\x12\xc3\x30\x1c\x8b\x98\x03\xca\x30\x8c\x62\xfb\x0d\x6f\xc2\xec\xe9\x3e\x32\x4e\xba\x34\x82\x79\x86\xbb\xee\x84\x88\xea\x48\xeb\xcd\x64\x98\x5c\x1b\x33\x17\xcd\xc2\x07\x98\xfa\xc6\x02\xa2\x91\x49\xfb\xe6\x72\x7f\xce\x51\x36\x97\x26\x53\x4b\xc4\x53\x3a\x58\x36\xea\x2b\xce\x66\xae\xd7\xcb\x85\x95\x99\x3d\xf4\x25\xae\x09\x5d\xc1\xba\xa6\xb6\x10\x5c\xca\xc5\x55\x6c\x19\x91\xb0\x91\xe9\xd7\x6b\xc6\xd6\x7d\x15\xd7\xb0\x97\xea\x3a\x56\xa0\x4a\x0e\x17\xc1\xb4\x91\x39\x4a\xc2\xe0\x4a\xe1\xf8\xd9\x81\x37\x1c\x3f\x9f\x00\x73\xb1\xa4\xf6\x91\xc7\x75\x5c\x32\xb8\xdb\xbb\x94\xbe\x94\xc5\x1d\xa2\xa5\xfd\xd6\xd2\x25\x23\x79\xb6\xce\x5c\x24\x96\x6f\x0f\x4a\xee\xd8\xd4\x65\x18\x83\xe1\xf3\xa0\x02\x32\x95\x01\x41\xe6\xba\x25\x4f\x86\x63\x44\xde\x53\x6b\xd3\xde\x01\x11\x2c\xc9\xc1\x94\x9b\x94\x91\xe4\x0b\x83\x71\x92\x8d\x3f\x67\xf6\x21\x48\xcc\xc1\xe1\xee\xc1\x9a\xcc\xc1\x96\xcc\x2c\xe8\x67\xc4\xf4\x4c\xc3\x30\x4c\x22\x36\x94\x59\x4b\xcc\x58\x42\x0c\x69\x58\xb2\x51\xba\x0c\xa2\xb4\x0e\xca\xa6\x0c\xa2\x48\xe9\x68\x96\xcc\xdd\xbc\x30\xad\x5d\x89\x32\x23\x33\xeb\x93\x2d\xbd\x50\xb0\x55\x46\x65\x9e\x25\x57\x4e\x17\xa6\x56\x4b\x87\x99\xca\x2b\xe3\x27\xe1\x61\x3d\x15\x66\x33\x5d\x26\xeb\xf1\xf0\xc1\xd0\x4c\xc8\x70\x4c\xeb\x4a\xf3\xc9\x30\xa5\xce\x48\x8c\xb9\x63\xce\x69\xde\x4a\x87\xd1\xcb\x9b\xa6\x80\x98\xd2\x14\xa9\xe4\x63\x36\x73\x61\x9e\xb7\xd5\x3b\xa3\x4c\x85\xee\x37\x77\x95\x03\xf3\xda\x15\x07\xa5\xf3\xb5\x94\xab\x5c\xa2\x0a\x5c\x68\xa5\xc3\xe5\x1a\xca\x38\xa7\xa4\x0d\x3e\xdf\x2f\xd0\xbd\x63\xa0\x53\xe7\x19\x86\xb9\x6e\x9d\xf5\x2c\x30\xcc\xc0\xf9\x0e\x5f\x9d\x0a\x6f\x93\x2e\xd1\x41\x68\x8f\x55\x20\x06\xd9\x4d\xba\x63\x15\x95\x81\xc0\x26\x3d\x39\x96\x61\x4c\x67\x06\x37\xa4\x01\x1b\x3c\x0b\xf9\xf4\x96\xb2\xb3\xe8\x83\x31\xd1\x24\x8c\x36\xf8\xcc\xf5\x5e\x00\x1e\x74\x22\xcf\xb6\xf4\xcb\xc9\xcc\xb7\x56\xcd\x9d\x3b\x65\xb2\x44\xde\x7b\xbc\x64\xb0\x50\xca\x95\xb3\x4a\xda\x5e\xdd\x27\xd0\x13\xc3\x66\x00\x3c\x8d\x2a\x01\x38\xb5\xd8\x12\xca\x64\x49\x00\x41\xa7\x27\x23\x5e\x63\x53\x6e\x97\xa7\xa2\xf3\x60\x20\x54\x49\x17\xaf\x6e\x4f\x76\xc7\xd3\xe2\x6e\x3e\x89\xe2\x87\x01\xec\x98\x07\x82\x21\x36\x40\xb9\x04\xcd\xde\x73\x16\xc2\x69\xf7\xa5\x16\x73\x39\x59\xdb\xd1\x16\x77\x07\xe1\x22\xa5\xad\x87\x55\xea\x50\x9c\xea\x2e\xe2\x09\xcd\x45\x1a\xca\x9b\xdc\x5c\x3d\x40\xc6\x99\x42\x71\x49\x97\xf9\x29\x92\x2b\x63\x2a\x2a\xdf\xdc\xed\xac\x64\x99\x62\xbb\x2d\x77\xb6\x57\x1f\x26\x63\x46\xa7\x79\xe4\x45\xca\x30\xb2\x0e\x02\x21\xcd\x28\xcf\x0b\x73\x46\xf9\x03\x7b\x32\xcc\xa6\x97\x61\xa0\xd4\xae\x00\x9d\x57\x8e\x61\x18\x4b\xe1\x58\x65\x62\x59\xf6\x79\xb2\x82\x72\x32\xfc\x70\xb2\x62\x72\x32\xc2\x53\xae\xd8\x87\xc5\xf0\x9c\xc3\x18\x2c\xcb\xb1\xab\xcd\x88\xcc\x58\x5d\xe5\x88\xbd\x7a\x0e\xa3\x2f\xe5\x65\x49\x18\xfe\x3a\x32\x56\xbb\x5e\xcc\xe5\x76\xd9\x75\x06\xed\x30\x56\x4e\xcb\x7c\x79\x0a\xcf\xa8\xbc\xca\x24\x77\x55\x8f\x2b\x67\x5a\xec\xc1\x94\x4e\x68\x5f\x88\x9a\x15\xea\xfb\x52\xd6\x67\x59\x06\x6d\x88\x5d\xa4\x56\x90\x34\x59\x61\x06\x8e\x1f\x6a\xd6\xb2\xa4\x39\x78\x39\x21\x37\xba\xf2\xf8\xf0\x60\x49\x02\xa5\x25\xad\x4c\xfc\xee\xed\x0c\x30\xf0\xc9\xc1\x31\x47\xbd\x1d\xca\x76\x49\xf7\x46\xba\x1e\xae\x69\xb8\x4c\xe7\x31\x6b\x5c\x16\xd7\x7e\xba\xf6\xa2\x61\x65\xbc\x69\x04\x21\xe7\xf7\xed\x66\x5d\x27\x33\x37\x42\x0e\xe9\xc7\xc2\xb2\x81\x0a\xce\x18\x96\xae\x7b\xfc\x5e\x6a\x97\x9d\x6f\xe3\x1b\xe2\x0b\xe9\x5d\xca\x84\x50\x6a\xc2\x6b\x9d\x88\x42\x6b\x34\x3e\xef\xf9\xf7\xd3\xbb\x8b\x5e\x89\x66\x95\x9b\x3c\x65\xbc\x22\x9f\xe5\x83\xe9\x57\xe6\x02\x3c\xa5\xa0\x37\xcd\x67\x7b\x70\x0f\x99\x15\xfd\xcb\x1e\x9a\x44\xd9\x90\x9c\x0e\x5d\xa6\x5e\xf2\x9e\x2d\x5f\xf1\x22\x27\x1f\x8a\x33\x5e\x00\x48\x0e\x7a\x1b\x48\x2d\x2c\xbc\x8f\xfb\x43\xa8\xae\x13\x97\xac\x92\x85\x55\x5d\xed\xe5\xf2\x13\x73\x02\x5c\x93\x64\x86\x94\x1f\xab\xa5\x73\xf5\xa5\x79\xf0\xb2\xcc\x41\xcd\x64\x6b\x8b\xa4\xc6\x96\x33\xf0\xa4\x7d\xb9\xb6\xa9\xc3\x25\xd3\xe3\x8a\xca\xe8\x6a\x4a\x73\xcf\xcd\x92\x9c\x5b\x0b\xce\x18\x8f\x0b\x60\x03\x54\xc7\xe3\x6a\xea\xea\xb3\x2f\x61\x8f\xa7\xdc\xd7\x96\x3d\xc8\xa6\x6d\xdf\xbd\xc6\x00\xdc\xcb\x10\x51\x87\x39\xb4\xe5\xd8\x88\xda\x18\x91\x2e\xa7\x8c\x92\x3e\xd0\xb1\xed\x23\x65\xd6\x30\x9b\x8b\xe5\xc3\xe5\xb4\xe0\xb6\x0e\xb4\x76\x8f\xf8\x83\x30\x97\x9e\x0e\xcc\xb6\x6d\xba\xb8\xc8\x7a\x15\x68\xa0\xb5\xec\xb2\x72\xc7\x85\x86\xe6\x02\xa8\xdd\x7a\x16\xe8\x3a\x22\x34\xa0\xec\xf9\xd4\xaa\x12\xe1\x77\xa8\xaa\x15\xb6\x99\xae\xc1\x1c\x0d\x7b\x8d\x5e\x6d\x20\x72\x94\x50\x80\xf0\x3c\x3a\x04\xf3\x09\x9f\x52\xd2\xfa\x79\xc8\xe3\xd5\xe6\x79\xe5\x48\xd7\x03\x25\x44\xa2\x72\x19\x5c\xa2\xf1\x62\xaf\x18\x82\x6e\x6c\x2c\x2f\x85\x5d\x10\x0e\xda\x91\x83\xed\xc9\x33\x81\x29\x68\x22\x7a\x78\x44\xde\x0c\xf3\xf7\xd1\xec\x5c\x61\xdc\xbc\xd1\x82\xbd\x95\x78\x20\xd3\x8c\xdb\x19\xac\x18\xee\x8d\xb6\x02\x42\x07\x02\x10\xe1\x80\xf6\xa6\xcd\x7d\x2c\x58\x23\x77\xb5\x15\xcd\x0d\xc9\xe2\x7a\x0d\xa1\x4a\x98\xc3\x23\x2a\x84\xd0\x5c\xa2\xc3\x2b\x8d\x49\xbd\xae\xa1\xe3\xcb\xc9\xbc\x75\xb3\x23\x86\x02\xb0\x2f\x88\x8a\x2e\x37\x17\xd2\xce\xb1\x8d\xe7\x68\x10\xda\x2e\x8f\xf6\xd3\xbc\xe8\xfb\x24\x96\x14\xdf\x45\xdd\x65\xd2\xa5\x14\xd3\xce\x6e\x5e\x98\x03\x02\xd5\x44\xf4\xe3\x11\x6e\xa7\x80\x58\x34\x7a\x20\x90\x89\x8c\xc3\x15\x3e\x48\x2b\x59\x08\x7a\xda\xb2\x80\xcb\x4c\x19\x9a\xbb\xc2\x25\x12\x67\x42\x33\xb3\x25\xb4\x69\xb0\xd6\xde\x27\x10\x34\x30\x88\x3b\xe9\x84\xc0\x82\x13\x66\x07\x1f\x9b\xab\x13\x19\x6a\x59\xa0\xb7\xd0\x8a\x01\x0b\xc0\xb4\xc1\x2b\x68\x89\x67\xfa\xd4\x98\x12\x79\xb0\xcd\x7c\x73\xaa\x3b\x75\x3b\xcc\x10\xa8\xa6\xf6\xda\x62\x50\xc1\x5d\xb0\xb8\xb4\x0e\xa4\x26\x1e\xa9\xd5\xf7\xb4\x20\xf7\x47\x8e\xc9\x2b\x21\x46\xc0\x0d\xce\xd9\x14\x88\xc6\x7d\x13\xaf\xca\xac\x69\x78\x83\x5e\x67\x2a\xf4\xe5\xe1\xb6\xac\x8f\x5d\x71\x04\x5c\xc5\x86\x33\xb2\xa6\xb6\x8d\x09\x28\x71\x9c\xec\x76\xde\x0e\xee\x4c\x27\xad\x9e\x8f\xfc\xd0\xf5\xcc\x4f\x63\x1c\xaf\xb6\xa5\xa5\x10\xf0\xd0\xaa\xd8\x13\xba\x9b\xa7\xd4\x67\xac\xee\x78\x12\x37\xdd\xa9\xb2\x51\xa4\x35\x5b\x3e\xb7\x42\x08\x78\x5d\xe3\xd3\x5e\x12\x4c\x97\xce\x0f\xf4\x79\x26\x10\xd4\xf7\x90\xdd\xbc\xc2\x79\xc2\xcb\x33\xd1\x52\x2b\x32\x2a\x48\x32\xa5\x16\xd2\x22\x68\x21\xe8\x92\x7b\x3f\x3a\x5b\x29\x3c\x27\x59\xfa\x9d\x34\xce\x99\x5b\x8f\x98\x64\x92\x45\x2f\xa2\x8a\xae\x03\x24\x29\x12\x43\x4c\x9f\xe9\xa5\x42\x7d\x1d\x35\xc9\x42\x94\xa1\x2c\xdd\x91\x44\xe4\x28\x82\x70\x2a\xed\xa6\x0f\xbb\xd2\xf1\x84\x97\x75\x57\x24\xaf\x52\x1c\x3d\x35\x2b\x6f\x6d\x9c\x57\x2f\x43\x86\x34\x7b\xe6\x24\x71\xae\x0c\x08\x51\xe4\xf3\xea\xe1\xd6\xb4\xae\x8b\x02\x43\xa0\x7f\x6f\xc9\x35\x41\x15\x34\x4a\x32\x27\x3b\x79\x54\x28\xe2\x8d\x74\x6c\x22\xb9\x52\x4d\xf6\x3c\xd1\xcd\x2c\x9c\x27\x0d\xdf\xeb\x34\x3d\xef\x5d\x9c\x27\x03\xa5\x9e\x0f\x3d\xdd\x82\x2e\xca\x7d\x8f\x24\x37\x0b\x37\x66\xfc\xd9\x76\x4b\xf8\x4c\xd2\x7b\xb2\x0b\x5b\xb9\xa5\x0b\x19\xf2\x3d\x60\xf8\x01\x71\xae\x0f\xde\x98\x43\x80\x19\x68\xa2\xc3\x72\x60\x98\xb0\x1a\x3d\x11\x40\x42\x49\xbf\x18\x1a\x80\x05\x8f\x1c\x38\x37\xe2\x00\x11\x03\x50\xc1\x2a\x2f\x24\x9f\x72\x31\x21\x64\x44\x96\xc9\x5d\x76\x0b\x2f\x71\x99\xdc\xf8\xf8\x79\x2b\x58\xf9\x71\x19\xcc\x14\x66\x43\x48\x58\x9f\xe1\xc6\xf3\x98\x67\x96\x4f\x99\xf7\x1e\x45\x3a\x68\xdb\x93\x2d\x8e\x2b\xd8\xdc\x6f\xf4\xde\xa9\xf2\x64\x09\x69\x2f\x75\x96\x17\x5f\xc1\xfe\x79\x72\xd1\x4d\x5c\x42\xeb\xde\x27\x06\xa7\x51\x66\xd1\x02\x2d\xe0\x9e\xc3\xa9\x86\x52\xad\xb3\x62\x22\xd5\x98\x88\x3c\xa2\xd6\x2a\xf0\xc2\x32\x07\xe5\xae\x8c\xea\x3a\x58\x8b\xa0\x41\x69\xe0\xa0\xaa\x16\xcf\xb8\xd0\x91\x11\x89\xe8\x54\x08\x0c\x77\xf5\x41\x22\xc8\x88\xa4\x5d\xd4\x4d\xd7\x61\x76\xdb\xfd\x4e\xca\x2b\x56\xaa\xf5\xb8\x4a\x02\x56\x81\x95\x40\x45\xa9\x9d\xb1\xb7\x07\x97\x23\x32\x7e\x73\xc2\x9d\x47\x64\x0c\xbd\x71\x38\x72\xc4\x37\xfc\x7c\xb4\x8d\xed\x67\x57\x7d\xc5\xb3\xa3\x5e\xad\xa2\x25\x52\x52\xed\xba\x94\xf2\x1d\x2f\x7a\x88\x4f\xac\x8a\x4a\xbb\x21\x25\x10\x0f\x6f\xa5\xd9\x30\xdb\xf5\x02\x36\x03\x82\x6b\xa2\x65\x1c\x95\xbc\x0a\x0e\xe4\x03\x7d\x8f\xd4\x6e\x72\x45\xd7\x4b\x4f\x3d\xd6\x38\xf3\x86\x00\xd1\x35\x88\x2c\x5c\x83\x88\xa5\xc8\xb0\xba\xe0\x7a\x7b\x36\x86\x5b\x2f\xf8\xc3\x6a\xed\xd5\x36\x4e\xc7\x8b\x2e\xf0\x42\xcc\x27\xdd\xec\x88\x0d\xe1\x8d\x7c\xb8\x9d\xa2\xd9\xbc\xdf\xfa\x0b\xb7\x05\x37\x35\xed\x17\x88\x6e\x95\x63\x75\xf8\xdc\xc2\xf1\x16\x55\xae\xb8\x2e\x1e\x5b\xf1\x90\xc0\xe6\xa4\xe8\xd9\x4b\x24\xef\x06\xc5\x3a\xe4\x8e\xb8\xc9\x57\xd1\x4d\x25\xca\x29\x17\xe6\xd0\x47\x6b\xcc\x56\x61\xc9\x5f\xcc\x13\x45\x12\x80\xd8\x1e\x77\x0e\x93\xfc\x42\x45\xcc\x59\xe0\xb0\x59\x35\xc2\x55\xac\x22\x2a\x67\xea\x0d\xf2\x49\xa1\xd6\x55\x77\xcf\x50\xf5\x2e\x64\xee\x34\x3c\xf2\x6b\xf7\x84\x3a\x54\x8d\x6f\xeb\xd1\x6c\xb0\x89\x35\x95\xed\x15\xf2\x98\x67\xe7\x71\x6f\x14\x1e\x1a\xfd\xc6\x3c\x56\xce\x3b\x6d\x6f\x8c\x1c\xf9\x40\x88\x95\x16\x46\x3c\xdc\xbd\xaa\xf1\x2d\x8f\x44\xc6\x00\xf6\x16\xbf\x38\xfa\xa0\xf1\x80\x39\x55\x8e\x7e\xda\xea\xa7\x35\xdd\x5b\xac\xc9\xf4\x80\xf6\x28\x3a\x68\x16\x64\x99\x72\x7b\x2a\x14\x32\x5f\x24\x82\x70\xa6\x64\x3c\x51\x3f\x01\x36\x7b\x82\x47\x33\x0b\xcc\x6a\x63\xb4\xc9\xda\xf6\x7b\xee\x26\x01\x02\x2b\x68\x67\x57\x79\x3b\xc1\xf7\x19\x81\x5e\xd9\x81\x39\xbd\x4a\xcb\xe1\xe4\x54\xe3\x19\x01\x95\x4a\x1b\x0d\x24\x1f\x60\x30\x48\x17\x1f\x8c\x91\x69\x21\xc9\x48\x5e\x26\x7f\xa3\x61\x34\x07\x6f\x7a\xb9\x43\x9e\x4e\x93\x5b\xa3\x1f\xd4\x62\x2f\x98\x87\xac\xb4\x15\xa0\x70\xb2\xa8\x6b\xb9\x20\xc6\xb5\x95\x92\x75\x02\xdb\x62\x41\x30\x0b\xcd\x8c\x3d\x22\x8c\x9c\xf0\x48\x16\x8c\x04\x12\x58\xc6\xec\x4a\xcf\xa8\x02\x80\x1b\x29\xc9\x89\x27\x21\x77\x0b\x97\xf4\x8e\x6f\x5a\x8c\xdd\x90\x61\x5b\xda\x2e\x87\x53\xa1\x1f\xf9\x59\x66\xf1\xf4\xd2\xa1\x44\x44\xe5\x80\x66\x12\x8a\xa8\x3f\xe9\x93\x3f\x33\x20\x2a\xc8\x02\xe6\xf4\x45\xca\xed\xcd\xd6\x27\x1a\x9e\x38\xe4\x9e\xc4\x0c\xdd\x27\xe8\x46\x48\xc7\xbd\xb3\xe0\x5c\x74\x73\x60\x01\x69\x80\x3c\xc5\x7b\x88\x06\xa2\x16\xd2\x41\x37\x72\x99\xc2\xa3\x3b\x90\xdb\xdc\x03\xd0\xbb\x48\xc9\xf3\xce\xc5\x40\x23\xb3\x23\x54\xec\x50\xc7\x38\xa2\x18\x86\xad\x20\x81\x3b\x93\x02\x72\x63\xcf\x20\xf2\x71\xa0\x01\x58\xc8\x14\x4d\x76\x77\x18\x7d\x6e\x22\x0f\x49\x5b\x56\x23\x87\x8f\xda\x04\x44\x4f\x77\x58\x2c\x3a\x9e\xc6\xdc\x7a\xf3\x11\x70\x8a\x8a\x42\x25\xbd\x94\x9a\x3a\x07\x72\xf2\x99\x84\x72\xd0\x29\xc0\x61\x7c\x6a\xde\x09\x83\xf7\x40\x6d\x90\x22\x4f\xd0\x6d\x5f\x9f\xc9\x82\x60\x2d\x6a\x1d\x98\x9c\x4c\x30\x20\x26\x08\x69\x65\x28\xb7\xe2\x37\x54\x80\x89\x3b\x5a\x6f\xa0\x4a\xc6\x60\xde\x8b\x40\x09\x8e\x05\xe9\x00\xb3\x1f\x30\x49\xce\x63\xe1\x8d\x2d\x4f\x4a\x8b\x78\x80\xd2\xb9\x30\xcf\xc1\xc1\x01\x21\xac\xa8\xa0\x47\x71\xb3\x68\xf7\x6e\xd5\xba\x76\xc7\xa1\x42\xdc\x67\xed\x3a\xa1\x47\x74\x23\x1c\x2c\xce\x8f\x61\x37\x8c\xa3\xc3\x7d\x10\xed\xa6\x94\xd8\x3a\x14\x44\x6b\x00\xda\x0c\xdf\x38\x43\x8a\xd9\xf0\x9a\x02\xc0\xa9\x6b\x07\x0a\x55\xb7\x91\x68\x37\x7d\x4e\xef\xfb\x0e\x50\x67\xf7\xa0\xa9\x38\xa1\xa6\x94\x4c\x8a\x1c\xc0\x48\x72\x2a\x76\x12\x2a\x5a\xfb\x4e\x99\x06\x6e\x52\xb4\x48\x84\x54\xde\x41\x17\x10\x35\xd6\x8c\x02\xb7\xe7\x46\x63\xce\x09\x40\xa0\x2c\x45\xd4\x6b\xce\xbb\x86\x8f\x45\xb4\x18\x1e\x64\x0c\x8a\x01\x09\x8e\x1e\xf0\xdb\xeb\x5c\x4e\x2f\x55\x94\x3e\x19\x46\xad\x6f\x0c\xc3\x61\x77\x26\xa8\x1b\x03\x0d\x5f\xef\xc4\xec\xd2\x68\x96\x59\xe4\x6c\x69\xda\xd2\xdd\xb8\x33\xeb\x6b\x52\x64\x4a\xe6\xd2\x5c\x4c\xcf\xc2\x90\xf5\xcc\x32\x84\x4d\x60\xb4\x43\x53\x5f\xb2\xa4\xcb\xc5\x96\xd5\x3b\x3a\xd4\x96\x9e\x84\x4d\xbc\xd4\x41\xd4\xac\xe6\x92\xa7\xfd\x7d\x8e\x90\x87\x9f\x22\x3a\x74\x44\x0b\x46\x5a\x1b\x84\x5a\x0f\x7d\x6e\x93\xa1\x6d\xae\x18\x09\x37\x3e\xa5\xc5\xf0\xc4\xb4\x15\x64\x29\x22\x27\x35\xe4\x1d\x62\x1f\x25\xcb\xde\xa5\x0d\xe5\x09\x0f\x10\x4d\x5a\x90\x7a\x81\xe4\x31\x7e\xc3\x9f\x00\xfa\xb0\xdb\x14\x3f\xc9\x8e\xba\xa9\x14\x56\xb0\x69\x93\x15\x13\x6f\xbe\xc9\xc4\x48\x5c\x89\x89\x0c\xc1\x3f\x5d\xa6\x60\x24\x73\x5e\x69\x28\xbf\x5a\x8d\x2c\x62\xdc\x34\x28\xa1\xf0\xed\x92\xeb\xc1\x0e\x40\xc5\x49\x02\x3f\x3a\xb9\x2d\x85\x52\xe0\x1d\x88\x36\xc8\x0a\xa4\xf1\x75\xd2\xa7\x16\x0e\x19\x0f\x02\x05\xb0\xbb\xbc\x81\x98\x1a\x17\xb6\x51\x87\xdf\x77\x90\xde\x75\xef\x50\x3d\xe4\xc8\x35\x84\x58\x1c\xd1\x82\x0a\xf3\x62\x6a\xfc\x44\xe4\x10\x9d\x1b\xac\x69\x23\xcb\x64\x3f\xa6\x43\x38\x41\x50\xb7\x7a\x2e\xe0\xd1\x23\x35\x5f\x58\x58\xc6\xd5\x1a\x10\xd3\xb9\xea\x09\x15\xdc\x73\x56\x20\x7f\x45\x8f\xc8\xdd\x82\xc9\x83\x1c\xc1\xf2\x04\xff\xc9\x5c\x86\x82\x04\xc0\xf2\x26\xf2\x30\xdc\xc7\xc9\x23\xa5\x32\x18\x25\x4f\xb8\x19\x6c\x1f\x62\x93\x8a\xc0\xf5\x77\x59\x4b\x85\xad\x17\x7a\x03\xc1\x30\x05\xb3\xa9\x49\x1b\x10\xe8\x9c\x31\x27\x3b\x59\x4a\xee\x6e\x1c\x33\x07\xdb\xf3\xcc\xf3\x26\x76\x67\xe7\x0a\xda\x49\xa1\x5b\xd5\xdd\x1f\x2b\x39\x2e\x05\x10\xc9\xca\x10\x4b\xf8\x53\x73\xef\xe2\x33\x7d\xc3\xc7\xca\x33\x8a\xd2\x03\x4e\x74\x8e\x07\x80\xe0\x23\x7d\x8c\x40\x36\xc3\x23\x3d\x48\x3c\x27\x9a\x6f\xa8\xd0\xb3\xa3\xc0\xd6\xa1\xe6\x65\x59\x37\x3f\x10\xa8\x36\x80\x58\xb2\x6c\x3f\x79\xba\x32\xa7\x76\x27\x81\x07\x4e\x01\xb2\xdb\xd9\x2c\x48\xa4\x0d\xbb\x33\xa6\xb1\x62\x11\xff\x9c\x55\xee\x79\xdc\x36\x45\x4e\xd0\x5d\x1b\xe9\xc0\x96\x73\x2e\x7e\x48\x14\xff\x6e\x17\xd5\xbc\x51\x14\x00\xd3\x16\x85\xd9\x06\x28\xd8\x0f\xbc\x94\xd8\xb3\xf2\x1d\x6a\x5e\x37\x7f\x4a\xe0\x1d\x7b\x86\x31\xeb\x3d\x27\xea\x9b\x5d\x58\x76\x8c\x91\x0d\x24\x73\x10\x4c\x25\x77\x83\xf4\x06\x3a\xf0\x70\xf5\x93\xa5\xcd\x02\x0b\xd2\x74\x88\x93\x94\x13\x00\x7b\x01\xe5\x1b\x68\xb8\x9a\x94\xca\xd1\x5a\xaf\x09\x20\x48\x0c\xd9\x3d\x6c\xe5\x5e\x40\xb9\x05\x90\x21\xf5\x0d\xe1\x85\x31\x8f\x79\x53\x1d\x17\xd7\xaf\xd5\x33\x05\xa6\x72\x4b\xd5\x26\xdd\x21\x20\x9d\x94\x71\xf5\x13\x19\x83\xb2\x11\x8e\xa1\xf3\x61\x97\xcc\x05\xa2\xb7\x84\xa6\x88\xea\xb9\x67\xb1\xbf\x91\x35\xbd\x24\x35\x56\xfa\x17\x8c\xe2\xe7\x59\xa4\x3e\x14\xcb\xa5\xce\x80\xac\xf9\xa6\x2f\x9d\x57\x9c\x8d\x37\x2e\xd9\x76\xad\x2b\x7f\x0b\xa6\xbe\x55\xef\xb1\xb7\x31\xac\x13\xc0\x59\x40\x9f\xa3\xc8\x4f\x56\xba\x05\x6b\x10\x14\xc0\xb8\x5b\xa8\x76\xcc\xeb\x23\xb9\x31\xdb\xdb\xdc\xc9\x30\x1c\x83\xe9\x16\xa4\x6f\x20\x8c\xa2\x14\x76\x3b\xb5\xb3\xf1\x80\x0d\xf2\xcb\x51\x99\xc7\x2d\x20\x0b\x3f\xe1\x13\xc7\x30\x39\x25\xbe\x82\x9b\x2e\x3a\xd8\xa1\xf8\xc8\x32\x6e\xa0\x02\x35\xb2\xed\x81\x04\xb6\x66\x83\xe8\x30\x64\xa7\x50\xdc\x1b\x7f\x4c\xa5\x63\xb9\x58\x09\xb9\xd7\x0c\xc4\x3a\x4e\xa0\x3a\x19\x16\x6e\x24\x39\x12\xcd\x48\x31\xbd\xf4\x31\x4d\xf4\x1a\xb8\x32\x65\xf0\xd0\x45\x92\x17\xb5\xa1\xa7\x5c\x0f\x0e\xac\x27\x8c\xd3\xdf\xc0\x9a\x6a\x3d\x95\xb0\xb0\x67\x0c\x38\xf7\x6f\x31\xb6\xf8\xce\x8e\x8d\x9b\xb1\x1f\x80\x23\xeb\xdd\x8c\x24\x13\x01\x74\x86\xc0\xed\x51\xba\x20\xf8\x12\xb7\xbd\x92\x98\x4e\xe9\x41\xa8\x26\x60\x58\xaa\x67\x53\x06\x9d\xba\xba\x11\x9b\x17\x57\x99\xdf\x68\x1a\x1f\x6a\x89\xb4\x3f\x3f\x6c\x6d\xcf\xb4\x61\x43\xb8\x1e\x34\xcf\xd4\x60\x63\x90\x90\x1e\x76\x9e\x26\xd7\xaa\x8f\xaf\xd8\xac\x70\x04\x40\x26\x2d\xec\x47\x75\xa2\xb1\x3a\x9b\x04\x23\x88\xa2\x46\x7b\x7d\x42\xb9\x7e\xae\x52\x4e\x47\x64\xcd\x16\x37\x8d\x2d\x0d\x8d\xbd\xc6\x5a\xc1\x3e\xdf\x4d\x7e\x7b\xfa\x2a\x3c\x62\x39\x05\x26\x33\xb8\x92\x2f\x38\xf3\xb1\xa9\x55\x14\xfb\xa8\x7c\xa4\x04\x1d\x2f\xaa\x7d\x97\x06\x9c\x62\xf0\x07\x61\x0f\xbc\xd6\x11\x18\x96\x17\x41\xf6\xc8\x44\x47\x5f\xc8\x4a\xa0\x59\x3d\xe4\x40\x79\xff\xf0\xa1\xa7\x0f\x57\xd6\xd6\x15\x45\xd1\x83\xe2\x0d\x4f\x83\x38\x07\xfb\x58\x07\x7b\xfb\x42\x1b\x2b\x42\x66\xeb\x2a\x09\x14\xf0\x18\x4b\xad\xd9\x57\x1a\xf5\xb4\x24\xd8\xb6\x6e\xbb\x85\x53\xa0\x83\x99\x77\x93\x1b\x0d\x28\x2a\x3c\x63\xf3\x98\xfb\xce\xe7\x71\xb3\x5a\xcd\x0a\x7d\xc1\x49\x41\x23\x0d\x88\x11\x5d\x00\x30\xc2\x71\xdc\xb0\x1f\x43\xbc\x22\x11\x6c\x05\x6d\xe4\x8f\x48\xbb\x99\xdc\xfa\x98\x8d\x4a\x17\x7d\x82\x98\x1d\xd9\x85\x35\xc7\x25\x71\xe2\x74\x5d\x55\x81\xcd\x51\x48\x20\x01\x7f\xa8\x0d\x1d\x4c\x03\x53\xbe\x87\x6e\xcd\xbb\x70\x80\xde\x5b\x24\xcf\x28\x00\x1f\x77\x79\x31\x46\x38\x5e\x7d\xb5\x69\x67\x08\xe8\xfa\x9b\xc4\x4c\xad\x7c\xa4\x86\x48\xd6\xb8\xde\x8e\xc4\xd0\x46\x57\x0b\x00\xa6\xcb\xd8\x00\xeb\x18\x80\xf4\x30\x6b\x8b\x56\x85\x1c\x19\x1a\x4f\xec\x0d\x29\x27\xaa\x67\x5d\x8e\x9a\x35\x1a\x5a\xb4\x19\x55\x0c\x8f\x33\x3c\x20\x64\x36\xd1\x27\x61\x70\x0a\x9e\xce\xa3\x47\x10\xd2\x5d\x3a\x1e\xe7\x93\x01\xc2\xab\xf5\xc0\x6f\x35\xb9\x03\xd3\x74\x92\x5d\x96\x0c\x00\x98\x0b\x51\x2b\xaf\x17\xec\x26\x16\xf3\x67\xae\x52\x29\x14\xed\xce\x29\x13\x7c\xb8\x83\x31\xca\xe0\x77\xea\xc8\x65\x61\x84\xf3\xad\xbe\xfb\x51\xcc\xfb\xcc\x2b\xd9\x90\x03\x91\xf7\x50\x6e\x68\x1e\x80\x49\x97\xd6\xee\xb0\x18\xa3\xa3\x70\x51\xe0\x74\x1e\xe8\x80\x11\x55\x01\x14\xdf\x83\xc0\x04\x6f\x83\x62\x83\x48\x70\x3f\xd7\xec\xac\x6e\x9d\x83\x23\xeb\x58\x63\x8b\xea\xb5\x67\xdc\x78\x63\x5c\xf6\x1a\x0b\xc9\x3e\x85\xf9\x7e\x48\xe5\xfa\x82\x66\x10\x20\xba\xee\xe2\x0d\x99\xdf\xc8\xb7\x05\xbb\xe2\xd2\x4e\x7d\xa0\xb3\xc1\x4e\x3e\x67\x42\xbf\xf7\x47\xda\xc8\xe0\x13\xad\xa8\xe0\x3e\x12\xeb\x34\x11\xeb\x74\x52\xa0\xea\x4f\x02\xee\xf9\x42\xc5\x20\x98\x68\x62\x41\x4c\x9e\x74\xe2\x89\xe7\x82\x14\x62\xf5\xb0\x64\x9c\xf4\x1b\xcb\x15\xae\x90\x88\xf7\x38\xf5\xc9\xa3\x60\x8e\x9e\xdf\xc8\x54\xd8\x3a\x03\x62\x86\x04\x2c\x27\x08\xf1\x8a\x6f\xfb\x31\xf0\xfe\xe4\xc1\xbe\xdb\x20\x0f\xe8\xba\xf5\x06\xcb\x5f\x49\x34\x20\x0f\x58\x6f\x9c\x81\x58\x28\x00\xe7\x78\xe5\x98\x27\x35\x0e\xce\xf2\x0a\x02\x1c\x26\x9e\xdf\x62\xab\x8f\xb9\x69\x05\xb7\x00\x04\x83\xe2\x56\x52\xb1\x60\xf9\x70\x3a\x07\x87\x90\xae\x81\xe5\x5a\x97\x1b\xe3\x31\x0f\xf6\x11\x89\x0e\x0c\x80\x37\x3b\x9a\x51\x77\x6d\xa0\x4d\x4f\x1d\x37\x3e\x33\x8a\xa2\x4c\x74\x55\x7a\xd6\xf8\x9e\xf3\x18\x7b\xbe\x4b\x67\x08\x41\x6d\x4d\xbb\x23\x4e\xb0\x8e\x0b\x1b\x24\xbf\x3f\xa9\x74\x73\x32\xcb\x9c\x27\xa5\xc9\x57\xfb\x52\x49\x21\xa7\x30\x92\xc6\xfb\x70\x47\x52\xfb\xad\xf5\xe1\x26\x01\x8d\x80\x3c\xb9\x4d\x3d\xd2\xb2\x13\x19\x8f\xaa\xbe\xd9\xbd\x92\x46\xfb\xb1\xca\xf7\x1d\x02\x25\x83\x20\x1d\xc2\xd9\xe1\x75\x1d\x20\x2f\xf0\x2a\x33\xbd\x8e\xc7\xe0\x0a\x6c\xd1\xdd\x58\x8b\x93\xd0\x2b\x8e\x06\x05\x82\x63\x47\xa6\xf3\x25\xa6\x2b\x4d\x75\x8d\xdd\x87\x9c\x3e\x45\x8c\xdb\x1e\x1f\x0e\xca\xba\xa7\x4c\x81\x0e\x2e\x50\x20\xaf\x6c\x30\xbd\xbd\x95\x6f\x64\x18\xc3\x87\xca\x1e\x78\x38\x09\xf5\x9e\x8c\x19\xdf\xb7\xac\x59\x4a\x17\x5c\x77\x06\x88\xc8\xa6\x71\x5c\xe7\x6c\x5b\x8e\x26\xae\xbd\x71\xeb\xce\x63\xa9\xad\x92\x2d\x24\xeb\xc3\x54\x92\xad\x90\xca\x31\xd7\x52\x2d\x11\x79\x33\x44\xe9\x1c\x8a\x55\x83\x53\x04\x92\x01\x4f\x2a\x0d\xd4\xe1\x41\x85\xbd\x77\x20\x9a\x26\x8f\xe1\xf5\x22\x44\x86\x03\x80\xfb\xe3\x78\xcb\x67\xb4\xd8\x53\x12\xed\xdb\x8f\x61\x5f\x35\x6b\x0d\x05\x8a\x0d\x3e\x7b\x88\x51\xe0\x26\xd8\xf5\x84\x2a\xf0\x60\xda\x96\xdc\xdb\x09\xd1\x45\xe1\x64\x2f\x9f\xec\xf0\x12\x9c\x90\xbb\x40\xad\x01\x0e\x04\xcd\xed\xc2\x31\xfa\x42\x2f\x34\xd9\x9d\x3c\x91\x69\x1e\xea\x40\xb4\x59\xb9\x48\x01\x62\x54\x54\x16\x4f\xa9\xf8\xcc\x59\x52\xeb\xd0\x5b\x57\xf3\x38\x70\xf5\x6d\x99\x77\x11\xcd\x49\x11\xcd\x2e\x2e\xfb\x41\x27\x4b\xe7\xec\x7d\xef\x52\x59\x49\x9b\xf0\x72\xc7\x72\xc1\xf3\x32\x17\x5d\xae\xa9\x6f\xb8\x5b\x8b\xb5\x7b\x75\xb2\x46\x69\x02\xce\x7b\x32\x91\x24\xd3\x15\xac\xa8\xd7\xd8\x81\x3d\x1f\x0d\xb6\xe1\xa2\x05\x65\x30\x89\x2e\x38\x88\x5d\xd9\xc8\xcf\x5b\x25\x4a\x37\x1b\xa2\xf5\x50\xbd\xb0\x7a\x30\x02\x28\xe0\xca\xaa\xe7\x05\xf0\xee\xae\x81\x7c\x79\xd8\x33\x54\x9d\x81\xb0\xdb\x6e\xad\x38\x6c\xf1\x23\x6e\xa7\xa7\x8b\x31\xed\xf4\xfd\x55\x87\x2e\xea\x0d\x6c\xd2\x25\xf0\xbb\xb1\x5d\x8c\x48\xcf\xbb\x29\xa2\x90\x44\x3d\xe6\x46\xc9\x31\xb3\xc3\x5a\x0a\x6e\x47\x82\x18\xa6\x78\x5c\x67\xaf\x9c\xcb\xa1\x50\x30\x7b\x64\x4e\xa2\xa5\x82\x9a\xce\xde\x43\x8b\xbb\xdc\x5f\x31\x0f\xa0\xe9\xe2\xcc\xa5\x7d\x77\x43\x5e\xf7\x9a\xc1\x9d\x7d\x15\x09\x49\x3d\x67\xcf\xf7\xba\xb0\x4c\x8e\x0b\x2f\x36\xb2\x4e\xa5\x4a\x3b\xd4\x70\xc9\xc1\xdc\xbc\x03\xc1\x83\x1a\x9f\xfc\x53\x2e\x62\x83\x79\xbe\x17\x7d\x1b\x12\x4b\x83\xe9\x1c\x2c\xe0\xd2\x69\xec\x81\xc0\xf3\xb3\x76\x18\x8f\xc8\x10\xeb\xca\x0a\x1a\xb6\xd7\xd9\xab\xe9\xb4\xb1\xb8\x53\x9b\x92\x20\x8e\x8e\x44\xf3\x7e\x73\x2e\x4f\xc1\x5d\x1e\x44\x77\x50\xa4\x12\x6e\x3d\x83\x1e\xd2\x47\x09\xe0\x2e\xcd\xec\x5c\x76\xfd\xde\x13\xb7\x4e\x3e\x4c\x6e\x5c\x13\x1a\xc4\x14\x24\x5b\x69\x32\x5f\x09\x00\xcb\x6f\xa2\xbd\x87\xcb\x99\xa2\x7a\x68\x01\x6c\x9c\x3b\x47\x5e\xcd\x71\xdb\x0e\x53\xbc\x6c\x09\x62\xf2\xbb\x29\x39\xf3\x64\x13\x73\x73\x94\x1a\x75\xbf\x52\xe3\xbb\xfd\x79\x49\x49\xef\x86\x8e\xea\x88\xba\xf2\xca\xab\x9f\xcc\x82\x57\x4b\x12\xc0\x54\x21\xee\xf5\x1e\xf9\x9e\x6c\x07\x7b\x1a\x08\xb7\x68\x3b\x28\x74\xa4\xbb\x0d\x6c\xe8\x60\x7c\xfd\x13\x1f\xd3\x09\xda\xa0\x0b\x10\xf3\x06\x7a\xca\x0c\x5f\x67\xb4\x29\x88\xc1\x55\xaa\xbe\xdf\x00\x72\xed\x26\x0d\xce\x8a\xa0\x3b\x1f\xb4\xe1\x3c\x8b\xe7\x3d\x9e\xcb\x8e\x78\x5c\x0a\x89\xfc\xcc\x41\x52\x9e\xcd\x41\x81\xaa\x13\xf9\x8c\x29\x1e\xb4\x47\xd8\x8a\xda\xe8\xe1\xbd\xf5\x25\xb6\x6b\x5d\x2c\xe1\x46\xd0\xc1\x99\x4f\x2f\x2f\x36\x10\xc2\xef\xc4\xe5\x66\x54\xab\xf1\x34\x2a\xca\xa8\x5a\xb9\x8d\x52\x67\xcc\x6e\x10\xd1\x41\x40\x03\x9d\xf7\xaa\xeb\x78\x6d\x6d\xe8\x6d\x48\xa7\x26\x55\xa7\x22\x21\x83\x98\x0c\x6c\x32\xc0\xdd\x9d\x82\x1f\x5a\xe1\xcc\x2d\xec\x8f\xb0\x3f\xd2\x5e\x36\x2c\xc1\x98\xa9\xd3\x93\x32\xd8\x27\x18\x81\x40\xff\x9a\x2b\x0a\x6a\xc2\x1e\x20\xe8\xed\x54\x74\x4d\xbb\x41\x5f\xb2\x31\xb9\x9e\x73\x22\xa0\xf4\xab\x9f\x99\x93\xeb\x2e\xa9\x75\xaa\xa2\xe7\x3a\x13\xed\xa0\xb8\xcf\x09\x13\xb6\xcf\x3a\x55\xc9\x07\x07\xf2\x87\xa7\xac\x2c\x7a\x17\x5b\x1a\x9d\x89\x75\x7a\x7d\x5e\x35\xb0\x4a\x3d\xa1\x89\xdc\xe6\x06\x14\x1e\xe5\xec\x1c\x22\x54\xa1\x4d\x04\x31\x22\x1f\x69\x3b\x1c\xf1\x3c\xb4\x2d\x3e\xc6\xed\xf0\xfa\x1c\xf1\xfc\x80\x35\x24\x47\x1d\x6d\xda\xb2\x64\x4a\x49\x91\xc1\xe5\x47\x65\x0f\x4e\x24\x3d\xec\x48\x4e\xd5\x25\x9d\xc1\x11\x8f\xa7\x90\xa0\x54\x4e\xaa\x6f\x77\xa9\x7e\xb9\x8a\x52\x4f\x4a\xcc\x9b\xf1\x3d\x4d\xfa\x51\xb9\xf7\xad\x5e\x87\xc4\xb5\xd6\xac\xf9\xc6\xb5\x32\x91\x1b\x5d\x0e\x60\xf9\x19\xad\x23\xb9\x92\x23\x87\x2b\x8a\x61\xd9\x7c\xa9\x03\x8c\xb1\xb5\xe5\x7b\xcf\xf9\x60\x6f\x9e\x10\xf9\x6e\xf3\x4a\xa4\xac\x99\x36\x80\xb1\xe7\xf2\x18\xb7\xf8\x1a\xb7\x4f\xe8\x6a\xa2\xe2\x5e\x4e\x8a\xfd\xd8\x4e\xca\x50\xbd\x58\xcc\x0e\x87\x10\x63\x52\xf5\xe2\x29\xca\xf6\x7a\xf6\xc6\xc5\x1b\x37\x21\x1c\xda\xb4\x93\xc7\xb0\x93\x8f\xb0\x15\x19\x4c\xbc\x08\xf8\x11\x49\x8f\x20\x24\xc9\x09\x64\xe0\x47\x74\xb5\x6e\xce\x65\x1f\x86\x3a\x6c\xe5\x7b\x8f\x68\x55\xf8\xa0\x1e\x6e\x7c\xaa\xc2\x3e\xfb\x71\xd8\x2a\x1c\xd8\xd6\x41\x1b\xb5\xd1\x3e\x26\x2d\x05\xa4\x89\x3a\xf9\xf0\x9a\xa1\xab\xa4\xae\xc4\xa6\xee\x69\xb2\x20\x8c\x81\x73\x9f\x71\xe8\x06\x78\x1e\x2c\xfc\x03\x03\xe8\x5d\x67\x0f\x78\xf1\xb3\x31\xa6\xe8\x8b\xf5\x08\x57\x9f\xe7\xc0\x45\x31\x31\xf5\x4c\x51\x8e\x0f\x5d\x07\x82\xb5\x7b\x78\xe8\x2f\xca\x77\x0c\x30\xee\x18\x62\xdc\x31\x40\x7b\xfd\x46\x90\x27\x72\xf6\x27\x7d\x53\x5f\xfa\x2f\x12\xf6\x19\x5e\x8d\x8d\xef\xe2\xc9\x25\xe4\x3a\xb9\x8a\x6c\x1a\x44\x18\x76\xee\x54\x20\xec\xa9\x1f\x9d\x81\xb8\x47\xdd\xcd\xec\x6e\xcf\xd3\x70\xd0\x0c\x15\xcf\xaa\xb8\x68\x77\xf7\x96\xd4\xe4\xd1\x49\x07\xa2\xe1\x0c\x48\x32\x40\xfe\x31\x3b\x09\x6f\x49\x17\x22\xc5\xdb\xc6\x1a\x70\x73\x2d\x8f\x6b\x3f\xaa\x1c\xb6\x75\x27\xf7\x9c\x55\x5a\x1c\x69\x80\xf1\x49\x34\x27\x2b\x2c\xba\x56\x58\xfe\xca\xa9\xd7\xb7\xcf\x23\x7b\xfb\x3b\x6a\xad\xc6\x9f\xe4\x37\xd9\xda\xfd\x56\x88\x32\x65\x76\xfb\x2d\xed\x64\xce\x7c\xc8\x76\x70\x6d\x29\x88\xa5\xd2\x59\xf4\xc6\x15\x1e\x8b\x86\x0b\x11\xcd\x89\xe0\x3c\xd8\x81\x9b\x0c\x0c\x1d\x41\x0c\x05\xa8\xdf\x31\xa0\xab\x5c\x15\x60\x4f\xf2\xb3\x3f\xb0\xcb\x4e\x3f\x67\xe9\x5e\xf3\x60\xbd\x3f\x75\x0b\x45\xe9\xb5\x98\x88\x74\x1f\x35\xb9\x4e\xc9\x9c\x26\xa8\xbe\x6b\x84\x2a\x57\x1e\x09\x4b\x18\x11\x52\xf5\xb9\xc8\xf6\xb1\xc8\x3e\x29\x51\x9a\x93\x49\x08\x1b\xbe\x8f\x0c\xde\x89\xc8\x22\x5c\x57\x10\xa5\x71\xd4\x9a\x34\x79\xc2\x00\xa3\x7e\xbc\xd2\xde\x2e\x39\x0f\x5c\xb7\xdd\x46\xb7\xb0\x19\x6e\xcd\x19\x6e\xa9\xa0\xa5\x0d\x07\x00\x84\x66\x48\x5a\xee\x80\x0a\xb4\xbe\x15\xbb\xa2\xd4\x7d\x79\x17\x19\x87\xae\xc0\xf3\xa3\x26\x5c\x1c\x9a\x56\x9a\x82\x67\x28\xa3\x02\x38\xe1\x65\x03\xc1\x4a\x1e\x38\x50\x74\x38\x50\x34\xd7\xf2\x79\xd5\xc3\x1c\x41\xfc\x93\x06\x4d\x8d\x06\x0b\x94\x66\x9e\x3a\x5f\x42\xaf\x08\xd1\xab\xd9\xb8\xa1\xaf\xd9\x71\x5d\xed\xc7\xa0\xdb\x2e\x2e\x3b\x0f\x5c\x75\xde\xda\xe6\xc6\xe0\x9f\x29\xff\x50\x67\xa1\x9c\x85\x03\x80\x83\x64\xc7\x08\x4f\x4e\x10\xd0\x81\x32\xa6\xd2\xcd\x57\x3f\x56\xa0\x28\x9a\x2e\x36\x6b\x1c\xec\x67\xbf\xae\xc8\x39\x0a\x0a\xd7\xcc\x85\x17\x45\xcc\x98\xc9\x7b\xb9\x7d\xd1\xe1\xad\xd5\x45\x48\xd1\x45\xd7\x34\xba\xbb\x71\xc1\x9f\x17\x58\xcb\x02\x07\xa1\x8b\x04\x41\x67\x5c\x18\x80\xb0\xbd\xf2\x15\x9b\x5e\x8f\x5b\xb4\x69\xb1\xdf\x0e\x71\xdc\x0e\x84\xdf\x0c\xaf\xbf\xc1\x7b\x4d\x44\xc8\x3e\x4f\x8a\x7e\x8e\x84\x7e\xce\x24\x42\x87\xe8\x4e\x19\x37\x8b\xdc\xda\xe0\x1c\x1a\xdf\x53\xe0\x86\x2c\x79\xc0\xbc\x3f\xdf\x7d\xcb\x6c\x2c\x8d\x8c\xba\x20\x58\x68\x56\xa4\x31\x47\xd8\xf3\x57\x0c\x59\x8f\xe8\xd5\x9d\x8c\xf1\x63\x90\xa8\x95\x40\x1b\x75\xc8\xa7\x85\xcc\xb7\x81\xcc\xd1\x81\xc8\xd1\x81\x2c\x82\x70\x12\x4d\x44\xe7\x5a\x77\xec\x6a\x0c\xb8\x9d\xb7\x45\x3a\xa1\xe5\x76\x42\x8b\xe1\x40\x8d\xdc\x65\xe8\x81\xef\xfe\xb4\x90\x3b\x15\x5e\xd9\x1a\xdb\x44\x79\xd6\xaa\x95\x2e\x52\xba\x33\x40\x63\xb8\x4b\x3b\x04\x94\x3c\xc6\x00\xf9\x67\x4c\x7a\x42\xd4\xb2\x0f\x18\xdb\x40\x71\x7f\xd5\x17\xea\xe5\x4b\x78\x01\x0e\x54\xf3\xb0\x1f\xc3\xed\x2e\x51\xe8\xab\x6e\xbf\x62\x5f\xb4\x5c\x4f\xb4\xb4\xe5\x2e\x9d\x2e\x11\x38\x5b\xe7\x26\x0b\x1d\x4c\x4b\xb6\x6d\x0f\x5c\x77\x4a\x48\x64\xd1\x0c\xcd\x3a\x0f\x2c\x4c\x88\x65\xc5\xa1\x37\xdd\x89\x4e\xc9\xdb\x5d\x3a\x6e\x77\xf9\xa0\xdb\x3d\xf3\x85\x3a\x74\xc6\x4c\x75\xa0\x4d\x3d\x6f\xa7\x74\xde\xf6\x9b\xfd\x18\x6f\xb7\x6a\x2a\x40\xe8\xaa\xca\x97\xc7\x79\x3b\x6f\xc8\x8a\xc2\xe3\x2b\xf7\xa6\x9d\x9a\x86\xd5\x23\xfa\x88\xb0\x58\x2c\x49\xad\x84\xf5\xb5\x6a\xe2\x57\xfd\xd7\x7a\x13\x60\x36\x92\x14\x62\xe6\xa3\x76\xf1\x66\x23\xd7\x61\xcc\x33\xb1\xf8\x84\x2e\x93\x31\xbc\x32\x9f\x17\x4f\x31\x14\x18\x80\x5c\x04\x21\x29\xc9\x6e\x77\xe4\xfc\x49\x85\xf7\x29\x3f\x01\xef\xc8\x02\x0b\xc9\x3a\x0b\xd9\xb6\xb4\x23\x36\xaa\xb1\x23\x35\x21\xe3\x48\x80\x8f\x7e\x51\x3d\xff\x0e\x65\x8c\xf8\xbc\x80\xee\xf2\xde\xa0\x30\x17\x55\xb5\x21\x5a\xee\x9f\xf5\x81\x05\xdc\x5b\x8d\x43\xd6\x67\x27\x52\x56\x96\xdd\x67\x77\x53\xf7\x9a\x78\xfa\x90\x72\x61\x50\x5c\x7f\x07\x29\x33\xc5\x6f\x86\x4c\xba\x30\x9c\x74\x17\x9f\x05\x55\x77\xdf\x06\x28\x8e\xe0\x64\x8c\xe1\x38\x42\x43\x76\xa7\x74\x3e\xe7\x76\xde\x6c\xd2\x09\x48\x4d\x86\x7b\xd5\xd0\x3a\x7c\xc8\x34\x23\x3e\xc5\xcf\xd9\x96\xef\xeb\x7b\x9e\x3c\x29\x83\x27\xcc\x1b\x73\xb3\xdd\x4e\x8e\x1b\x57\xd9\x7a\x06\x60\xc0\x4f\xba\x03\xe7\x76\x32\x7d\xb9\x30\x92\x9a\xf7\x82\x62\xc7\xa6\x5a\x7a\xdf\x77\x03\x66\x33\xec\x37\x90\xb1\x18\x97\xeb\xd2\x9e\x61\xc0\xcf\xb9\x49\xb2\x21\x9c\x73\x90\xfb\xf3\x66\x7a\x82\x6c\x4b\x0f\x88\x01\xa5\xe1\x73\xfe\x81\x2a\xc9\xc9\x8d\x30\x63\xae\xb8\x69\x4a\x65\xfd\x59\x67\x55\xfb\x62\xe9\x52\xc7\x70\xaa\x4d\x80\xee\x7e\x73\x44\x88\x29\x98\xef\x7b\xa2\x4b\xad\x6a\x51\x03\xe9\x15\x4c\x33\x1c\x17\x57\x92\x85\xb5\x25\x8f\x5d\xc1\x6f\x73\x00\xef\xbe\x7a\x1b\xc8\x34\x99\xfe\x2e\x9c\xf1\x53\xa5\xee\xe8\x37\x5d\xf1\x23\xa7\xbc\x54\x58\x1b\x64\xc9\x44\x9f\xfb\xaa\x8b\x92\x21\xee\x53\x62\x5d\x9e\xf1\x71\x3d\x92\x4b\x1e\xb0\xee\xd8\x87\x0a\x2a\x58\x1e\x74\x59\x2e\x19\xd3\xb1\x0f\x54\x9e\x79\xf0\xb8\xa5\xec\xdb\x2b\x45\xd4\x05\x56\xe3\x2f\x4f\x4e\x92\xfb\x28\xb9\x00\x2c\xf8\xb9\x3f\x13\x98\x20\x3c\x94\x0b\x53\x33\xe9\x85\x4c\xdb\xa7\x01\x4a\xdf\x73\x30\x46\xe8\x43\xdf\x32\x2c\xa7\x38\x63\xe1\x10\x60\xf0\x92\x11\xfd\x94\x51\x29\x4f\xeb\x91\xd8\x2c\xc3\xd6\x68\x94\xdf\xac\xa1\x67\x0e\x89\xfd\xd4\x1d\x31\xab\xfc\x13\x75\x09\x31\x80\x18\x89\x21\xee\x8f\x14\x5c\x18\xbe\xfd\xcc\x11\x17\x36\x8c\x2e\xee\xc5\x61\x98\x0a\x72\x01\x15\xf5\x4b\xf6\xbb\xac\x2c\x7f\xd5\x13\x8a\xd9\xd5\x7e\xa8\x02\xcd\x61\x56\x8b\x31\xca\x77\xd5\x31\xc6\x03\x63\x6e\xc2\x6a\x97\xd1\x6a\xf7\x4c\xfa\x29\x27\x53\xaa\x30\x56\x38\x2c\xc3\xd7\x90\x94\x9d\xee\x53\x7d\x98\xfc\x87\x7e\x2e\x5c\x68\x8d\x7a\xc5\x99\x1c\xa6\x98\xd7\xaa\xfa\xe6\x97\x12\xf3\xbc\x47\x7d\xcf\xf5\xac\xa4\x1d\xc1\x91\xba\x2f\xd5\xbe\xf3\xc7\x48\xd6\xa0\x19\x07\xc3\x5f\x98\x32\xbe\xbb\xa8\xec\x72\x3e\x79\x7a\xf1\x47\xff\xce\xc8\x62\x33\x30\x25\xbb\xe7\x2a\x9a\x36\x0c\x83\x7f\xe7\x9d\x69\x6d\x4b\xd6\x18\x8e\xd1\xef\x54\xc6\x5f\x9e\xcc\x8f\x72\xb5\x8f\xb0\xae\x19\xa6\xbe\xf0\x00\xc4\xe4\xd1\xb7\xbe\x81\x31\xf1\x61\xdf\xa1\xd2\x64\xb0\xa1\x8e\xda\xf8\x22\x97\xcc\xf9\x69\x0b\x4e\x34\x6e\xfa\xb5\xe4\x18\x59\x58\xed\xd5\xb9\x97\xec\x0f\xef\xe4\x35\x97\x2b\x4a\x94\x58\x46\xd4\x0e\x8f\x11\xd6\x6f\x7e\xcf\x9a\x38\xe8\x11\x89\x13\x26\x85\xc9\x94\xf7\xbe\x93\xed\xe8\x37\x36\x7a\xb5\x7a\xf7\x67\xde\xcd\x94\x6c\x72\x8c\x73\xd9\x6f\x10\x13\x31\xec\xe7\xec\xa3\x59\x91\x2a\xc4\xaf\xb4\xd3\x43\xb4\xe1\x18\x8a\xe4\x3c\x18\xf1\x33\xee\x60\x06\x32\x78\xfa\x76\x61\x74\x35\x6b\x1f\x51\xcf\xac\xec\xf6\x83\x6f\xa1\x16\x8f\xe9\xa5\x30\x3b\x17\x59\xfd\xee\x57\x31\xd1\x2d\x78\xda\x32\x2c\xab\xa9\xbf\xf1\x39\xc9\x45\xec\x41\x23\x73\x63\xeb\x19\x93\xb7\xb3\x20\x83\x7e\xed\x73\x97\xfb\x44\xae\xf8\xbe\x7a\x27\xc4\x84\x6c\x5f\xf5\xf1\x95\x14\x43\xb2\x30\xf9\x1f\x72\x0d\x6f\xb7\x35\x9d\xf6\xcc\x83\x61\x39\x4b\x76\x1f\x8b\xaa\xa0\xbf\x8d\xeb\x31\x69\xdb\x07\xc7\xf0\x17\x58\xe3\x13\x8b\xbd\x71\xdb\xf7\x78\xb9\x4e\x5b\x02\xdf\x33\xd1\x76\x8d\x92\x31\x5d\x68\x99\x08\xc0\x79\xc8\xe2\x0b\x47\xf6\x89\x63\x7d\x10\xb9\xfe\x70\x1d\x86\xb9\xab\x18\x78\x4d\xa7\x71\x6c\x79\x8c\x07\xbf\xc7\xab\xec\x16\x20\xc5\x54\xc4\xcc\x5c\xb4\x43\x7e\x10\x79\x3b\x10\xc5\xc0\x00\x4c\xf7\xa9\x23\x96\x83\x23\x80\xce\x27\x3a\x53\xc5\x27\x27\x9d\xba\xf0\xdc\x44\xa3\xbf\xbd\xd1\xb2\x3e\x69\xd5\xe3\x30\xc5\x35\x9d\xc5\xe3\xcd\x60\x6e\x16\x4a\x2d\xce\x70\xce\xd8\xfa\x56\xe7\xbe\xe7\x94\xd7\xb4\x03\x91\xcb\x01\xb7\x27\xc6\x70\x4c\x6d\xcb\x3c\x0a\x62\x8f\xcd\xaf\xcd\x26\x66\x8a\x3a\xad\x1b\xaa\x61\xbe\xcd\x76\x6a\x8c\xd0\x6b\x96\xe7\xb2\x78\x16\xcc\xe5\xd2\x6c\x77\x0c\x90\xd2\xbc\xe0\x98\x5d\x0a\x05\x9f\xe1\xf1\xcb\xb7\x98\xe3\xb8\xab\x78\xdf\x9f\x74\x6a\x30\x99\x1d\xc9\x3d\x1b\x72\xcc\x65\xc7\xf2\x62\xc9\xb3\x0c\xb7\xbd\x66\x61\x94\xa7\x50\x7c\xb7\x63\x2a\x0e\x99\x4a\x42\xd4\xb8\x68\x67\x8a\x40\xcc\x83\x65\x7c\x12\x19\xd3\xc5\xd0\x34\xa2\x71\x95\xa6\x67\x4f\xf6\x7b\xdd\x00\x24\xe4\x76\xbf\x93\x27\x69\x18\xfc\x93\xd2\x21\xe6\xc1\x98\xc7\x6d\x53\xb7\x02\xcc\xf3\x43\xba\x4b\xc8\x43\xb8\x5d\x8a\xcf\x9d\xb4\xa4\x65\x54\x9f\x07\x8d\x07\xe3\xb0\xce\x1e\x10\xf3\xe0\xcd\x5a\x5a\x35\xb4\x20\x19\x30\x6e\x07\x25\x31\xb9\x96\xd9\x3e\x77\x18\x37\x7e\x23\xc8\x49\xa0\x81\x27\xfd\xc4\xf8\x9a\xc1\xd8\x5b\x2e\x4e\xf8\x42\xe0\x50\xb3\xa7\x3e\xc4\x0c\x25\xfc\xe9\x63\x22\x7f\xe4\xfc\xb1\x6d\xa0\xd8\xb6\x8e\xd6\xc5\xa6\xcf\x84\x8a\x67\x8f\x4e\x3c\x6f\x80\x48\x10\x74\x62\x71\x2d\xe7\xa3\x90\xf3\x7d\x47\x7e\xd5\x51\x04\xa7\x71\x72\xeb\xf4\xb3\xc6\x63\xc6\xe6\x7b\x2f\xb2\x83\x24\x41\x27\xa7\x87\xaf\xe6\xb1\x32\x31\xe4\x02\xfc\xb7\xb0\x6a\xb5\x7b\x88\x82\x18\x76\xbe\xf5\x83\x10\xf3\xe0\xa4\xe3\xd6\xe9\x45\xc7\x93\xa0\x75\xb1\x2e\x89\xc9\xad\x5c\xf2\x89\xbf\xd7\x54\x0f\x2d\x50\xe8\x46\x81\x11\x19\x44\x31\x63\x73\x0f\x99\x0b\x1f\x86\xa1\x4a\x26\x7a\xdd\xe7\xd7\x7d\x71\xfa\xce\x8f\x26\x86\xb0\xe1\xd8\x07\x01\x10\x01\xf7\xe2\x87\xb9\x58\xae\x27\x18\xc5\x69\xd2\x9b\x0d\x69\x42\xcf\x06\xdc\xf7\x1d\xcf\x43\xa9\xc7\xa9\xeb\xce\x29\x42\x6c\x59\xbb\x28\x0c\x27\xa8\x13\x9d\x6d\x05\xc0\x01\xa0\xfa\xa4\xfc\x52\x48\xf9\xef\xbb\x9b\xe7\xdb\x9e\xdf\xc0\x78\x16\x32\x96\x71\x36\xf8\xcc\x8d\xef\x37\x5b\xaa\xa5\x59\x2e\x39\x86\x32\x60\xa0\x81\xf4\x01\xd6\x07\x4f\x19\xe0\x7c\x7c\xce\x3c\xb7\xc1\xc0\x06\xe7\x0d\xf4\x9a\x8f\x97\xec\x3e\x66\xd0\x93\x10\x43\x7a\xa8\x3a\x32\x49\xc8\xec\x36\x5f\x19\xb3\x6e\xdc\xde\xbb\x5a\x8f\xe8\x1a\x34\xf8\x61\xcd\xeb\x84\xd6\x9a\x35\x6a\xf6\xe8\x99\xa3\xe7\x55\x61\xcb\x59\xb2\xf8\x68\x8e\x15\x7e\xae\x0b\xbd\x55\x29\x5f\xa6\xf7\xb5\x1b\xe2\x68\xd3\xc8\x2e\x26\x4d\x62\xb0\xfc\x11\x46\x10\x3a\x26\x8f\xc7\xa0\xfa\xbc\xc1\x04\x24\xb1\x7f\xc6\x24\xa3\x66\xd3\x02\x93\xf7\x81\xc2\xae\xa9\x19\x8c\x5a\x2e\xbe\x46\x43\x79\x76\xc4\x57\x0f\xdf\xe6\x46\xed\x70\x91\x93\x28\xcf\x41\xa9\x07\x65\xa0\x0d\x0d\x5b\xdc\x87\x9d\xa8\x51\xa2\xc5\x32\x17\x6f\x82\xde\x62\x91\xb8\xcf\xc9\xeb\x73\xdd\xfb\xbc\x1b\x8e\x34\xac\x61\xf6\x22\x0a\xfb\x1c\x3e\x64\xce\x8f\x4f\xc4\x3f\xf4\xfa\x0c\x84\xb6\x95\xb5\xd7\x6c\x79\xbc\x9a\xc3\xb3\xc3\x96\x68\x8c\xda\xa8\x4d\xdb\x49\x8e\x27\x36\x9e\xf0\x42\xe1\xc4\x1d\xca\xae\x3b\x16\x71\xb9\x9a\x06\x0a\xec\xa3\xe8\xa4\x36\x6b\xa0\x36\x93\xe2\x97\xdc\xfc\xfd\xfb\xb2\x97\x0e\xc1\x8d\xb8\x22\xa0\x0f\x6b\xe6\x15\x09\x3c\xc1\x7a\x44\x8f\xa8\x8d\xdf\x1b\xf6\xd7\x67\x4c\x2e\xfb\xcd\xb9\xa9\x55\x4c\xc9\xaf\x7e\xf9\x35\x73\x80\x28\xcd\x80\x28\x0d\x66\x10\x6d\xc4\xfa\x3d\x3c\x9e\xcf\x83\x0b\x71\xdd\x7e\x4c\xb7\xf3\xd6\xc8\xb6\xbb\x68\xb6\x3b\x28\xf6\x83\x32\xb4\xb3\x90\xa0\xd1\xd6\xf8\x10\x30\x16\x06\x84\xb4\xa2\x40\xe9\x22\x80\x69\xd4\x21\x50\x93\x28\x89\xb6\x51\x86\x60\xc4\x87\x65\x0d\x54\x8d\x10\xe2\x59\x5d\x35\x19\xfd\x61\xbf\xc9\xd8\x91\x0a\x51\xe3\xba\xc1\x59\x5e\x70\x18\xa9\xd6\x21\xa2\x9d\xe9\xa6\x1d\xe9\xa4\x1c\xf3\xa4\x38\x52\x6d\x34\xc7\xc5\xdc\x48\x65\x18\xe3\x76\x9d\x56\x62\x25\x57\xf2\x35\x5c\xe4\x68\x43\xfa\x57\x74\x57\x7b\x5a\x78\x44\x7e\xd4\x46\x48\xd6\x44\x88\xd7\x44\x6d\xd2\xd3\xc1\x24\x90\x47\xca\x97\x98\x9e\x75\x1e\x9c\xa1\x19\xba\x90\x39\x84\xb4\x27\x84\x01\xd3\x09\x54\xeb\x16\xa0\x28\x43\x13\x4f\x14\xd3\xf5\xcf\xde\x8f\x91\x2f\x9d\x4d\x1d\x00\x05\x6b\x77\x57\xd0\xd8\xa0\xcf\x84\x3e\x9d\x94\x93\x2b\x67\xb5\xc6\x7a\xe5\xb2\xdf\xec\x4a\x41\x9d\x68\xd2\xb2\x4d\xac\x87\x21\xf1\x61\x3a\x57\x1a\xc2\x6f\x75\x95\x2a\xe6\xd6\x3d\xda\x7e\x56\xb8\x67\xaf\x70\xaf\x79\x7f\x77\x8c\xfd\x0e\x18\x70\xbe\x6d\x04\x00\x2f\xb1\xdf\x2c\xb1\x8f\x2e\x24\xf0\x94\x68\xc3\x5b\xc9\x68\x0b\x34\x8d\x46\x25\xa4\xbc\x01\x97\x4f\xbd\xf0\x4f\x56\xec\xb1\x69\xf1\x46\x7c\x77\xbd\x66\x88\x5d\x81\x75\xbd\xa3\xe3\xf4\xea\x4a\x91\x28\x8d\x66\x45\x42\x54\x73\x7c\xdd\x1f\x85\xa1\xa4\x45\x50\x9f\x79\x62\x43\x83\x6a\x43\x83\xe2\xe2\xba\xc3\x8c\xcb\xbe\x2e\x67\x8a\x68\x11\x05\x16\x24\x41\xf7\x90\x6e\x33\x77\xef\x2a\x1d\x92\x68\x94\xe4\x67\x2e\x7d\x32\xd6\xaa\x2b\xb8\x3f\x02\xa9\x27\x44\xb1\xd7\xcc\x44\xe2\xed\x56\x38\x17\xb5\x98\x27\x68\x7e\xef\x49\x9d\x7a\x42\x1a\x4e\x11\x45\x87\xe3\xc8\xcc\x9d\xfb\xc3\x7d\xb6\x2e\xe4\xe1\xbe\xdf\x0c\xb6\x3f\x28\xf6\xc8\x16\x35\x05\xb7\x31\x52\xcd\x7a\x57\x00\xc5\x25\x13\xa3\x83\xf7\x37\x84\x5c\xda\x61\x59\xd1\x5b\x1d\xb3\x3c\xc1\x7c\xce\x9e\x97\x9a\x0a\x56\xf0\x54\xc9\x33\x84\xd8\xaa\xc4\x92\x12\x57\x5b\x52\x7e\xcc\xbe\x2a\x1c\xc8\xad\xee\x7b\x65\xae\x9a\x7d\xa5\x11\xed\xee\x42\xf0\x92\x78\x0b\x69\x21\xb3\x03\x1f\xed\xc7\x3e\x3b\x9e\xbb\x6a\x37\xdd\x2b\xe0\x8f\x90\x3e\x8f\x73\x72\xb5\x90\x65\x8c\x1f\x74\x4a\x26\x7a\x34\xdd\x04\x6f\x0d\x82\xc9\x5b\x48\x8c\x0a\xb5\xe9\x02\x96\x60\x7a\x17\x19\xf3\xdd\xe9\x70\xc5\x0b\x82\x11\x99\xc6\x27\x10\x76\xe4\xe0\x8d\x65\x70\xe2\x04\x1c\x6e\xf7\x27\xaa\x41\xc5\x8e\x23\x28\x81\x50\xf7\x3e\x16\x3d\xd8\x09\x3c\x8d\x4c\xcf\x1b\xcf\xcc\x70\x74\xf1\x44\x8b\xa0\xd3\xd9\x79\xf6\xc6\x73\x22\x18\x09\x14\x21\xf4\xac\x9e\x7d\xeb\x0c\x67\x4f\xae\x4f\xa5\x27\x25\x28\x81\x1b\x1a\x44\x9d\xde\x57\x36\x1e\x44\x89\x4e\xfe\x56\xe7\xca\x5c\x85\x35\x9a\x98\xa7\x11\x93\x6b\x41\x86\xf5\x05\xad\xdf\xbe\x6b\x80\x8b\x6b\x4b\x41\x95\xe6\xa6\xe7\xed\x34\x3c\x2d\x71\x3b\x67\x20\x0e\x7f\x44\x66\x44\xe6\xec\xc7\x70\x50\x79\xe3\x35\xbe\xd7\x0e\xd6\x78\x93\x47\xf3\xe5\x4c\x33\x99\x6d\xe7\x05\x08\xe3\xab\xc9\xb7\x59\x71\xdb\x5a\x27\x9e\x47\x8f\x94\xeb\x32\xdd\x3e\x6b\x6b\xe9\x8b\x01\x79\x47\x45\x07\x7f\xba\x1b\x45\x48\xdc\xcd\x18\xbd\x28\x50\x9b\x03\x51\x6b\xa9\x94\x90\xb4\xb5\x65\xbd\xa1\x4c\x4a\xb7\x24\x80\xd2\xf9\x12\xd9\x33\x49\xcb\x93\x07\xa9\xaf\x93\x37\x51\x9b\x71\x96\x1b\x11\xc8\x0a\xc9\x84\xd3\x25\x35\xd0\xeb\x31\x4e\xd3\x95\x0c\x42\x35\x18\x07\x65\x48\xa6\x3b\xbd\xac\xbe\xda\x74\x37\xa8\x0c\xb8\xef\xfd\xb5\x58\x1d\x9a\x80\xd2\x00\x99\xa8\x68\x6d\xe5\x13\x0c\xd0\xf1\xa4\x78\x91\x3b\xd1\x41\x4f\xbb\x7b\xe8\x0b\x6b\x02\xe7\x33\x90\xe9\x20\xa8\xf7\xe9\xed\xde\x13\x1a\x24\x1d\x55\x13\xb5\xd1\x1c\xa8\x14\xa0\x1e\x40\xe0\x35\x4f\xe4\xe6\x08\x3b\x70\xbb\x5b\xed\x32\xc4\x77\x28\xb5\x57\x97\x80\xfd\x0e\x05\x8b\x22\xf5\x55\xfc\x6e\x34\x8c\xf8\x51\xcb\x18\x06\xca\x02\xbf\xeb\x9a\x65\xdf\xe7\x1a\x7c\x72\x13\x04\x3c\x46\x8f\xc0\xc3\x19\x1d\x3c\x45\xa7\x22\xf0\xac\x6d\x59\x0b\x82\xee\xdc\x9e\x67\x7d\x55\x77\x57\x42\xcb\x47\x14\xc7\xeb\x78\xa5\x9d\xd4\x15\xac\xc0\xae\x4b\x2a\x59\xe0\x52\x17\x9d\x81\xc2\xdb\x23\xc3\xc4\x7c\x71\xce\xf3\x70\x2f\x38\xa2\x6d\xba\x70\xb9\xa4\xdf\x6a\xb3\xe9\x6f\xba\xd0\xb4\x79\x91\xc3\x84\xbd\x6b\xc8\xcd\xf7\x84\x3c\x5b\x74\xed\x8a\x68\x75\x38\xd4\xb3\x82\x72\x24\x9a\xe6\x7a\x77\x56\x07\x2d\x20\x1d\x04\x3d\x50\xa6\x19\xa0\x4c\x73\xae\xbc\x35\xfb\x6a\xfc\x94\xf0\x4c\x73\xa7\x39\x61\x30\x9d\x5f\x0d\x1f\x40\x97\xc4\x55\x7d\x42\x64\x43\xe3\x0e\x61\x18\xd5\xca\x47\x7a\xfa\x66\xd5\x7c\xce\x1a\xa2\x08\xd3\x45\x00\xe2\x53\x0e\x5e\xce\xc8\x3a\xdd\xca\x40\x49\xb9\x71\x91\xe8\xca\xde\x35\xb8\x79\xe5\xf6\x2d\x59\x0c\x98\x25\xf1\xfa\x58\xb8\x8b\x15\x4f\x7e\xe4\x45\xb9\x07\x13\x74\x7c\xad\xb0\xc2\xb9\xc7\x9b\x0b\x6b\x36\x15\x01\x60\x3e\x27\xc2\x7e\x4b\xe7\xb3\x75\x8f\x02\x4c\x8f\xae\x1f\xf5\x7b\x6b\xb7\x17\xd5\xf8\xa8\xe1\x12\x57\x4e\x42\x32\x4d\x28\x49\xb7\x54\x27\xdb\xa6\x30\xd5\x58\xf9\x44\xc5\xd3\x71\xc2\x39\x50\x7d\x53\x25\xed\x13\xa2\xb7\x18\xd8\x56\x43\x2b\x53\x81\xf5\x2b\x81\xe1\xca\xe9\x48\x48\x10\x6e\xa6\x1a\xd3\x85\x61\x9f\xb2\x7d\xa5\xc9\x4d\xbc\x57\x10\x51\x68\xce\x9d\x32\xab\x30\x68\x87\x91\x18\xd3\xa2\xc0\x1d\xc3\x60\xb9\xe3\xd3\x7f\x38\x25\x6e\xa3\x0e\xa7\x7d\x10\xc8\x51\xf6\x69\xdf\xf8\xd8\x7e\xac\x4a\x42\xb7\x87\x6e\xf7\x63\xdd\xb6\xb1\x16\x82\x22\x05\x10\x3b\x86\xa5\xba\x88\xc6\xa4\x11\x58\x7c\x2a\x5f\xad\x4b\xb4\x6c\x5b\xd7\x55\xcf\x72\x88\x6f\x56\xf1\xea\x11\xb7\x0d\x14\x5a\x0f\xce\xd1\x52\x0d\x34\xe5\x18\x08\xe2\x76\x11\x01\xd5\x34\xfa\xb0\xf9\xd6\x37\x97\xa2\x02\x06\x00\x95\x77\x1d\x02\x0f\x89\xe5\x2f\xf3\xab\xdd\xd2\x96\x6d\xf3\x03\x00\x14\xbb\xdb\xc3\x05\x6e\x77\x89\x5c\x11\x43\x68\x2d\x24\xed\x26\x8b\xf5\x73\xaf\x1b\x9a\x19\x49\xee\x97\xf0\x3e\x15\xbc\xdc\xe5\x30\xe4\x15\x41\x5e\x14\xb3\x60\xf0\xda\xf8\xf2\xf9\x33\x5a\xd6\xa8\xc7\xcc\x72\xfe\x96\x83\x78\x0e\x29\x0c\x04\xed\x72\x43\xb4\xf2\x65\x1c\xd4\x9a\x0d\x8a\xb4\x68\x96\x8b\xc5\x98\x0e\x7e\xd1\xf2\x09\x2c\xb2\x90\x4a\x0d\x91\x3f\x7b\xca\xad\x20\xf3\x28\xaf\x25\x48\x22\x3e\x42\x2d\xca\xb1\x36\x42\x82\xc1\xda\x9d\x04\xa0\x79\xdd\x5e\x7d\x7c\xdd\x24\x21\x3c\x6d\x6b\xa0\xee\xbd\x64\xe9\x17\xf7\x72\xfb\xf4\xd1\x03\x6f\xcf\x2c\x06\x28\x60\x18\x4c\xf9\xd5\x54\xd5\x48\xa2\x1d\x70\x36\x0f\xf7\x88\x8a\x74\x60\x9b\x88\x20\xe8\x70\x38\x12\x6d\xd7\x2b\xcb\x5a\x3f\xb7\xa9\x6b\xe1\xc4\xb1\x43\x67\x2a\x18\xd1\x8e\x24\x7d\xeb\x8c\xfe\x15\xcf\x55\x3a\x35\x8b\x30\x2d\x21\x46\x03\x52\x3d\x9f\x8f\x67\xc3\xd9\xdc\xe5\x5b\x6a\x97\x06\x15\x00\x41\x3a\x07\x81\x18\x55\x71\x4b\xe9\x06\xcd\x71\x1b\x71\xdb\xd0\x21\x36\x1f\x37\x7e\x06\xe4\xc0\x21\xb2\x03\x8f\xd1\x62\x69\x13\x1d\x32\x9b\xc7\xd8\xf8\x13\xcd\x67\xf9\xe6\x93\xcb\x75\xf2\x12\x87\x4f\xc0\x91\xd4\x07\x82\x8a\xbd\x40\xae\xc3\x76\xe7\x1e\x83\x7e\x9f\x08\x0e\x07\x49\x65\x27\xd6\x52\xe3\x08\x22\xba\x7e\x9b\x85\x2f\x37\x07\xa2\xc1\x74\x03\x01\x1c\xbc\x0b\xfd\x8c\xc9\x36\x1c\xfb\xa2\x98\x4c\x49\xd1\x67\xfc\xd0\x5a\x3b\xf6\xaa\x21\x1b\x99\x9d\x82\x79\xae\xde\xa5\x7a\x44\x79\x4e\xd1\x08\xa8\x9e\x54\x5b\x0b\xc6\xf5\x89\x20\xd8\xbc\x6d\xb4\xea\xc3\x35\xae\xdb\xce\x03\x47\x42\x9a\xa6\x2a\x8d\xd2\x7b\xd5\x34\x9d\x8f\xbd\x00\xcb\x0b\x22\x48\x62\xd9\x75\x9b\x2c\xf7\xaa\x40\x7e\x09\xf9\x67\xb4\xf9\x13\x3e\x2b\xc5\xad\x9e\x49\x02\xd8\xda\xbc\x28\x68\x61\x5c\x32\x49\x69\x63\xbf\x1b\x4e\xf8\x89\x92\x48\x3a\xda\xd2\x69\x47\x2a\x22\x9e\x15\x46\x6b\xf0\x1d\x1b\x6c\x68\xec\xd4\xe6\xe5\x3b\x2d\x3b\x5e\xb8\xcf\x58\x63\x4c\xbe\x82\x80\x79\x03\x19\xd3\xbd\x2a\x75\x48\xe8\xe8\x46\x32\x85\xd5\x0d\x44\x7a\xa8\xd2\xba\x23\xc0\x8b\xd7\x60\x97\x87\x0b\x02\x9b\x3e\x28\x63\x8f\x57\x1b\x28\x0b\x23\x1d\xd8\xdc\xc3\x85\xb4\x7b\x4c\x53\xcb\x30\x39\x63\xda\x5b\xd0\xb2\xbc\xfa\x72\xac\x74\xd5\x96\xcd\x2f\xcc\xf6\x8d\x0e\x7f\xbc\xdc\xbb\x00\x37\xd2\x80\x6a\x5b\xbe\x48\xbb\x92\x76\x32\x7f\x02\x90\x61\x87\x6d\xd5\x35\xd6\x83\xb3\xe4\x84\x3c\x71\xef\x81\x2e\x57\xaf\xaf\x4a\x7c\x59\x51\xb5\x42\x4e\x7f\x22\x7a\xe5\x00\xc0\x8d\xe8\x3a\xb4\x41\xd2\x4e\x56\xaa\xab\x54\x4b\xb5\x02\x50\x6a\x0b\xd6\x3d\xa2\x45\x1e\x66\xd2\xb7\x6f\xfe\xce\x28\x33\xbd\x2d\x06\x08\x36\xd3\xd3\xc2\x6d\x01\xae\xcc\x02\xa7\x69\x9a\xb8\xc3\xc0\x1a\x09\xfb\x25\x35\x3a\xd9\xed\x34\x6a\xe4\x2e\x43\x3c\xf9\x49\x12\x04\xb9\xd7\x0c\x89\xc9\x55\x42\x38\x65\x09\x98\x17\x63\xd4\xc7\x42\x75\x09\x27\xf9\xbc\xdd\x31\x5a\x49\x73\xec\x60\x0f\x96\x47\xb5\x07\x44\x01\xb6\xf5\xde\xf7\x32\xcc\x40\x80\xbd\x1f\xbc\x9c\xda\x52\xaa\x07\x11\xa9\x02\x4d\x1f\xf4\x3d\xce\xf6\xba\xbe\x75\xfa\x39\x57\x52\x41\x72\x95\x15\x23\x34\xd8\xf0\xd1\xd5\xb9\x48\x4f\x0a\xf4\x84\x2a\x34\xb9\xf9\x12\x3a\x4c\x28\x34\xb1\x4b\x83\x09\x7c\x0f\x01\x43\x81\xc9\xdb\x7e\xb3\x2f\x08\x00\xad\xc7\x8d\xee\x82\x8a\x4f\x01\xa6\x94\xde\xa5\xe2\x1e\x10\x1c\x78\x02\x3c\xc4\x2f\x5a\x67\x3e\x78\x19\xbd\x03\x57\x7c\x6e\x2c\x4f\xcb\xbd\x2d\x29\xe9\x6d\x81\xf5\x99\x14\xe8\xe9\xda\x8f\xca\x5d\x14\xd1\x19\x52\x4e\xdd\xf1\xca\x4a\x98\xe8\x14\x04\x75\x1e\xc1\xca\xe0\xb4\xec\x7b\x8b\x18\x17\x47\xb4\x90\xcc\x61\x46\xee\x0a\x80\xc4\xbb\x3c\xbc\x70\x97\x08\x9d\xec\x1a\x72\x7a\xd6\xde\xa4\x82\x15\x30\x2c\xdb\x3a\x5c\xa2\x8b\xa7\x55\x66\x2a\xf2\xfc\x09\x85\x62\x85\xeb\x0a\x7a\x0a\x11\x2f\xd3\xc4\x26\x88\x8f\x5d\x72\xe2\xd0\x67\x34\x76\xd2\x8a\xa2\xc8\x5d\x58\xc8\x87\xae\x6c\x1e\xb5\x4d\x83\xfa\xf0\xea\xe5\xcf\x37\x3a\xc6\x47\xcf\x79\x61\xa2\x60\x04\xd1\xc1\xcb\xf2\xcc\x19\xb3\xba\xc9\x8f\x3c\xd3\x34\x0d\xde\x41\xd1\xb9\xd5\xf3\x72\xa4\xdd\x25\x05\x01\xb7\xba\x54\x92\xe0\x9f\x02\x4c\x6d\x46\xe7\xdc\x4f\x2a\x4e\xce\xc4\xe1\xda\xeb\x00\xe7\xc3\xe2\x03\x74\xbc\xb6\xf6\x8e\x0d\x5e\xa8\xca\x31\x9a\xad\x78\x6d\x55\xfc\x0d\x45\x08\xe8\x5d\x1e\xae\xac\x15\x63\x13\xd7\x6d\x20\x3c\x9f\xba\x73\x48\xa2\x11\xc8\x38\x5d\x4d\x62\x97\x73\xab\xdb\xc8\x5e\xde\xb1\xfd\x2a\x56\x10\x31\x1c\xe1\x19\x5c\x0d\x03\x1c\xe4\x07\xd5\x5c\x94\xa7\xdd\xb9\x63\xb3\x6e\x00\xea\x47\xee\x1a\x28\x02\x29\xb7\x89\x06\x9f\x56\x16\xb7\xec\xe5\xa2\x80\x9f\x31\xc4\x55\x7d\x2e\xf2\x24\x7e\xda\xc6\xe5\x48\x96\x03\xdb\x3a\xb5\xe1\xc6\xf0\xee\x2a\x76\x3b\xdc\xc9\x03\x92\x8c\x0a\x73\x76\x26\x8b\xa2\xdb\x30\x54\xa2\x01\x0a\x52\x26\x9a\xd0\x64\x96\xd2\x6b\x66\x59\x9a\x65\x1b\xe3\xb2\xf7\xc8\xc3\x16\x7d\x80\x22\x02\x06\x7b\xd1\x90\x8b\xcf\xf8\x49\x37\x81\xdc\x14\x02\xa0\x5f\xb3\x64\x63\xc3\x77\x34\xeb\x5f\xf5\x75\x8d\x9c\x9e\xb3\x91\xa8\xc5\xfb\x9b\x61\x28\xbc\x17\xb7\x77\x61\x71\xa4\xf8\x1e\x81\xd4\xce\xe9\xaf\x49\x10\x92\x7a\xae\xf7\x24\x29\x3d\xce\xf2\x35\x82\x33\xb6\x6b\xb1\x9e\x32\x2e\x19\x8d\x5b\x81\xba\x33\x88\x23\xb5\xf2\x91\xa1\xe4\x32\x69\x19\xc7\xf4\x8f\xf0\x63\x26\xd5\x2d\x84\x5a\xac\x61\x77\x69\xdf\x4f\x04\x0a\x09\xa1\x44\x3b\x99\xa0\xb4\xcb\x4d\x05\x0b\x20\x07\x68\x6f\x84\x7d\x08\x5b\xfb\x88\x97\xa2\x97\x5c\x4f\xb3\x7b\x52\x93\x59\x62\xf1\x14\x10\xaf\xbc\xce\x81\xea\xd9\x70\xe8\xfd\xd4\x5a\xc2\x46\xe0\xc5\x61\x72\x8e\x12\xd6\x9b\xf0\x5e\x2f\x18\x9c\x37\x77\x3d\xe9\xc0\xe7\x45\x68\x62\xb8\x7e\x86\x06\xb6\xf8\x67\x78\x0a\x98\x30\xa1\xd3\x51\x23\x08\x41\x57\x0e\x9e\xca\x21\x7c\xdd\x0a\x14\x00\x70\xc5\x79\x20\x8d\x50\x6a\xf2\xb8\x14\x45\x91\x21\xb4\x52\xcf\xd2\x09\xdc\xe2\x44\x3f\xa1\x9c\xa7\x75\x56\xfa\xac\x47\x9c\x09\xa7\x44\xb6\x22\x51\x1b\x55\xe6\x2c\x71\x37\x1a\x8c\xf0\xc5\x87\xdd\x31\xab\x28\x71\x19\x3d\xb5\x19\xf7\x64\xc5\x42\x20\x90\x10\x92\x9c\x9e\x77\xed\xcc\x45\xa3\x34\xa1\xcd\x23\x41\x4a\x32\x92\x10\x51\x5c\x83\x5f\x80\x4c\x74\x20\x48\xbf\xdc\x4f\xc6\xe7\xf8\xef\x7e\x0c\x4c\x31\x14\x5c\xf7\x31\x11\xb8\x67\xa9\xdd\x13\xe4\x99\xa3\x28\x81\x9a\x14\xc6\x5f\xc2\x44\x3b\x9e\xdb\x78\x40\x15\x8f\xa7\x48\x98\xc0\x30\x9c\xbb\x0d\xad\x8b\x12\xcb\x38\x17\xd0\x78\x9a\x4f\x70\xa4\xf3\x8b\x02\x77\x3c\x84\xfa\xda\x3d\x44\x8c\x1b\x1b\x4a\xf2\xb7\x1d\xa7\xc9\xc5\xb6\xcc\x75\x64\xc5\xe7\xb4\xb1\x1d\x56\x45\x46\xa2\xe5\xba\xbb\x40\x09\xec\xe0\xc9\xcb\x96\x6f\xfa\x5d\xda\x21\x7f\x13\x76\x65\x9e\xd4\x69\x02\x57\x7d\xeb\x4d\x4d\x50\xec\x07\x00\xd0\x38\x82\x09\xdc\xab\x27\x74\x16\x94\x44\x2e\xf5\xe5\xf2\x7d\x37\x7b\xbb\x37\x00\xb6\x3a\x12\xa1\xd4\x1c\xeb\x1f\x34\x45\x91\x97\xfd\x62\xb6\xd2\x50\xf5\x4b\xd6\x8b\xe4\xb4\x05\xb1\x74\x3c\x04\x0b\xf0\x1f\x83\x4c\xed\x00\x82\x42\x61\x5a\xba\xb0\x15\xae\x57\x91\xe6\xcd\xde\x4f\x75\x81\xb3\xa1\x65\x52\x76\x9d\xed\x2f\x97\x4f\x9d\x97\x14\xdc\xe6\x40\x61\x86\xa6\xab\xfa\xea\xd2\x66\x81\xb8\x33\x75\x58\x03\x37\xe7\xb2\x6b\x3b\x7a\x9e\xf0\xa8\x99\x85\x02\xe2\xad\xc4\xdd\x6e\x3c\x4d\x83\xa2\xeb\xca\x2c\x91\x0c\x70\x0c\x14\x9a\x02\x2b\xcf\x52\x40\x48\x14\x0f\x1f\x75\xd8\x30\x29\xf7\x6d\x9c\xe3\x25\x2c\xe5\xd9\x6c\xb7\x28\xf5\x9a\x01\xc1\x4a\x5e\xf9\x7c\x8d\x2a\x9f\xf3\x5a\x7c\x39\x21\x0c\x42\xa1\xbe\x40\x57\x74\x4b\xbc\x4e\x4b\x45\x11\x92\xec\x7a\xf4\x88\x95\x58\x32\xca\x4f\x4e\xb7\xf7\x6e\xbc\x74\xbc\x2d\x44\xfb\x5f\xe1\xc5\xd0\xf4\x2e\xd9\x17\x74\xb9\xc6\xde\xf5\x8e\xf5\x07\xda\x19\xa8\x36\xf9\xb1\x88\x5d\x79\x24\x1f\xbc\xa6\x30\xba\x93\xb8\x19\x0d\x01\x27\x2b\x11\xf7\xb3\xcc\x00\x2c\x7f\xe5\x9f\x01\x0f\x16\x45\xd6\x6b\xec\xd8\x70\xdd\xbd\x83\xae\xd7\x0e\xa2\x9a\x8b\xc4\xdc\x9f\xdf\xf6\x23\x8c\x4a\x93\x39\x40\x03\x77\x2a\xbf\xc3\x7a\x95\x90\xe4\xe9\xc4\xbc\x79\x70\x90\xb8\x4d\xf7\x65\xc5\x81\xeb\x14\xfa\x42\x45\xf8\xcd\x40\x20\x00\xd6\xdd\xb1\xcb\x16\xd9\x6e\xc3\xce\xa8\xb2\x45\xd3\xcd\x89\x13\xb2\xe0\xac\x9e\x7a\x72\x65\xc9\x7f\xcc\xd3\x3c\xb3\x91\x03\x99\x0f\x63\xdc\xe2\x6e\x5c\xe4\xbe\x82\x87\xbe\xc0\xa6\x3b\xa7\x48\xf5\xed\xae\xed\x04\xbc\x43\x15\xda\x3b\xcf\x54\x83\xe8\x0c\xa1\xbd\x54\x98\x77\x5c\xb5\xc7\xf9\x2e\x6d\x2a\x9c\x0f\x90\x0b\xa4\xc6\xd5\x3f\x91\xa8\x14\x58\xbe\x5f\xd4\xf7\xfa\xc9\x00\x9a\xcf\x96\x00\xd5\x6b\x81\x65\xbb\xab\xaa\x69\xcf\x60\x99\x33\x4b\x1f\xc8\xb7\x9d\x20\x3a\x90\xf9\xb6\xa0\xd9\x33\x15\xd9\x3a\x9c\xe5\x7a\xce\xea\x76\x18\x9e\xeb\x80\x1a\x57\x25\x68\x69\x7d\x84\x90\x40\x01\x8c\x9a\xe7\xc2\xb7\x9d\xd5\x75\xe7\x8a\x8b\x4c\x58\xdd\x10\xe7\xdd\x80\x64\x53\x22\x47\xcc\xa4\x74\x95\xe9\x0b\x82\xbd\x06\xa2\x58\xe3\x4a\x6b\x82\x41\x92\x6c\xd7\xc6\x29\xc4\x9d\x72\x05\x22\xde\x01\x6d\x48\x10\x70\x8b\x75\xb0\x27\x01\x2a\x11\xd9\x32\xbd\xee\x2b\xec\x2b\x4f\xc7\x1b\x37\x87\x88\xf6\x5d\x5f\xa0\xb5\x81\xe2\x3b\x94\x37\x10\x96\x8b\xd5\x2d\x8e\xc3\x96\xad\xde\xf6\x64\xb2\xfd\x1a\x3b\x20\xd8\x70\x20\x5a\x3d\x29\xf0\xc5\x3d\x20\x8e\xb5\x3b\xb6\x08\xfa\x1a\xcb\x50\x10\x1f\x81\x6e\x88\x5d\x6f\x35\xdd\x5c\xdf\xa6\x05\x87\x28\x84\x3a\xed\x6b\xf9\x99\x03\x8d\xa3\x9f\x89\x6d\xc2\x66\x4f\xad\xcb\x63\xf1\xc6\x15\x49\x12\x58\x1d\x9f\x48\xde\xa1\xcf\xc6\x4e\x26\xb3\xd0\x85\xb4\x28\x10\x3c\x05\xb2\xf8\x65\xc2\x1c\x1d\xda\xc2\x1f\xb4\xb0\x95\xeb\xe2\x21\xb0\xb6\xdf\xc8\xb9\xeb\x09\xaf\x97\xd1\xd5\x7a\x40\xa2\x33\x0c\xd5\x8c\x2e\x53\x94\x8b\xec\x23\xe3\x53\x61\x5b\x08\x95\x2b\x47\x4f\x15\xca\xc2\x11\x8a\x00\xa2\x35\x3b\xd3\x83\x6d\x45\xd5\xee\x5a\xf5\xb1\x7e\x2f\x89\xe0\x38\x83\xa9\x81\x06\xc5\x19\x30\xb0\x80\x71\x3c\x77\xbd\xc8\x0a\x9a\x3d\x0d\x44\x13\x65\x9b\x3a\x6c\xe5\x75\xf3\x83\xd3\x3e\x00\x70\x9c\xef\xfd\x40\xac\x23\x4c\xe0\xd1\x99\x34\x57\xee\x5a\x8e\x13\x9d\xa9\xc2\xc7\xec\x5a\x6c\x0a\x89\x82\xa0\x31\x24\x21\x62\x85\x51\xfe\x9a\x59\xd3\xeb\x33\x6f\x0e\x6b\xc8\xaf\x75\xbf\x6d\x64\xea\x23\x00\xe5\x7a\x9a\x83\x81\xba\x83\xaa\x5e\x9c\x78\x0d\x9e\xe7\xfe\x78\x4c\xde\x04\x03\xc9\x03\x2f\x23\x76\xa7\x7b\x52\xef\x48\x72\x3d\x81\x0b\xb2\x65\x71\xae\xde\x57\x1b\x06\x29\xb3\xe3\xa9\x68\xe6\x1f\xf8\xd5\xea\x2c\xaa\xa8\x4c\xac\x40\xc9\x6c\x26\x75\x9e\xef\x29\x3a\x37\x6a\xa9\x0a\xe7\xce\x19\x8e\x79\x52\x5e\x3e\x6f\xdc\x6b\x04\x01\xc1\x9d\xf0\xb3\xd8\xaf\xa9\xf1\xd6\x39\xcd\x51\xf9\x68\xa2\x75\xb7\x76\x87\x38\xe1\xdb\x77\x09\x37\xb6\xc8\xbb\x81\x2c\x40\xbf\x00\x89\x40\x82\xae\xd1\x89\xb2\x29\x08\x9e\x6d\xe6\x54\xd9\x43\x4d\xbc\x78\x2a\x36\x94\xec\xb6\x69\x4a\xf2\xb8\xc5\x27\x8a\x2a\x46\x3c\x0f\x1e\x89\xd6\x9e\xe1\x76\xf5\x54\xbf\x1b\x62\x93\xcf\xc6\x7d\x5f\x36\x6f\x29\xdc\x6a\xb1\x51\xe4\x80\x13\x6d\x84\xd3\xd9\x56\xb1\x69\x5c\x87\xd9\xef\xd0\xa9\x81\xc9\x6c\x05\xf2\x4e\x3e\x21\x20\x5c\xff\x3f\xaa\xae\x63\xcd\x55\xa4\x59\x3e\x10\x8b\xc2\x43\x2d\x25\x21\xe1\x8d\xf0\xb0\xc3\x7b\xef\x79\xfa\xfb\xf5\xf9\xe7\xf4\xcc\x5d\xb7\x3e\x75\x43\x55\x66\x46\x64\x46\x46\xcf\x58\x36\x7e\xaa\x33\x5c\x77\xbd\xe7\x3b\x9c\xa6\x65\x5b\xfe\xf6\x88\x34\xaf\xee\x08\xe0\xae\xe5\xfa\x88\xe9\x48\x90\xe8\xdc\x01\xc0\xb9\x66\xc8\xbb\xb9\x40\x41\x4a\xdf\x81\xe8\xaf\xcb\xca\xff\xd1\x17\x73\x0f\x01\x32\xd1\xe6\xad\x64\xf8\xb6\xcc\x21\x43\x00\x03\xe9\x77\xc0\x5d\x1f\xdc\x7b\x1c\x1f\x29\x71\x08\xa2\xf7\xfb\xef\xe2\x2b\xe5\x91\x08\x7a\xbd\x33\x20\x5f\x69\x6c\xe7\x4f\x7c\x9d\x23\x0c\xd2\x6c\xe2\xd3\x48\x3d\x71\xa2\x25\xf6\x12\x9a\xb5\x4e\xe1\x56\x03\x21\x5f\x0b\x0b\x3c\xcc\x6a\xac\xcf\x35\x54\xe2\x65\xc0\x7a\x5d\xb7\x17\xe4\xa4\x6d\x56\xde\xa7\x6a\xcb\x6e\xb4\xe1\x44\x8c\xae\x72\x3d\x4d\x63\xe4\x62\xe7\x26\x1c\x64\xb0\x32\x7b\xca\x20\x60\xa7\x6a\x86\x61\x18\x74\x58\x76\xb8\xc7\xb8\x54\x39\xbd\x74\x7d\x9b\xa7\x5e\xa5\xdf\x08\xf8\xeb\x35\x9d\x65\x7a\xd7\xac\x57\xa0\x7c\xe1\xe4\xef\x63\xfe\x33\xf6\xf8\xdf\x99\x3c\xf6\x1f\x0c\x94\x22\x4c\x34\xb0\xf5\xf7\x63\xfa\xed\x84\xa5\xee\xb3\x4f\x19\x14\x2a\x76\xcc\xf4\x18\xb6\xdf\x6c\xd1\x1b\xfd\xbd\xb6\x8b\x36\x22\x20\xef\xe0\xce\x90\x02\x44\x88\x7c\x27\x26\xcc\x9b\x8e\x41\x7e\x15\xca\xb6\xf0\xd1\xea\x76\x9b\xac\xda\x0e\xaa\x0d\xf1\x0b\x52\xa3\x3c\xfa\x33\x39\x64\x84\xf9\xf5\x51\x7e\x7d\x91\xec\x2e\xcb\x15\xb9\xc7\x71\x4c\x21\x49\xaf\xdc\x5f\x42\xbf\x6f\x8c\xc8\x18\xc2\x42\x7d\x65\xbe\x11\xbc\x5b\xb1\x10\xd9\xd5\xb0\xd7\xf8\xb0\x89\x1f\xab\x55\x40\x23\xc3\x5e\x16\xbb\x37\x94\x64\xb3\xdf\x83\xd5\xb9\x08\x4b\x16\xf7\xaa\xd1\x9c\xe3\x4b\xf4\xf9\x3b\x4f\x62\xc5\x15\x22\x07\x40\x61\xee\x2b\x06\x4e\x91\x9b\x4e\x97\xcc\x17\x0c\x30\x1f\xbf\x91\x20\x6d\xf1\x46\xa6\x29\xbc\x33\x0c\xe6\x3e\x35\x42\x8e\xa8\x92\x5e\x42\xd9\xc4\x00\x42\xd7\xe1\x60\x48\x95\xa9\x1a\x26\xe5\x71\xcd\x88\xd5\x8c\x4a\x84\xaf\xdb\xea\x76\xfb\x57\x21\x8d\xf6\x7f\xfb\x18\xc7\xf0\x79\x46\x2c\xd1\x3d\x83\x85\x88\xd7\x63\x70\x14\x9b\x42\x59\xdd\x46\x21\x13\xb0\xe5\x0f\x97\x20\x56\xfa\xa6\xa0\x25\x35\x57\x37\x4e\x59\x3f\xd2\x5f\xc1\x11\x24\x57\x6e\xc3\xcb\xf1\x84\xbd\x9b\x8d\x93\xdb\x20\xb6\x0d\x90\x0f\xf8\xe0\x91\xcb\xc5\xb3\xfc\xb7\x5f\x83\x1c\x38\x82\xef\xfb\x4c\x71\x4d\x65\x53\x25\xc3\x94\xc8\xb6\xc9\xd5\x30\xbe\x46\xe8\xd1\xac\xc1\x61\x3c\x8c\x62\x5b\x8e\x6c\x09\x65\xe8\x28\x28\x47\x04\x58\x12\x79\xa5\x38\x93\x0e\xa1\x70\x22\x79\x4f\xb1\xf9\x57\xc5\x24\xdb\xe9\xc6\x69\x22\x25\xa6\x70\x0b\x55\xaf\x08\x83\x78\x02\xf6\x89\x63\xf9\xe1\x8e\x74\xd6\xc5\x5a\x87\x6c\x7f\x94\x7f\xe5\x7c\xa1\xe7\x93\xfb\xa2\x1a\x93\x6e\xf8\x36\xd3\x5b\xae\x11\x10\xf1\x3f\x67\x32\x08\x36\x1f\x72\xb2\x56\x8b\x0c\x3d\x5f\x98\xaf\x72\x03\xbd\xf5\x4a\x5b\x4d\x0f\x96\xfc\xa6\xcf\x5f\x6d\x81\xfe\x64\x4e\x92\xce\x37\xa1\x3e\x9b\xfd\xae\x7f\x80\xeb\xff\x6a\xb0\x1b\x09\xde\xa0\x29\x57\x33\x5e\xc9\x6e\xe8\xc4\x3d\x2c\x06\x8b\x34\xcc\x53\xc3\x53\x92\x42\xde\x8c\x4b\xa7\xc6\x47\xb2\xdc\x6e\xb9\x9b\x02\x2f\xc5\x1f\xa8\x76\xaa\xa9\x90\x1b\x27\xf7\x76\x08\x50\x9f\x03\x5a\x66\x86\x79\x87\xbc\xdd\xd8\x76\x9e\x13\xda\x6c\xe1\x2b\x91\x32\x31\x34\x91\x7e\x64\x52\xe6\xc6\x91\xb9\x6c\x73\x5d\x78\x95\x81\x70\xbd\x1c\x93\xcf\xfa\xd1\x4d\x63\x9f\xed\x51\x4c\xd7\xcf\x73\x8c\xa2\x4e\x2a\xfc\x96\xd6\x51\x31\xf9\x8b\xcf\x0e\x35\x69\x2c\x7f\x1e\x5b\x37\xed\xc3\x2e\x6e\x04\x30\xe3\x38\x4e\x49\xb6\xd3\x48\x77\x1c\xf7\xd4\x16\x77\x14\x92\xe4\xb8\x00\x1e\x33\xad\xaa\x5c\x41\x23\x8b\xa7\x0b\x17\xe2\x4d\x93\x5c\x88\x95\xae\x79\x6a\xad\x58\x13\x3d\xcd\x86\x49\x8e\xf2\x2b\x81\x44\x77\x67\xd9\x9a\xa5\x62\x5e\x3d\x9d\x4f\x19\x74\x9f\x68\x26\xe2\xe7\xf9\x45\x0c\xaa\x5c\x99\xcc\xdf\x11\x8d\xdc\x5d\x9a\x3f\x97\x08\x22\x77\xd6\x50\x9e\xdb\x85\x9e\x2b\xf9\x54\xcc\x3d\x22\x0e\x47\x88\x91\xd6\x2f\x27\xc7\xeb\xb8\xe5\x09\x73\x18\x3c\xf6\x71\x29\xc5\xef\x9c\x49\xb8\x96\x29\x6f\x5f\x69\x80\xbe\x4a\x6c\x68\xa4\x2b\x4f\xb7\xce\x55\x64\x03\x79\xe5\x28\xa5\xd7\x75\x9f\xe5\xfa\x9d\x06\x04\x99\x9a\xa1\xdc\x2c\x78\xae\x0b\x35\x76\x85\x3a\x5f\x99\x99\x98\x1b\xe6\x3b\x13\x36\x0a\xd5\xeb\x8d\xd9\x06\xe9\x3a\x3b\x10\x2e\x55\x83\x69\xb6\xdb\x7c\x98\x33\x9a\x5d\x8a\x00\xbe\xd7\xdb\x14\x19\xf1\x66\x7f\xd2\xe8\x03\xef\x70\x62\xc7\x89\x55\x28\x9b\xcc\x53\x5c\x76\x03\xb3\x36\xa1\x98\x64\x4f\xf4\x38\x13\x3c\x4d\xdc\xba\x16\xcd\x5a\x24\xb3\xb3\x22\x5e\xef\x3a\x7b\x3e\x3f\x45\x7a\x4a\xff\xe8\x19\xb8\x63\x8e\xe6\x29\x6a\x7c\x9e\xf0\x39\x8e\x0b\x4f\x24\x83\xb9\x37\xc7\x79\x92\x4d\x8b\xfa\xc0\x70\x36\x33\xf8\xd3\x26\xee\x6b\x34\xd3\xfc\xa3\xb0\x7d\x84\x45\x3b\xba\xed\x5c\x81\x23\xdb\x4f\xe2\xbb\x9a\x51\xf9\x12\xf7\xd3\x44\x43\x3e\xdf\x59\x01\x9c\xa2\xfb\xb1\x7c\xce\xe3\xd6\x2c\x07\xa8\xcd\xdd\x90\x5d\x62\xd7\x65\x25\x32\xe0\xc4\x00\x9b\xae\xbd\x15\x60\x3e\xc3\x6f\x0c\x93\x9c\x15\xad\xbf\xba\x85\xc7\x33\x5f\xda\x62\x69\x2f\x1a\xbb\x6c\xb8\x79\xed\x3c\x81\x1f\x58\x28\xc0\xc0\xd3\x0a\xa2\xdf\xcb\x6e\xac\x0e\xe1\xfb\xa7\xb5\x7e\x0f\x06\xc1\x90\x1c\x01\x08\x48\x4e\xc9\xe8\x1b\x98\x58\x89\x95\xdb\xba\xde\x73\x85\xef\x99\x01\x25\xb2\x3e\x58\x2f\x73\x38\x67\x35\x2c\xb0\x07\x0c\x41\x85\xfd\xac\xd2\xfa\xdd\xb0\x00\x4c\x1d\x01\x91\xc3\xdc\x5f\xc9\xec\xd2\x97\x58\x8b\xd7\x37\x87\xc7\x1d\x22\x0b\x2b\x14\x70\x7e\x0f\xfc\x07\xbf\xfe\xb9\x87\x52\xae\xf7\x32\x6e\x03\xf8\x39\x02\xef\xc8\xf2\x13\xe1\x8e\x9c\x7b\xaf\x14\xfd\x8d\xe3\x12\x66\x20\x45\x90\x59\x10\xca\x23\x12\x4c\x9d\x91\xa6\x65\x72\x9f\x83\x5a\x76\x7c\x40\xe9\x76\x37\x8e\x4a\x15\x60\x3e\x13\x22\x05\x1a\xbb\x13\x96\x49\x09\x0c\xb8\x21\xaf\x2f\x1f\x90\xcc\x02\x11\xb6\xd5\x4d\x9e\x56\x7c\x1a\x66\x8b\x5f\x11\x60\xe3\xa2\x78\xce\xdb\xd7\xeb\x58\xac\x22\x70\xff\xe9\x69\x72\x85\x85\xe7\x33\xbd\x39\xb9\xc6\x35\xd4\x14\xbf\x8e\x42\x8f\x40\x88\x74\x57\x68\x2e\x78\x3c\x9a\xeb\xa6\xc5\x1e\xd6\xb0\x10\xb6\xa5\x52\x31\x15\xd5\xa9\x9f\xc2\x53\xa8\x25\xb2\x9f\x1a\x1b\x0f\x58\x04\xca\x07\x6d\xe0\x08\x1c\xb0\xfd\x12\x9a\x0b\x11\x0c\xc3\xd8\x17\xc2\x26\x4e\x85\xd2\x90\xe4\xe7\xb3\x93\x4b\xef\x2e\xf2\x58\x49\xfe\x48\xa7\x93\x7f\x96\xfe\xdf\xfc\xf1\xb8\x89\x14\x85\x03\xad\xd7\xec\x80\x30\xe1\xea\x4c\xcb\x22\x1a\x99\x71\xda\x35\xbb\x50\xc4\x9f\xf1\x7d\x0e\xe8\x59\xeb\xa3\x85\x15\x71\xea\xe5\xca\x54\x38\x6b\xd2\x5c\x74\x9f\xcb\x96\xa3\xa8\x29\x55\xa2\xce\xaf\x00\x1a\x3e\x61\xb7\x0b\x76\xd5\x7d\x4d\xa2\xf2\x7b\xcf\x73\x5e\xd1\xc6\x55\xbb\xc5\xf8\xa7\x0e\xb4\x16\x95\x8b\x06\x4e\x29\x11\xb2\xa3\x90\xfb\x2a\xef\x82\xff\x6d\x4a\x92\x9c\xd6\xd3\xa7\x1d\xe8\x66\x91\x0a\x2e\xe6\xb9\xcd\x7c\x1b\xd7\x83\x50\x70\x90\xa6\xd9\xde\x08\xda\xa7\x5b\x08\x62\x95\x31\x96\x4a\x73\xb9\xe9\x1e\xb8\x54\x0f\xe4\xa6\x5c\xac\x52\x2f\xdd\xea\x2b\xcd\x15\x29\x12\x22\x10\x73\xd3\x38\x69\x23\xcc\x3c\x32\xef\xb4\xd2\x83\x9d\x2d\x35\x67\xa2\xeb\x31\x1c\x52\x41\x14\x72\x8c\x32\x24\xea\xa6\xce\x35\xa8\xbf\x45\xf1\x9b\xff\x35\x70\x64\x33\xaa\xd5\x0e\x71\xd5\xd8\x46\x25\x85\x1b\x92\x4e\x46\x33\x79\xc0\x84\x4f\xc6\x24\xfd\x07\xcb\x06\xd8\xee\x8e\xf8\xf6\x9e\xd5\x72\xc2\x92\xcf\x81\xa9\x34\xf4\x67\x88\x56\x9e\xe2\xa5\x64\xde\x8e\x9d\xbb\x7a\xd5\x49\x48\xd8\x18\x77\x0c\xc2\xb6\x10\x58\xc9\x99\x52\xdc\xfb\x54\x23\xaf\x7d\xf5\x27\x9e\x49\x14\x2b\x3c\xf8\xcf\xef\x73\x3f\xb7\xb4\x77\x31\xdb\xc1\xd4\x8b\xa3\x67\x3b\x4a\x1a\xd9\x60\x19\xf9\x1a\xbd\x73\x89\xdf\x17\x87\x8c\xa8\x3e\x03\xec\xf6\x80\x87\xc1\x44\xc1\x25\xae\x19\x65\x9b\x05\xca\xf9\xe8\x61\xfc\xa9\xce\x60\x4a\x26\x0a\xfd\x6a\xc5\xc2\x9c\xef\xb9\xbd\x1d\x42\x23\x00\x76\x61\xf0\xd4\x9f\xc7\x4b\xeb\x6c\xf7\x2a\xfd\x8b\x83\xb3\x89\x5b\xfd\xb2\xd8\xc6\xa3\xa4\xfe\xf6\x65\x9f\x2c\x49\x5c\xdc\xa3\x5f\x78\x8b\x9c\x14\xf1\x12\xab\xc8\xa0\x04\xb4\x9b\x30\xf9\x5a\x5c\x9c\x7b\x43\xc3\x26\xe0\x1d\x41\xb8\xc7\xfa\xed\xb0\xaf\xec\xa9\xf2\xbd\xec\x1f\x45\xfa\xf0\x66\x97\x86\x66\xa8\x9d\x37\xcc\xfd\x1c\x49\xd7\xdd\xa2\xc4\xc6\x6b\x0c\x0b\x5d\xff\x30\x88\x46\x68\x2d\x6b\x54\xa3\x2e\x6c\x83\xfa\x51\xf8\xbf\xfc\x4b\xa3\xa6\x48\x61\x0b\x20\x7f\xfa\xd2\x47\x6a\x03\x9d\x3c\xb9\xe6\x96\x53\xcd\x79\x6c\x26\x4e\x2c\x17\xce\x64\x15\x83\xa5\xe3\x40\x1e\x89\x87\x4a\x3c\x7a\xed\x5a\x4e\xd5\x6a\x06\x6b\xb6\x26\x86\xb0\x28\x51\xca\x42\x32\xc1\xe9\x4c\x9d\xd9\x2a\x31\xee\x60\x31\x01\x82\x10\x88\x98\x3d\xb5\x60\x58\x9e\xb6\x5e\x6e\xae\xce\x2f\x4a\xf7\xfc\xbb\x3b\xfb\x7a\x70\xc7\xa1\x72\x9f\xb1\xcd\xd1\x32\x0d\x1a\xe9\x95\xf6\x11\x1e\xc9\x28\xe9\x12\x50\xef\x79\x49\x6e\x85\xf5\x8a\x5c\xb8\x33\x90\x65\xd9\xc0\x16\xc8\xf3\x33\xa5\xf5\x37\xba\x13\x59\xae\x16\x0e\x9a\xed\x52\x11\x45\xfa\x2a\x48\x9d\x7b\x0e\xda\xb3\x17\x06\x47\xf7\x05\x66\x69\xd3\x3c\xcb\x7c\xd7\xc5\x48\x33\x0e\xc4\xe9\x5a\x56\x54\x1f\x09\xb5\x60\x42\x22\x55\xca\x44\xf9\x81\xac\x26\xf7\xdb\x43\x30\xfa\x57\x39\x3a\x3e\xf2\xfd\xfa\xea\xab\x61\x13\x03\xe7\x4f\x4f\xb5\x46\xe9\x52\xeb\x2f\xcb\x0b\x2d\x8c\x7d\x2c\x07\xcd\x79\xb3\x5e\x1c\x90\x2f\x48\x24\x3a\x14\x46\xe8\x79\x9d\xe4\xbc\x1c\xaa\x4f\xe8\x3e\xdf\x87\x7b\x75\xa7\x22\x7f\x35\xbd\x84\xe6\x4f\xd4\x07\xd7\x70\xb2\x44\xcf\xb1\x3b\x3e\x8b\x63\xeb\x13\xe1\xa6\x11\x5b\x45\xe5\x51\xc6\xa7\xef\xef\x7f\x38\x7b\xf1\x52\xa8\x4c\x69\xaf\x8e\x56\x01\xba\x73\x5f\xd4\xc8\x10\x04\x12\xea\xfd\x38\x4f\x6b\x95\xa6\xd5\xea\xae\xfe\x66\xd8\xbc\x42\x00\xa2\xc9\x4f\x90\x6f\x9f\x6e\x8a\xde\xa5\x68\xa1\xab\x66\x3e\xc0\x8b\x9c\xfd\xfa\x99\x83\x81\x78\xb8\x20\xae\x05\x40\x88\x8c\x1f\x28\xae\x2b\xf3\xc3\x8a\x3c\x94\x31\x9f\x71\x02\x30\x4c\xd2\x4b\x56\xf4\xa1\x9d\xf6\x93\x49\x3b\x52\x28\xce\xc4\xca\xdf\xd7\xfd\xab\xe1\x93\xaa\xb9\x0b\xbb\x90\x58\x49\xa4\xfb\xe6\xda\x95\xd0\x7a\x3d\x90\xde\x54\x80\x3c\x03\x12\xe3\x4e\x0b\xa6\x57\x21\x3f\xc9\x53\x35\x9c\xde\x46\x61\x00\x50\xdf\x94\x2b\x50\xed\x05\x1d\x0b\xf5\xd3\xd2\x9f\x5c\xeb\x58\x06\x36\xd3\x73\x85\x9e\x68\xf8\x39\x51\xeb\x26\x35\xb8\x47\x02\x77\x3c\x21\x00\x7b\xfb\x80\x57\x42\x48\x4d\x0e\x02\xe0\xec\x8b\x80\x66\x8f\x5f\xb9\x9c\x7a\xba\x26\x9e\xf5\x40\x4d\xd5\x8a\x0a\x5c\x63\xdf\x55\xf5\xf6\x5d\xcc\xfb\x94\x81\xf9\x36\xdf\x8e\xe8\x86\xc3\xe9\x20\x02\xef\x34\x94\x6e\x03\x50\x37\x0d\xaa\x60\xa3\xfc\x6d\x58\x43\x39\xab\x47\xc9\xed\x8d\x64\xf4\xfb\x29\x92\x88\x51\x13\x80\x05\xe0\x3c\xbc\x4f\x17\xa9\xda\x63\x76\xa7\x77\xf1\xec\x67\x48\xb3\x2a\xf7\x24\xe2\x15\xaf\x52\xd5\x5e\xdd\x31\x75\xda\x63\x61\xe9\x67\x4d\x22\xda\x4b\xb0\x83\x4f\xae\x1f\xc4\xeb\xf5\x4f\xeb\x55\x3d\x4d\x0f\xdb\x98\xfb\xa5\x4f\xae\x3c\x59\x64\xe1\x57\xa9\xfc\x22\x56\x90\x01\xb0\x1b\x3e\x03\x9d\x0e\xdb\xbf\xa2\xf3\x86\x9a\x9d\xe0\x3a\x46\x64\x22\x4a\xc9\x24\xae\x55\x2a\x34\xec\x07\x52\x91\xb3\x3f\x3f\x1f\x47\x64\x34\x06\x72\x0b\x06\xb8\xcb\x1e\x4a\x06\x99\x46\xcc\xfb\xe1\x43\xa8\x26\x80\x37\xd9\xfc\x43\x27\xeb\xe8\x8c\xac\x54\xd9\xc0\x3b\xd4\xe3\xf5\xaf\xb6\x96\x8a\xba\x7d\x6f\x84\xfe\xcd\xe8\xd7\x32\xc9\xc5\x90\xd8\xf3\x51\x20\x00\x54\xac\x51\x6e\xc6\x0d\x70\x04\xc3\x07\x2f\x14\x1a\x61\x44\xd8\xd4\xb4\x7f\x6a\x07\x39\x5b\xed\xaa\x7c\xc9\x45\x61\x14\x4a\x03\x20\x3b\x7c\xa1\x3e\x89\x78\x25\xf2\xbc\x3f\xa3\xc0\x8e\x1f\x9f\x98\xd1\x25\x47\x8c\xdd\x68\x27\xcc\x1c\x9c\xdf\x5e\x89\x1b\x8a\xff\xc6\xb5\xaf\xec\x90\x07\x33\xfd\x28\xb8\xf2\x77\x6e\xfb\x0a\xde\x74\x6e\xeb\x76\x41\xca\x86\x5e\xb0\xe4\x20\x9f\x59\xff\x28\x72\x82\x99\xe8\x6d\x22\xf6\x2d\x1f\x6a\x3c\x8a\xd1\x49\xcd\xaa\xa0\x97\x08\x70\x62\x1f\xa3\x5a\x65\x6f\x58\xb8\xd7\x63\xff\x89\xc1\x0e\xdb\xe2\x81\x2c\xce\xb8\x4e\x99\x12\x00\xf6\x9d\x83\x9c\xfc\x68\x55\xec\x17\xd2\x95\xf5\x4f\xb9\x6d\x00\x43\xc1\x35\xf6\xb0\xa2\xb4\x6a\x67\x6a\xe4\xd7\xb1\x36\xc2\x6c\xcd\x13\xb5\x11\x96\x58\x19\x7f\xf3\xb4\xfa\x4a\x7e\xe8\x9d\x25\xa9\x0d\x1b\xc9\xef\x83\xcc\x62\xf5\x07\xad\xe4\x20\xec\x17\x0f\x1a\x29\xc9\x92\x0b\x62\x9c\x99\x31\x33\xc8\xe1\x8c\xe1\x02\x36\xe3\x8b\x6a\x5c\x20\x3a\x0d\x55\x05\xfc\x73\x9d\x5f\xa3\xbd\x2f\xeb\xfd\x47\x13\x24\xa3\xc5\x79\xdf\x80\xf0\xdf\xd0\xa8\xa9\x42\x31\xaa\x63\x99\xe5\x54\x18\xde\x37\x2e\xdd\x80\x5e\xd2\x7c\xfe\x44\x56\x20\xae\xfd\xcd\xc6\xfc\xa9\x86\x4b\x80\x83\xee\x29\x5f\xbf\x71\xac\x5a\x71\xbe\xd0\x6e\xa9\xda\xef\xf3\x72\x46\xb1\x68\x01\x78\xb1\x17\xab\x72\x8f\x8b\x05\x28\x42\xeb\xf5\xfe\xe9\x42\x1c\x21\x5a\xfa\x87\xa7\x8b\xaa\x4b\xef\x90\xee\x72\xf0\xb1\x12\xaa\xfc\x7a\x9f\x87\x2d\xa7\x54\xcf\x5e\x59\x2c\x74\x61\x15\x20\x06\xb1\xe7\x3b\xe8\x53\xf2\xb9\x25\x96\x54\xa0\x31\xf9\xf4\xb0\x35\x4a\x37\xd4\xa1\x1c\x3e\x7d\xfe\x30\x9c\x12\xe8\xc4\xea\x6b\x9f\x5e\x16\xeb\xbf\xfa\x4c\xee\xd1\x1b\x36\x0e\xd5\x81\x1d\xec\x36\x1c\x56\xb8\xe5\x79\x3e\x8f\x1c\x38\xcb\x2f\xab\x51\x89\x17\x0a\xbd\x41\x44\x2d\xf4\x5d\x2c\x44\xe9\xcc\x95\xbf\x41\xa1\x0c\xd5\xd3\x3d\x87\xfd\xec\x7b\x82\x89\xb4\xdd\xed\x9f\x54\x41\x0a\x22\xa5\xb4\x17\x2d\xad\x7a\x10\x97\xe1\xc4\x10\x80\x21\x72\x62\x61\x85\xf2\x3d\x55\x41\x25\x5e\x6a\xf5\x45\x18\x1e\x65\x67\xf8\x7c\x68\x99\xfc\xef\xf9\xe4\x30\x67\x28\xc6\x2b\x62\x0a\xf1\xbb\x97\x6f\x2c\xca\x7d\xc3\x7d\x75\x07\xc0\x8a\x19\xa6\xc5\x7e\x15\xcb\xd9\x3a\x45\xa4\x17\x27\x02\x8b\x11\x00\xf1\xc6\xa7\x9c\xf4\xda\x8d\xf1\x93\x8b\x68\xb0\x4a\x7c\xfe\x0c\x67\x2d\x2c\xdf\xd3\xe2\x6e\xab\xa2\x30\x0c\xfa\x4e\xb6\xc5\x1a\xcd\x36\x9c\xdd\xe8\xe7\x5d\x94\xd2\x84\xec\x2b\x93\xf5\x1e\x02\x25\xa7\x38\x7f\xde\xc9\x37\x67\xf9\xc7\x7f\x3c\x05\x0e\xfd\xd4\x6c\x14\xc6\xca\x33\x0a\x9f\x2c\xa1\x5f\xa5\x52\xe2\x5d\xda\x85\x2d\xc5\x82\xc1\x31\x00\xd3\x7f\x82\xae\x5d\x3e\xbc\x28\x4c\x6c\x5e\xeb\x7e\x5f\x8d\x7c\x39\x8f\x13\x5f\x7e\xc3\x97\xf0\xd9\x66\x0c\xd9\xec\x26\x34\x78\x70\x1d\x66\xc8\xf2\x9f\x32\x88\x10\x16\x2a\x4a\x1a\xef\xe0\xe8\x4f\x16\xe4\xcd\xf5\xfd\x53\x3b\x2e\xa1\xe0\x38\xe6\x86\x9c\xfe\x72\x25\xd9\x6d\xad\xfe\xae\x0c\x02\x52\xba\xfa\x15\xfe\xf6\x19\x78\x0e\xa7\x34\x36\xe6\x9f\x4b\xcc\x9f\x68\xaa\x24\x32\xc6\xc0\x89\x62\x11\x15\xe1\x61\x75\x5b\x64\x61\x97\xf8\x36\x4d\x68\xca\x9b\x85\x99\x68\x0b\x60\x59\xaf\x7d\xca\xe5\xbb\xcf\x66\xfa\xa5\x70\xbc\x9c\x72\x53\xaa\x30\x00\x45\x9b\x1c\x99\xe8\xd9\x76\x13\x83\x3b\x2e\xd1\x91\x93\x8a\x20\x8a\x14\x4d\xfd\x20\x33\x7c\xe9\x5d\xbe\x87\x4b\xbd\xa5\xc6\x18\x24\x36\xe9\x65\xcb\x24\xcc\x57\xf2\xab\xdd\xe2\x42\xfe\x9c\x2c\xfd\xb4\x95\xb6\x27\x00\xc9\xe6\xd4\xa5\x12\x75\x8b\x60\x30\xa3\x01\x47\xba\x2f\xf6\xa8\x53\x7c\x7f\x09\xdd\x52\xb7\x27\x10\x2a\x83\x7f\x83\xf5\x3a\xa5\x4e\x0f\xda\x9c\x52\x68\x02\x92\xf4\x4f\xa2\x6d\x76\x20\xd1\x7b\xbc\x67\xf8\xd4\x92\xe5\x57\xe5\x1e\x74\x6a\xf4\x67\x78\xbf\x5b\x40\x22\xda\xf6\xe9\x0d\x93\xce\x83\x79\xd9\x6f\xf5\x94\xd4\xb0\x97\x58\x4e\xf8\x95\xdf\xaa\x57\x06\xb4\xcd\x7e\xa6\xad\xe2\x61\xa9\x8f\x41\xc1\x64\x7d\x01\xa4\x9d\x54\x05\x4b\x3a\xcf\xd7\x1a\x07\x0e\x24\x20\xfb\xe6\x9e\xac\x99\x68\x2d\xbd\xbb\x14\xb7\xf8\xfb\x0d\xc9\x23\xe2\x44\xab\x39\x9d\xc0\x94\xd3\xed\x0e\x92\xc0\x05\x08\xab\xdc\x37\x0b\xd4\xfb\x55\xc6\xa4\xad\x01\x20\xab\xa4\x09\x20\xf8\xf2\x98\x66\x3b\xd0\xa8\x8f\xca\xbd\x0c\x78\x5e\x6c\x2d\xca\x3a\xe2\xbe\x9f\xfd\x3f\x58\xe8\x59\xc0\xed\x6b\x18\xb5\x78\xa3\x8d\x47\xb2\x5c\x9a\x11\x84\xd0\x2a\x44\xdd\xd1\x51\xe6\x12\x8e\x82\x6c\x10\x20\xf6\x5a\x2d\xea\xeb\x58\x62\x2d\xd7\x7b\x93\x36\x4c\xf0\xbe\x82\x4e\xaa\x9e\x5c\xb7\x51\x88\xd6\x84\xb2\xad\xe4\x2f\x8e\x37\xf1\x71\x8f\xee\xd5\xf7\x09\xe4\xa3\x9c\x45\x2e\x10\x60\xc5\xdc\xc4\x9d\x85\x27\x19\xbd\xeb\xc0\xa7\x0a\xf1\x75\xec\x77\x36\x63\x7b\xd5\x7e\xb2\xb0\x89\x78\xe2\x63\x70\xa0\xe7\xc5\xfa\x2f\x1f\xe0\x9e\x8c\x48\xeb\x17\xb5\xa9\x51\x6d\x0f\xa3\xec\xf4\xe7\x44\x04\x74\x1f\xe4\x59\x96\xe5\xb2\x7f\xab\xac\x61\xdc\x0c\x01\x30\x7d\xfa\xce\x46\x7f\x6f\x44\x84\xa4\x7a\xe3\xe6\x3a\xad\x97\x03\x96\x35\xd3\xdb\x1a\x25\x0b\x45\xcd\xcd\xe5\x47\xd9\x91\x1d\x08\xe2\x38\x06\xe0\x33\x83\x5e\xcb\x01\xd6\xc5\x82\xa9\x4e\xdf\x11\xb0\x9b\x9e\xeb\x12\xa6\x37\x51\x7a\x31\x98\x8f\x3a\x22\xe9\x4a\xf9\xf6\x6a\x41\xbb\x3e\xe6\xd2\xfb\x57\x77\xde\x59\x12\xdf\x56\x41\xa3\xe8\xef\x50\xb5\x9a\xfb\x1b\xd5\x99\xe8\xe7\xfb\x1d\x24\xf1\x9e\x82\x32\x03\x8c\xd4\x00\x63\x25\x32\xac\x0a\x41\x66\xd1\x3e\x0d\x01\x02\x53\xf0\xf6\x6f\x56\x80\x1b\x6b\x0f\xc1\xed\x60\x1f\xcb\xdc\xa8\xef\x64\xf6\x17\xc8\x21\xcc\xfb\xea\x8e\x31\xcd\x32\x72\xf0\xad\xcd\x64\x60\x92\xfc\x22\x17\x39\x91\x76\x2f\x2d\x02\x9d\x63\x37\x5f\x97\x5b\x8a\xff\x36\x32\xe7\x46\x9b\x93\xa0\xb6\xb4\x91\x19\x6a\x89\x95\xfa\x9b\x83\xd1\xc5\x7e\x97\x2f\x53\x4a\x06\x3a\x68\xa5\xa3\x39\x06\x37\x0f\x4d\xa5\x4f\xe7\x1d\x30\xf5\x0a\x24\x80\x94\xb7\x02\x49\x7a\xcb\x56\xc5\x22\xaa\x99\x02\x5c\x79\xd0\x4a\xa2\x9a\x72\xd2\xca\xd6\xf5\x41\xad\x21\x3e\x94\xcf\xc5\xa0\x70\x37\xb3\xdb\xcd\x37\x82\xc9\xf7\xdb\xce\x1b\xa3\x71\x9b\x4c\xa8\x49\x81\x02\xac\xdf\x70\x89\x7a\xb0\xe2\x5b\x97\x67\x2c\x9b\xdf\xe5\xe3\x4b\x99\x8c\x19\xcc\xf1\x99\x7e\xbb\x7f\x75\xcb\x5e\x28\x02\x68\x72\xe5\x37\xf0\x2c\x49\x42\xe9\x2c\x17\xa7\x9d\xa9\x57\x74\x72\x01\x92\xe5\xfb\x45\x34\x3a\x62\x50\x10\xc1\x28\x12\xec\xdd\xc3\xe3\x10\xbb\xa1\xd4\x2a\x96\x53\xcd\x7e\x0f\xce\xda\xb8\xd3\x6a\x0f\x88\xd1\x32\xa7\xda\x90\x89\x41\x30\x98\x0f\x6e\x2e\x07\x88\x41\x4d\x41\x87\x7b\xe3\xad\x8f\x18\x00\x08\xb1\x7b\xaf\xeb\xb9\x38\x06\xd5\xd5\xf3\x78\x9e\xdb\xb8\xf3\x7b\x46\xfb\xa6\x6e\xa3\xe0\xae\x8b\xf6\x64\x18\xeb\x1f\x50\xf3\x93\x12\x0d\xef\x15\xb6\x42\x2b\xf4\x31\x89\xa6\x93\xae\xc1\xc3\x8e\x72\x79\x57\xb0\xfe\x66\x21\x80\xe3\x97\x5d\x43\x14\xc9\xf3\x91\x21\x08\xf4\x2a\xa4\xe8\xfb\x12\x3e\xe5\xae\x35\xcb\x51\xa8\x87\x41\x89\x94\xd2\xd0\xef\x07\xe9\xea\x42\x0d\x4f\xe8\xb2\xac\x7a\x1b\x37\x66\x41\x30\xc6\xdb\x6c\x91\xf1\xcb\x78\x32\x46\x0a\x00\x22\x20\xf3\x44\x17\x52\x7b\xf8\x29\x9e\x1a\x31\x01\xad\x36\x33\x07\x65\xd1\x30\x79\x66\x78\xd6\xfb\xaf\x67\xcd\xad\xc9\xce\x6d\xc5\x77\xa5\x87\xe4\x82\x48\xbe\xef\xfb\x34\x54\x7c\xa4\xf5\xb2\x3c\xcb\x02\xdf\x00\x08\xb5\x13\x99\xd9\xdf\x23\xc5\xb6\x7b\x8e\xc8\x71\xcc\x7c\xe9\x42\xf2\xcd\xa8\x78\xa7\x68\x34\xbb\x51\x73\xb5\xfc\x6d\xd0\xe2\xa2\xbf\xfa\x91\x4e\x62\xbe\x9c\x36\x3a\x82\x81\x22\x05\x7b\xbe\xf1\x8a\x60\xa2\x69\x5e\x11\x2a\xe5\x4b\x90\x61\xf6\x1c\x04\xab\x71\x95\xae\xe6\x86\xfe\x15\xdd\x4c\xa6\x18\x19\xbd\x2c\x3d\x12\x16\x9f\xc4\xf8\x3b\xbb\x56\x1f\x8b\xed\x60\xda\x65\x5f\x95\x6e\x51\x3a\x1b\x6d\x5b\x0f\xdd\x0e\x8b\x72\x40\x91\x00\x80\x37\x00\x27\xe2\x5e\x48\xd4\x4d\xc6\x0f\xca\x42\xb4\xd9\x27\x12\x52\x10\x79\xac\xfc\x8c\xb1\xb7\x7d\x41\x0f\xd0\x1a\x1b\xfd\x50\xe1\x43\x60\x7e\xea\x83\xcb\x72\xe3\x46\x24\xae\xa5\x85\xe7\x91\x40\x04\xa9\x0d\x0c\xe6\x3e\xb2\x81\x96\x65\xf1\x35\x27\x98\x94\xf0\xb1\xaa\x98\x22\x64\x76\x09\x2a\xbd\x72\x9a\xba\x4e\x9b\xd2\x1f\x26\xff\xb7\xcf\xdb\xbd\xbc\x98\xb0\x98\x3e\x79\x87\xf5\xf8\xa6\x7b\x07\x44\xd6\xee\x32\x3b\x92\x1b\x7d\x08\x52\x22\x65\x18\x0c\xeb\x92\x0c\x60\xe6\x1e\xd3\x70\xb7\xa8\x29\xec\xf2\xde\x17\xc0\x5d\x64\x10\x42\x75\x7e\xe2\x75\x0b\xba\x74\xde\xf6\xd4\x43\x2e\x83\xb5\x22\x9b\x57\x70\xe9\x0e\x70\x77\x7f\x47\xe1\x48\xf4\xde\x44\x78\x37\x00\x6e\x48\x01\x8a\x84\x2a\x02\x58\x5c\xa2\xa6\xa8\xb3\xef\x9b\xbd\xe4\xd6\x1e\x0f\xe5\x5c\xdb\x66\x3f\xf8\xe6\x60\x2b\x48\xc2\x01\x72\xe1\x6f\x8d\x79\x86\xdd\x1c\x2b\xc8\x52\x60\x0e\x79\x5f\xa2\x17\xfa\x2e\x4c\x93\x62\x64\x3a\x6a\x8b\x84\xf5\x06\x24\xc3\x19\x46\xc6\x1d\x59\x0f\x4d\x3b\x8d\xe7\xa9\x09\x92\x2c\xdf\x09\x17\x3b\x24\xe2\x63\x3b\x84\x56\xb5\x59\x81\xf6\x4e\xfe\xb9\xde\x05\x86\x44\x1d\x9e\x80\xaf\x49\x1b\x14\x92\x1a\x46\xee\xfb\x3d\x80\x2f\x93\xd8\x18\x9b\x1c\x4f\xfd\x79\x01\x64\x73\x76\x03\x10\xe4\x08\x46\x16\xd8\x9d\x1d\x0b\x23\x9d\x95\x5f\xa3\xba\xd4\x5a\x64\xdc\xc8\x4b\x10\x6c\x65\x77\x26\xb0\xc6\xc3\xfe\x57\xe3\x7a\x6b\xba\xee\x40\xcf\x52\x3b\xa9\x1c\x4e\x0b\x50\x41\xb7\xcf\xc2\x07\x96\x59\x3f\xd3\x53\x08\x10\x46\x17\x56\x0e\x61\xf2\x15\x43\xac\xf1\xd3\x81\x7b\xf0\x3b\xaa\x83\x90\x25\x9b\x3f\xbd\x15\x3f\xc4\xd3\x47\x8c\xcb\x4a\x4b\x2d\x6e\x7c\xf0\xef\x30\xf6\xce\xf3\xeb\x89\xec\x2b\xda\xef\x5a\x70\xe9\x6a\x9c\xfc\x76\x40\x48\x03\x80\x09\x00\x6c\x05\xb9\x81\x2c\x7e\x62\x4f\xe9\xcc\x00\x1c\xef\x09\x82\x30\x36\x81\x00\x6c\xf9\x16\xa0\x4b\xd6\x58\x36\x83\xbc\x3a\x83\x5d\xc6\xa6\xa7\x35\x79\x72\x15\xba\x58\x64\x4f\x99\x9d\xa2\x87\x68\xa1\x8b\xf2\x8f\x3e\xe4\x26\xa9\xcb\xd4\x72\x59\xac\x86\xd1\x02\x92\xb8\xfb\xf1\xdd\x34\x30\x1d\x63\x1c\x00\x04\x81\x2c\x05\x33\x70\xcd\xf7\x5a\xaf\x0b\x11\xa7\x93\xd3\x49\x26\xda\xfa\xc0\x24\xfd\x47\x62\xf4\xe6\x40\x61\x0b\x13\x02\x3e\x70\xb8\x4f\x0a\x3f\x1f\x85\x62\x2c\xb4\xfe\x7c\x2a\xad\xca\xe5\xe8\x63\xe1\x0f\x65\xd7\xb4\xfa\x71\xa8\x46\xee\xb3\x7e\xc1\xce\x0c\x73\x5d\x03\xe3\xfb\x10\x39\x92\x4c\xf7\x3c\x26\x58\xfc\x38\x54\x07\xa6\x8f\x40\xb2\xa7\xbe\x8b\x31\xe9\x06\xa9\x80\xcd\xf4\x26\xe4\x4d\xf2\x53\xdf\xed\x45\x65\xb3\x5c\x0d\x8e\x12\xf0\x03\x7c\x93\x5a\x4d\x6e\x38\xf1\xa8\x0c\x3e\x78\x20\x5c\xfd\xdf\x9c\x49\xb1\xf5\x63\xea\x4d\x8f\x2f\x03\x17\x4b\x89\x9c\x81\xab\x8b\x20\xb9\x96\x03\x0d\xe6\x40\x50\x90\xa2\x70\x95\xf6\x22\x57\xf9\x02\xc6\x9d\x60\x92\xed\xec\xcc\x57\xf8\x92\x7a\x3d\x47\x78\x2a\x98\x84\x66\x26\xbe\x8b\x61\xe3\x1e\xaa\x07\x87\xbf\x59\x76\xa4\x73\x6d\xb6\x3c\x8b\x5e\x65\x59\x0f\x6e\xf7\xc3\xde\x7e\x4e\xfc\xa0\x01\x28\xbc\x8c\x93\x31\x08\x26\xce\x89\x7d\xc7\x70\xff\x73\x27\x68\xe7\x2b\x6d\x75\xa6\x5e\x6b\x3a\xad\x84\xa7\x9f\xbc\xef\x5b\xa4\xff\x1f\x9f\x58\xe7\x08\x5f\xe8\x44\x77\x35\xb8\x35\xf3\x49\xa4\xd1\x8b\x40\xc3\x4e\x42\xe7\x4c\xb3\xd9\xfb\x00\xd4\x59\x89\xeb\x5f\x8d\xe4\x61\xe1\x64\x2e\x44\x12\x6c\x2d\xb1\x12\x4b\x0b\x50\x06\x8d\x18\x23\x02\xc6\x35\x9f\x63\x6f\x5c\x62\x7e\x5c\x80\xa6\x1a\x74\x3b\xae\xee\xc7\x72\xd4\x64\x1a\xdc\x6e\x5f\xd2\x71\x5d\xaf\x32\x6c\x8a\xbc\x10\xec\x37\x34\xbc\xeb\xf0\x42\x13\xbe\xe5\x44\xb1\x90\xfa\xa5\x99\x13\xe1\xd3\x94\x9b\xb1\x06\x81\x64\x5a\x7f\xb2\xf9\x07\x66\x20\xdf\x70\x66\x27\xd8\x9d\x45\x3b\xe7\xe4\x07\xec\xb3\xab\x4a\x99\x2a\xe3\xcf\xf9\xbd\xcf\x77\xfa\xe8\xa7\x57\xed\xba\xa1\xe0\xef\x6a\x62\xdf\x4f\x5d\xfe\xfe\x87\xe3\x49\x4e\x9f\xe5\xda\x59\xa8\xaf\x12\xb9\x7c\x95\xfa\x1a\xcd\xb4\xa5\xd8\x56\xb1\x6e\xb5\xb8\xe5\x2b\xbc\x04\x0c\x02\x67\xee\x45\x56\x59\x14\xf3\xed\xe7\x4f\xa8\x0e\x67\xb5\xba\xd3\xea\x76\x8b\xa8\xf8\x65\xb8\x55\xb3\x43\xef\x8a\x4a\xba\x8d\x52\x28\xe0\xcc\xdf\xff\xcb\x55\xc7\xeb\x96\x04\xa1\x09\x38\x61\xfe\x28\x77\xd7\x04\xdd\x1e\xd6\x22\x62\xc8\xee\xf6\x20\xd7\x0d\x2d\x23\x6c\xca\xf9\x2b\x81\x66\xe7\xf8\xa1\x43\x09\x54\xc2\xfe\xe0\xe6\xdf\x99\x29\xff\xf2\x24\xa1\xbf\x93\x10\xd3\x47\xe4\xc6\xec\xe6\x54\x2d\xfd\x7a\xc1\x87\xf1\x81\x07\x35\xaf\xee\xe4\x5a\x95\x1b\x79\xa7\x99\xb3\x2f\x49\xe5\xbe\x0b\xa2\x7f\x22\x9f\xd2\x7d\xfd\xe5\xf3\xe6\xdf\xbd\xc8\x70\x5f\xea\xd1\x9d\x3d\xe1\x9a\xdc\x9b\xcd\xa5\xd7\x8e\xd6\x4f\xdd\x78\x7d\x5f\xed\x18\x74\xf2\x0b\x66\xed\x6d\x4f\xa9\xcd\x06\x89\x4c\x0b\xd6\x25\xcc\xdd\xe2\x8e\x9f\xc7\x77\xe3\x40\x27\xbf\x3f\x7f\xb1\x33\xea\x15\x68\x52\xd0\x7d\xeb\x67\x24\x47\xad\xa7\x3e\xb6\x68\x4e\x70\xba\xfe\xd6\x56\xf5\x9b\xca\x96\xad\xde\xdc\x1a\xf5\x39\x8c\x59\xfb\x5d\xad\xca\xec\xf1\xcf\xa7\x52\x05\xbd\xf3\x3f\x9f\x2e\x3e\x94\x44\x04\x20\x49\xe8\x46\x64\x08\x4b\x3f\xb3\x6b\xb0\x7d\x50\x39\x85\xc1\xea\x4e\x24\x8b\xb9\x6f\x5c\x50\xe6\x64\x6e\xc3\x1e\x50\x21\x7b\xd1\xed\x87\xb9\x96\x09\xdd\x6a\xac\xe6\xc6\xf7\x33\xfe\xc5\xad\x6b\x0d\xad\x6b\x3e\x38\x27\x6b\xec\x61\xc5\xb6\x65\x91\x8b\x38\xba\x1e\x14\x89\x28\x6f\xad\xbb\xa9\x41\xc7\x16\x5b\xdc\xb3\x07\xc1\x9c\x97\x70\xe5\xec\xfd\xfd\x3b\xc7\x65\xd4\x1a\x29\xb9\x6c\x5f\xd6\x6c\xc6\xbc\x29\x84\x3f\xe4\xf8\x93\x8f\x58\xee\x98\x2f\x8c\xb2\xf6\xea\xfb\xac\x29\xac\xbc\xbf\x79\x55\x94\xf9\x91\x0b\xa0\x30\xb2\x7f\xf3\xbb\x5a\xd6\x68\x52\x30\x7d\x6b\x99\xed\x8c\xa5\xca\xa9\xab\xb9\x3e\x11\x57\x6d\x3a\x65\x6d\x50\x85\xe5\x52\x12\x6b\xce\xaf\x03\xeb\x6f\xd0\xf6\xb7\xb5\x42\x35\xfc\x30\xc7\x73\xd0\x9f\x56\x90\x1d\xbf\xfa\x65\x45\x6b\x50\x75\x89\xb2\xb8\x80\xc2\xe4\xed\x2e\x8b\x34\x08\x69\x64\x83\x70\xd6\x86\x33\xed\x73\x81\xd8\xc6\x4b\x69\x48\xfa\xa4\x8c\xdb\xc1\x0d\xf9\xeb\xed\x12\x1d\x4b\xc7\xff\xab\x87\x21\x24\x11\xa6\xf5\x29\x27\x10\x4c\x95\x93\x8c\x8d\xbb\xdf\x2f\x4d\x8b\xd7\x74\xe8\xbd\xcf\x98\x2b\x67\xfa\x7d\x4b\x21\xa6\x7f\xce\xb7\xf9\x76\xe5\xb9\x02\x44\xfd\x5f\x0e\xd0\x76\x96\x9e\x3d\x2d\xe3\x85\x6b\x55\xb0\x9a\x53\x3e\x30\xb8\x11\x1a\xd2\xc8\x1f\x4f\x61\x80\xc2\x61\x68\xae\xa9\xd6\x82\x1d\xbf\x3b\xac\xcb\x0f\xc5\xaf\x29\x97\xca\xff\xac\x47\xba\x2c\xc7\xe8\xc5\x3f\xdf\x33\xc9\xd5\xb0\x7d\x93\xbb\x16\x6a\xc7\x08\x69\xd7\x9a\xdc\x97\xfa\xf1\x58\xb1\xb9\x3b\xca\x59\x0f\xfd\x73\xbc\xb4\xc2\x3b\xd9\x4b\x65\x5b\xd5\xfe\xb0\x39\xcd\xa9\xd3\x76\x2f\x15\xb3\x4d\x72\x3d\x50\x25\xf1\xfa\x6f\x1e\xb9\x05\x13\xf5\x45\x5d\x42\x65\xb1\x0b\xe5\xe8\x9a\x6f\x66\x9f\x96\x51\x4e\x06\x4f\xe4\x0b\x84\x19\x4b\x6f\x17\x43\xe7\x33\x1f\x60\x1b\x27\x4f\x5e\xb8\xa9\xe9\x7d\xcd\x44\xd3\x8f\x8a\xb0\xdf\xcf\xfe\x6f\x1c\x0d\x9b\xaf\x9d\x08\x86\x93\x8b\x58\x84\xdc\x23\xb8\xdf\xf3\x2e\x50\x48\xd6\x97\xd1\xa1\x9e\xb4\x41\x09\x5f\xda\xcb\xb9\xa7\x74\x3b\x98\x9d\xbf\x23\xc6\x90\xb7\x2c\x8f\x8c\x2f\xfe\x1f\x6c\x1b\x4c\x7a\x63\x3b\xf9\x0a\xdb\xa5\x6a\xe1\x15\x76\x01\xcf\x22\x54\xcc\x9b\xbd\xbc\x12\xa6\x5c\xc8\x4e\x1b\x76\xef\xb0\x0b\x9b\xc5\xb1\x21\xea\xe6\x0d\x16\x53\x9b\x15\xe3\xed\xa8\x3d\xa7\x1a\x4d\x2a\xf6\x8b\xd5\xff\xfd\x3e\xa5\x76\xbd\xd1\x55\x44\xed\xcf\x33\xba\xf0\x7b\x28\x87\xe0\xa3\x5b\x3f\x16\xb6\x76\xe2\x98\xed\xb0\x83\xf7\x7e\x3a\x6e\x1b\x5a\xc9\xfd\x9a\x31\x36\x9c\x8d\x0f\xce\x69\x38\x62\xc6\x5e\x15\xd9\x56\x42\x11\xaf\xed\x19\xfd\xea\x5e\xf8\x50\x9a\xa0\x2f\x67\x89\x2d\x9f\xaa\xf5\x26\xc7\x34\xf9\x72\xcc\x16\x81\xe6\x83\x04\xb3\x2f\xaa\x8a\x85\x6c\xf5\x4b\xaa\xd2\x90\xa5\x4f\xaa\x07\x1a\xbd\x87\xea\xa5\x54\xf8\xdd\x45\x19\xfb\xed\xfe\xfd\xfb\xf0\x50\xbd\x11\xe5\x19\xb5\x5f\xf6\x5c\x08\xed\x12\x2b\xb1\xea\x84\x24\xef\x6a\x08\x8a\x4c\xc4\x5e\xd2\x66\x54\x0c\xd7\x51\x17\x12\xdc\xd7\x8c\x0d\xb1\x85\xae\x52\x15\xf0\xbc\x3b\x77\x12\x9d\xa5\x73\x9f\x2c\x05\xea\xcf\xe0\xcb\x3d\x87\xc7\xfc\xbb\x23\xaf\x5e\x59\xff\x86\xde\xaa\xb5\x4b\x3c\xa7\x31\x9e\xad\xee\x04\x9d\x76\x8c\x7c\x75\xa3\xe1\xa0\x49\xb3\xa5\x6e\x3e\x13\xc5\x9f\xe8\xcc\x2e\xe3\xf4\x24\x73\x17\xe3\x8b\xed\x45\x6f\xaa\x00\xe3\xb9\x6f\x33\x2a\xf6\xcc\xe6\x48\x7d\xf9\xd5\x78\x3f\x3b\xe5\x6a\x4e\x27\x61\xca\x73\x89\x85\x4f\x0c\x1b\xb2\x11\x73\xb9\x2a\x86\x37\xff\x06\x60\xad\x83\x4e\xaa\xe1\xdb\x13\x9e\x2d\xe5\xb9\x53\xea\xbf\x4d\x86\x66\x0a\xf7\x3b\xe4\x87\x1a\xf2\x94\x8b\x1d\x56\xd2\x49\x35\xb7\xbf\x9f\x0d\xf1\x77\x56\xc0\xbc\x9c\x5e\x62\x1b\xaa\x57\xaf\xf3\x6e\xd2\x68\xed\x8f\x90\x45\xc8\xd9\x3a\xdc\x61\x5c\xf2\x7a\x09\x26\x3a\xc7\xae\xf7\xd3\x84\xa3\xf6\xa2\x82\x45\x7c\x61\xf4\xac\xc6\x17\xa7\xb4\x18\xb8\x83\x4d\xbe\x67\x79\x6c\x85\xfd\x2d\x2d\xbf\x7c\x52\xeb\x6c\x3d\x2f\x02\xde\xc4\x4c\x20\x29\xca\xb5\x6c\x9a\xe3\x7e\xd4\xdd\x81\x8e\xdb\x06\x93\xbf\x18\x03\x2e\x15\x4d\x96\xf8\xcb\x0d\x6b\xb2\x7b\x99\xd2\xd5\x00\x7b\x6a\xbd\xc5\x0d\x81\xf8\x67\xf7\x4f\x3d\x9d\x5d\xbc\xcb\x20\x6f\xb7\xf1\xf9\x36\xdf\x56\xd4\xde\xd8\x22\xcc\xc3\xaf\x81\xdb\x91\xfd\xc4\x4f\xc8\x9b\x4d\x2c\x6a\xda\x5d\xa0\xb3\x51\xb4\xd1\x6d\x45\x1f\x6b\xf3\x54\xe0\xde\xe1\xfd\x8d\x3e\x17\x15\x8d\x42\x11\x1e\x87\xb8\x4c\x03\xa8\x59\xa7\xaa\x07\x5a\x97\x5b\xe6\x33\x41\x6f\xf2\x26\x94\x15\xd9\xa6\xe7\x50\xe5\xc9\x46\x18\xd3\x11\xf7\xfb\x15\x0e\x9f\xdf\xdf\x21\xd1\xcd\x28\xc7\xb2\xa6\xd9\x5f\x52\x52\xc5\x96\x60\x9e\xc8\x03\xa8\x48\x8a\xef\xfe\x69\x12\xb9\x5a\x3c\x1e\xe2\xe3\x29\x99\xef\x8f\x33\xa7\xda\xa0\x89\x93\xaf\xda\x05\x2a\x09\xb2\x5f\x16\x96\xc8\x9c\x89\xa3\xa0\xa5\x66\x7b\xfe\xe7\x5e\x09\x9a\xcb\x16\x77\x46\x79\x4b\xe2\x7a\xa2\x66\x77\xea\x59\x08\x2a\xf7\x1b\xc7\x4f\x5d\xad\x15\x2b\x34\xd7\x39\x12\x6a\x91\x04\xef\x21\x5f\xda\x19\x9b\xc8\x93\x7f\x9c\x2a\x30\xcf\x15\x57\x4a\xb3\xe4\x14\xfa\x79\x84\x6f\x66\x14\x0b\x2a\x22\xf2\x8b\x4f\x5f\x09\xe5\x7d\x9b\x17\xf7\x52\xd0\x4b\xad\x07\x9c\xf2\x5f\x4c\x58\x2e\xbb\x7a\xf1\xdc\x24\xda\xf5\x3f\x33\x1a\xee\xd1\xf3\x66\x77\x95\x29\xd8\x34\x3c\x6b\x4c\xa1\xad\xaf\x07\xc1\x3f\xce\x19\xa3\xb1\x9a\xde\xf2\xd7\xe7\xb9\x31\x4b\x2f\xb7\x2f\xc9\x47\x21\xc8\x14\xe2\x55\x3e\xaf\x79\x1f\xa9\x71\x0d\x57\x41\x43\x49\x14\x25\xca\xec\x25\x37\xbb\xaa\x3d\xc6\x22\xfd\xed\xc9\x49\xb7\xb8\x73\xf8\xb1\xd1\xa9\x50\xca\x1b\x42\xb2\x24\xd3\x19\x13\x85\x2b\x67\xbb\x60\xd1\xec\xc6\x97\x7a\x25\xad\x34\x11\xee\x8b\x7a\xc7\x18\x34\x42\x7a\x4f\x06\x60\xcc\xd6\x30\xf1\x35\x02\x8c\x6e\xc1\x99\x8e\xf4\x83\x2b\x36\x1b\x68\xcc\xf8\x59\xf3\x01\xc1\x6f\x4a\x41\x8e\x25\xfd\xfa\x4f\x6c\x49\x3f\x75\xba\x63\xf1\x8b\x4b\x73\x17\xb3\x88\x97\x6b\xc1\x70\xab\xbf\xb7\x4a\x19\x61\x7f\xe2\xae\xd5\xfb\x42\xef\x67\xb2\x23\x36\xc5\x85\x34\x32\x63\xc4\xe3\xfb\xfb\xce\x50\xb3\xf1\x3e\x7d\x2c\xf8\x7e\x76\xa5\x7c\xb6\x0e\x93\x58\x49\x57\x2a\x94\xef\x81\xde\x98\xb1\xe1\xaf\x4d\xb9\x33\x55\x7c\xfe\xbb\x0b\x49\x5d\x0b\xa1\x35\x1e\xba\x24\x5f\x45\xdb\x10\x04\x96\x74\x97\xf7\x9e\xaf\xb4\xa4\x5b\xb8\x75\x25\x68\x16\x7c\x37\xe1\x82\xc7\x24\x2d\x55\x9e\x80\xdd\x0b\x09\x21\x44\xe7\x6f\xd9\xea\x23\xa1\x3d\xce\xd2\x58\x13\x42\xbb\x3b\x7f\x12\x7f\x35\x25\xdc\xd3\x47\x6c\x99\x17\x65\xad\x0e\x30\xcd\x76\x2e\x29\x81\x19\x46\x10\xcf\x77\x2a\x24\xc4\x72\xb3\x0a\xfe\x3c\x59\x67\x7c\x2a\x27\x24\x11\xe1\x07\x33\x57\x2d\xdf\x1c\xde\x8b\x8c\xe0\xea\xb9\x1b\xbb\x8c\xb2\xd7\x12\xf1\x13\xd9\xbf\x95\x0b\x0d\x1b\xb5\x46\x89\x3d\x81\xdf\x34\x01\x5b\xbf\xa5\xbf\x1e\x09\x5c\x27\x57\xd0\xc0\xca\x57\x63\x51\x15\x99\x68\x0b\x4c\x6f\x83\xc1\xe8\xe9\x98\xf8\xfa\x63\x55\x7c\x76\xeb\x2d\xaa\xef\x6b\x4b\xbc\x17\x06\x39\xfc\x5c\x4e\x86\x0e\x12\xfb\xbe\x3b\xc8\x8e\x31\x3a\x3f\x43\x87\xe3\x70\xca\x9f\x48\x4f\x24\x95\x89\xa6\xdc\x55\xf9\xc1\xff\xb2\xd5\x4b\x37\xc7\xbc\xcd\xfb\xdf\x59\xd3\x4f\x79\x3c\x55\xf3\x8d\x07\x11\x83\x69\x41\x77\x89\xee\x9e\x03\xee\x39\xc9\xc5\xf0\x59\x1e\x18\x92\x9b\xbd\x51\x69\xa2\x94\xa1\xa9\x10\x8a\x4d\x95\x22\x27\x1a\xf3\x67\x12\xac\x9f\xf2\x3d\xab\x6c\x16\xad\x38\x13\x9d\xe5\x04\x25\xa7\x97\x2f\x51\xce\xd7\x92\xf4\x3e\x7e\x7c\x0c\x04\x8b\xdb\x3f\x67\xf3\xf9\x7b\x36\x8f\x47\xde\x7d\x52\x47\xd6\xd6\x40\x89\x50\xff\x19\xf7\x13\xad\xd7\xc3\x93\x09\xf7\x10\x44\x3b\x31\x28\x7f\x26\x35\x58\x31\x5a\xb6\xbc\x1c\x2f\xa4\xd9\xb7\xbe\x34\xdb\x8f\x98\x23\xd9\xb7\xff\xc9\xf5\x9e\xda\xfa\x0c\x23\x08\xc2\x6a\x8c\xe9\x4b\x72\xc8\xfe\x41\x6e\xfd\xde\x20\x88\x17\x8b\x65\x9f\x7f\xc4\x17\xf5\x3b\xcb\x32\xea\xc7\x2e\xb4\x9f\x65\xc0\xda\xc5\xad\x78\x13\x0d\xde\x5b\xce\xad\xdc\x8d\x0e\x14\x64\xa8\xaf\x91\xb5\x0a\x01\xa5\x9e\x97\x22\xe5\x08\x55\xa3\x62\xf4\x10\x95\xcf\x25\x7e\x1b\x06\x10\x45\x19\x34\x13\x95\xc5\x1d\xd1\xcf\x4c\x1c\x88\x4e\x42\x77\xab\x1d\xc7\xdc\x09\xdd\x09\xda\xf7\x95\x7c\xbf\xe2\xdf\x58\x2a\x1e\xb0\x09\x71\x5f\xda\xa2\xd5\xe9\x25\x1c\x3c\x07\xa3\x4c\x30\x40\x1a\x8f\xbd\x88\xa6\x3b\x5f\x78\xa1\x1c\x1a\xef\xf5\xe1\x54\x5a\xab\x03\x5c\x2b\xc9\x61\xf6\xd6\x39\x02\x29\x69\x88\xa2\xc3\x22\x1c\xc7\xd1\x5e\x33\x2a\xaf\x6c\x66\x43\x7f\xdf\x43\xb7\x76\x82\xda\xe2\x3e\x17\x51\xc7\x36\x0a\x65\xd5\xac\x54\xe5\x27\xe1\xfc\xce\xc9\xc5\x25\x57\xa0\x3f\x1d\x83\xc4\xe2\x41\x38\x47\x1e\xea\x52\x70\x20\x62\xd8\x5a\x6e\xfb\x73\x11\xaa\xab\x12\x2b\x71\x3f\xc3\x91\x25\x4a\xc5\xc2\x97\x47\x9a\x80\x31\x15\x42\x34\xfd\x79\xc7\x42\x49\x22\x52\x86\xb0\xa5\xe7\xc1\x0f\x82\x32\xf3\x3c\xb7\x13\x0c\x44\xa7\x38\xfd\x09\xfa\xf7\x0a\x5f\x1d\x07\x81\x50\x2c\x8f\x47\xae\xe6\xea\x5f\x51\xaf\xfe\xb0\x25\xcb\xff\x2c\x03\xe1\x12\x2b\x55\xae\x70\xff\x6c\x79\xb8\xe7\x48\x1e\x17\xe5\x71\x2a\xf2\x0f\xff\x3f\xfb\x32\x1d\x51\x42\xe3\xbe\xfc\xa7\xd0\x3e\xf2\x5c\xf0\x30\xce\x17\x9d\xa6\xd3\xe8\x9e\xe4\xfb\xc9\x9b\x3e\x51\x57\x1e\x22\x3b\x28\x24\x52\x90\x37\x94\x6c\x2e\xc7\xe9\xf8\x0a\xfe\xd0\xc4\xcf\xeb\xd7\x43\x25\xe7\xb5\xcc\x71\x3f\x64\xa6\x14\x6c\x80\x76\x16\xa6\x71\x81\xa4\xd2\x18\x85\xd8\x5d\xbe\x2b\xa6\x89\x35\x9c\x40\x67\xe8\x6a\xd8\x19\x82\xb0\xf6\x48\xd1\x52\x15\xf4\xfa\x3c\x31\x0f\xba\xfb\x70\x01\xa5\x36\x56\xa6\x38\x2c\x89\xf6\xfd\x50\xc9\x55\x27\xad\x39\x75\x1b\x39\x22\xdc\xdf\x1a\x0f\x49\xed\xa6\x9e\x6b\xcf\x5b\x4d\x2b\xd9\xcd\x29\x06\x0f\xb4\x70\x7e\xe3\xf1\xc9\x7e\xe9\xdd\xbd\xf6\x86\x81\x59\x12\xf3\x83\x45\x83\x37\x8b\xc0\xae\x1c\x23\xab\x57\x48\x55\xad\xc4\x4b\x07\x08\x09\x72\x87\x6e\x1d\x72\x34\x51\x63\x7d\xe0\x35\x99\x7d\xca\xb4\x5f\xe1\x1c\xe3\x69\x2f\x4c\x96\x73\xaa\x40\x8f\x88\xbe\x7b\x52\x39\x6d\xcb\x6e\xe8\xc6\x2b\x8e\xda\xe3\x49\xef\x18\xdc\xbf\xb2\x86\x44\x0a\xa2\xe9\x95\xf8\x7c\xfd\xea\x07\xa5\xee\x42\x4b\x25\x3c\xbb\x71\x67\x18\x2e\x8c\x1f\x0a\x2c\x64\xcc\xcb\x11\x24\x07\x43\x2b\xa0\x3d\x11\x60\x0c\x83\xc0\xe0\x52\x39\xf9\x23\xeb\x3d\x82\x88\xe6\x83\x91\xdd\x39\xd4\x20\xc6\xb2\x74\xac\x75\x58\x5f\x0a\xf8\x03\xef\x00\xd8\x04\x40\x3d\x27\x49\xa4\xf5\x7a\xe9\x25\x3a\x6d\x78\x9a\x72\xce\x3a\x79\x1d\x8f\x74\x27\x98\xdf\xb3\x9d\xcd\xc0\xfb\xfc\xe4\x0b\x76\xb8\x5b\xe8\xcf\xf3\x4d\xa1\x3e\xbd\x2b\x40\x20\x76\x42\x30\x81\xef\x67\x39\xc8\x17\x3a\x51\x67\x6c\xc0\x78\x6f\xbe\x28\x25\xf9\x52\xf7\x5b\xb6\xbe\xa5\xdd\xb0\xc3\x23\xbc\xde\xcb\x7e\x6c\x8b\x90\xf9\xcb\xe8\xa7\x17\x15\x0b\x4c\x4d\x6e\x3b\x82\x2d\x45\x0a\xb3\x76\x9e\xbe\xef\xb7\xf4\xd2\xc7\xc7\x1b\x1d\x0f\x12\xb3\xbc\x6d\xb1\x30\xc2\x63\x14\x77\xbb\x2d\xd8\x83\x4d\x38\x9e\xb5\x90\xd8\x56\x84\x86\xfd\xde\xf9\x0d\x84\xe0\x53\xc4\x96\xa1\x21\xd9\x7c\x1b\xbe\x8e\xd0\x02\x8e\xb0\x77\xa3\x59\xe7\x8c\x50\x1b\x40\xdc\xa9\xd2\xd0\xc6\x25\x70\x04\x27\x08\x40\x3f\xe1\xb1\x60\xa3\xdc\x8d\x53\x4e\x3f\x1f\xb6\xea\xb1\xc8\xab\xfc\x22\x2d\xea\x4d\x45\x09\x12\x37\x07\x9e\x3b\x47\xd7\xde\x23\x66\x77\x29\x06\x80\x06\xa0\x38\xf1\xf9\xf8\x46\xad\xcd\xc0\x0d\x25\x98\x4f\xa5\x59\x54\xea\xbd\xf6\xb8\x7e\x9c\xe9\x2f\xb7\x91\x9f\x65\xd8\xae\xd9\xa2\x6d\xb4\x0d\xe3\x15\x67\xcc\x68\x7d\xac\xe9\x8a\x1b\x2f\x89\x00\x4d\x13\xb2\x72\x32\x4f\xf4\xb6\x83\x7b\xde\x4f\x69\x75\x95\x15\x67\xee\xcf\x68\x78\xfa\x89\xbc\x79\x13\xdf\xa8\x58\x79\x46\xc2\x01\xf8\x1d\x80\x70\x57\xca\xc9\x04\x70\xee\x77\x50\x7d\xd2\x30\x4d\xc4\xd5\xfa\x36\x4b\xd7\x34\x71\x62\x29\x0c\x43\x1a\xe1\xc1\xab\xcf\xfc\xd7\xc3\x42\x8c\xd0\x5b\x7d\x1e\xa1\x60\x2e\xf1\x9b\x67\x6b\xf6\x99\x03\xf2\x81\x6c\xbb\x3e\x4c\xf7\x60\x4f\xf4\x36\xfe\xdc\x45\xa0\xea\x97\x39\xe7\xba\x73\x7b\x21\xc1\xc0\x76\x26\xa6\x79\xc3\x15\x57\x59\x5f\x6f\x4c\xb3\x73\x08\x6c\xc0\xee\xd6\xad\xf4\x86\x4e\x10\xc2\x3c\x33\xc4\x3d\x39\xb4\xac\x45\x3b\xf2\xec\xbb\xef\x15\x25\xd7\xe9\x7e\x1c\x8c\x2d\x83\xd1\x79\x72\xbf\xf8\xfb\x3b\x4d\xfb\x4c\x23\xf3\x74\xfb\x4b\xc2\xed\x1f\x1c\x95\xb6\xd5\x9d\x01\xed\x02\x64\x8b\x37\x66\xa3\x4e\xe3\x41\xe7\x36\x62\xc2\x1c\x60\xa3\x16\x07\xd8\xf0\xb8\xd7\x8b\xe2\x0b\x52\xe0\xc2\x3d\xc8\x77\xda\x6e\x30\xdd\x1e\x06\x7c\xaa\xb6\x7d\xdb\x46\x25\x07\x4c\x1f\xfa\xcc\xb8\x11\x75\x7a\xfa\xe0\x4e\x09\x76\x26\xd5\x27\xce\xf7\xa5\x11\x26\xfe\x15\x8f\xbb\x76\xd6\x83\x98\x5c\xbf\xd2\x28\x07\x97\x1d\x7e\x2d\xf3\x20\x47\x9e\x0f\x71\x7c\x7f\xe7\xaf\x84\x6f\x00\x05\x3b\x60\xb0\x73\x89\x79\xb6\x3e\x9e\xda\x9b\x60\x5a\x1a\x20\x11\x9e\xf6\x23\xf9\xac\x71\xa6\x65\x56\xd8\x2b\x32\xf2\x80\x62\xb0\x7f\xd8\x95\xd7\x04\x40\xa8\xe1\x0d\xe3\xb5\xcc\xe0\x3d\x31\xfa\x0c\x18\x66\xbf\x36\x59\x5c\xe7\x87\xb9\xe4\xfc\xb3\x08\x78\xce\xde\x13\x29\xcc\x96\xe0\xf0\xde\xf4\xbf\x5e\x46\x32\xc3\xa1\xfe\x6c\xbb\xcb\x0b\x7f\x5f\x5d\x3a\x41\x93\x35\x71\x74\x10\xe4\x83\xcb\x10\x98\xe0\xf4\x36\x8f\x57\x47\x60\x1f\x27\x67\xca\x1e\x30\xe7\xb2\xfb\xf3\xd3\xbc\xe3\x53\xb7\x1b\x34\x32\x84\xfb\xc3\x94\x7e\xbc\x13\xe3\x47\x1c\x1f\xdf\x1c\x47\x28\x00\x08\x0d\xcd\x01\x56\x84\xfe\xfe\x89\xbc\x76\x46\xe8\x73\xcf\x93\xc7\x1e\x96\x02\x31\x63\x1d\xce\x0b\xd1\x86\xaf\x53\x84\x8d\x81\xe3\xbe\xe5\x90\xfb\xbd\x97\xdc\x53\x43\x21\x75\xa3\xee\xcc\x71\x73\xda\xd2\x4c\xb8\x68\xd5\x5a\x08\xde\x38\x47\x0c\xa0\x18\x8f\x25\x34\xce\x72\x6e\x68\xcd\xd3\x3e\x13\x00\x14\x06\x86\x9d\xcc\x1c\xd6\x1c\xce\x48\x6d\x74\x34\x8e\x6e\x46\x4a\xe5\xb7\xc6\xc5\xcb\x27\xd0\x3b\x7f\xef\x6d\x9f\xf0\x33\x1f\xcb\xbc\x6d\x8d\x88\x75\x67\x00\x54\x62\x90\x2b\x08\x17\x1c\x9b\x70\x78\x60\xc7\x79\x3f\x22\x61\x98\xa6\xe7\x2e\x0a\xea\xaf\xa7\xea\xc3\x21\xf6\x19\x6b\xd1\xce\x0a\xd5\xeb\x0c\xbb\xb0\xcb\x0e\x32\xfb\x28\xaa\xce\x39\x4b\xb4\xef\x3a\x64\xee\x00\xd3\xa8\x9c\x1b\xb5\x7d\x85\x13\x40\x10\x06\xa6\x2b\xce\x73\x9d\xaa\x2b\xe6\xa4\x31\x70\xa6\x5c\x7e\xf2\xb3\xa5\xf1\xbf\x19\x2a\x7a\x15\xe2\x2a\x39\xa0\xfa\x1e\x30\x4b\xc8\xce\xcd\x77\xcd\x53\x22\x27\x56\x86\xa0\xfb\x65\x96\xac\x5b\xff\xac\x39\xa1\x09\xfa\x88\x9e\x8c\x8e\xed\x14\x8f\x99\x83\xf8\xaf\xbe\xa8\x74\xd3\xd4\x4d\x7d\x93\xe8\x98\x80\x4c\x29\xf2\x0b\x4f\x78\xa4\x0e\xa6\xa5\x80\x01\x3b\xb2\xf8\xb3\xde\xad\x7c\x9e\x50\x20\x07\x18\x01\x01\x49\x0e\xf3\x7c\x9a\x78\xa9\xed\x39\x21\x7d\xf4\x11\xdd\x6a\xbc\x35\x6c\x94\x4c\x74\xe1\x0c\xf1\x4c\x02\x0c\xd0\x33\x00\xf9\x14\x84\xb3\xe7\x65\x7a\x85\xe6\x3b\x41\xc7\x04\xd3\xe3\x37\x9d\xdb\xec\x5d\x8e\xae\x3c\x32\x1e\xd8\x54\xfd\x3c\x5a\xfa\x62\xbc\x8f\xeb\x62\x35\x1d\xfc\x6a\xdd\xf9\xa7\xe9\x0b\x04\xe6\x06\x41\x1a\x11\xcf\x81\xd6\x6d\xc9\xef\x3e\x0a\x99\x1b\x14\xd8\xd7\x98\x80\xe7\x01\x82\xd0\xea\xb3\x9d\x1f\xa7\x78\x27\x80\xce\x69\x5f\x25\x7f\xa0\x45\xd7\xc0\x0d\xdf\xb1\x56\xd6\x7c\xb0\xae\x76\x8a\xfa\x66\x8a\x67\x42\x0a\x19\x9d\x02\x20\xce\x76\x7c\x23\x70\xa7\x26\x7a\x02\x80\x27\x07\xee\x1e\x80\x8e\x46\x91\xc6\x49\x87\x2f\x93\x22\xb8\x7e\x7a\x0a\x2f\xbc\x37\x8f\xb2\xb6\x7d\x93\x4e\x97\xbb\xc2\xcf\xdf\xbb\xe4\x3d\x7f\xc8\x0c\xa6\xb4\xd7\x71\x32\xc2\x63\xdf\x67\x33\xa4\xf8\x71\xe8\xf6\xd0\x00\x40\xdc\x7b\xb0\xbf\x28\xdc\x0d\x95\x99\x97\xf6\x5d\x9e\x26\x84\xa1\xc8\xf8\xe7\xf3\xa4\x9b\x85\x5c\xbc\x76\x88\x61\x4e\x7a\xeb\x1a\xf1\x73\x88\xde\xb5\x49\x22\xb2\xa1\xca\xf3\xcc\xf4\x1d\x02\xf2\x4c\x04\x95\xb4\x7c\x5f\xf2\xb0\x1f\xc0\x07\xcc\x45\x80\x7b\x25\xc8\x99\xf5\x1b\xba\x75\x26\x04\x81\xf3\x58\x96\xd8\xc6\x84\xb3\xef\xd3\xb8\xef\x16\x68\xf7\xdb\x37\xfc\x0c\x9b\xe9\xb1\xa5\x01\x41\x92\xeb\x44\x98\xb0\xa2\xc4\x22\xb5\x9e\x23\xe9\x08\x80\x09\xcb\xed\xf4\x7b\xab\xe5\x1d\x02\x80\x84\x02\xcc\x4d\x63\xf0\xde\x20\x5a\xd5\xb7\x9a\xd5\x0c\x40\xce\x31\xb6\x32\x02\x81\x88\x26\x75\x4d\x9c\x7d\xbd\xeb\xf2\xe0\x1e\xe3\x19\x01\x51\xe2\xf6\x7d\xbf\x55\x2f\x2d\x42\xd6\x09\x10\x5e\xca\x30\x37\x6a\x2f\xc4\xab\x66\xf4\x9f\x73\x7c\x89\x39\x77\x96\xa7\xd2\x4c\xd6\x4c\x10\x9b\xfb\xb4\x1f\xeb\x2f\x97\xe2\xa5\x70\xf1\x4f\x2a\xf5\x3d\x2c\x08\xf2\x18\x6a\x92\x52\x2c\xd9\xe7\x33\xec\xed\xb2\x2c\xdb\x06\xc0\xf3\x49\xd3\xec\xb5\x9b\x27\x3a\xca\xad\xc5\x30\xf7\x9e\x41\x84\xea\x13\x20\x03\xea\xbb\xe2\x77\xfa\x19\xf6\x8f\x85\x00\xa8\xd9\xe2\x95\xed\x5c\x21\x26\x6f\x81\xf6\x23\x66\x07\xf3\x0e\x00\xd3\xee\xe0\x52\xde\x5b\x85\x2d\x9b\x40\xd3\x08\x04\xa4\x28\xb8\x11\x16\x28\xc6\x42\xbd\xc5\x5d\x88\x68\x9c\x0d\x32\x89\xd8\xb5\x5d\xa4\xb9\xf3\xfb\xab\x2d\x0f\x94\x8f\xd8\xcc\x76\x99\xa7\x49\x94\xce\xd5\x9f\x15\xd3\x92\x44\x44\x9f\x8a\xe4\x6a\x98\x01\x30\x66\x1f\xec\xf1\x0e\x16\xba\x11\xbe\xdd\xe2\x6e\x3b\xaf\xdf\x79\x06\xd8\x07\x27\x63\xd9\xfa\xee\x11\x14\xf5\x4a\xf4\x82\xe1\x3a\xe6\x83\x97\x11\xc2\x4d\x75\x07\x2e\x03\x92\x34\x80\x62\xd6\x90\x22\x00\x40\x7d\xdf\xb7\x4c\x2b\xdb\x17\x08\x76\x40\x00\x00\x77\x00\x46\x1f\x30\x21\x09\x78\xd1\x80\xd3\x8a\x93\xf7\x2c\x55\xa6\x84\x0e\xf1\x4c\x2c\x69\xf5\xc4\xd4\xdf\x99\xa3\x22\x2b\xee\x84\xe5\x2e\xa6\x7d\x83\x74\xae\x7b\xbf\x2f\xca\x86\xed\x82\xa1\x96\x89\x1c\xe1\xa0\x41\xf4\x24\x69\xae\xdb\xae\x7d\x92\x37\x9c\x33\x62\xa7\x53\x86\x20\xf6\x9b\x01\x6c\x18\xe4\x5c\x10\x0c\xcf\x9d\xb1\x29\xca\xf9\x56\x4e\x34\xef\x33\x10\xce\x2a\xc4\x99\x74\x5c\xab\xe9\x4d\x68\x76\x0a\x10\xa2\xcf\x01\x3b\x01\x70\xb5\x17\x51\x5a\xa6\xb4\xed\x04\x64\x08\x40\xa2\x4e\xba\x6d\xb9\xe3\x39\xc7\x41\x7e\x1e\x43\xb8\xf9\x2d\x4b\x05\x73\xbb\xc6\x1e\x36\x0b\xdf\x43\xcb\x9b\xd9\x07\x8d\xec\xfe\x03\x91\x94\x27\xed\xa3\x44\x57\x50\xf4\xe3\x3c\xc9\xf9\x13\xf4\x11\x33\x47\xdd\x89\x9a\x96\x9b\xd8\x45\xca\xd3\x4c\x9e\xe8\x5d\xdb\x9e\x24\x93\x75\xe7\x95\xb4\xca\x81\xe6\x33\x04\x35\xa0\x9b\x1b\x20\x34\x03\xa8\x8e\x99\x68\x7d\xd6\x93\x0c\xd7\xea\xe0\x86\x0c\xdb\xf4\x65\x87\x30\x4d\xe8\x3d\x0b\x56\x93\x14\xac\xea\xe4\x60\x98\xcd\xb4\x82\x39\x98\xde\x0c\x33\xd4\x42\xd0\x64\xba\xf0\xe4\x01\x0f\x15\xb9\xb5\x76\x80\x44\x3b\xd8\x76\x41\xaf\xed\xf8\xd6\xc4\x9c\x3a\x6d\xc3\xe0\x0a\x52\xe7\x7b\x75\x99\xa0\x4b\x63\x14\x1a\x13\x1e\xe9\x5f\xe7\xa9\xfe\x6a\x19\x94\x17\x19\x75\xe3\xc4\x95\x28\x12\xac\x35\x47\xee\x83\xf0\x5c\xd3\x14\x3c\x29\x0d\x65\x4f\xab\x67\x26\x7a\xab\x17\x84\xdd\x78\xaf\x5d\x23\x84\x58\xe9\xb0\x33\x9b\xa7\x89\x94\xf8\x76\x03\xd8\x25\x80\x05\x36\x80\x24\x35\x61\xd1\xe5\x4a\xea\xca\x53\x10\xa9\x6b\x1b\x3d\x35\x3b\xcc\x71\xe4\xda\x5c\xab\x73\xae\xce\x73\x52\xc1\x0b\xc2\x45\xc5\xba\x0d\xc8\xd3\x44\xd3\x80\x0d\xa2\x9f\x52\x80\xec\x35\x79\x3a\x40\xf1\xb0\x35\xd8\x01\xe2\xe6\x40\xed\xfc\xbd\xb3\x9b\x13\x03\x97\x76\x17\x28\x34\x6c\x7b\xbf\xed\x25\xe1\x77\x6f\x56\x98\x05\x6d\xd6\x80\xc4\x9f\x78\xd3\x32\x51\x8a\xbd\xff\xf1\x69\x11\xc9\x24\x53\x9a\x3d\xcf\xe1\xa5\x70\x9c\x1f\x2b\x1b\x59\x40\xc8\x3e\xf4\x6e\xa2\xe4\x8d\xbe\x7e\x12\xa4\xfd\x00\x36\x8b\xe4\x46\x75\x88\x6f\x55\x7e\x3e\xc4\x98\x61\xee\xfb\x9e\xf7\x3d\x99\xf7\x74\x9c\xf6\x9e\xb4\x34\x41\xe8\xeb\x63\xf0\x25\x32\xc7\xba\x15\xab\x01\x5d\x5c\xd0\x71\x5d\x2f\x8c\xb7\x6f\x6f\x53\x0c\x8b\x7e\xc1\x9e\x11\x82\x3d\xf6\x5f\x5a\x49\xaa\xef\x36\x6f\x8c\x01\xba\x91\x60\x7a\xa4\x2c\x77\x35\xb5\xd6\x81\x29\x94\x0b\xf8\xfb\x66\xf8\x38\x4d\x50\x35\x27\x07\xf3\x35\x12\x80\x2d\x09\x1a\xf4\x87\xa3\x87\xcd\xaf\xf7\xca\x71\xf4\x28\x40\x76\xfe\x24\xd9\x44\xd3\xe1\xbd\x03\x88\xe4\xb1\x6d\x4a\x2d\xe5\x11\x38\xe3\xde\x14\xa2\x1b\x46\x1e\x47\x13\xcd\xba\xaa\x6d\x26\x9b\xaf\xb4\xe5\x4d\xb1\xe7\x85\x13\xc4\x34\x4d\x53\xd9\xce\xdd\xfb\xe8\x76\x20\x68\x31\x4b\xa8\xb7\x14\x4b\x08\xbd\x61\x63\xe6\xdc\x3d\xa0\xf2\x71\x58\x51\x8a\xbc\xb4\xba\x26\x70\x5a\xd6\x41\x66\xcc\x7f\xdc\xae\x83\x01\x7b\x3a\xa1\x35\xcf\x4c\x4b\x93\x14\x46\xf8\xf3\xb9\xf5\x6e\xb7\xf3\xcc\x4f\x69\xb9\x7b\xfb\x1c\xf1\xcd\x48\xb3\x34\x73\x56\x0d\x82\x37\x3a\x04\xd6\xaf\x2e\x95\xe3\x5e\x97\x5a\x0f\x2b\xc3\xdc\x84\x77\xe0\x11\x7b\x97\xd1\x34\xcd\x3f\xb8\xf5\x66\xbb\x2b\xd6\x68\xf9\x4e\x6e\xd5\x30\x76\x55\xa5\xb6\x2c\x47\x84\xe2\x08\x74\x1e\xe4\x52\xe6\x62\x29\x01\xbe\xe8\x0f\xce\x64\xe2\x8c\x58\x99\x28\x40\x08\x8a\xa2\xe0\xdc\xac\x1e\x93\xb9\x98\xbb\x2f\x75\x01\x61\xa0\x11\x9f\x0f\xb5\x12\x40\x6a\x55\x6a\x75\x7d\xbf\xef\xf1\xce\xcb\xf0\x18\xae\x1b\xf5\xd2\x5c\x9d\x59\xe8\x98\xb9\xc7\x71\x5d\xb7\xed\xc6\xbe\xbc\xfd\xdc\x61\xa2\x94\xac\x00\x21\x49\xed\x67\xa6\x5d\xc1\x71\x37\x49\x5d\x03\x80\x8e\x20\xb8\x53\xdd\x13\xe2\xe2\xf1\xcb\xd1\xdf\x1f\x04\x6e\xa6\xad\x13\xf9\xa6\x6e\xe7\x81\x31\xc4\x8e\x17\x84\xbf\x47\xec\x9b\xae\x03\xd6\x30\x6e\xf9\xba\xe0\x4e\xc4\x52\xcb\x50\x34\xbc\x3c\xeb\x62\x35\xfe\x21\x09\x2e\x9a\x7e\x4e\x0a\x0b\x5d\x7f\xcf\xf3\x09\xf3\x56\xaf\x45\xb9\xcf\xb3\x08\x84\x1d\x24\xc0\xb8\x2a\xe2\x54\xb5\x6d\x05\x40\x12\x00\xfe\xe4\xed\xbd\xec\x5f\x6a\x54\xc7\xcc\x89\x6c\xeb\xbe\x1b\x0c\xbf\x76\x44\x1c\x96\x59\x2f\x32\x48\x25\xf3\xbb\x3f\xcf\x04\x7b\x55\x7b\x96\x42\x0c\xb3\xa8\x64\x53\x02\x21\xcc\x91\xca\x34\x89\x4d\xcd\x8a\xeb\x3a\x3d\x99\x02\x71\x18\xcf\x4c\xc9\x1a\xc1\x12\x59\x85\xf1\xab\x15\x17\xb5\xcf\x00\xf5\x1d\xc0\x00\x0b\x14\x3e\x56\x49\xcf\x0c\xc1\x26\xfa\x46\x9b\xda\xbe\x8b\x5e\xcf\xe0\x16\x48\xb0\xe3\x4c\xba\x03\x6c\x66\x20\xf2\xa7\x56\x0e\x68\x8f\x07\x0e\x37\x64\xf5\x1e\x63\x90\x8a\x46\x37\x82\xd1\xe6\xf9\xbb\x69\x86\x9e\xdb\x5a\xae\x3d\x3a\x47\xc7\x22\xc4\x9e\x77\x10\x4d\xe5\x43\x25\x70\x71\x76\xaf\x1b\xe0\x1a\x46\xb4\xc9\x65\x0c\xc8\x4e\x37\x89\x2e\x40\x84\x49\x37\x02\xe4\x60\x50\xff\x78\xad\x0d\xa0\x6b\xbc\x17\x4d\x6c\xf4\x36\x27\x2c\x11\xad\xd1\xea\xcf\x0c\x33\x0c\xc3\x96\x28\x6d\x2e\x7d\xf4\xf9\x4b\x26\xaa\x01\x36\xb3\x3c\x0e\xca\xf7\xb0\x9d\x29\x31\xc0\xee\xef\x2e\x46\xbe\xcf\xfd\xb7\x1f\xc5\x71\x3a\xac\x53\xc2\x30\x7c\x54\x39\x0e\xc6\x7f\x6b\x10\x64\x00\x10\x1b\x12\x6d\xcb\x2e\x3f\x93\x5b\xbd\xa5\x83\x4d\x3c\xe9\x48\x84\x67\x93\xf1\xe6\x12\x73\xdf\x80\x53\x19\xf5\x16\x6d\xae\x71\xbf\x57\xe7\x14\x1d\xf4\x4e\xcf\x75\x5d\x0d\x45\x0e\xbd\x64\x41\xcf\x82\x1d\xba\xae\xeb\xfe\xb1\x78\xfb\x12\xd8\x6d\xa1\xab\x45\x05\x8b\x9c\xba\x37\x23\xba\x9a\xc2\x30\x34\xbe\xad\x2d\x72\x46\x4c\x82\x68\x02\x36\x9d\x99\x1f\x8a\xc0\xab\xbf\x96\xee\x0b\x55\xf8\x81\x39\xc3\xd6\xc7\xa5\x71\x5f\x54\xb5\xdf\xa7\x7e\xab\x37\x7f\x1c\xdd\xfb\x68\x9a\xa5\x6d\xe4\xd1\xb3\x42\xb7\x75\xdd\x04\xef\xb2\x18\x45\x7a\x98\xcf\x2c\xd8\x67\x1e\x99\x67\x1a\x99\x7c\xad\xa2\xd6\x08\x47\xf6\x89\x5e\xe6\x2b\x96\xde\xe2\x28\x00\xb0\x46\xc4\x81\xf0\x62\xe0\xe4\x2c\x91\x40\x64\x9b\xbd\xb6\xcc\x1c\x55\x0a\xb4\x7f\x9a\x57\xcf\x42\xf8\x10\xfe\x0e\xfa\x95\x21\x69\xb5\x7e\x96\xf8\x29\xef\x79\x06\x5d\x4d\x83\xd4\x83\x4a\xd6\x37\x41\xb7\x36\x84\x27\xe3\xdf\x6d\x2f\xd8\x51\xcc\x7c\x11\x04\x31\x1a\x79\xa7\x10\x7b\x70\xae\x6d\x7a\x00\x96\x92\x7f\xf0\x17\x19\xa5\x8b\xfd\x53\x5f\xd3\x3c\x4b\x79\x79\x80\x56\x30\x39\xff\x0b\x8a\x07\xc7\x59\x92\x84\x9e\x47\x02\x02\xc5\x89\x20\xdc\x87\x88\x46\x00\x9a\xee\xb1\x89\xf8\xca\xd7\x3e\xb2\x1c\xb9\x4f\x89\x1d\x59\x11\x7f\x54\x8d\x5f\x2f\xac\x95\xa8\xd9\xf9\xd8\xaa\x6e\x17\xee\x11\xe3\xcb\x4d\xc3\x37\x40\xe0\x1e\x8e\x94\xcc\xab\x38\x7f\xf7\x47\xde\xea\xea\xc7\x63\x03\x3c\xcf\xe7\xfb\xfe\x7d\x52\x0c\x39\x79\x1f\xed\xc6\x3e\x6f\xfb\x66\x30\xa8\x9f\x4b\xc3\x4d\x89\xb1\x62\xf9\x5d\x62\xdd\xb5\xe4\x24\x62\x54\xf7\x7d\x63\x3b\xf5\xfc\xec\xfb\xd6\xf3\xef\xbe\x78\x28\xc2\x43\xff\x8d\x61\xed\xb3\xed\xfa\x87\xee\x59\xd8\xe3\x3a\xff\x3a\x32\xae\xb6\xc1\xe5\x80\x49\x6e\x99\x04\x4d\x75\x10\xe4\xb4\xfc\xd6\x93\x3b\x02\xc0\x50\xa4\x86\x21\x9c\x21\xf8\xb6\x0d\xdb\x09\x42\x4f\xa2\xad\x33\xc4\xe9\x62\x79\xd4\x16\x2a\x0a\xd6\x0a\x94\xfb\xa1\x7f\x67\x9f\xef\xd8\xd6\x74\x94\x63\x18\x90\x5e\x2f\x35\xd3\xfd\x79\xa1\xdc\x34\x1b\x73\xb9\x9d\x7a\x58\x90\x52\x6e\x18\xef\x25\xbd\x97\xb2\x83\x4e\x92\x65\xd7\x11\x84\x5c\x0a\xa3\x54\xc2\x40\x94\x00\x04\xf4\x01\xa2\x94\xa5\x89\x7d\x1d\x2a\x20\x8d\x3c\xe0\xe4\xe1\xb2\x7e\xb1\x6b\x35\xbd\x98\x09\xa8\xf0\x43\xa3\x18\x3b\x14\x7b\xec\x33\x14\xad\x7d\x6a\x57\x61\xd0\x52\x35\xca\xfe\xbe\x51\xeb\x15\x72\x27\x42\xe4\xef\xa1\x7d\x0b\xc4\x3d\x90\xfe\x97\xb6\xad\x56\xbe\xa9\x68\xf5\x0e\x80\x0a\x9c\x7d\x55\x5a\xba\x6f\x32\x3d\x4d\xc3\xfc\xff\xbf\x7f\x33\x70\x1c\x67\xb0\x2c\xc6\x78\x61\xe7\x4f\x89\xa2\x83\x6e\x9c\x2a\x76\x72\x9a\x86\x6d\x58\xa0\x96\xf5\xe0\xbe\x44\x67\xbe\x53\x52\xe7\xbe\x0a\xc1\x50\x9c\xe0\x0c\xaa\x95\x32\x19\x05\x41\x10\xea\xa6\x89\x9f\x53\xd4\xdf\xbb\xeb\xa6\x56\x16\x7e\xa7\x7f\xfd\x42\x85\x80\xc9\x03\x86\xd9\xab\x42\x7a\x77\xbc\x60\xbf\xbd\x0a\x02\x40\x1e\x29\xe5\x76\xc9\x98\x65\xf3\xe8\x03\x2b\xd5\x1b\x27\x25\x96\x5e\xf7\xe3\x8d\x88\x35\x4c\x16\x9c\x99\x3f\x55\xfb\xfd\x3d\x58\xd0\x2c\x68\x04\xef\xef\xc7\x4e\x55\x04\xd9\xde\x4c\xad\x9c\xdf\xc7\x11\xfc\x62\xc0\x8f\x8a\x5f\x75\x41\x73\x02\x28\x70\xd5\xee\x29\xf2\xad\x1a\xe1\x2d\x86\x55\xcb\xbe\xfc\xbe\xc7\x56\x17\x67\x20\xf6\x12\x5e\xc4\xde\xe1\x59\x62\x08\xf5\xf8\x16\x9c\xf1\x21\x3d\x65\x0a\xb0\x89\x71\x76\xd2\x29\x1e\x90\x46\x49\x94\xf8\xf3\x8f\x15\xfa\xcb\x51\x8d\x5f\x3f\xcf\x93\xf0\xe3\xf9\x8f\xfd\xbc\x13\x64\x4b\x04\x76\xec\x0d\x01\x98\xac\x8d\x3e\xed\x1c\x33\xe2\xdd\x60\xb8\xf1\x0c\xb3\xe1\x20\x0e\x16\xee\x85\xfd\x20\x75\x0e\x53\x05\xc7\x99\x7a\xe7\x71\xb0\x88\xc6\x39\x30\xce\xcc\xe7\xc6\x6c\xb4\xd2\x42\xc0\x27\xae\x10\x59\xea\x2f\xe7\x6d\x68\x71\x48\x21\x42\x39\xae\xeb\x8a\x07\xa0\xb1\x76\x67\xaa\x4f\xa8\xcd\x71\x46\x30\x64\x97\x83\xe0\xa0\xef\x8f\x3a\xb5\x39\x73\x3e\x6e\x24\x1c\x8d\x0e\x89\x3c\xef\xc6\x93\x24\xcb\x69\x09\x04\x2a\x27\x16\xc4\x04\x89\x01\xb2\xc8\x5b\x75\x84\xcb\xfb\xd5\xda\x3b\xbc\x85\xad\xb6\x43\x10\x84\x55\x1f\xdf\x14\xc2\xd8\xf7\x7d\x62\x87\x69\x30\xee\xe6\x8e\x72\x8f\x1b\x22\xec\x2b\x1f\xb5\x37\x76\x25\xe5\x4b\x32\x75\x06\x92\x3e\x7e\x2f\x8c\xee\x1c\xbd\x89\xfa\x39\x18\x6f\x82\x42\x58\xed\x59\x8a\x07\x9c\x56\x77\x20\xf2\xcd\xe6\xec\x29\xb3\x91\xc9\x68\x7e\x67\xb5\xe2\xbc\xb3\xbb\xe7\xcf\xee\x75\x12\xfa\x8b\x33\x76\xf0\xaa\x7e\xa0\x14\xda\x9f\xb7\xe7\x92\xa1\x6e\x0a\xf0\x46\xbe\xf6\x2b\x18\xcd\x88\xea\x42\xd2\x20\x80\xf1\x42\x9c\x57\xf9\x96\x9d\xf3\x8d\x01\xaf\xef\x77\xe6\x43\xcc\x39\xce\xfb\x77\x12\xd1\x08\xb5\x4d\xf8\xda\xe6\x53\x2d\xfc\xf6\x54\x5f\x6f\x56\x7a\x1b\x04\xf6\x69\x91\x8f\x51\xe4\xbb\xa0\x84\x44\xbc\x93\x5f\xde\x18\xeb\x37\x62\xec\x0c\x87\x20\xb4\x71\x22\xba\x13\x74\x7c\x37\x4e\x21\xc8\x34\x00\x51\xaf\x72\x9c\xb1\xfe\x24\x2c\x02\x16\xde\xe8\x95\x41\x35\xf0\x55\xc8\xf6\x8d\xa7\x21\xf6\x61\xdb\x47\xff\xbb\xd7\xf4\xe6\x0f\x1c\xbf\x12\x24\x9f\xb3\x2e\xfa\x06\x39\xa4\x13\x90\x41\x85\x44\x1e\x8d\xa2\x72\xe2\xc5\x0e\x1a\x93\xa3\x15\xde\xd1\xd9\xc9\xe6\xef\x9c\x30\x76\x2e\xe1\x4a\x55\xfe\x5a\x3d\x0d\x86\xfb\xbe\x19\xe2\x1c\xa3\xf5\x59\x02\x9f\x01\x46\x9a\xa7\x29\x6f\x85\x72\xf0\x18\xbf\xd2\x6f\x2e\x7a\x95\x53\xd4\x0d\x08\x54\xdf\x06\x2f\x80\x44\xa2\x20\x9d\x2d\xbb\x37\xa7\x66\x1e\x3e\x74\xae\x00\x39\xcb\x2a\x94\x58\x0a\x2f\xf6\xa1\xc6\xfc\x39\x43\x70\x33\x04\x2a\x96\x59\x38\x6f\xab\x61\xec\x3e\xda\x4e\x44\xcc\x71\xf4\x36\x54\x45\x8e\xc0\x32\xe5\x86\x8c\x93\x1d\x8e\x6a\x14\x70\xb5\x11\xfc\x3e\xff\x79\x1e\x51\x1f\xa7\xe8\xd4\x25\x53\x00\xa0\x50\x05\xc1\xf0\x19\xb6\x7c\x99\xd2\x6c\xa1\xab\x2d\xf2\x0f\xa4\xa1\xd3\x6d\x83\x82\x81\x92\xcd\x7b\xb4\x2a\x87\x97\x4f\x4f\x05\xcf\x2f\x86\xa5\xbd\x43\x5b\x8e\xf1\x69\x16\xd8\xf4\xf9\x3e\xdd\x86\xbf\xe7\xea\xce\x7c\x53\xe2\x3e\x1e\x7f\x7e\x7e\x3c\xaf\x62\xfe\xab\xbd\x78\x28\x4f\x62\x65\x72\x94\x7b\x60\x9a\x8d\x1e\x41\xbe\x32\xd9\xae\x50\x1f\x31\x55\x2c\x02\xc5\xca\x87\x2c\x26\xba\x00\x18\xe9\x7b\x20\xbd\x53\xb5\xb2\xe3\x56\x92\xa9\x4b\x8f\x9b\x15\xf0\xb5\x8d\x8c\x13\x55\xb1\x53\xfa\xc8\xa3\x49\x21\x94\xc6\x67\x05\x99\xa9\x06\xb0\x5c\x17\x3b\x91\xdb\x76\x7d\xf5\x70\x06\xed\x07\xa3\x63\xdf\x7f\x3c\xf3\x5e\x4e\xc6\xdd\x48\x9f\x01\xe4\x66\xed\x66\x34\x78\xc1\x9f\x79\x36\x43\x34\xc1\xa0\xe5\x49\x9e\xd5\xa2\xe8\x88\x78\x05\xe0\xea\xb2\x5c\x54\xca\xc8\x18\xa7\x96\x88\xd3\x5b\x6c\xbb\xcf\xf3\x27\x77\x22\x27\x24\x13\xbe\x1c\x70\xa3\xe4\x56\x26\x23\xf2\x7c\x04\x79\x30\x31\xc5\x55\x72\xbf\xf5\xe8\xf9\xd1\xec\xf7\xc9\x42\x02\x22\x6f\x71\xff\xd4\x1c\x40\xd1\xca\x55\xf2\x2d\xb3\x05\x22\xa3\x7c\xf5\x7c\xbd\x13\x14\xf6\x02\x37\xaf\x1b\xee\x04\xf3\x47\x6a\x76\x1b\xc1\x71\x04\x32\x9a\xa4\xc8\x8e\x7b\xd6\x01\x6e\x10\x00\xd4\x4f\x3c\xec\xaa\xf5\xe1\xef\xd3\x74\xb1\xbb\x9e\x23\x37\xce\x10\x09\xb9\x0c\xcf\x6b\x2f\xb2\xdf\x79\xd7\x09\xf3\x18\x23\xf2\xac\x16\xe8\xdc\x8e\x32\xd5\xf0\x5d\xa1\x04\x88\x2d\x18\x58\x18\x7b\xec\xb2\x7c\xde\xce\xdf\x9a\xaa\x0b\x77\x2b\xcb\xdf\xf3\x3e\x33\x7f\x8e\x99\x9e\x92\xa6\xdd\xb5\xaa\x4e\x26\xd7\xfa\x24\x49\x96\x45\xda\x82\xf5\x87\x6f\x87\x5c\xb4\x4f\x13\x3a\x80\xcc\xf6\xfc\x8a\xcf\xf0\x2b\x34\xbf\x9e\xfd\x15\xbf\xef\x1e\x58\xb2\x1c\x91\x7b\x33\xef\x5d\xd7\xf5\x5d\x8e\x00\x43\x41\xaf\xfe\x8c\x8b\x1e\xc7\x05\x3f\xf1\x55\x7c\x0f\x68\xd8\xef\xd3\x7a\x0d\x3a\xb6\x72\x76\xfe\x83\x0b\x56\xb8\x6a\x72\x70\x35\x34\x18\xe6\x99\x61\x70\x74\x8b\xfc\x8a\xf0\x4a\x04\xb9\x7a\x40\x03\xfe\x9c\x5c\xf5\xa9\x0e\xde\xaf\xa7\x10\x5f\xec\x3b\x50\xa6\xb1\x4c\x73\x79\x8d\xcd\x1f\xac\x0a\x12\xf4\x27\x45\x29\x6a\xa9\x95\xb5\x44\x67\x05\x0a\x58\x46\xcf\xa5\x50\x11\x8b\x19\x89\x2e\xc9\xa3\x92\x7d\x46\x1c\xba\x56\xdd\x24\x86\xf4\x2c\xec\xa7\xbf\x82\x9a\xf5\x6f\x36\x20\x12\x4c\xa9\x9c\x55\x73\x8a\x9f\x77\xc2\x56\x21\x9b\xe9\xfd\xd5\xc8\xef\x8c\xf0\x26\x8c\x20\x18\xf7\xa4\x82\xc1\xb5\x1f\xb6\xcc\xff\xed\xa1\xbd\x9f\xa8\x41\x80\x6b\x32\x51\x26\x3d\xfd\x99\x56\x31\xcd\xf6\xd3\x0d\x88\xb5\x41\xe1\x6a\xf5\x69\x9d\xae\x21\x7a\xa4\x74\xb0\x78\xed\xc8\x99\x51\x57\x84\xde\x15\x7f\xeb\x26\xc1\xa2\x43\xd9\x80\xed\x19\x26\xe0\x4b\x0e\xb1\xbf\x54\x77\x9e\xec\x9a\x46\x5f\x08\xd3\xbe\x13\x4c\x99\xe3\xb2\x09\x79\x41\x20\x5a\x34\xe9\xe5\xc9\x7b\xe8\xe4\x2f\x26\x37\xf5\xa7\xfa\x2f\xa7\xfb\xf6\x11\x33\x73\x37\xb8\x68\x91\xcf\x0a\xd6\x89\x0a\x0d\xdb\x00\x7c\x08\x04\x03\x27\xca\x99\xbb\x60\xe4\xd5\x3a\x60\x01\xb2\xd6\xb5\x78\xe9\xf5\xd3\x07\x2d\xdf\x80\x83\xa3\x21\x73\x57\x93\xfb\xdd\xc7\x33\x9b\xe6\x29\xa3\xe1\xaa\xea\x61\xd0\x27\x0b\x6d\xf4\xb7\x50\x22\x15\xb6\xf4\xb5\xbf\x72\x19\x1e\x6b\x04\x4a\x0e\x5b\x68\x2b\x61\x10\x10\x75\xbe\xa6\x79\x92\x18\x28\x4f\x15\xf2\x77\x07\xb2\x3b\x63\x8f\xbf\xba\x38\x51\x7a\xb7\xd1\x3e\x5f\xcc\x4e\xc0\x22\xeb\x27\x5a\x7e\x68\xe2\x08\x55\x68\x7c\xff\xf8\x0b\x44\x78\x3b\xb8\xa6\xf7\xe1\x5f\x4d\xed\x43\x3b\x25\x18\xe1\x26\x1b\x27\x7b\x1d\xe9\xb3\xda\x05\xb2\x89\x72\x95\x0e\x9a\x9d\x45\xe9\x60\x6f\x55\xff\xba\x54\x72\x0e\x3b\x4d\x0f\x0e\x92\xd0\x6d\x0f\x83\x34\x06\xb5\xd4\x77\xdb\xd0\x73\x7b\xd9\xfb\x7c\xbe\x07\x9f\x03\xe5\x10\xef\x95\x60\xaa\xb9\x1a\x57\x5f\x51\x66\xa2\xc1\xda\x75\x0b\x2b\xf2\xf1\x02\xfb\x3f\x1a\xdf\x67\xd7\x38\x47\xc7\x30\x3d\xb1\x0f\xc2\xf3\xb0\x64\x7d\x88\x94\x57\xce\x26\x82\x01\x6b\x0f\x5b\x46\xf4\xa3\xda\x0b\xa3\xdf\x46\x4f\xcc\x34\xae\x08\x75\x45\x0c\xce\x7a\x11\x48\x78\xe7\xac\xd3\x1a\xd6\x38\x51\xee\x0d\x39\xab\x47\x2e\x12\xdd\xeb\xda\x9f\x95\x8d\x1c\xd7\xff\xa3\xea\xba\x76\xdd\xe6\x99\xed\x03\xe9\x42\xbd\x5d\xaa\xf7\xde\x75\xa7\x2e\x59\xbd\x59\xe5\xe9\x0f\x92\x2f\xd9\xf9\x8f\x01\x23\x31\xe0\x4d\x8a\xe6\x70\xca\x9a\xe1\x9a\xef\x79\x88\xe7\x81\x5a\x84\xb8\xfb\xd5\x37\x02\x69\xea\x18\xa6\x84\x14\x31\xa1\xa8\xae\xec\x8c\xb5\x13\x00\x33\xcf\xa6\x8a\x84\x21\xff\xdd\xbb\x95\xb4\x1b\x61\xc0\xf3\x1b\xd1\x7d\xaa\x79\xd8\x45\x7e\x30\xdb\xad\xcb\x5f\x72\xf0\x4b\x17\x4b\x61\x7f\xc5\x65\x85\xe6\x31\xfd\x42\xd8\xfe\x15\xab\xc5\x9d\xd8\x0a\x99\xb3\x63\x72\xd0\xca\xae\x8a\x33\x7c\xc2\x0d\xfc\xe2\xe5\x39\x26\x57\xb0\xd0\xa7\x7a\x03\x26\x00\x02\x08\xba\x85\x1d\x30\xd9\x06\x22\xd3\xb6\x0f\x41\x14\x40\xd7\xfe\x2d\x3c\x95\x6e\x61\xef\xb9\xad\xb8\x5d\xdb\xf7\xb9\xd2\xb1\xf6\x61\xd8\xf7\xc7\x07\x95\x12\xef\x13\x64\xbf\x2c\x87\x7d\x53\xb9\xd4\x7d\x76\xe3\xa0\x0f\x18\x20\x10\x74\x1b\x16\xd1\x05\x35\x51\x62\xa1\x1c\x00\x27\x7b\x02\xe6\x5a\xe2\xf9\xbd\x53\xd7\x02\x3c\x14\xf3\x0b\xfa\x09\xf6\x64\x07\x62\x66\xfe\x83\x12\x37\xf8\xa2\xa2\x5c\x58\x1a\x5e\xa2\xdf\x2f\x08\x21\x1f\xaa\xe6\xb9\xf4\xd9\x72\x3e\x23\xf3\xfa\x8b\xf8\x1e\x7d\xfa\x6b\xe8\xdd\x2e\xac\xe2\xa4\x3a\x4c\xe0\x2b\xdc\x88\x9b\xa6\x83\xc6\x18\xd4\x0f\x07\xe2\x28\x5c\x84\xfc\x05\x01\xbe\x7a\x8a\x51\xc5\x76\xa0\xdf\xf2\x68\x38\x8e\xf3\x9b\x45\xc8\xb1\xa4\xea\x98\x95\x89\x6e\xe7\x1e\xbe\xd4\x35\xaa\x0b\x9f\xf1\x0d\x88\xcf\xd6\xf5\x40\xe5\x94\x22\x00\x41\x09\x2d\x77\x5a\x1d\x6e\x23\x42\xd8\xea\x16\x75\x1f\xc8\xf7\x0f\xe9\xfc\x9e\xf5\xa6\x69\x0f\x31\x71\x20\x48\x4d\xfe\x9b\x02\xd4\x31\x4d\x2d\x74\xd0\x1d\x44\x77\x54\xec\xa1\x47\x8e\xac\x25\x88\xb3\xb2\x21\x4f\xca\xbf\xb8\xc8\x5e\x45\x87\x50\x71\x92\xbc\xcf\x7a\xe4\x3e\x00\x49\x47\xbf\x1c\xcf\x81\x20\xc8\xba\x50\x51\x9f\x88\xdc\x4a\xef\xb8\xfc\xad\xc8\xe4\xac\xce\xe1\x4d\xcf\x0f\x14\x76\x6e\xda\x6f\xe0\x0c\x9c\xd5\x06\xca\xc6\xb8\xe2\xd0\x7b\xd3\x05\x05\xac\x77\x3e\xc9\x52\x00\xcb\xed\x17\x88\xc6\x11\xce\xf6\xd9\x44\xb5\x13\xef\xb2\x69\x22\xcf\xf3\xb7\x9f\x39\xef\xd7\xc8\xff\x3a\x33\x20\x5d\x0c\xf6\xaa\x6d\xda\x97\xe1\xa7\xad\x21\x7f\xf8\x7b\x8d\x6b\x95\x2f\x10\x7c\x1b\x74\x9f\xd8\xb2\x15\xf3\x4d\x4c\x48\x39\x27\xcd\xb0\x02\x69\x50\x87\x87\x5b\x00\xbf\x29\x72\x12\x50\x65\xc9\xbf\xce\x71\x7f\x88\x28\xa4\xe7\xa1\xff\xa5\xd6\xe2\xa8\x0d\xb8\x86\xd3\xd1\xb6\x36\x04\x20\xcc\x14\x0a\xb7\x4e\x94\x32\xe8\xab\xf3\x7e\xb9\x67\xd2\xb2\xe3\xcc\x0d\x9e\x50\xd3\x53\xe7\xb2\x6d\x24\x80\x27\x50\x41\x4c\xae\xd8\xda\xc6\x4e\x58\x1f\x12\xef\x12\xe0\x2e\xee\x0b\xd3\xff\x71\x09\x2e\x4b\x69\x2f\xf1\x4b\x92\xa0\x8e\xd3\x00\xa0\xde\x41\xba\x68\x27\x8d\x9c\x19\x41\x00\xc0\xa1\xea\xf0\x22\xf2\x53\x2c\x43\x84\x2e\xc4\x26\x42\x55\x52\x3b\x47\x29\xff\xd4\xdf\x5a\x1f\x8e\x73\xbe\x85\x3b\xbe\xf6\x12\xdd\x68\x30\x41\xb9\xf7\xa4\xde\x31\x28\x61\x04\xc0\xb6\x55\x6a\x9b\xd0\xa4\xfd\xee\x8a\x2a\x10\x31\xf5\xf2\x44\x72\x88\x1a\x03\x4c\x31\x9e\xca\xbe\xe3\xa9\x2e\x81\x87\x20\x71\x49\x1d\xd9\xb7\xf9\xfe\xf3\x97\x86\x03\xcd\x89\xcf\x17\xa5\x9a\x9e\x1a\x0b\x5b\xee\x3b\x71\x3e\x55\xe3\xe5\xec\x1b\xb5\x0f\xb3\x02\x68\x80\x47\xbf\x5a\x55\xd1\xb8\xbe\x9e\xf2\x7b\x00\xa0\x1a\xc6\xf1\xe7\x5b\xa2\x0f\x18\x5c\xec\x46\x41\x30\x80\xa5\x8b\xd1\x8f\x9e\x61\x48\x29\x71\x00\x66\xae\x9b\xd8\x0c\xc2\x67\xac\x9f\x04\x40\x03\x1b\xac\x0f\xdd\xb5\xe0\xcf\xe1\x99\xec\x56\x1e\x5f\xd4\xd4\xc3\x13\x55\x5d\x45\x2d\x82\x7c\xa0\xeb\x35\x1b\xf1\x7d\xf0\xf2\x85\x02\xb3\xd0\xfc\x04\x47\x6a\x29\x1c\xfa\x53\xab\xa4\x7e\xec\xa7\x24\x80\x29\xff\x22\xaf\x0d\xe1\x23\x85\x22\xf4\x37\x95\x94\x51\x6a\xdd\xb3\x85\xac\x8e\xa0\x71\x55\xd7\x61\x18\x1c\xcb\xed\xab\x67\xe3\xe6\x11\xb5\x9b\x03\x60\xfa\x45\xf2\x05\xce\xa5\xbb\x78\x59\xb9\x3a\x23\x92\x44\xd6\x68\xf2\x45\xd9\xa8\xc8\xb2\xa8\x10\xbd\x30\x05\x1a\xcc\x23\xfc\xac\x4e\x20\x0c\xd1\x14\x2e\x83\xd5\x0b\xc5\x7c\x02\x2d\xbf\xc7\xd5\xec\x40\xc0\x7c\x47\xd3\x43\x5b\x92\x20\x8b\x84\x50\x9c\x6d\x39\xe6\x63\x36\x08\x73\x74\x69\x1b\xe8\x14\x31\x5a\x65\x0c\xfc\x27\x4f\x63\xa8\xc3\x65\xd9\x2f\xb5\xec\xe8\x42\x4b\x40\xa7\x89\x68\xec\xe3\xe8\xca\x5d\x19\x3f\x37\x70\x38\x9c\x11\x9c\xc1\xd9\x37\x46\xe9\xd4\x41\x61\xfa\x29\x68\x5d\x63\xfd\xec\x88\xbf\x36\xfd\x29\xd1\xd6\x30\xdb\xbe\xa8\x97\x12\xf2\x41\x5a\x49\x27\x51\x3a\x24\x4a\x9e\x2b\x39\x43\x41\x28\xcf\x36\x3f\x2e\xb2\x50\x0c\xc3\x78\x92\x71\x3c\xfa\xc6\x9b\x9e\xa7\xb9\x16\xd2\xd7\x79\x12\xf5\xa6\xa1\x25\x7d\x22\x64\x52\xd9\x32\x1b\x3e\xca\xba\xd9\x44\x7c\xf8\x61\x38\xe0\x68\x1c\xc7\x83\x59\xd1\x1c\xc2\x54\xff\xf4\x5a\xd6\x11\xe0\xaa\x8f\x30\x90\x8e\xcb\x02\x00\x24\x65\xf3\xb6\x6b\xfb\x10\xa0\x5b\xd5\x4b\x00\xdb\xa2\xc3\x2b\xb4\x3d\x25\x73\x8d\x14\x54\xd9\x28\xde\xc1\x00\x59\xb6\x18\x55\xbc\x51\xf6\x2e\xed\xe7\x7d\xbd\x2f\x1a\x97\xf0\x1d\x59\xdd\x4a\x1c\x2a\x98\x93\xf8\xa2\x5b\xce\x4b\x84\x63\xbb\x9e\xdb\x1a\x7a\xdf\x78\xcb\x4f\x4c\x65\xc1\x46\x72\x56\xb1\x3c\xc1\xf4\x44\xbf\xe8\xd4\x0d\xae\xfe\xb6\x70\x19\x07\xb0\x59\xd5\x38\x6e\x48\xeb\x50\x1c\xb1\x6e\xd1\xa3\xec\xc8\xd6\x4f\x7f\x21\x9e\xf3\x99\x17\x91\xf9\x16\x27\x6e\xc4\x7d\x2b\xb9\xc5\x6a\xf1\x2d\x96\x07\x58\xd7\x6d\x79\xf0\x64\x86\x57\x38\x83\x8f\x3c\xd6\xf6\xf1\x45\x4e\xb7\xa9\x24\x7f\xb8\x66\xa9\xfe\xe5\x73\x09\xa8\x3e\x80\x49\x9c\xc0\x74\x54\xa0\xa0\xa1\x2d\x6a\x12\x94\x58\x86\xfb\xb9\x0f\x96\x15\xd4\xab\x5f\x49\xdc\xb2\x75\xfe\x46\xdb\x81\xc0\xc5\x1c\x8a\x6e\x10\xa6\x5f\x3a\xed\xf7\xa9\xef\x3d\x53\xa6\x6f\x0a\x2b\x2c\x7f\x36\x22\xf1\xcb\x06\xa3\x77\x48\xbe\xda\xf7\x5c\x43\x6d\x2f\xb8\x95\xe1\x8a\xc6\x7c\x69\x3a\xf2\xfb\x5e\xa1\xf3\xc8\x85\xf9\xc3\x1d\xc4\x5d\xe3\x42\x24\x48\x8e\x62\x70\x45\xc9\x75\xca\x15\xa3\x3a\x67\x72\x7b\xf9\x60\x5e\xd6\xed\xae\xd1\xc9\x77\x7a\xc3\x67\x89\x8e\xcd\x43\x46\x8e\x5a\x64\x17\x2a\x6c\x9a\xbd\x28\xc8\x34\x5e\xc3\x17\x17\x74\xb2\x97\x6e\x4b\x3f\x07\x01\x56\x0a\x90\x27\x7d\x3b\x0d\x04\x7e\x9c\x1c\x15\x1f\x4b\xed\x8f\x71\xae\xf5\x49\x19\x6b\x43\x76\x44\xdb\x97\x27\xc1\x2a\xc9\x2a\x6f\x0d\xad\x69\x83\x10\x1b\xe3\x59\x0c\xab\xac\x27\xcd\x5a\x50\x7c\x23\x0d\x8d\xf0\x33\x1d\x3f\x54\x49\x36\x19\x78\x9f\x26\x84\xa2\x79\xd7\xb2\x16\x69\x33\x49\xf8\x53\xdf\x62\x28\xe5\x6e\x7e\xbf\x14\xf7\x50\xa2\x43\x88\x28\x58\x6c\x29\x26\xbd\x20\x51\x5a\x23\x61\x87\xed\x41\x7f\x33\xe4\x37\x0b\xcb\x4c\x0c\x68\x88\x7d\x43\xbc\xbd\xf1\xc1\x50\x7b\xa0\x22\x79\x98\x20\xcd\xee\xc6\xa8\x5f\xfe\x4c\xaa\x63\xb2\xe7\x6d\x65\x0f\x22\x35\xbb\x5f\x5c\xd8\xad\xa0\x6f\xba\x70\x06\x54\x72\x3b\xac\x39\xe1\x66\xc8\xba\x0e\x68\x08\x95\x1c\x9e\xc3\xc7\x5b\xa8\xb2\xaa\x59\x2f\x76\x17\xd5\x9b\x50\x95\x2d\x7f\xc0\x1a\x99\xfc\x8d\xcc\x9c\x9a\x0b\x5a\x6f\x38\xf2\xd8\xc4\x62\x8e\x22\xe0\x12\xd1\xcf\x13\xcb\x2c\x78\x85\x5b\xb7\xf9\xa9\xfb\x34\x98\x02\x3d\x16\x10\x33\x3a\x37\x01\x6d\x0a\x1b\x1b\x08\x39\xea\x38\xc3\x96\x80\xc0\xde\x6c\x5c\xb6\x08\x5e\xf2\xff\xda\x4c\xf6\x89\xbb\x7f\x55\x41\x39\xe4\xda\x46\x39\xe2\x0b\x82\x01\x51\x5a\x93\xbf\xa0\x56\xca\x2b\x43\xd9\x67\x47\xd6\x7e\x30\x44\x0b\x73\x97\x3d\x42\x4b\x92\x41\xa4\x39\x51\xd5\x37\xb5\x27\x07\x3e\x66\x80\xe4\x16\x20\x6b\x79\xcd\xa2\xbf\x4b\xcd\x84\x41\x70\x42\x2f\x1f\xf1\x3d\x23\xce\x3d\x5c\x8a\x06\xdc\x57\x72\xeb\x61\xf3\x77\x1f\x5d\xf2\x04\xbf\x36\x2a\x3f\x8b\x3e\x9d\x0c\x3d\x1d\xf4\x92\x45\x61\x8f\xfa\xf8\xd7\x16\xfb\xce\x2d\x4b\x00\x0d\xc3\x30\x0a\x75\xee\x64\x7e\x38\x6f\x24\x46\xa3\x80\x71\x2f\x66\x3c\xd0\x8e\x38\x87\xef\xd3\xbe\x8b\x17\xa3\xc0\x85\x42\x7f\xad\xa1\x0b\x4c\x3e\x38\x23\xd3\xf4\x43\xf8\xd8\x0e\x77\xf3\x33\x4f\xab\x7d\xe1\x36\xfc\x06\xb2\x79\x07\x32\x79\xd0\xf9\x15\x59\x5b\x1f\xd5\xa5\xb2\xda\x22\x32\xf1\xde\xb7\xdb\x9a\x3d\x0a\xb4\x50\xf8\x44\xe7\xec\x01\x50\x93\x6c\xf6\xe7\x82\x4c\x3a\x40\xcc\xcf\x2f\xa5\xe4\x40\x26\x9d\x88\xcc\x25\xad\xb0\x34\xf1\x45\xc1\x37\x94\xcd\x5f\x8f\xc9\x5f\x94\xc5\xb7\xd8\xb9\x51\xa0\x30\x8f\xd9\x1e\xcf\xd5\x87\xac\xf0\xd3\x1f\xa7\x6e\x9a\x0a\x72\x39\xce\x73\xc0\x90\xc5\xe8\x18\xec\x87\xaf\x99\xeb\x46\x94\x9e\x86\xbc\x04\x31\x60\xf2\x17\xcc\x64\x21\xb0\xe0\xa9\x78\xa6\xe1\x30\xfc\xed\xab\x36\x01\xd7\x18\x2d\x7f\x01\xdb\x05\x6c\x74\xbd\x94\xc2\xea\x1d\x3a\x13\xfb\x9c\xe3\xed\x94\xd8\x14\x7c\x82\x19\xef\xfe\x5a\xbf\x8b\x54\x7a\xdc\xfe\x08\xb7\xe9\x47\xe1\x9b\xa6\xb1\x77\x30\xc5\x68\x77\xf4\x0a\x53\x5e\xfa\xbe\x1f\xa5\xa2\x50\xf3\x00\x0a\x38\x0b\x9e\x9a\xfa\xea\xfb\x70\xff\x9a\xa5\x0c\xdd\x40\x61\xb9\x79\xd3\x40\x08\x40\xe9\x0b\xdf\x88\x6d\x6d\x56\xaa\xed\x83\xb6\x37\xdb\xae\x98\x52\xa4\xfc\xcd\xc6\xa6\xfe\x72\xa8\x9a\x42\xba\x01\x7b\xac\x6d\x00\x29\xc7\x75\x5d\xe7\xfc\x97\x1d\xa6\x14\x18\x8a\x1c\x79\xfc\xd7\x67\xc9\x45\x31\x8b\x6b\x9b\xab\xb0\x75\xf0\x93\xbb\x50\x26\xfd\xf2\x0f\xbd\x95\xda\xc3\xf5\x1b\x92\x71\x86\x4f\x1c\x91\xa3\x55\x76\x21\x08\x84\x8c\x44\xba\x74\xab\x9a\x6c\x65\x86\x4f\x99\x47\x6c\xe7\x49\x4c\xfd\x3a\x04\xeb\x10\x28\x8b\xa8\xa8\xac\x7e\x57\x9c\x92\x75\x58\xca\x61\xa1\xb3\xde\x71\x0f\xe3\xb7\x15\x7f\x73\xa9\xab\x07\xce\xb9\xca\x07\x04\x73\x58\x76\xdb\x35\x19\xe4\xb2\x3b\xe8\x6f\xa1\x6f\x75\x99\xc4\x75\x42\xfa\x19\x19\x87\x76\x78\xc6\x66\xd5\xaf\x1e\x5e\x41\x71\x9a\xf3\x59\xfe\x7a\x99\xff\x44\xce\x3a\x04\xf3\x98\x80\x22\xa6\xb3\x99\xee\x72\x9a\xeb\xe9\x3e\x24\x7c\x58\xb5\x5f\x92\x3d\x72\x67\x85\x65\x73\x8a\xf4\xcb\xbd\x12\x69\xb1\x4d\xc1\x97\x1b\x23\xeb\x87\x88\x5d\x77\x1d\xcd\xf6\x29\xee\xa1\x07\x6a\xfa\x26\xf8\xf9\xee\xbe\x4c\x83\xdf\x67\xac\x10\x66\xe4\xc3\x7c\xe1\x6a\xf2\x6d\xad\x72\xc8\x40\xd9\xfa\x94\x84\x3e\xb2\x08\x40\x7d\xee\x89\xad\xb5\x6e\x45\x8e\xb7\xc0\x26\x87\xa0\xd0\xd1\xe5\x36\x10\x6c\xdb\xf3\xec\x89\x66\x7c\xda\xe3\x68\xff\xf0\x04\x3b\xc7\x89\x57\x08\x35\x92\xf0\x9b\xe3\xa0\x89\x96\xdc\xf3\x22\xd1\x1b\x08\x40\x95\x7c\xe4\x56\x20\xec\xea\x88\x9e\xd7\xa6\xb5\x7b\xb0\x3e\x4c\xed\xaf\xe5\x86\xe4\xba\x65\x1b\xe6\xdd\x51\xc1\x63\xfb\xe6\x4b\x9a\xed\x4d\xcc\xfd\xf3\x93\xbb\x60\xd9\x38\xa7\x81\x85\xaa\x25\xb5\xd9\x9e\x00\x8d\xc8\x2f\x21\x7e\x46\x2a\xee\x16\x6d\x27\x6f\x68\x11\xc2\x2e\x77\x33\x94\x97\x77\x09\x69\xb2\x71\x1d\x1a\xfd\xcb\x9d\x5a\xb7\x6f\x08\xfd\xcd\xc5\x20\x58\x1e\x6d\x2f\x09\xbe\x0f\xcc\x98\xf2\xcb\x8e\xa9\xff\xe1\xe8\xc2\x10\x10\x03\x0d\xa0\xbb\x06\x28\xda\xa3\xeb\x15\x72\x1c\x79\x08\x7b\x28\xb6\xa7\xc9\xec\x95\x52\x4f\xa6\xd1\x07\x0d\x82\xc2\xe1\x97\xad\xae\x64\x47\xea\x12\x4e\x44\x32\x38\x5a\xce\x6c\x5c\x8a\x3d\x0a\x37\x46\x83\x1b\x62\x2a\x89\xb7\xbc\x01\xd8\x0d\x47\x70\x7f\x9a\x3f\xb8\x37\x6b\x00\x17\x08\xa9\xac\xa6\x36\x1b\xbd\xfb\x01\x7c\x64\xc8\x91\xcf\x71\x5a\xcf\x1f\x77\xb7\x4a\x01\x97\x50\x23\x22\x80\x4f\xee\x77\x44\xde\xf9\x6b\xca\x86\x0f\x83\x46\x78\x7d\xac\xaf\x4f\x3e\x20\x85\xbd\x8e\xcc\x62\xa5\xe4\x52\xd5\x6c\xfc\x2f\x46\x20\x38\xaf\x41\x5a\xb4\x0a\xee\x11\x51\xc4\x65\x3e\x95\x53\x8a\xd7\x39\x99\xe5\xd6\xa8\xda\xd6\xb3\xec\xd6\xe6\x6d\xda\x1c\x99\x2a\x59\x45\x1f\x0d\x6f\xb8\x58\x60\x45\x37\x62\xdd\x89\xe0\xae\x14\xa0\x80\xb8\xac\x16\x83\x9a\xfd\x7f\x63\x7a\x24\x4d\x12\x61\x5c\x3c\x94\x3b\x48\xc1\xb1\xa5\x48\xb5\xa2\xcd\x47\x47\x69\xbd\xb0\xde\xfa\xb4\xec\x13\x9c\xe6\x6e\x6a\xb5\xa5\xc6\x30\x1d\x1e\x23\xe9\x3e\x73\xa9\xdd\xf3\xad\x4c\x45\xde\x96\xb8\xb9\x64\x5d\xf9\xf0\xd4\xa2\xff\xe9\x57\xe5\xbc\xeb\xe4\x83\xae\xe1\xf7\x57\x52\xac\x5a\x36\x1e\x1b\x42\xc7\xa5\x01\x65\x0d\x59\x26\xd3\x88\xa4\x04\xca\xb2\x38\xa2\x9d\x7a\x8d\x96\x03\x4b\x4d\x6a\xed\x13\xe1\x83\x6c\xba\xd5\x5d\x73\x23\x1f\xbf\xac\x11\xe7\x54\x3e\xcc\xbe\x03\x27\xff\x60\x91\x11\xaf\xa7\xa4\x8d\xf1\x76\x92\x94\xef\x39\x40\x7a\xa8\xc6\x31\xfe\xb1\xba\x5a\xce\x12\xc4\x84\xdd\x96\xbc\xdb\xc0\xda\x0c\x78\xe2\xa4\xf4\x77\x7d\xc9\x2f\xfb\x81\xd0\x0d\xc9\x93\x07\x31\x04\x6b\xcf\xdb\x4e\xb5\xd8\xc6\xec\x0c\xc8\x7f\x22\xd1\x88\x9d\x25\x7f\xa0\xe8\x53\x64\x86\xad\x29\xfb\x03\xc1\xe6\x1b\xc0\xa6\x9f\x2b\x7b\x00\x52\x0f\x8d\xbc\x36\xb2\xde\x67\x60\x9c\x65\x53\x4d\x0c\xb8\x8b\x52\x36\xe3\x6f\xa6\x6e\x11\x7c\xa4\x55\x08\x97\xdf\xc2\xae\xa6\xef\x86\xfb\x3b\x69\xb2\xc4\x4c\x3f\xce\x3f\x59\x56\x94\x45\xc0\x6a\xcb\x4d\x02\x87\x3c\x68\xb8\x84\xca\x29\xc3\x51\x17\x1f\xe7\xf4\x31\xd9\x09\x26\x81\xe1\x34\xac\x32\x79\x6d\xb7\x74\x0b\xf5\xfa\x08\x4c\xfb\xfb\x3b\x31\x47\x7e\x78\x1c\x0d\xe9\xbc\x46\xe4\x88\xd1\x02\x89\xfc\xa9\xc1\x62\x3e\x93\x53\x3c\x5d\xe8\xb5\xf1\x46\x68\xeb\x7a\x6c\x11\x6c\xfa\xce\x1e\x95\xae\x8c\x05\xe2\x35\x5e\xc4\xe1\x8d\x41\x04\xa6\x86\xc0\x62\x55\x3c\xa9\xeb\x3e\x1f\x33\xe6\xc0\x52\x30\x2c\x79\xb4\x04\x7b\xde\xa1\x1f\xfa\xbf\xce\xbc\x7d\x99\x3c\xb8\x13\x0e\x9f\xef\x5f\xdd\xcf\x29\x31\xf7\xcd\x61\xda\x75\x69\x29\x0c\xc3\x70\xaf\xd3\xaf\x33\x7f\x5e\xc3\xc2\x31\x0c\xfd\xc4\x73\x8b\x75\x2b\xf4\xb5\x65\xf8\xe6\xd7\x58\x92\x50\x00\xfc\x12\xe7\xf6\x54\x1b\x2c\xca\xd7\x90\x3f\xa2\x78\xfe\xeb\x8f\xa7\x60\x90\x6c\x5c\x2b\xb0\x77\x1f\xc1\xf7\x0f\x3b\x47\xf8\x4f\xe6\x0d\x04\x1c\x7f\xd0\x52\x16\xb6\x5c\xac\x40\xa8\xac\x2b\xc8\x4f\xfc\x0d\xbf\x24\xed\x8e\x58\x57\xcc\x22\x7c\xc9\xa2\x65\x1d\xc6\x50\x6c\x6d\xd9\x78\x77\xa2\xb2\x0f\xd4\xfe\x6a\x2c\xb5\x1b\xd7\x1f\x8c\xdd\xb9\x8c\xd7\x20\x0d\xbe\xe9\x61\x95\x1f\xcd\x45\x23\xd1\x08\x1f\x17\xfa\xea\x21\x6a\xd5\x5b\xb8\x38\xa0\x79\x9f\xa0\x73\xd1\x5d\x38\xf5\x52\xb1\xd9\x87\x79\xd5\xba\x95\x38\xf3\x05\x8c\x55\xda\x9b\xf9\xf6\xa2\x36\xe5\xb8\xd7\x5b\xb9\x98\x7f\x1c\xe2\xca\xaf\x73\xcc\xa9\x1f\xe5\xbf\x7d\xce\x2b\xc4\xec\x7a\x8d\x59\xde\x50\x4c\x91\x69\x9c\x73\xfe\xa1\xb5\x1d\x3b\xe2\xcf\x83\x9e\xf8\xe4\x25\xcd\x0e\x8f\x23\x79\x22\x8f\xae\xec\xc8\xf1\xe1\xb0\x98\xfd\x92\xcf\x34\x72\x52\xc4\xfd\xe4\x1e\xe4\xcb\x17\x70\x9b\x57\x08\x9b\xe3\x47\xfa\xfc\x20\x45\x23\x48\xdc\xf8\xf4\x65\x34\xe0\xe4\x57\x8b\x1f\x9d\x32\xc7\x24\xa1\x4e\xd5\xdf\x97\xfc\xed\x5c\x75\x5d\xc7\x45\xac\x9f\x57\xf3\x11\x99\x1f\xab\x37\xf2\x12\x1d\x4f\xfe\x16\xe6\xb3\x4e\xcd\x94\x04\xdf\xf4\x80\x33\x8c\xd1\xf0\xe0\x47\x2e\x1d\xdb\x41\x4f\xfb\x2b\x56\xa9\xc5\xfb\x1e\xc4\x97\x69\x5c\x7e\xe2\xda\x96\xaf\x75\x70\xa5\x65\x4b\x87\x07\x08\x1f\x3d\xfc\x46\x51\x58\xc6\x2a\x34\x7a\x8f\x65\x19\x77\xa4\x4c\xfe\x37\x79\xe2\xa7\x91\x7f\xee\x32\x71\x5a\xfe\x9f\x5d\xa5\xd0\x3b\xe4\xff\xd3\x39\x48\x49\xd7\x3e\x6a\x93\xde\xe5\xbf\x37\x9e\x44\x14\x37\xda\x8f\xc9\x82\x38\xe9\x6f\xa1\x07\xdb\xda\xb8\x22\x87\x1f\xc0\x26\x59\x25\x79\x95\x63\x37\x99\x63\x9e\x2d\x23\x82\x66\x15\x3b\xfb\xfc\xd1\x11\xf3\xbe\xe0\x7c\x0b\x41\x50\xd4\x8f\xde\x2f\x09\x3e\xb7\x95\x00\x63\x0c\x2c\xe0\xfa\x61\xc7\x84\x03\xae\x2a\xe7\xbe\xe1\xda\x06\x68\x9e\x64\x9a\xee\x0e\x61\x58\x86\x65\x7c\xd0\x74\x9d\x64\x6a\x7b\x23\xda\xdd\x93\x30\xed\xb3\xb4\x26\xff\xf5\x25\x35\x2e\x51\xbb\x6a\x72\xfb\x5a\xf6\xf9\x72\x0f\xc3\x28\x1f\x97\x2d\x47\xe8\xef\xc1\x37\x95\x1f\x99\x4b\x65\xe9\x0d\x31\x79\x30\x53\x4f\x2a\xb5\x59\x24\x56\x71\x28\xac\xf3\x45\xf5\x21\xaa\x77\x27\xad\x76\x2e\x24\x43\x7e\x67\xbc\xb6\xdc\x39\x3c\xab\x8a\xef\xe7\x9f\xfa\xaf\x59\xfd\x18\x47\x3c\x51\x32\x47\xc4\x27\x6a\xa6\x38\xad\x0d\xde\x1d\x8a\x89\xb7\xe8\x70\xec\x07\x47\x0e\xa3\x51\x8a\x7d\xe7\xf3\xeb\xed\xd8\xf7\x3a\x04\x40\x79\xa5\xec\x3d\xf2\x0c\x39\xb6\x0c\x19\xeb\xaa\x65\x4b\xf1\x97\x43\x83\x8a\xa2\xa5\x42\x7d\xf2\x57\x67\xce\xe3\x32\xa6\x48\x2a\xb9\x41\x6e\x83\xa2\x22\x32\x69\x5c\xa3\xd4\xb2\x66\xd2\x2e\xd4\xa7\x52\x88\x15\x38\x29\xd4\xd0\x7a\x0f\x50\x84\xf4\xd7\x43\x3f\x8c\xbb\x3c\xa2\x71\xa6\xe2\x70\x66\xd2\x67\x26\xad\xf7\xa9\xf4\x7b\x04\xe1\xde\x92\xdf\x49\x63\x27\x2d\x30\xbf\x3f\x7d\x71\x5d\x99\xc7\x9f\x43\x70\x81\x93\x4c\x33\x02\xd8\x56\xbf\x2c\x6b\xc9\x36\x02\x0f\xe9\xbf\x32\x8c\xdc\x98\x44\xdb\x69\xe5\x9a\x2d\x9c\xba\xf7\xa4\x34\x5e\xa8\xc2\x65\x1c\xa2\x34\xa8\xad\xeb\xb9\x79\xa7\x24\x44\x9f\xde\x91\x80\xa6\x4a\xa2\xd4\xb9\xfe\xe5\x33\x45\x41\x59\x24\xb6\x29\x44\x0f\x98\x7b\xc8\x8f\x8e\x35\x1b\x56\x64\x33\xed\xa3\xfc\x58\xa0\x1a\xa5\x79\x4e\x95\x10\xac\x47\x17\x89\xa2\x1f\x57\x2c\x2e\x7f\x01\x09\xe8\xac\xd1\x10\x75\xe1\xb2\xac\x63\x93\xea\x9e\x58\x98\x41\x18\x10\x3e\x37\xde\x16\x03\xcf\xff\xd4\x69\x17\xee\x85\x57\xdb\xd5\x4f\xe0\x3b\x16\xfc\x27\x43\x8e\x25\x8f\xe8\xbd\xb0\xf5\xf5\x6d\x25\xef\x81\xcf\x5f\xff\xf5\xd8\x8a\x73\xdb\x0a\x80\x13\xf3\x0a\xf6\x3c\x22\xd0\x94\x1e\x9f\x77\xcd\x46\xb5\x47\x7d\xef\x04\xa6\x11\x27\x52\xa3\x32\xfd\x41\x11\x71\xa5\xfd\x7b\x7c\x5c\x56\x59\xe4\x99\xf4\xbe\xc3\x4d\xe2\xb8\xad\xe2\xc3\xf3\xae\xf9\x88\x7f\x4d\x00\x69\x80\x49\xb2\xc1\xc4\xb2\x99\x92\xe3\x63\x12\xdd\x96\xc7\x58\x84\x71\xaf\xd0\xa1\x7b\xe2\x87\x8e\x2b\xf4\x20\xa3\xf0\xd4\xd1\x8b\x6e\xb9\x4f\xab\xfe\xab\x6d\x57\x14\x5f\x45\xf7\x77\x0c\x5e\x15\xc4\x1b\x60\x22\x81\x6d\x25\xce\x7b\xcf\x85\xbe\xc4\xa3\x68\x8e\x4a\x12\x3e\x73\x88\x76\xcd\xf6\xc5\x08\xa0\x3c\x97\xa8\x6f\x2f\xcb\x45\x8e\x2d\x42\x0f\xb2\xa5\x8e\x10\xf8\x22\x81\xbb\xd7\x52\x3a\x56\xbc\xcf\x2f\xda\x4f\x6f\x38\x83\x9d\xa3\x10\x02\x8b\x4c\x43\x6b\x99\xac\xba\x79\x61\x42\xb8\x46\xa1\x35\xd4\xbd\x62\x32\xb7\x11\x78\x80\x83\x55\x2e\xf0\x01\xc1\x6d\xe4\x33\x52\x23\x5c\x13\xd6\x3e\x86\xdd\x66\xd2\xb0\x44\x79\xb6\x43\x80\x7d\x0f\x06\x6d\xd7\xb5\x8f\x15\x59\x52\xa9\x3f\x3d\x90\xd8\xe6\xb0\x49\x9f\x21\x45\xec\xab\xdd\x40\x2a\x8c\x1e\x33\xcb\xda\xb6\x92\xe7\xbd\xa7\xd2\x48\xa1\x92\x15\xb1\xd5\x0b\x46\xfb\x14\xd5\x3d\xea\x97\x69\x1d\xb5\x18\xe7\x06\x9b\x1a\x10\xd3\x4e\x44\x43\x59\x8e\x8f\xbf\x82\x71\x88\x60\x20\x00\x4c\x3e\x83\x0d\x7d\x3f\x19\xcc\x92\x94\xff\xe6\xd0\xf5\xb2\x7d\x5a\x15\x3a\xee\x8a\xda\x73\x49\xdd\xce\xf2\x7b\x7a\xa3\x69\x00\x91\x16\x6f\xe7\x1b\x36\x8d\xb1\xd4\x3a\x5c\x6e\x19\x7c\x48\xf7\x6b\x7d\xe1\x61\x2c\x44\x63\x19\x8c\x28\x46\x4f\x16\x88\xf8\xbf\x3a\x35\xd1\x3a\xb5\x2b\xa6\x85\x48\xfb\x47\x87\x54\xd1\x0d\xc2\x29\x85\x4b\xdd\x23\xbe\x3e\x51\x79\x81\xa1\xa2\xb8\x2d\xeb\xef\xa5\x28\x15\xde\xf4\x6c\x95\xa3\x15\xfd\xcd\xac\x5f\xef\xfd\x5c\xc7\x62\xc0\x26\x7f\x79\x83\x32\x85\x7d\xa6\x8b\xa4\x7f\xe3\x7e\x3e\x2a\x84\x7b\x2d\x3f\x54\x1b\x59\x7d\x12\x78\x20\x2b\xac\x96\x31\x22\xc8\xd4\x56\x55\x11\x11\x23\xe1\x09\x61\x75\xaa\xed\xb7\x82\xaa\x63\xc1\x6a\x7d\x01\xf1\x16\xde\x46\xf7\xf0\x3a\xc5\x2b\xba\x23\xee\xb9\x2b\xf9\x6e\x0a\xa5\x21\x66\xc3\xfb\xb9\x87\xf3\x51\x4d\x45\x65\x32\x35\x44\x89\xfc\x01\xc2\x35\xff\xb5\xe9\xd6\xb3\xaf\x4c\xab\x08\x3b\xfd\x98\x4a\x81\xfa\x93\x23\x62\x18\x8e\x02\x23\x80\xd2\x71\x6a\xb8\xd0\x10\xbc\xc1\x1a\xe1\xd5\x2f\x51\x22\x4f\xbc\x76\xd9\xea\x73\x64\x9b\xc6\x43\x3f\xb1\x8d\xf2\xfa\x08\xba\xaf\x3d\x05\x7b\x2d\x59\xbd\xc8\x8d\x98\x9f\x04\xd5\x07\x02\x98\xd7\x6c\x0c\xd3\x24\xe2\x38\x8e\x08\x7b\xbf\x28\xa3\x29\xae\xc0\x67\x8d\xa0\x01\x03\xce\x59\xf1\xc6\x54\x1a\xb3\x3a\x86\xf9\xe2\x8c\x37\xa2\xfb\xe6\x30\x1b\x0e\x89\x46\xa1\xe5\x07\xab\x78\x26\x98\x1b\x6c\x56\x7f\xf2\x71\xfc\x67\xb2\xda\x81\x04\x24\x51\x53\x16\x2f\x84\x2b\xb4\xb6\xa7\x47\x0d\xce\x68\x9f\xc4\xb0\x90\xbf\x44\x04\x65\xfc\x77\xab\x41\xe0\x39\xe4\x81\xaa\x3c\xe9\x1b\xdc\x22\xfe\x6b\x4f\xfd\x00\x35\x11\xfa\xab\xaf\x04\x32\xce\x83\xbe\x7d\x9b\xb4\xbe\xfa\x01\x95\x02\xd1\x24\xff\xa0\xc0\x1c\xcf\x2b\x80\xe1\x76\xaa\x4b\x7c\xf9\xf3\x4b\x1c\xf9\x96\x46\xe1\x90\x22\x65\x1c\xc1\x07\xe9\x13\xf5\x87\x48\xb6\xe4\x50\x61\xa2\x1c\xab\xa3\xaa\x29\x0c\xf5\x83\xa3\x8e\x7b\x63\x5e\x3e\xf3\xb7\xcc\x14\x96\x4d\x8e\xf5\x79\xbf\x39\xca\x93\x60\xe9\xf7\x76\x8f\xc1\x71\x41\xf4\xd4\xe0\xb0\xb8\x63\xd8\xdb\x1f\xee\x03\x9e\x55\x72\x84\xaa\xdd\xa2\x53\x11\x00\x46\x4e\x1a\x59\x42\x59\x7d\x8a\x49\x5d\xb3\x6e\x2d\xfd\xc1\xf0\x67\xf7\xca\xd7\x77\xbf\xe3\xe3\xa8\xec\x78\x1b\x63\x18\xc3\x0e\x7e\xf5\x53\xdf\xea\xb8\xa8\xcb\xc2\x61\x48\x45\xa7\x11\x52\x71\x1c\xa5\xcf\xa0\x2e\x83\xc2\x33\x90\x6d\xbe\x09\x12\x30\x6b\xc4\x7a\x6f\xf2\x1f\xbe\xc4\x74\xaa\x2b\xa9\x73\xa5\x38\x84\xae\x70\x6b\x36\x85\x30\xfd\xeb\xf7\x46\xda\x35\x9b\x32\x12\x75\x5d\x41\x33\x40\x68\x33\x63\x38\x46\xd0\x4b\xc6\x2f\x95\x64\x8f\x79\xee\x92\xae\x7f\x7c\x15\x07\x2d\xf8\xd8\x72\xf3\x08\x95\x56\x16\x81\xa4\x47\x61\x5a\x64\x84\xa1\x01\xd1\xbf\x79\xd2\x0f\xad\xa2\xeb\x0b\xaa\xfd\xfb\xb9\x95\xfe\xf4\x51\x00\x84\x81\xfa\xd1\xdc\x51\x5d\xb3\x49\x25\xaa\xf4\x73\xe2\x9c\x90\x8e\x60\xfc\x25\x47\x1a\xf4\x61\xa9\xba\x23\x93\xac\xf2\x26\xee\x20\xde\x39\x04\xa6\x11\x98\x25\xd2\x9c\x76\x8d\x36\x6c\x54\x9f\x98\xc1\xb0\x29\x23\x35\x26\xd4\x18\xb1\xf8\xd3\xb0\x97\x71\xab\x63\xf8\x46\x1c\x83\x8c\x04\x02\x7c\x57\xe9\xdc\x3e\x58\xc2\x0b\xb8\xed\x63\x21\xa7\x84\x68\xac\x05\xbb\x9b\xfb\x2b\x55\x1d\x91\x07\xb6\xf6\xe7\xc8\x21\x1f\x0e\x5d\xde\x14\xb3\x0d\xae\xea\x37\x0c\x1d\x01\xb0\x6e\x91\xa9\x46\x02\x3d\xbe\xf1\x81\x6e\xa1\xd7\xaf\xac\xd0\x33\x7f\x6c\x22\x9b\x94\xaa\xe5\x07\x94\xd8\x74\xfc\x1c\x40\xe2\x93\x73\x2a\x68\x0f\x10\x31\x2d\x44\xf5\xfb\x8d\x7d\x05\x2c\xf5\x46\x0d\x49\x3f\x1f\xba\x32\xcb\x52\x4c\xdc\x4f\x69\x2f\x5c\xe3\xac\xa0\x8d\x69\x2b\x1e\x23\xd7\x1c\xc7\x25\xb0\x41\xeb\x10\x6c\x55\x9c\x5c\xde\x28\xd0\xb8\x97\xbc\xff\x61\x35\xdc\x4d\x96\x2b\x4d\x53\xbe\x1a\x9f\xeb\xb5\x4a\xda\x8d\x18\xaf\x41\x1b\xaf\xe1\x73\x6b\x38\xb7\xb3\xd4\x3f\x57\x84\xb5\x21\x8b\x48\x17\xf2\xa5\xe9\x3a\x70\x65\xc7\x54\xe0\x55\xd7\x96\x6d\xdb\x88\x75\xdb\x32\xc9\xda\xf9\x1d\xe1\xa9\xff\x7c\x7e\xb1\x2d\xa2\x10\xfd\xca\x77\xd7\xf3\xf3\xd7\xc4\x62\x06\x93\x15\x92\x00\xe6\xf4\xb2\x78\x87\xb6\x7d\x83\xb4\x20\x9b\x2f\x29\xc3\xf9\xb4\x55\x39\x77\xbf\xed\x43\x37\xef\xfa\x52\x8a\x8a\x99\xe0\x17\x81\x06\x14\xf0\x19\x34\xac\x1a\x98\xff\xb8\x35\x0c\xae\x93\x5a\xac\xf2\xbc\xcc\x87\x0d\xe1\xca\xb7\x5a\x26\xeb\x64\x8f\xf3\x19\x92\x98\xd7\x7a\x8d\x47\x70\x7a\x89\x2b\x16\x67\x8d\xc2\x94\xb2\x17\xb0\x26\x51\x8b\xb4\x43\x9f\x4f\x14\x8b\x77\xf0\x51\xd7\x71\x75\x18\x43\x9d\x81\xff\x61\x3c\x3a\x41\xfb\x4b\x3d\x2f\xcd\x97\x37\xcc\x67\xb3\xd3\x9c\x67\x30\xeb\x35\x5e\xe1\x22\x64\xae\x58\x5c\x69\x74\x53\x7a\x5a\xe9\x7a\x03\x6b\xb2\x4e\x15\xa1\x47\xae\xee\xb1\x4a\xbf\xa1\x0c\xfe\x13\xa0\x66\xa8\x68\x23\xfb\x53\xef\xd0\x08\x59\xe8\xad\x95\xdc\x0a\xd5\xe2\xb8\xbf\xf7\x19\xf8\x52\xf6\xbe\xed\xc7\xb0\x6b\xac\x57\x4c\x29\x64\xb6\x81\x96\xfa\x4a\xae\x5d\xb2\x13\xb8\xb5\x8c\xd7\x22\xf1\x7d\x01\x18\x11\xb0\x53\xc7\x4c\x7f\xa9\xbf\xea\x3d\xda\x24\xe7\x34\xfd\x7f\x12\xad\x1c\x53\x21\x73\x89\x26\x26\x4e\xb8\x7e\x43\x1c\xb4\xc9\x5a\xc6\x4b\x98\xb2\x5b\xc8\xba\x77\x83\xed\x0a\x3f\xab\xfd\x90\xc9\x38\xe8\xf5\x4d\x02\x8c\xf1\x9a\x27\xe2\x07\x0a\xe0\x96\x57\x10\x73\xc1\x0d\x75\xea\x03\xad\x7f\xcc\xbf\xba\x7d\x57\x3e\x04\x7b\x25\x73\x33\x36\xbd\x57\xab\xd8\x97\x25\x6c\x18\x51\x53\x69\x86\xa5\x86\x12\x1b\x83\xf5\x8c\x1b\x51\x03\xb6\xd7\xca\x25\x20\x26\x08\xf8\xc2\xd5\x06\x01\x23\x05\x4b\x4e\xe1\x05\x6f\x94\xc8\xec\xfc\x3b\xf7\x3b\xb3\xc5\xa3\xff\x8c\x2b\x76\xde\x5a\xfa\x33\xc2\xb7\xb0\xa0\x4e\x3e\x11\x3b\xc4\x14\x87\x70\x59\x0c\xbd\xd1\x3a\x5a\x1b\xa8\x2c\xb2\x78\x9f\x8e\x75\xc5\x22\xff\x96\xf2\x0c\xc6\x04\x18\x2b\xc6\x26\x85\x5c\xed\xd8\xbc\xca\xd9\x17\xfd\xc4\x72\x30\xff\xb7\x76\xb1\xe9\x9b\xcb\xe4\x55\x0d\x1e\xe7\x68\xc8\x7e\xab\xc0\x28\x1a\xb6\xf3\x74\x3d\xc9\x39\x35\x0c\x94\x31\xd8\x91\x3a\x08\xf1\x54\xa5\xe6\x89\x5a\xc4\x6c\x96\xb0\x21\x60\xec\x15\x2b\x79\xec\x0f\xe1\x7a\x9c\x9f\x60\x17\xf8\xfe\xf8\x3c\xdc\x15\x8d\xeb\x99\xf4\x9e\xab\xe6\x5b\x9d\x93\x71\x1e\xc3\x74\x35\x05\xeb\x74\x6d\x98\xeb\xad\xae\x2f\x3a\x8e\x9c\xe6\x7c\x86\x22\x80\x8d\x9c\x26\x74\x1e\xcf\xab\x8b\x86\xd7\xef\xdb\x0c\xfc\xde\xf8\x23\xd5\xb4\x88\xf5\x7e\xe2\x04\x21\x72\x7d\x2e\x97\xef\xae\x9a\x1b\x62\x5c\xd6\x61\x71\x83\x50\x74\x83\x48\xba\x23\x56\x53\x6f\xf1\xf6\xe4\x79\x14\xaa\x6c\x9e\xc4\x3e\xf7\x4d\xb5\xdc\xc8\x2f\xa1\x47\x70\x18\x72\x83\x92\xb1\x4d\x22\x3d\x45\xd9\xc6\xff\x7a\xd1\x8b\x86\xef\x50\xce\x64\x85\xc1\xa8\xbd\x48\x74\x21\x11\x12\x0e\x4b\x11\x76\x9e\xe7\x78\x7d\xf0\x9b\xcb\x53\x50\x46\x19\x19\x2a\xb3\x7c\xef\x27\x7e\x7e\xe9\x6e\xf8\x3a\x8d\xaf\xec\x99\x3c\x76\x8f\xc1\x33\x98\x5c\x12\xe3\xbd\xf3\xa3\x4f\x44\xc5\xe4\xaf\xdb\x6b\x43\x03\x1e\xf0\x44\x64\xfe\x1b\x2f\xf3\xa1\xa8\xe9\x85\x79\x90\x66\x5c\xc4\x6c\x8d\xdc\xac\x6f\xb0\x14\xb8\xd2\x5b\x29\x6c\x2d\xb4\x01\xd3\x28\xa0\x39\xdf\x25\xc0\x36\x3d\x25\x4d\xde\x29\x84\xe3\x15\x88\x88\x91\x62\x49\xfc\x8f\x77\x86\x09\xe2\x2e\xf3\x25\x17\x4a\x17\x87\x1c\x1c\xd3\x80\xfc\xd2\xa6\xc0\x66\xd5\xef\x54\x37\xd3\xd5\x76\x3d\xdb\x8f\x33\xc3\xf4\xc2\xb5\x62\x21\x60\x80\x2c\xf5\x7e\x55\x61\xec\xd4\x31\x1c\x7a\xf9\x2a\x96\x7f\xf8\xc9\xfc\x55\x65\x77\x8f\x9d\xd1\xb9\x51\xed\x53\x86\x6b\x99\xef\x74\xbe\x95\x13\xb9\x02\x4b\xc8\xcd\xd9\xa7\x48\x3b\x28\x6a\x20\x69\xfe\x8a\xc6\x72\x79\x6a\xe0\x86\x61\x52\xf3\x86\x5b\x29\xd6\x7d\x59\xe6\x3c\xc6\x67\x29\xbb\x7b\x70\x8d\x17\x6a\x46\x49\x90\x16\xdf\x3f\x06\xa2\xf5\x4b\xa1\xb8\xc3\x44\xd7\xd6\x15\x98\x2e\x60\xa2\x28\x94\xa6\xcb\x40\x6b\x47\xf3\xae\xb4\x3b\x26\xc4\xfb\xcc\x87\x79\x3c\xd3\xcb\x62\x21\xeb\xa4\x4c\x56\x51\xf0\x77\x29\xed\x05\x2a\xa5\xbb\x9d\x53\xc2\x6b\x64\x1f\x0b\x67\xe9\x3f\x79\xea\xa8\x24\x5d\x37\x4c\x82\x83\xb0\xb6\x96\x71\x07\xc9\x95\x6c\xa8\x1e\x9a\xe4\xe4\x2b\x62\xb6\x8a\x2b\x37\x6b\xa9\x2e\x7f\x55\xcb\x0d\xe8\x9e\x6a\x0d\xc8\x09\x23\x23\x05\x9f\x07\xfd\xdd\xcb\xb9\x2e\xf3\xad\xcc\xb6\xd4\x11\xc5\x97\x81\x8c\x5e\x01\xf8\x8f\xf1\x53\x87\x23\x9a\x9f\x80\x96\x1d\x4a\x5e\x0b\xeb\xe4\xd9\x34\x3c\xee\x5f\x7f\x77\xd8\x5f\xe3\xbb\x86\xce\x3a\x06\xcf\x08\x21\x83\xd8\x07\x56\x1b\x70\x4d\xf2\x91\x85\x4e\xcf\x09\xfc\x46\x06\xe2\x1b\x12\x24\x9a\x92\x66\xda\x86\xe2\x51\x0e\x7b\xce\xd0\xf2\x36\x67\xf2\xe9\x41\x5a\x00\xa8\xdd\x9f\x63\x3b\x1b\xa2\xe2\xe9\xca\xb3\xfe\x7a\x45\xdd\x13\x91\x2b\x69\x9d\x4e\x41\x2d\x87\xbd\x14\x7c\x53\x70\x73\xcd\xcf\x21\x83\x09\xcd\x28\x5f\x80\x78\x59\x6c\xa6\x13\xf9\x62\x9d\x6e\xce\x64\x5b\x40\x4c\x01\x81\x22\x00\x7c\x83\x78\x86\x7f\x2b\x99\x4d\xa4\xf6\xca\x94\x66\x4d\x22\xb1\xdb\xcb\x8f\x41\x6a\x2f\x08\x83\x48\xc0\xe8\x46\xf3\x3f\xeb\xba\x28\xa6\x15\x2f\x45\x57\xf7\xcf\x15\x7f\x86\x7d\x17\xfb\xd0\x05\x65\x02\x44\x01\x0a\x04\xae\x03\x8a\x13\x5a\x50\x16\x71\x36\x59\x4d\x75\xad\x52\x50\x0e\x31\xd1\xd9\x4c\x87\x32\x71\xf8\xac\xeb\x5a\x60\xa0\x59\xf2\x63\xe9\x2f\xb5\x8e\xc7\xba\x09\x16\x62\x7b\xe0\xc0\x42\x96\xe7\x9d\xde\x37\x1e\x83\xb7\xfc\xeb\x5c\x59\xc3\x8b\xfd\xf1\xab\xc4\x41\x68\xfa\x65\x2c\xc7\x95\x31\x22\x52\x84\xfd\x5f\xf1\xf7\x3b\x4e\x46\xd1\x27\xeb\x90\x2c\xd2\x4c\xff\x9e\xc3\xbc\x5b\x4b\xad\xf8\xa7\x1a\xa5\xe3\x92\x67\x50\xc6\x40\x31\xd0\x86\x20\x93\x28\x6a\xf8\xdd\xdf\x9c\xcf\xf2\x37\x92\x50\x04\xb8\x91\x93\x82\xc7\x9d\x1e\x00\xba\xbc\x8d\x96\xb2\x97\x92\xc3\x76\x22\x4c\xc3\xa4\xd3\xfb\x34\x6e\xb1\x54\x1e\x50\x15\x8d\x98\xc7\x4d\x4a\xef\x0f\x76\xac\x69\x9c\x0b\xf9\x22\x11\x3f\x4c\x0d\x64\x1e\xb4\xae\x1b\x51\xf3\x64\x6d\x01\x77\x03\xc7\x01\x3d\x06\xd7\x28\xcc\x93\x80\xda\xb4\x0e\xf6\x33\xf1\x1b\x70\xdf\x87\x40\x5b\x60\x6d\x29\xd5\x17\xc4\x45\x6b\xa1\xad\xd4\x37\xb2\xa4\x87\x47\x4f\x15\x42\x57\x14\x87\x28\x14\x7f\xfd\x1b\x86\x66\xf8\xfb\xe5\xc2\x79\x0f\x66\xf8\x32\x02\x6f\x68\x42\xaf\x6b\x46\xd8\xdd\xee\x32\x55\x54\xe9\x9a\x8d\xfd\x3a\x04\x93\x59\xf6\x0d\xf7\x62\x86\xf2\x47\x3f\x76\x3d\x54\x0a\x77\x37\xb3\x94\x66\x2c\x5d\x1b\x1d\xd3\x31\xa0\x36\x08\xef\xcf\xaf\x67\xea\xa1\x61\x32\x96\x01\xb2\xa6\x1d\x00\x86\x87\xdb\xce\xe3\xad\xf1\x0f\x39\x3e\xae\xda\xef\x41\xe7\xa5\xaa\xd8\xaf\x0f\x08\xf6\xe0\x86\x50\x9d\x36\x77\xab\xa6\x1b\xc7\x4b\xe6\x80\xee\x2f\x4a\x1f\xa5\xc9\x3b\x3a\xd7\xa4\xb8\xc9\xb8\x02\xc7\x27\x01\x4c\x7d\xf8\xb8\x0e\xb7\xb4\x0b\x94\x09\x7f\xfd\x2b\x4e\x69\x69\x79\x1a\x3c\xb7\xfc\xc8\xfa\xde\xbd\xfa\x3e\x24\xc0\x1d\x16\x21\x35\xc9\x7d\x82\xb8\xbf\x1b\xbd\xe3\xa3\x36\xfc\x29\xfc\x63\x9c\xa5\x37\xd9\xd1\xbe\x2d\x39\x64\xec\xd6\x23\x12\xb6\xba\x01\x66\x2d\x8d\x94\x8b\xa1\x52\xbc\xbb\x86\x7d\x7f\x38\x6a\x59\xc7\x18\xa9\xca\xb5\xf1\x48\x39\xe6\x8f\x88\x03\x89\x40\xb5\x86\xd5\x3e\xb6\xab\xc9\x11\xd3\xfd\xcf\xdd\xdc\x74\xf2\x8c\x29\xb1\x15\xf1\x16\x8f\x20\xf9\xda\xaf\x33\xf5\x5f\x97\xbd\xe6\xdb\x1b\x9d\xbf\xf9\x5e\xae\x31\xd0\x48\x4b\x47\xb5\xeb\xf9\xbd\xf1\x85\x08\xba\x3b\x0a\x1c\xeb\xca\x3d\x6a\xf9\xe1\x94\x9d\x15\x7e\xf0\x40\x25\xb8\x8d\x17\xf1\xbd\x35\x9a\x19\x50\x6b\x1f\x5d\xe9\xbd\xd2\x6b\x23\xb3\xa3\x3e\xe0\x63\xf6\x09\xc8\x87\xff\x7c\x14\xd1\xf1\x32\x0e\xe4\x86\x5d\xee\xa8\xd5\x3c\xa9\x4f\x4d\xfe\x92\xcf\x47\x0d\x98\x2a\x61\xff\xd6\xae\x69\xcc\x75\xef\xe5\x62\xcf\x38\xd5\x17\x54\x34\x10\xca\x4c\x9a\xb4\xcc\xa4\x19\x6f\x44\x44\x7c\x7d\xfc\x7f\xf7\x57\x7d\xd1\xa2\x50\xb9\xff\xd4\x58\xe5\x66\xc5\xec\x33\xf2\x63\xfa\x29\x6b\x37\xa4\xff\xc3\x77\xc1\xfa\xcc\x6b\x5d\xfb\x5b\x54\xae\x8d\xa1\x34\x06\x5d\xec\x2b\x01\x5c\xcd\xbe\xe3\x4f\x2f\x58\xae\x63\x9e\xa4\x5f\xba\x99\xa7\xd6\x6c\x91\x84\x64\xa6\x58\x77\xc3\x2d\x5b\x09\xbb\xc0\xff\x50\x7e\x0b\x37\xdc\xf8\x13\xf3\x71\x23\xdb\xf5\x67\xb2\x6a\x0c\x4f\x7c\x5e\x43\xd4\xd4\x50\x6c\xd2\x73\x34\x98\x7f\x77\xd2\x99\x94\xb3\xe7\x87\x9f\xed\x87\x64\x44\x95\xb3\xe7\x9b\xd3\x99\x1e\xe8\x1b\xe1\xdf\x38\x54\x1b\xd9\xf7\x63\xb9\x9a\x1c\x32\x53\xeb\xa6\xc7\xb0\xa8\xda\xbc\x1a\xe0\x69\xcc\x9c\x44\x64\x57\x77\x27\xe5\xdf\x9e\x71\x95\xfa\xd2\x5c\xa3\x58\x03\xa5\x1b\xce\xb7\xc7\x9e\x4e\x18\xd3\x29\xcd\xf9\x54\x97\x3d\x06\xf8\xc1\x70\xf4\x5f\x46\x3b\x59\x98\xaf\x2e\x5f\xef\x20\xce\x5c\xa3\x9d\x60\xe7\x7e\x91\x0b\xb1\x5e\xe8\x75\x6e\xa8\xb1\x57\x1c\xfd\x63\x9b\x29\x3f\x40\xfc\x0f\x61\x30\xa6\x9d\xd9\x1d\x26\x1c\x38\xf7\x31\xa0\x9d\x3b\x02\xbc\x61\xff\x62\x65\x8a\x08\xfa\x10\x72\x79\x2e\x23\xce\x24\x4b\xc5\x29\xa7\x61\x41\x22\x72\xa3\xa4\x2e\x0d\xfb\xbf\xeb\x51\xb4\x36\xd4\x16\x51\x0e\x19\x70\x6e\x07\x37\xed\x95\x7c\xf0\x1a\xc1\x6c\x40\x7e\xf8\xa7\x2f\x71\x29\xf2\x58\xc6\x11\xe7\x71\x13\xf6\x59\x35\x58\xbe\x58\x03\x86\x6f\x0b\xb5\x23\x97\x9b\xa9\x7f\xe6\xe5\x28\xaa\x71\x20\x31\xc9\xc3\x4c\x0c\xc7\x91\xef\xd4\x06\x7c\x1b\xcd\x39\x6a\x98\x48\x87\x94\x68\x78\x37\xbc\x69\xed\x4f\x1c\xab\xdc\xd7\x7b\xb3\xd7\xca\xe2\xdd\x66\xb0\xc1\x72\x37\x15\x23\x69\xbd\x2b\xff\xc5\x72\x1e\xe6\x8b\x5b\xcc\xc2\xcd\xe4\xa8\x19\xa2\x1b\x0e\x9e\xa7\x5a\x33\x23\x32\x67\xf4\xd3\xcf\x7e\x97\x39\xd7\x53\x7d\x64\xef\x1a\x85\x9a\xa4\x91\x21\x22\xb9\x66\xdf\xee\xa7\x16\x86\xbb\x8a\x09\x87\xe5\xd9\xe5\x15\xa3\x85\x66\xbb\x10\x1d\x4d\xfd\x9a\x41\x53\x29\xff\x2e\x6e\xb2\x17\x44\xda\x3b\x1f\xb8\xad\x60\x34\x9a\xd9\x22\x90\x22\x14\x6c\xaa\xdb\x69\xc2\xb3\x82\xec\x31\xcf\xcf\x1d\x59\x43\x11\x53\xcc\x08\x18\x27\x6c\x95\x9b\x9e\xac\x81\xd3\xd2\xa1\x1f\x15\x3e\xff\xe1\x3a\xba\x76\x48\xe2\x7c\xdc\x61\x94\x79\x8f\x08\xb8\x17\x19\xb5\xb5\x5e\x3a\x51\x07\x66\x8c\xe4\xfd\x8f\x37\x70\xfe\xf2\x65\x3f\x98\xd3\xc2\x8e\x8d\x41\x12\x32\xee\x09\x6f\x72\xf6\x8c\x71\x5c\xaa\xd9\x0e\xf2\xfe\xf0\x15\xb0\xce\x2a\x39\xc3\x50\x2e\x17\xa9\x4c\x10\xf2\x06\x8e\xd7\x3e\xba\xb6\x6b\xcc\x02\x3b\x36\x99\xd8\x17\xc9\xfe\xd4\xbe\xb3\x99\xb2\x6d\xca\x2c\xfe\x92\x8f\xb7\x59\x72\x4e\x94\x95\xc0\xfb\xfc\xe7\xd3\x40\xcd\x4f\x5f\x71\x83\xe1\xd8\xc4\x68\xbb\x99\xe3\x30\x69\x74\x94\x1e\xd3\xcc\x07\x76\x38\x7d\x3d\x21\x44\x11\xff\x71\x21\x33\x7b\xc0\x35\xc5\xd2\x34\x33\x67\xc0\x52\x7d\xc7\x6d\x61\x1a\x1c\x1b\xee\xbb\xd3\x5d\x91\xc0\xd6\x3f\x31\x48\x93\x34\x54\xc0\xb2\xd1\x0a\x47\x03\x9c\x87\x98\xa9\x6e\xdc\x0c\x73\x3a\xeb\x97\xbe\x52\x2b\x99\xcb\xfc\x89\x2b\x98\xdd\x57\xbf\x2a\xa3\x94\xbc\xdc\xa0\x03\xdb\x79\x54\x84\x0a\x8f\x78\xfd\xeb\x59\xac\x0b\x09\x2c\x19\xef\xfd\xf0\x49\xd8\x24\x38\xf0\xf4\xac\x2b\xf6\x51\x94\x5a\x1d\x0b\x5e\x2e\x63\xaf\x18\x87\xfd\xeb\x77\x7f\xb0\xc5\x1d\x04\xdd\x8c\x8e\x18\xa0\x5a\x7c\xf8\x55\x02\x87\x6f\x0b\xc5\xe9\x1c\xf1\x1f\xef\x5a\xeb\xf1\x5f\x47\x13\x9c\xab\x99\x29\xb3\x7c\x08\x87\x91\x7a\x08\x18\x30\x5b\xc0\x4a\x85\xfb\xb7\x7f\xce\xec\x7c\x70\xcb\x98\x79\x41\x4d\x8a\xac\x92\xe0\x4f\x31\xf7\x42\xd3\x7b\xad\xd0\xa8\x7f\x71\x5d\x83\xe5\x5c\xe3\x23\x07\x4e\xf7\xe8\xdc\xa9\x39\x2d\x2a\xdc\x1a\xa4\x8b\xcc\x8a\x86\x9c\xb0\xff\xc8\x8b\xa0\x38\xe5\xca\x34\x9e\xc4\x8b\x53\x0b\x67\x28\xc1\x5c\xa7\x16\x68\xc9\xbf\x1e\xda\x51\xd3\x80\xfa\xfc\xf0\xca\x0d\xc5\x12\x39\x61\x01\xb7\x95\x81\xe2\xbd\x3f\xba\xe9\x5d\xb4\x25\xfc\x15\x13\x37\xa4\x32\xe1\x30\x15\xdb\x8c\xba\x7f\x4c\x56\x63\xd8\x73\x0d\xd4\xe4\x27\x16\x50\x6f\xd1\xf3\x17\x47\xe1\xf3\x2e\x24\xe5\x34\x8f\x33\x8d\x11\x13\xf3\x7f\x31\xdd\x77\xd5\x6e\x49\x08\x19\xb0\x73\xd5\xe4\x0b\x60\x98\xd4\x31\x0d\xa6\x29\x77\x65\x04\x4c\xa4\xfc\xf8\x7e\x38\x77\x45\xaa\x4b\xcb\x4c\xd6\xad\x5a\xdf\x7b\xa5\xcb\xa4\x60\x18\x3a\x82\x39\xec\x66\x8f\x0b\x7c\xf7\x8f\x07\xb3\x68\x33\x93\x0a\x06\x5c\x64\xf8\x74\x05\x1b\xc8\xcf\xcd\xac\x4b\x68\xa7\x53\x22\x5e\x22\x76\x47\x68\x8b\x3f\xb9\x1d\xde\xea\xf8\xc1\x11\x6c\x0f\x31\x9b\x28\xf7\x33\x43\xd1\x0c\x9e\x73\x22\xe3\xe4\x94\xbf\x38\x28\xe7\x18\x88\x62\x89\x8c\x4f\xde\x10\xf4\xf8\xe5\x2b\x39\x8c\xec\x8c\xcc\xd1\xfd\xc4\x51\x96\x67\x98\x9b\x32\x73\x8a\x1a\x17\xd0\xe5\x23\xe0\xed\x72\xfc\xd3\x09\xc8\xff\x7b\xfe\xca\x87\x19\x01\x17\x86\x30\x0c\xc7\x68\x4d\x6c\xec\x54\x10\x96\xe9\xa0\x02\xb7\x0c\xe7\x87\xbf\x80\x63\xd0\x5f\xbe\xc5\x10\x2c\x2e\x0b\x78\x2a\xde\x2d\x63\x92\x9b\x4b\xdf\xb9\xbf\x3f\xff\x7e\x7e\xf0\xdf\x77\x53\xf6\x9a\x39\x7d\x41\x46\x25\xe8\x3d\x3f\xc9\xcd\xd7\x72\x40\x7a\x63\xc1\x49\xfa\x37\xb9\xca\xe4\x46\x83\x05\xac\x08\x91\x3e\x1f\xa6\xb8\x65\x36\x64\xc0\x2e\xff\x9e\xdf\x19\xa7\x91\x07\x2d\x66\x63\x30\x8f\xa9\x4d\x8a\xee\x11\x17\x0a\x98\x78\xd0\x54\xd5\x20\xc2\x84\xfd\x27\xdb\xfa\xa0\xf6\x0a\xf5\xc9\xdf\xa7\x80\xe0\x37\x21\x15\x90\x22\xf2\xb5\xf2\xb9\x6c\x61\x20\x97\xff\xa7\x2b\x21\x96\x05\xf5\x49\x91\x28\x58\xcc\xbf\x65\xba\x05\x9e\xd2\xc9\x5f\xdc\xb3\x59\xaa\x91\xdb\x42\xea\xf9\xbf\x73\x3b\x05\xc7\x7e\xcd\x61\xd9\x46\x05\xb1\x35\xc5\x07\x2a\x1b\xd1\x1a\x57\xf8\xff\x63\x69\xf1\x0b\x92\x77\xc9\x2f\x25\x6d\x8b\xd3\x0e\x0f\x25\x0c\x1d\xe4\xcb\x44\x85\x31\x32\x16\x99\xf7\x8d\xf2\x73\x2f\x89\x3d\x85\xd3\xff\x3c\x0a\xd5\x7b\xf5\x04\xed\x14\x3e\xee\x50\x68\x23\x85\xe6\x76\x9c\xab\x2e\x3e\x3a\x16\x24\x3f\xc8\xcf\x55\x6b\xc2\xf4\x73\x1e\x51\x9d\x05\x65\x79\xf2\x4c\x0e\xa9\xd3\x23\xcb\x96\x26\xe2\xe7\xe0\x1a\x23\xe2\xbd\x7d\xe8\xb6\xac\x16\xb2\x20\x0c\x4d\xfb\xca\x4a\x5e\x5c\x9e\x8e\xcb\xf8\x15\x22\xa4\xbe\x28\x08\x9d\x92\xfe\xc8\xcb\x08\x7b\x5a\xc3\x98\x78\x51\x79\xb4\x40\x4f\x5f\xfa\x82\x4c\xfe\x2e\x07\x4a\x13\x9d\xc8\x00\xd7\x6e\xd5\x92\xac\x78\xdb\x5d\x25\x43\xb8\x7c\xe5\x9a\x4f\xcd\x30\x0a\x53\xfc\xbc\xc4\xe7\x2a\xb5\x9f\xfe\xc5\x1c\x83\xb2\xec\xab\x04\x20\x46\xf6\x61\x18\x1e\xd1\x94\x21\x66\x87\x5d\x9e\x69\xab\xaa\xf5\x49\x10\x2b\x1c\x1c\xc9\xff\xc4\x03\xd4\x44\xc6\x09\x18\x1e\x8b\x27\x46\xe7\xf0\xff\xb8\x2c\x51\xcd\xf5\xb2\x64\x65\x6a\xfe\xb3\xb3\x49\x9b\xae\xc4\xbc\xa6\x48\x3a\x35\x94\xe4\x24\x85\x6d\xa5\x9b\xc1\x33\x98\x15\x36\xc9\x2c\x9a\x58\x71\x63\x78\x0b\x66\x80\x3a\x3b\x09\x46\x0d\x18\x05\x01\x7e\x27\xfc\xe4\xb0\x8d\xd6\xb4\x7a\x08\xf8\xcc\x91\x9f\x66\x5f\x73\x39\x63\xd0\x1a\xb2\xed\xc8\xd6\xa7\x98\xda\x5e\x95\xc8\xa0\x78\x28\xb9\xc5\x92\x5d\xec\x8f\xdf\xa5\x78\x9f\x7a\xd8\x49\x96\x96\xa7\xad\xa3\xb9\xe6\x7f\xce\xe8\xc2\x6a\x0b\x1a\x96\xcb\x85\x27\x86\x7e\xd2\x09\x3b\x6c\x6e\x12\xd6\xc3\x19\xb1\x4d\x21\x1a\xea\x66\x27\xd7\x8d\xd5\xd3\xd5\xc9\xca\x1b\x87\xb0\x97\x14\x05\x1c\xb5\xf1\xc1\xb6\x07\x74\x7a\x37\x3f\x1a\x6c\xf0\xf5\xe3\x2b\xee\x7e\x7c\x59\xcb\x69\xde\x0a\x03\x71\xa3\x4c\x4f\x1e\x55\xfa\xce\x0f\x43\xb1\x9a\x82\x75\xc4\xe3\x52\xd3\xd5\xbb\xd1\xfc\xe0\xbf\x7d\xfc\x50\xe5\xb1\x7d\x04\x52\x66\x08\xfb\x86\xad\x19\x26\xdd\x6c\xf3\xb3\xfc\x13\x1b\x09\x87\xe7\x1d\x06\x15\x0e\xff\xef\x9c\xc9\xa3\xf3\x2e\xec\x57\xef\x4a\x36\x7b\x5c\xac\x8e\x09\x54\xc0\x48\x55\x54\x7e\x85\xd6\xb9\x2a\x48\x93\xd0\xf4\xed\x5c\xca\x3a\x9b\xea\x7e\x80\xc0\x44\x91\x16\x11\xc1\xdc\x20\x92\x13\x99\x2e\x71\xb6\xe6\xfb\x52\x32\x33\xd0\x8f\x3f\xcd\x3e\xbd\x41\x38\xf9\xc8\xb7\xaa\xd0\xaf\x15\x03\x6e\xe3\x39\x67\x1d\x15\x3c\xa6\x1f\xd0\xd6\xbd\xef\x80\xc2\xbd\x48\xf5\x32\x98\xc8\x20\x23\x18\x12\x36\x13\x14\xa7\x3b\xc9\xb6\x52\x44\xb8\xd1\xc8\x25\xdc\xb4\xff\x64\x9e\xb1\x8c\xf3\x05\x9c\x9b\xdc\xcd\xe1\xcb\x4a\x70\x43\x4e\x0e\x61\x23\x08\x72\x47\x42\x2a\xb9\x80\x7d\x57\x92\x58\xd7\x12\x7b\x69\xea\x60\x78\x8b\x1a\xc4\x25\x67\x22\x52\x52\x50\xf8\xe8\x16\xf7\xca\x8b\x8e\x37\xb4\xff\x74\x06\x4f\xcf\xd4\x47\xc6\x48\xd1\x0b\xcb\x2d\x5b\xe7\xc1\x4b\xb7\xdc\x84\x51\x06\x87\x09\xeb\x93\xc0\xb2\xd2\x4a\xfa\x1d\xea\x2d\x8d\x9c\xeb\xb3\x34\x87\x38\x9f\x9d\x66\xcd\xdd\x97\xbb\x13\x27\x61\xff\xdf\xbe\x38\xe4\xca\xda\x7c\x53\xbe\x7b\x88\x45\x01\xea\x83\x32\x51\xdf\x91\xaa\x2e\xa1\xc2\x37\x58\x88\x93\x63\x70\x49\xea\x5a\x8c\x9b\x9a\xe8\xba\xb2\x87\x70\x18\x1a\x67\x5e\xfb\x9c\x9a\x3f\x86\xa0\x35\xad\xca\xfd\xd3\x07\xf2\xc2\x7e\xb5\xbb\x32\xc5\xb5\x0c\xa3\x10\xfe\x65\xe1\xb9\xd7\xcd\x64\xb7\x37\x4d\x70\x8a\xbb\xc4\xeb\x2a\xc9\xed\xf3\x1e\x0c\xe1\x44\x4a\xc5\x1e\x41\xd2\x86\xef\xde\x70\x7c\x08\xbd\xc4\x05\x06\x87\xe4\x80\x5e\x81\x6f\xc0\x04\xca\xcf\x92\x71\x81\xb7\xd3\xae\xe7\xc4\x3d\x1d\xf7\x07\xae\x32\xee\xab\x17\x63\x38\x24\x16\x69\x43\xb4\xfd\xfb\x02\x05\x87\x12\x8b\xcf\xe5\xbe\xfd\x72\xc9\x1b\x25\xbf\xd6\xbc\xae\xb3\xa4\x71\x5f\xcb\xb4\x42\xee\xae\x6c\x7b\x2e\x55\xcd\x6e\xa0\x40\x58\x7e\xee\x1d\x73\x4e\x83\x3c\xd1\x16\xd3\xc9\x6c\xc4\xe7\x03\x0b\x29\xa7\x75\x9a\xf1\xad\x27\x2c\x95\x44\x1b\x2c\x9f\x42\x6a\xe6\x21\xd8\x4c\x30\x1f\x89\x73\xdd\x1a\xfe\xf6\xe8\x4b\x6d\x3f\x69\xdb\xbd\xcb\x3a\x69\x1b\x55\x18\xb8\x4e\x28\xbd\x42\xf3\xfa\x0f\x2f\x23\x53\xa4\x72\xd4\xf1\xde\xeb\x24\xdf\x7a\xe8\x39\x6f\x39\xb7\x65\x25\x77\x80\xd8\x1a\xca\xe0\x39\xb2\x49\x12\xee\x97\x9e\x70\x3d\xd9\x3f\x5f\x34\x23\xd1\xaa\x86\xa5\xcf\x34\x5e\x4e\x64\x55\xe5\xab\x18\xe1\x37\x71\x66\x9c\x12\x5b\xf9\x29\x9c\xee\x27\xe7\xd5\x33\x56\xc7\x7b\x4f\xc2\x14\x34\x4c\xdb\x03\x55\x2e\xc7\x41\xee\xc0\x52\xca\xcb\x95\xf0\xdc\x94\xe3\x94\xc9\xae\xd5\xb8\xec\x20\x75\xe4\xd9\x88\xcc\xdc\x23\x4a\xba\x11\x5c\x99\x3d\x06\x25\x94\x9c\x92\xce\xd9\xa8\xac\xb8\x9f\x1f\x5b\xcf\xef\x1f\x79\xff\x65\x28\xda\xc9\x1f\x34\x7b\xdc\x14\x06\x93\xe6\xd3\xfc\x28\xaf\x45\xdd\xdf\x0f\x55\xf8\x69\x0c\xdc\xc8\x79\xa1\xb9\x1a\x22\x98\x91\x9f\x86\x94\x5b\x3a\x58\x99\x8d\x10\x48\xcb\x4f\x4c\x66\x79\xdc\x14\xd3\x89\xa0\xd6\x7a\x56\x7a\x6c\xcc\x11\x31\x41\xdd\xf5\x82\x94\x63\x3a\xe6\x15\x98\x8f\xf1\x18\xdc\x63\x22\xf3\x97\x2f\x2b\x93\x17\xaa\x66\x99\x47\xec\xed\x4d\xc1\x28\xfd\x1a\x93\x6d\xcb\xf7\x70\xba\x79\x57\xd6\xeb\x23\xfc\xc4\xae\x46\xc3\x5e\x4e\x12\xdd\x7b\x53\xde\x64\x00\xc3\x51\x01\xce\xb2\xda\x97\xbc\x13\x55\x78\x3d\xc5\x0d\x66\x80\x67\x8e\x0f\x6d\xa6\xdf\x55\xfd\x22\xd1\x93\xf5\x75\x80\xa3\x78\xfb\x51\x66\x20\xd5\x2b\xb7\x11\x02\xf1\x7f\x9f\x53\x28\x18\x43\x4f\x2a\xc7\x97\x23\x08\x19\xc1\x6a\x4f\x61\x7f\x3d\x3f\xd8\x65\xa9\xad\xb5\xd0\xe0\x42\x40\xa5\x7c\x13\xba\x4b\xa8\x23\x18\xad\x68\x44\xac\x8b\xd6\x00\xc7\xfb\xfd\x08\x76\xe7\xdf\xe3\x82\x1d\x94\xac\x5d\xad\xc6\xc4\x3f\x3a\x3d\x66\xd9\x43\x91\x13\x02\x47\xa8\x5f\x1f\x19\x2f\x70\xd9\x50\x2e\x91\x13\x42\xa2\xd4\xb3\xec\x48\x34\xcb\x34\x8f\x01\xf5\xeb\x2a\x0b\x6d\xf0\x0d\x64\x13\x80\x3b\x93\xaf\x81\x49\x0b\x91\x4d\x2f\x48\xc4\x4f\xcf\x35\x9a\x01\xf3\x2f\x1f\x8e\xf4\x0c\xf0\xa1\xe3\x0d\x4d\xfc\xef\xec\x37\x0d\xb4\x37\xa6\xbd\x18\xdf\x4e\xe9\x56\x45\xd0\xba\xcd\x02\x97\x32\xd1\xf9\xe4\xb1\xa6\xdc\x1a\xa8\xf8\x43\xfd\x3a\x63\xb1\x05\x1a\x21\xeb\x0e\xdc\x9a\x66\xd4\x7f\xb8\xd9\xb3\xf5\xa6\xd8\x4a\xc9\x4f\x5f\x20\x86\x4d\x62\x0b\xef\x68\x4b\x9b\x37\xfe\x46\x3d\x30\x36\x5e\xe3\x85\x5e\xe3\x49\xbf\x14\x46\xa3\xa0\x56\xf0\xe5\x16\x86\x39\x00\x77\xe9\x7e\xc7\x28\x9b\xc5\xe9\x9b\x33\xc6\xf3\x53\xc3\xd8\x2b\xd6\x3b\x75\x8c\xf2\xda\x56\xd1\xa7\xaf\x48\x18\x61\x7b\x84\xeb\xa6\xed\xf4\xf1\xf8\x10\x61\xb5\x39\x4d\xc7\xc6\x97\xbd\x32\x39\x58\xa7\x3a\xfb\xb2\xc7\x4e\x4f\x54\x3d\x50\x6e\x86\x44\xa7\x91\x1f\xbf\x6c\x9a\x18\xb3\xcc\xbe\x71\x8a\xc3\xfd\x8f\x6e\x17\x1a\x01\x2f\x4e\x17\xb2\x94\x05\x46\x06\x37\x00\xf8\xd0\xb4\xc0\xa3\x2e\x45\xa8\x96\xd9\x5b\x5b\x68\xe3\x33\x13\xe6\x64\xd3\xf4\xe3\xf7\x30\x5c\x96\xb2\x9e\x66\xca\x6d\xe1\xd0\xa9\x37\x1f\xa5\x72\xa5\xbb\xd8\x71\xe6\xdf\xb9\x64\x8b\x7a\x46\x02\x40\x08\xbc\x33\x16\xc2\xc3\xf9\xca\x08\x60\x7f\x4a\x7e\x2b\x61\xb4\x5c\xab\x69\x1b\x51\x59\x20\xa6\x88\x40\x05\x06\xe6\xb3\x71\x1b\x2d\x24\x9d\x82\xa2\xd8\x1f\x38\x23\xd1\x22\x49\x3f\xed\x15\x0b\xb5\x7a\x73\x72\x6a\x05\x8d\xf2\x9f\xef\x6e\x3f\x77\xec\x7a\xb8\x36\x62\x00\xf9\x95\xb0\xc9\x21\x65\xab\x06\x12\x6f\xad\x6b\x70\x09\x60\xd3\x8f\xb8\xd0\x78\x3f\xd3\x09\x24\x19\xb6\xd3\x69\x5b\x1c\x8f\x2a\xbf\x4a\xaf\x64\x5c\x2e\x5e\xee\x9f\x71\x8a\x9d\x95\x31\x5c\xf0\xdd\x34\xd3\xbf\x7b\x84\x2d\xdf\xbc\x74\x10\xaf\x86\x9f\x6f\x10\x8e\xdd\xfb\x51\x07\x4a\xe6\xfb\xaf\xb2\x5e\xad\xc0\xbc\x7f\xe2\x29\xa6\x61\x81\xab\x76\x21\xbc\x60\x26\x67\x2f\xca\xcf\x11\xaf\xe0\x74\x8d\x25\x7c\x38\x5c\x79\xa3\x46\x5d\xc0\xb1\x7b\x03\x03\x64\x49\x6e\x8a\x7f\x5e\x19\x14\xc7\x63\x51\x05\x87\x54\x9f\xfe\x2f\x36\x05\x78\x86\xee\x40\x64\x91\x9c\xd7\x77\x5b\xc7\xf3\xbb\x73\xc7\x14\xb0\x62\x9b\xcd\xeb\xbc\x84\xa7\x3c\x9a\x91\xeb\x76\xd3\x03\x4c\xbd\x6d\xd4\x54\x9f\xd0\xfc\x29\x5b\x9e\xf0\x07\x2b\xc4\x7b\x6a\x44\x76\x8e\xf2\x52\xa5\xf7\x6c\xca\x0c\xc3\x60\xd3\xbe\xef\x64\x13\xe1\x70\x66\xeb\x1a\xec\xfc\x3a\x46\xb1\xd1\x7c\xde\x40\xd4\xd2\xd4\xd5\x3f\x2a\xb7\xcb\x97\x8d\xfc\x89\x73\xf9\xbe\x41\x76\x9e\x42\x2a\x18\x29\x02\x22\x59\xf7\x4d\xa3\x2e\x62\x5c\xd7\xc5\x43\x18\xe4\x58\xda\xe6\xd5\x8b\xce\xbd\xae\x8d\x93\xc3\x4c\x69\x71\xc3\xfb\xef\x4c\xf0\xfa\x86\xcb\x3d\x86\x37\xe8\x01\x7d\xd4\xd5\x7b\xf5\x21\x8d\xd8\x02\xc4\x5d\x88\x74\xb4\x2f\x0c\x26\xcc\x46\xf2\xa3\x18\xb5\xf7\x7a\xcd\xdd\x01\x9f\x38\x72\xc9\xda\xf5\x31\xaa\x61\xf1\xfe\x72\xd2\x83\xdc\xd8\x4b\xbf\xc6\xa0\xf7\x03\x96\x3f\x15\xba\x59\xe4\xb9\x2d\x1a\x25\xd4\xd6\x34\x82\x06\x9c\x69\xe6\xe8\x26\xdb\xc8\x15\x40\xe3\x38\xff\xe2\x68\x59\xc7\xcd\x50\x1f\x45\x68\x32\x3a\x42\x99\xcb\xed\x30\x57\x4e\x54\xfb\xc1\xf5\xe3\x38\x1e\xb7\x8b\x90\x2f\xe0\x7b\x73\x22\x2e\x05\xd8\x9d\x1e\xec\xde\xfe\xe6\xd1\x17\x7c\x4a\x7e\xb3\xe0\x4f\xa0\x7b\xd5\xc4\xda\x05\x8c\x6f\xb4\x50\xad\xbc\xa6\xbf\xd1\x29\xbe\xb0\x83\xea\x07\x08\xa2\x79\xf3\x0c\xa6\x73\x5d\x6e\x13\x3b\x5c\xfc\x7d\x4d\x3d\xcb\xfc\xc4\x72\xec\xe3\xe4\x23\x57\xb5\x26\xec\xc7\xe2\xe1\xe7\xb9\x98\xfc\x97\x5f\x12\x2e\xef\x15\x41\x3b\xca\xd0\x5d\xb2\xc6\xdb\xd9\xc6\xe6\x3d\x77\x81\xe5\xff\xc9\x0d\xb5\x7c\x0f\x48\x91\xde\xfd\x58\x8f\x7c\x29\xfc\x8f\x2c\xe3\xbf\x9c\x13\x17\x47\xfd\x38\x82\xbb\x6a\x5e\xc0\xa5\x5d\xf6\x44\xc7\x37\x8f\xef\xb1\x9b\xff\x1e\x9a\xf3\x07\xff\xe4\xf1\x9e\x80\xa3\x95\x8e\xb2\x37\x4a\x16\xd6\x23\x19\x3c\xf6\x34\xd0\x7c\x75\xd5\x81\xcc\xe6\x03\x44\x10\xea\x7e\xca\xed\x28\x62\x76\xba\xb6\xa3\x01\xf9\x46\xba\xeb\xfb\x8f\xde\x60\x8f\x6c\xb3\xd8\xb2\xf2\x6f\x8e\x7c\x12\x24\xf6\x9b\x13\x5c\x9a\xc1\x8b\x15\x7c\x4a\x5f\x3c\xb1\x47\x86\xf8\x1f\x9f\xec\xba\x52\x26\x56\x9b\xde\x8b\xfd\x5c\x13\x2c\x0e\xbd\x3d\x56\x30\x76\x59\xce\xe7\x46\xfe\xfe\x8b\x2f\x4c\x01\xf9\x70\x7a\xc3\xb4\x94\xd1\x3e\xaf\x0a\x6b\x7c\x79\x1e\xf4\x69\x48\xa0\xd9\x92\xb6\xca\xda\x0d\xd9\xfe\xeb\xe9\xac\xf2\xf6\x8c\xe9\xc9\x4d\xdf\x55\xaa\x0e\x48\x25\x5e\x01\x53\x5d\xb5\xc1\x16\xff\x13\x57\xb5\xcc\xc3\x9c\xaf\x60\xbe\x43\xae\x95\xd5\x48\x98\x98\x88\x44\x3c\xa8\xde\x9c\x52\xfe\xf8\x11\xd2\xa5\x58\xb1\xc2\x97\xf9\x5a\x8b\x85\x39\x3d\x15\x7f\x05\x8c\x5b\x66\xf6\xd6\x60\x0e\xff\xfe\xff\x58\x86\xad\x1b\xd5\x13\x8e\x84\x58\x3b\x48\x52\x44\x11\xbe\x80\x53\x87\x34\xec\x7f\xd6\x3b\x23\x3d\xd2\xcd\x2c\x8a\x7d\x23\xef\x83\xd7\x28\x57\x30\xa6\x30\xdc\x0d\x90\x73\xee\x07\x32\xb0\x7f\x5c\xe6\x6f\x42\x56\xfe\xa7\xd2\xca\xb7\x01\x92\x15\x4f\xb0\x08\xd7\x3f\x8e\x5a\xe8\xd2\xaf\x78\xee\x7f\xd6\xfa\x51\x00\x9e\xb1\x1e\x26\x6f\xb3\x75\xe5\xb7\xb3\xb4\x4e\xfe\x48\xc5\x21\x12\x95\x80\xf8\x7f\xb1\xc9\xaf\x67\xb4\x40\x01\x07\x43\x8f\x95\x3f\xf3\xee\xd8\x11\xbf\x34\xf2\x0f\x7e\xc7\x97\x94\xc3\x92\x93\xfd\x8a\xf3\xd6\x68\xfa\x1d\x69\x77\xa5\x0f\x66\xf3\xb5\xdb\x1d\x2a\xfe\x5f\x1c\x6c\x2e\x87\xd9\x77\xfe\xda\xc8\xd6\x55\xb9\xf7\x1b\x0a\xe1\x6d\xb5\x6f\xc0\x54\xd5\x05\xa1\x8d\xec\x74\x7f\x79\x14\xf9\xde\x5d\x94\xde\x2f\xad\x99\xa1\xc8\x76\xc9\x76\xa9\x9e\x8c\xa7\xd0\x0d\x01\x27\x94\xdb\x2e\xfe\x27\xee\x64\xc7\xdc\x41\xe5\x53\xab\x44\x88\xb2\x1c\x7a\xb2\x64\xb8\xfa\x76\x01\x57\x90\x6d\xa1\x72\xb6\x03\xfd\x5b\xcb\xc4\x8a\x2f\xc6\xbe\xbb\x48\xe5\x69\x2a\x0e\x88\xb5\xa0\x01\x93\x03\x74\x21\xb3\x1f\xd1\xfb\x1f\x1c\x40\x79\x12\x06\xa9\x7c\xd5\x98\xb6\x39\xef\xb5\x7a\xfe\xda\xf7\x03\xf9\xbb\xcc\x33\xec\x3f\xbc\x09\x9f\x49\x4a\x7b\xcf\x14\x39\x11\x37\x5d\x1a\x0c\x1b\xa9\xfa\x38\x86\x4d\x9d\x62\x1e\xb9\x76\x41\xfe\x3c\x4c\xb7\x0d\x7f\x71\x96\xe7\xe6\x5d\x76\xa2\x68\xb1\x60\x23\xfa\x73\x84\x33\x2d\x7f\x4a\x98\x61\x76\xd9\xd5\xe9\x24\x70\xfe\xd3\xfb\x8e\x46\x14\xfe\xa8\x58\xa0\x32\xef\x0f\x82\xa1\x86\xf7\xb1\x9a\x7b\x9f\x2c\xc1\x0c\x45\x31\x0c\x57\xc7\x10\xdc\xbf\xdc\x54\x46\x97\x3e\x54\xe4\xd3\x20\xb3\xc9\x33\x2d\xff\xfe\x6d\x6d\xb3\xd4\xc4\x47\x9b\x07\x46\x8e\xb8\x2b\x5a\xa8\x43\x14\x3c\x66\xfc\xc1\x8e\x0d\xa2\xf0\xbb\xca\xd5\xac\x1c\xab\x9c\xeb\x83\xb6\x83\x4d\x14\x4e\x61\xa2\x65\xa8\x78\xdb\x3f\xcc\xa7\x73\xd5\x79\x31\x76\x9d\xcd\xf4\x65\x9c\xbe\x25\x97\xf6\x3b\xdc\xbb\xee\xf2\x51\x53\x61\x21\xb9\xc6\xfb\xee\x34\x38\x61\x08\xc4\x75\x54\xdc\xa9\x2c\x20\xaf\xff\x83\xc5\x39\xc9\x1e\x46\x1c\x91\xd4\xc3\x7a\xc0\x03\x83\xc5\xe6\xdb\xaa\xa9\xad\x7e\xd8\xcf\x4d\x55\x8a\xfb\x35\x88\x6c\xf9\xf4\x45\x79\x60\x4b\xc1\x0f\xa9\xd1\xf1\x6b\x98\x3a\xde\x1f\x1d\x18\x35\x3a\xc3\xf7\x9d\x5b\x9e\xf2\x29\xe9\xc6\xd9\x06\xa6\xd4\x21\xc8\x85\x48\xd7\x23\x1d\xbc\x8a\xa9\x1a\xdf\x94\x75\x76\xb7\xee\x15\x75\xd8\x17\xc0\x6e\x26\xfc\xe1\xfd\xe3\xe4\x22\xff\x94\xa2\x26\x1b\xe7\x00\xda\x9c\x0f\xd3\x90\xd5\x3e\x6d\xc1\x75\xae\xc7\xa6\x43\x25\xd8\xfc\x85\xe2\x60\xe4\x79\x6f\x73\xd4\x29\x0e\x86\xd9\xe6\xb8\x8e\xce\x4e\x3d\x76\x33\xc1\xf0\xfc\x27\x07\x97\xa0\x62\x1c\xff\xd5\xa6\x03\x9c\x6a\xba\xfa\xae\xd9\xba\xcb\x6c\x53\x98\x3a\x2e\xd3\xc7\x07\x3b\xb5\x74\x11\x31\xf2\xeb\x61\x93\x52\xe6\x69\xb6\xb9\x98\x7d\xd0\xb6\x36\x76\xae\x8a\x8a\x9a\xb8\xff\xcf\xef\x81\x79\xf9\xa5\x8d\x80\x36\xef\xd7\x44\x9b\x0e\xf4\x56\xe1\xf3\x9b\xb3\xce\x1f\x91\x84\x6b\x20\xeb\x35\xf3\x30\x1c\x52\xfb\x30\xda\x4a\x45\xa7\xe2\xd9\x45\xb5\x78\xdb\xdd\x38\xa8\xb6\xe1\x3a\xec\xf8\xa3\x6b\xb9\x47\x68\x29\x84\xc1\x2b\x94\x9b\x8a\xda\x0e\x07\x38\x14\x13\x54\xbc\xf7\x5c\xfe\xb8\x43\xa2\x2c\x42\x22\xb7\xc4\xb2\xae\xf3\x7e\xe0\x58\xa5\x1c\x75\x4a\xc4\xee\x3c\xee\x19\xd9\x7e\x03\xee\x9f\xce\x67\x1b\xc5\x75\xc5\xbd\xfc\x1e\xb0\x26\xee\x6f\x4c\xcb\x3b\xf7\x9f\xbd\x7c\x8a\x71\x49\xb8\x0e\x42\x34\x5b\x4b\x79\x9d\x66\x30\x4b\x9b\x07\x37\x08\x55\x3f\xff\x30\x6d\x85\xbf\xfa\xc2\x26\xe0\x8b\x7d\x4d\xe9\x7f\x7b\x97\x34\x65\xe3\x45\x7a\x5a\xf8\x6b\x35\xae\xb5\x0d\x02\xfb\xc2\x38\x62\x14\x60\x95\xe4\xba\x9c\x76\xaf\x8c\x91\xcb\xec\x62\x2d\xa1\x02\xc3\x61\x3c\x58\x1e\xd5\xc1\xf4\xf4\xa5\xa0\xd1\xbb\xe5\x53\xbe\x1d\xc5\xe1\x7f\x38\x42\x39\xf6\x2b\x62\xb6\xeb\xb5\xb6\xe8\x46\xf8\x91\x5a\x91\xaa\x8d\xc4\xd9\xad\xf9\x5b\x27\x36\x2f\x25\xcf\x18\x04\x19\x5c\x7e\x92\x8a\x73\xbc\xc2\x6f\x0a\xb9\x07\xd2\x69\xe9\x3b\x18\x1e\xa3\x34\x03\x64\x0d\xca\x53\xbd\x4d\xab\xae\x61\xdb\xff\xc5\xba\x6b\xfd\xa2\xb4\x64\x7d\x1a\x86\xcf\x70\xd0\x4e\xf3\x3c\x0d\xb4\x4f\x80\x99\xfa\x95\xcc\xd7\x2c\x35\xb8\xe9\x07\x77\xa6\x2f\x79\x36\x9e\xcb\x3d\xb9\x80\x43\x00\xcf\x81\x79\x5d\xa5\xb3\x1e\x53\xfc\xe0\xb4\x8c\x76\xab\x39\x43\xe9\x79\xe7\x96\x02\x6c\x1e\x45\xd8\x75\x81\xd3\x25\x88\x21\xd6\x73\xda\xdb\x2a\x96\xc8\xed\x08\x47\xdc\x5d\x7d\xa8\xba\x2d\x54\x1f\x67\x99\x21\x4f\x89\x9a\x4f\x72\x3b\xad\x98\x2a\x94\xe0\xd0\x9d\xa4\x18\xdc\x66\x5f\xf9\x87\x4d\x7f\xfb\x04\x3a\x1a\x20\x15\xfa\xb5\xd0\xc0\x4b\x44\x19\xfd\x77\xce\x58\x4d\x75\x35\x57\xd7\x6c\x4a\x31\x1b\xb4\xd1\x09\x92\x8f\x41\xaa\xc1\xcb\x02\xd7\x1c\x99\xf2\x70\xaa\xde\xd9\xdf\x7b\xd6\xf3\x04\x31\xe5\x1e\x6a\xe9\x36\x30\xcf\x9d\xf0\x6c\x5e\x53\x89\x34\xd5\xfd\xce\xf5\xc3\x40\xdf\x3c\x77\x66\xc1\x2a\x67\x29\xba\x99\x21\x4d\x55\x4b\x50\x25\xcf\x6d\x2d\xc6\xe8\x8f\x4e\x6d\x91\x57\xff\x8c\xa8\xea\x50\x16\x01\x81\x28\x10\xf0\x92\x26\xfb\x27\x52\xaa\xaa\x05\x7d\xbf\x70\x48\xf8\xca\x42\xdb\x2f\x50\x35\xbd\x5d\x57\x38\x0e\xf4\x4e\x86\x97\xd8\xb4\xd2\xe8\x59\xe8\xad\x21\x8c\x1e\x7c\xde\x95\xcd\x91\xb4\xc5\x9e\x77\xcb\xbf\x24\x26\x5c\xab\xc7\xbe\xcf\xdf\x7b\xe3\x0c\xcb\x7c\xda\x40\x69\x7b\xaa\x77\x5a\xe2\xe9\xa0\xa8\x49\xda\x79\xc2\x5f\x00\x42\x32\xc2\x55\x13\xd8\xf2\xad\x9b\x71\x16\xac\xec\xbf\xd9\xde\x8a\xcc\xec\xb2\x92\x00\x49\x92\xb3\x77\xaf\xe4\x15\xcb\x0b\x5b\x2d\x6c\x2a\xf7\x18\xc6\x21\x5b\xb0\x9e\x63\xb5\xcf\x9f\x44\x1a\xc3\x29\xb2\xab\xd4\x48\x91\xf6\xa6\x91\xbf\x38\xaa\xe1\xb6\xae\x25\x26\x7b\x59\x30\x79\x08\x04\x27\x2f\xe5\xa7\x26\x6b\x9e\xe0\x14\xa9\xcb\x8e\xe1\x63\x48\x1c\xa7\xde\xf8\xd8\x69\x3a\x5c\x7d\x2e\x59\xd3\xa6\x75\x97\xaf\x72\x71\x50\xac\xf8\x33\x28\x93\xb4\xe5\xab\x45\x8b\xe2\x5e\x2b\x1e\x6b\x91\x76\x60\xc4\xf5\x46\x6b\xab\x29\x73\xd3\x89\xcc\x1c\x5a\xf4\xda\x49\xa5\x1f\x8f\xb4\x1c\xa1\x07\x89\x9b\xf4\xb8\x63\xe3\x48\xf8\x1f\x54\x77\x2f\xcb\x7b\x64\x8b\xca\xaa\x77\x71\xef\x69\xa6\x85\x24\x2a\x77\x2b\x0a\x34\xfb\x73\x8d\x8e\x79\xfa\x7f\x75\x05\xa3\xc8\x89\xa4\x33\xb1\xa9\xee\x39\x26\xce\xb4\x6c\x30\xaf\x7f\x5e\x9f\x12\x07\x2d\x1c\x2d\x90\x3b\xf7\x0a\x87\xe3\x3d\x1c\x4d\x45\x70\x7f\xee\x4d\x18\xed\x5a\x53\xb6\x95\xb4\x16\x2d\x4f\x39\xde\xf6\x21\x4a\xa6\xc8\xc6\x32\x8e\xc4\x1c\x94\x4a\xce\xf5\xe1\x54\x64\xca\x12\x9a\x9c\x3a\x8d\xbf\xcb\x71\x4e\xbc\xcd\xcd\x40\xcf\xe6\x68\xc8\xb6\xbb\x9a\xfc\x59\x4f\x73\x6b\x3e\x92\x83\x8c\xd0\x93\x84\xf9\xed\x94\x55\x03\x7c\xe9\x8c\x90\xd0\x33\xae\xc2\xf5\x10\x37\x2e\x56\x4d\xe1\x57\x84\x94\xec\xae\x8b\x59\xed\xbb\x93\xd6\x18\x3c\xe6\x66\x7f\x72\x41\x8b\xdf\xf5\x69\x43\x6e\x73\x97\x46\xe9\xf9\xef\x70\xff\x9d\xac\x53\x61\x6b\x23\x4c\x47\xeb\x04\x52\x62\x20\x69\x8f\x75\x47\x14\xc2\xf4\x35\xc1\x60\x97\xf0\xe7\xbc\x2c\xf6\xd2\x39\x04\x32\xf7\xad\xef\x18\xe5\x97\x6c\x24\xb3\xf8\x19\x42\x3d\x45\xca\x20\xe5\xed\xac\x57\x8d\xc6\xfc\x24\x50\x07\x77\x8f\x97\xab\x6f\x98\x6d\x61\xa1\xef\x25\xa9\xb5\x67\xc3\xb6\xa5\x22\x83\xfa\xdf\xba\x4a\x46\xe0\xcf\x6c\xfe\xb8\x19\x5f\x69\x0e\x15\x74\x9e\xa9\xac\x04\x7e\x94\xb3\x69\x7b\xa7\xd6\x20\xf2\x05\x46\x67\xbb\x0a\x31\x1a\xe1\xcf\xf9\x58\xb4\xd2\xd9\xbb\xb9\x9e\x98\x4e\xa7\x9d\x79\x54\x64\x6c\x8c\x5f\xb7\x24\x0b\xa8\xd3\xfc\x27\x5e\xe2\x5a\x2a\x91\x49\x80\x46\x85\xc6\x23\xc4\x61\xe0\x53\xe0\x89\xfe\x2f\x86\xc0\x70\xcc\xa9\xf1\x82\xf7\xc9\x1d\x22\xf6\x3b\x7c\x84\xd4\x66\x63\x45\x3c\x3c\x65\xb4\xb7\x3d\x02\x8c\x90\x03\x3d\x88\x1c\x99\x21\x69\x09\x35\xb5\x22\xac\x27\x72\x9e\x23\xdc\x86\x6e\x05\x26\x3c\x66\xe1\x52\x4e\x09\xbb\x24\x67\xbc\x24\x52\x39\x2a\x69\x66\x4c\x02\xcf\x16\x78\x66\x0b\x21\xc7\xd6\x9c\xbf\xbe\x09\xa3\x70\x58\x67\x2a\xb1\xe0\xf9\xd6\xa4\xf0\xe1\x77\x58\x4d\x77\x0d\x3d\xfa\x20\x21\x20\x7e\xe8\xda\x63\x64\xac\xa1\x04\x69\x39\x81\xca\xb9\xd5\xfe\x93\x6d\xa6\x2b\x7d\x61\x64\xbd\x01\xfb\x05\xf0\x25\x8b\x70\xc5\x41\x25\xe6\x42\xcc\x4f\x9a\xea\x52\xa6\xcd\x9b\xd2\xff\xb2\xf7\xd8\xe1\x64\x76\xc7\x30\x0b\xc3\xe3\xc5\xdf\xa3\xa4\x34\x3a\xd1\xb9\xfd\xd7\x70\xc3\x8e\xcc\xd3\xdc\x14\x50\x84\xde\xe9\x78\xa5\xd1\x99\x29\x5f\xdb\x02\xd6\xf2\x1a\x39\x48\x3e\xed\x78\x05\xe2\xe7\xb6\x3d\x60\x06\xc6\x2c\xb7\x53\xd8\xdc\x32\xf8\x90\xd3\xb1\xfa\x5c\xd4\xe7\xae\x43\x80\xee\x24\x23\x4b\x76\xe1\xee\xc0\xb7\x25\x55\x96\x9d\x66\x5a\x72\x3a\xdb\x60\x15\x16\x7e\x4e\xff\x25\x50\xe6\x61\x4c\x4b\xb8\xd8\xbf\x1b\x29\x0b\xb7\x64\xbb\x33\x94\x4e\xe9\xcb\xa5\x7e\xb3\x65\x7b\xc8\xb5\x90\x35\xa2\x90\x9d\xc0\x66\xfe\xa5\x18\xdb\x73\x4b\x3a\xc3\x9c\x1b\x8c\xab\x85\xfb\x68\xd9\x47\x98\x68\x31\x7a\x79\xd3\x4e\x10\xd6\x31\xd8\xd6\xc8\xe2\xa1\xe4\x93\xa7\x09\xbc\x83\xe5\x00\x45\xee\x50\xce\x63\x2d\xd3\x80\xb6\xb2\xde\x28\x9b\xd4\x12\xbe\x25\xb9\xb1\x67\x81\x58\xf8\xd1\x21\x1c\x84\xfa\x56\x8b\x78\x31\x3b\xe8\x73\xc8\xcd\x70\xb6\x09\x79\x49\x8f\x47\xaa\xba\x38\x5c\x08\x4e\xcc\x87\x27\xd9\x02\xb6\xe7\xe5\xe3\x71\x01\xdf\x17\x24\xe4\xcd\x56\x07\x93\xe1\xe0\xce\x55\xa3\x15\x89\x0a\xbe\x2d\x42\x80\xca\xaa\x1e\xd4\xb1\x68\x39\xf3\x73\x3a\xc9\x21\x59\x86\x72\x16\x68\x72\x0c\xd3\xe5\x35\xd5\xd6\x52\x77\xe4\x4c\x1f\xcc\xef\x30\x9c\xb1\xfe\x57\xae\x2a\x76\x30\x3d\x45\xed\x75\xdd\x4e\x07\x93\x3f\xf6\xe7\xcd\x17\xcc\xac\x3b\xcb\x2c\xe8\x8c\x9c\xab\xf7\xaa\x72\xf2\x2b\x0b\x28\x64\x5f\x2f\xab\x46\xea\xba\xc2\xc0\x1e\x16\x53\x3f\x8b\xb2\x02\x9b\x5c\xda\x01\x34\x61\x7d\x8e\x0c\x31\x57\xb5\x06\x53\x7b\xef\x7c\x5b\xdf\x87\xf5\x10\x4f\xe0\xf1\x95\xf8\xd7\x9c\xd1\xff\x9b\x53\x1c\x8c\xb4\x71\x5a\x85\x1a\x7a\x63\x40\x3b\x08\x2f\xa2\x1d\x1f\x47\xa2\x6a\xc9\x5a\xc6\x41\x88\xae\x69\xa5\x86\x81\x1a\xa4\x81\x7e\xc8\x74\xd5\x1f\x87\x15\x81\x10\x0d\x12\x1c\xb4\x44\xcb\xb7\x80\x3a\x1a\x98\x0d\x56\xd1\x5c\x98\xf8\xf8\xd9\x12\x6a\xae\xaf\x57\x0b\xae\x19\x05\xa1\xda\x97\xc0\xad\x3d\xe7\xa9\x57\x12\x41\x8d\x7d\x61\x7f\xb7\xfa\x36\x8e\xdd\x71\x95\xde\x81\xea\x68\x50\x1e\xf7\xe3\xfb\x3c\x29\x9b\xd3\x49\xd5\x1f\x2a\x6e\xf0\xcf\x7a\xa0\x66\xe0\xa3\x5d\xe7\x28\x4e\x47\xc4\xd2\xf5\x12\xb8\xe0\x32\x5b\x98\x6d\x70\xb4\x72\x8a\xb8\xe5\xc8\x76\x95\x72\xa4\x1e\xc3\x59\xe3\xd5\x52\x6c\x32\x43\xf8\xaa\x34\xc2\x51\x6a\xbf\xd1\xea\xa4\x29\x16\x16\xdb\x21\xce\x94\x48\xea\x36\xbb\x9a\x51\x97\xf9\x8a\x83\x35\x75\xd1\xfd\xcd\xad\x32\x8e\x7e\x43\x51\x87\x3e\x8a\x3a\xca\x69\x39\xf6\x47\x40\x41\x52\x02\xed\x0f\x98\xe1\x3b\x35\x1d\xdb\x8a\x6c\x38\xa1\x12\x6e\x90\xf4\x87\x1a\x0e\x35\x9a\xe7\xf5\x73\xa0\xe6\x1b\xe1\xcc\x25\xde\xd5\x14\x47\xe7\xbd\x70\xb3\xcb\xb2\x82\x90\xf1\x4e\x99\x7f\xdb\xa8\xcc\x27\x0e\x1e\x63\x85\xf3\x1a\x9f\xdb\x7b\x8e\xf8\x77\xa6\x19\xc6\xc5\xf8\x8d\xe0\xd9\xd7\x57\xed\xd4\x52\x85\xc9\x4b\xb7\x18\x3a\x43\xc3\x69\x25\xee\xca\x5f\x3c\x5b\x42\x75\x31\xad\xa5\xbf\x7b\xe1\x1c\xa0\x82\x80\x94\x9c\xc7\xe2\x35\xe6\x74\x88\x40\x2b\x7c\x9c\x28\x5a\x16\x18\xd7\x84\xee\x54\x0f\x26\x4b\x81\xe6\xe7\x0d\x96\x29\x91\x37\x8e\xe1\xaf\x88\x71\x3c\x06\xfc\x53\xaf\xc8\x30\x9c\x76\x8d\x2a\xa3\x3d\x5e\x63\x5c\x8f\x77\xb4\xfd\x28\xf8\x6b\xe9\x6b\x06\x5e\xb6\xc7\x59\x01\x62\x16\x81\xe5\xb8\x83\x0f\xca\xcb\xce\x2a\x12\x03\x64\x52\xd1\xab\x11\x00\x3c\x67\x08\x60\x83\xe6\xb1\x9b\xdf\x60\xe1\x54\x02\x2e\x8a\x34\xc3\xae\x97\x0a\x0c\x2e\x71\x96\x85\xa9\xdb\x1f\x03\x2f\x24\x7a\xd2\x88\xa9\x9a\x32\xf8\x26\xdc\x95\x45\x93\x56\xb5\xde\x1a\x1a\xff\x1f\x57\x6f\xb1\x2c\xbb\xb2\x73\x8d\x3e\x90\x1b\x66\x6a\x9a\x99\xd9\x3d\x97\x99\x19\x9f\xfe\xc6\x5a\x7b\x7f\xe7\x9c\xff\xc6\xec\xcd\x08\x57\x65\x65\x4a\x1a\x63\x28\x65\x89\x70\x1d\xad\xac\xb4\xee\xf6\x39\xe3\x8d\x5a\x03\x34\xaf\x89\x22\xa7\xe2\xfb\x89\x87\xfa\x30\x0a\x6d\xff\x98\x54\x1c\x91\x02\x3f\x95\x1d\x5a\x87\x60\x1d\x83\xd2\xa4\x07\x5e\x1d\x8c\xe5\x30\x17\xc1\x29\x14\x8e\xfa\xef\x79\xd5\x4c\xbd\xaf\x61\xad\x72\xf7\xc4\x19\xca\xe7\x66\x42\x07\x50\xc4\x12\xac\xbd\x98\x99\xa9\xd2\x67\x25\x1c\x4b\xaf\xbb\x7c\x52\xe2\xdf\x1f\xe7\x56\x64\x09\x1f\xe8\x49\xdf\x00\x19\xbe\x95\x49\xfd\xe1\x17\x32\x83\xcb\xbf\x61\x3d\x86\xd3\xab\xea\x94\x7d\x27\x0d\x8a\x38\x1a\x27\xa4\xdc\xd2\x0c\x22\x73\xec\xe5\x3f\xe5\x23\x0c\xc3\x8b\x40\x3c\x68\xc1\x1b\xb9\x82\xcc\xab\xbc\xd7\x64\xb6\x0b\x3a\xc8\x0d\x7c\xd7\xa6\x43\x43\xff\x4d\xfc\x0c\x1c\xa2\xa9\x4f\x45\x1d\xb0\x75\x24\x5e\x33\x99\x0f\xaa\xa0\xb8\xdc\x5c\xf0\x5b\xc1\xf5\x79\x52\x4f\x52\x94\x85\xde\x1a\x7a\xb3\xb3\x60\x4d\x30\xd5\x2b\x87\xf0\x49\x83\x96\xff\x17\x80\x18\x46\xf0\xd8\x46\x68\x46\xcf\x8c\x5b\xca\x69\x53\x5f\xfa\x39\x13\x11\x9f\x65\xa5\xfe\xa2\x2a\x9d\x4c\x76\xe9\x8d\x61\xea\x51\x40\xbc\x4f\x93\x0c\x0d\xdb\x2d\xa7\x00\x3e\x0b\xc2\x99\x52\xca\xc1\x35\xfc\xe9\x53\xfc\x7d\x08\xbe\xe9\x10\xed\x89\x58\x46\xf6\xd8\xea\xbf\x18\xa9\x30\xd8\x1f\x3e\x90\xde\xd1\x63\x21\xa5\xfe\x70\xc6\x15\x7f\x3e\x6f\x9f\xa6\xd9\x92\x13\x3d\x71\x6d\x8a\x87\x22\x4e\x12\x3a\x44\x5c\x21\x7e\x95\xe4\x39\xd1\x44\x2a\xcd\xb8\xcc\x39\x63\xaf\x3e\xcd\xa0\xbf\xbc\xc5\xfb\x5c\xaa\xe7\x53\x51\xd5\x72\xfd\x3f\xee\xcc\xb7\x86\x7a\x99\xa6\x12\x55\x63\x39\x9a\x69\x38\x76\x77\xca\x67\x55\xc4\xce\xc8\x78\xbf\x6e\x41\x75\x3d\x11\x02\xdb\xab\x41\x52\x0f\x43\x12\x34\x56\x1f\x5d\xfd\x7e\xa8\x51\x83\x3d\x57\xef\xe5\xf8\x7b\x70\xa6\xd7\x52\x69\x38\x0a\xcd\x30\x20\xe2\x4b\x1d\x46\xdf\x6a\x8b\x39\x14\xe5\xd2\xff\x63\xcb\x8c\x35\xae\xaa\x91\x36\x76\xdb\x9b\xc9\x2e\x4e\xe6\x2a\x62\xb4\xec\xf2\x15\xaf\x32\x1d\x97\x6d\xa1\x96\x64\x54\xfb\xe3\xd3\x1f\x6d\xa0\x48\x31\x83\x31\xf1\xa0\xf3\xed\x7e\xf6\x09\x2c\x45\xdd\xf2\x10\xba\xda\x31\x01\x84\xef\x18\xb8\x65\x7b\xfb\xdd\x26\x3a\x2b\x0b\xf4\x05\x37\x4e\x6c\x77\x2a\x7f\xcc\xe8\x7f\x7c\x95\x77\x71\xb3\x39\x38\x41\x27\xa4\xb5\x1e\x8b\x4a\x73\x55\x73\xf8\x7d\x03\xb1\x84\xd6\x0a\x45\xe7\x20\x78\xd9\xe0\x10\xb2\x3b\x91\x02\xdd\xf5\xf4\x0e\x3a\x1a\x6d\x85\x24\xb4\x3d\xb2\x44\x9b\xef\xa8\xf5\x83\xa7\xfe\xa2\x49\x92\x82\x4b\x81\x70\xa8\x90\x6f\xcf\x09\xff\xd7\xbe\x4c\xa1\xd6\x53\x3d\xda\xd8\x44\xc5\xbd\xc0\x2c\x37\x38\xd7\xdb\xca\xd2\xed\xfe\x10\x7e\xc9\x07\xc3\xbd\x5e\x9f\xdc\x5a\xa0\x32\x5d\x4e\x01\x62\xfe\x06\xba\x9a\x40\xc8\x8e\x7e\xbe\x54\x9e\xb0\x50\x96\x5f\xbf\x5f\x83\xb5\x40\x16\x49\xe5\xd0\x12\x3a\x2b\x80\x3f\x7f\x80\x1d\xc3\xff\xa3\x31\x58\xc6\xe4\xb2\x2e\xf0\xfe\xc4\x3f\x72\x59\x6d\xe0\x25\x54\xef\x43\xb2\x27\xdb\xc2\x6c\x08\x85\xf9\x08\xdb\x4f\x97\x66\x78\x82\xad\xde\xca\xd3\x77\x43\x9b\x90\xee\xa8\xaa\xfb\x55\x05\x36\x9f\x74\x23\x19\x69\x6f\xf4\xcb\x4d\x70\x41\x92\xe2\x57\xa8\x2c\x88\x66\x75\xcc\x7e\x2a\xb3\x02\xd5\xe4\x7f\xb9\x3e\xc7\x8c\xe7\x8d\x84\x29\x6d\x79\xac\x5a\x2c\x19\xed\xaf\x28\xfb\x92\xa6\x61\x0e\x46\x7a\x2c\xe3\x4c\x00\x0f\x50\xa1\x26\x8a\x16\x0d\x6d\x5f\x34\x58\x5d\x08\xf2\x47\x37\x35\xaa\xb9\x71\x61\xa2\xbe\x03\xc4\xe5\x51\x72\xdd\x8a\x23\x63\x39\x54\xa3\xff\xcf\x67\xab\x42\xe5\xf5\x41\xd6\x85\xeb\x10\x08\xc7\xfb\xd8\xdd\x30\x7b\x25\x92\x9c\x21\x85\x22\x53\x66\x3f\x80\xfd\xe4\xcd\x13\x93\xc8\xaa\x90\xfb\x5f\x3f\xcc\xf5\x2e\x4f\x68\x55\x2b\x18\x56\x33\x76\x2a\x6c\x87\xf3\xb7\xb0\x6c\x2d\x78\xa9\x82\xb9\xce\xb2\xb0\x77\x9e\xfd\xc7\x0d\x45\xf3\xf4\x6b\x4c\x53\x08\x27\xee\x5b\xf7\x08\x57\x0f\x6a\x76\xb8\x37\x75\x65\x47\x80\xca\x52\xb7\x92\x3c\x56\xa2\x6c\x81\x4d\x95\x12\x41\xe1\xe9\x22\xfd\x20\x8e\x79\xd8\xd1\x6c\xfa\x1a\x2f\x31\x06\xaa\xaf\xff\xe2\x5c\x2b\x8c\x4b\x68\x75\x30\xa1\x21\xb1\x7f\xb9\x84\x1c\xaa\x99\xe1\xb1\x2a\x34\xfe\x0e\x84\x16\x03\x41\x71\x6b\xc3\xec\x26\x7f\x0b\xb5\xa5\x90\x66\xe1\x27\x37\xc6\x72\x18\x60\x4e\x33\xb5\xea\x0f\x78\x99\xd4\x9c\xca\x22\xff\xc5\x6c\x86\xe9\x3d\x51\xec\xfb\x64\x6e\x37\xb5\xcd\x62\x6b\x2f\xf8\xb5\x70\x56\x01\xc3\x29\x73\x37\x1b\xa7\x68\xeb\x50\xed\x8f\x14\x48\x5f\x96\x79\x27\xf5\xcb\x6d\x4e\x36\xed\x3b\x77\x99\xff\x73\x24\x96\x89\x85\xd6\x5d\x58\xe9\x43\x72\x57\x39\xf2\x14\x8d\xba\x66\x3a\xa2\x88\xf6\xd7\xc2\x49\xe4\x01\xe8\x6c\x87\x98\x42\x6d\x71\xd8\xcf\xab\x7b\xad\x31\xd8\xcd\x0d\xdd\xd8\xe3\xff\x87\x77\x2b\xbc\xf6\x21\x89\x4b\xc8\xd1\xc8\xa6\xe1\xf8\x71\x5e\x54\x62\x84\xea\xad\xbe\x93\x7d\x01\x0f\x7a\xb8\xd2\x0f\x67\x25\xbf\x09\x19\xd2\x48\xdf\x9a\x54\x69\x29\x02\x43\x38\xd3\x7f\x75\xd6\xa3\x14\x82\x17\xae\x37\x92\x3d\xf3\xd2\xcc\x20\x40\xb1\x8d\xa9\x8e\x86\x6e\xec\xb5\x6b\x8b\x8e\xb6\x84\x84\x1c\xce\xd9\xa2\x48\xd4\x25\xde\x02\x53\x28\xee\xff\xe8\x9a\xda\x9e\xf3\x8e\x87\x24\xc7\xd2\xff\xec\x9f\xb9\x0a\x49\x85\xfd\xe1\xdb\x35\x4c\x56\x20\x4a\x64\x4b\x0b\x8f\x06\xa0\xf8\x36\x7e\x99\xde\x20\x2a\x49\xd0\x67\xf7\xc7\xe0\xc5\xfa\x41\x0d\xe9\x09\xf5\xbd\xff\x87\x03\xea\x6f\x25\x7f\x1d\x9b\x98\xed\x51\xa8\xc2\x94\xed\x79\x5a\xd9\x6c\xb6\x2d\x31\xc5\xc1\x88\xf2\x28\xc4\xbe\x71\x73\xda\xe4\x5a\xca\x12\x7b\x41\x9d\x18\x2c\xa9\xb7\xa9\xf8\x5f\x63\xfc\x07\x9f\xec\x66\x6e\x77\x35\x73\xda\xfe\x93\xea\xe7\x1d\x9d\xe7\x11\x98\x83\x87\x50\x68\x3d\xf3\xa3\x37\x56\x83\xbd\x9c\x45\x4c\x3e\x25\x4d\xd3\xf6\x11\xe6\x74\x6b\x5a\x96\x56\xfc\x7f\xdf\x51\xfa\x3b\x1d\x59\x84\xda\xc8\x79\x78\xc9\x82\xa3\x86\x91\xf3\x74\x32\x97\xb3\xd9\xd4\xf5\x89\x38\x64\x25\x5b\xac\xee\xbd\xf4\x79\xfb\xf7\xd5\xe6\x4b\x7d\xf3\x87\x91\x3d\x33\x57\xbb\xff\x10\x69\x96\x51\x4e\x7f\xc0\x57\x0e\x6b\x78\x3f\xfd\xf9\x89\xd1\x95\x8d\xd2\x9f\x37\x4d\x10\x6c\xa0\x0d\xf2\x2f\x8e\xdd\xf5\x08\xd7\xc9\x81\xbd\xe1\x95\x32\x78\xe7\x5e\xdd\x12\xb8\xec\xde\xf3\xe6\xff\x3e\x45\x65\x7c\x7d\x9f\xb2\x9d\xc6\x9d\xf2\x08\x57\x51\x95\x2c\x4e\xb2\x5d\xe2\x0c\x1f\x4b\x50\xfc\x22\xed\x03\x48\xa8\xa5\xa9\x58\x7d\x75\x4c\x01\x5b\x11\x78\xe2\xee\xfe\x7d\x77\xef\x8f\x2f\xad\x01\xe3\xb9\x96\xaa\x04\xfd\xfb\x60\x04\x32\x31\x43\xbf\xc3\x23\x1c\xad\xb0\xb7\x06\xce\x2c\xd4\xd2\x50\x7b\x9e\x32\xb7\x8d\x6c\xaf\xcb\xe2\xf8\x9b\x9d\x24\xce\x7f\x21\x71\xf7\x9b\x57\x0b\x17\x69\x92\x1c\x7e\xbe\xd2\x8e\xcb\x64\x2e\x0b\xdd\x15\x35\xbf\x9c\x49\xda\x3a\x78\xa4\x19\xd2\x1a\x87\x7d\xfb\x1b\x21\xbe\x77\x60\x73\xb6\x50\xd2\xff\xda\x07\xe7\x68\xcc\xc7\xe3\x1c\x1b\x6b\xec\xf0\x9e\xf9\xb3\x9b\xad\x60\xb5\x49\xfa\x39\xf3\x18\x8d\xb8\xc5\xa3\x6b\xe5\x61\xb1\xdf\x5a\xad\xa8\xfc\xfe\x87\x67\x38\x8c\x12\xe2\xfc\xee\xb0\xca\xa4\x38\x61\xe2\x1a\xb3\xca\x29\x7e\x9e\x76\x49\xcb\x8b\x26\x03\x4d\x25\xcd\xe4\x6e\xf8\xff\x7b\x46\x1f\xf0\x32\x7a\x79\xc5\xc0\x16\xf5\x73\x13\x91\x6b\x34\x3e\xed\xb9\xf5\x0a\xef\x55\x1b\x9b\xdb\xef\xf1\x33\xb9\x2d\x43\xe5\xc7\xde\x04\xfe\xe3\xd0\xac\xa6\x2c\xe7\x40\xe9\x9c\x68\x9b\x69\x3a\xfc\xfc\x64\xc3\x6a\x26\xad\x5f\x5f\xbd\xcc\x3b\x7f\x38\x79\x68\xeb\x35\xe7\x18\xad\xb7\x80\xff\xc9\x1d\xe8\x82\xc6\xe1\x22\xe3\xfd\xe4\x5c\xe6\x0f\x51\x71\x0c\x46\x0a\xa2\x21\x68\x7a\x93\xdd\x9d\xa6\x29\xdd\xb7\xf4\x48\x2b\xe8\x79\xe2\x26\xf2\xff\xf8\xad\xaa\xfe\xcc\x6c\x88\x96\x50\x69\xf8\xb5\xe9\xa0\x72\x0b\xb3\xce\x6f\x18\xb6\xc1\x7f\x3f\x31\x0d\xa2\x60\x6c\x98\x31\x07\xa2\x66\x61\xd8\x9e\xfd\xdf\x75\x9e\x82\x59\xd5\xcb\xdd\xe9\xc6\x94\x91\x7c\x2c\x31\x9d\xe0\xba\xa1\x84\x59\x70\x0b\x4c\xe4\xce\x59\x19\x66\xd4\x06\x86\xf5\x1c\xf3\x1f\x6a\xd3\x47\x83\xd8\x30\x89\xe6\x08\x5b\x8f\x9f\x59\xbb\x33\xcd\x60\x6c\x61\x92\x76\xc1\x4f\x50\xaa\x01\xb2\x56\x48\xed\x93\xd2\xa8\x0d\x5a\xf9\xbf\x87\x3c\xbe\x3d\xc2\xd1\x82\x23\x96\x93\x55\xde\xc8\xba\x68\x86\xb5\xe3\x60\x9a\xcd\xfe\x6d\xbc\x96\xf2\xb2\xa8\xec\x8b\xde\x2a\xb5\xc3\x1a\xb5\xfd\x5f\x8c\x50\x19\xc3\xd3\x92\x7e\x0c\xee\x71\xa7\xcf\xbd\x65\xcc\xde\x56\x95\x9e\x02\xd5\x37\x70\x6a\x72\x8c\x5a\xed\x1e\x42\xb6\xe7\xa5\xff\xd1\xd9\x6c\xff\xca\x39\x91\x5a\x6d\x3f\xbc\x77\xef\xf9\xab\x63\x24\xde\x3e\x87\xce\xac\x4b\xc9\x87\x2d\x0c\x54\x26\x18\xb5\x99\xa3\xdc\x29\xf2\xff\x38\xaa\xc3\xfb\xa1\x20\x12\xa6\x96\xea\x62\xa6\xbb\x99\xe8\x28\x0c\xe1\xd8\xde\x1d\xed\xb0\xb6\xb8\xec\xeb\xcd\x84\x87\x09\x82\xc4\xfc\xbf\xcf\xb9\xaa\x17\xf4\x6e\xbd\x30\x82\xb6\xc4\xda\x8f\xcf\x86\x8a\xcf\xb1\xae\xbf\x70\x7b\xf6\xf9\x24\x10\x1c\x63\x3a\x31\xa1\x2c\xca\x6e\x7b\xf2\xb1\xcf\x46\x0d\x10\xa0\x6c\x8b\x8b\xb4\x37\x72\x45\xb2\xeb\xf5\x3f\xfb\xcb\xaa\xc9\xc1\x6f\x81\x63\x34\x50\xd4\x66\xc5\xe9\x0f\xde\x28\xda\xa5\x8a\xd9\xf4\xe5\xf5\x45\x03\x10\xe7\xb6\x7f\xd7\x5e\x1b\xd8\xf1\xea\x69\x38\x92\x68\x42\xf0\x8e\xa6\x85\x43\x93\x74\x9c\xca\xaa\xff\xab\x07\x71\x6e\xe0\x93\x36\x66\xa9\x49\xfd\x24\x25\x73\xef\x85\x54\xf0\x58\xbb\xe0\x67\xb7\x1a\xd8\x82\x99\x17\x3a\x16\x3a\x58\xc3\x3c\xb3\x2d\x4b\xc9\xfd\x0c\xf4\xa5\xca\x25\x64\x26\xf7\x1a\xe2\xb7\x60\xad\x12\x84\x98\x64\xdc\xed\xff\x2d\x90\x73\x8c\xdf\x4a\x9c\x17\x49\x83\x75\xa9\x56\x4b\x86\xa3\x24\xf6\xda\x1f\x55\x41\x09\x6e\x5e\x9d\x59\xe5\x3f\xe6\x15\x98\xba\x16\x95\xa1\x36\x9a\x1e\x96\x66\x18\xa2\xf7\xb2\x36\xc9\x3a\x93\x16\x14\xef\x4e\x07\x3c\x8a\x6a\x5b\xbc\x56\x5b\xce\x61\x97\xe4\x4a\xb0\xc2\xc5\xea\x0e\xa8\xe2\x18\x8f\x77\xdc\xdb\x11\x56\x99\x19\x13\xd0\x9a\x54\xb6\xf9\xcf\xef\x51\x78\x03\x2a\x26\x97\xaa\x4a\x10\xf4\x50\xf7\xfb\x54\xe2\x63\xbb\xfe\x41\x4c\xa9\x8f\x5c\x35\x2f\xe5\x46\x81\xa9\x46\xd4\x54\x5f\x6b\x1c\x64\x85\x43\xef\x7c\x3d\x7f\xf7\x3e\xfd\xd8\xbc\xfc\x18\xe6\xe3\x8d\x9f\xb2\x7a\xd9\xfb\xdc\xa2\x63\xd1\xeb\xd9\xc3\x92\x32\x4f\x70\xa9\x5f\x9d\x4e\x07\xe8\xc0\x0f\x20\x0d\xa6\xdd\x69\xd7\x75\x4f\xf8\x63\x8b\x27\xf2\xe3\x82\xff\x98\x31\xf3\x86\x6e\x16\xf4\xcf\x50\xf6\xd3\x8c\x6b\xe6\x82\x9c\xb2\xd2\x23\xdc\xf1\xcb\x2e\x11\xb5\xf0\x85\x04\xba\xdd\x37\xe7\x2f\xef\xbe\x6b\x9d\x8a\x54\x97\x92\x77\x24\x92\x14\x6b\x1e\x53\x5f\xaa\x01\x31\x45\x26\x98\x9e\xb1\xa7\x86\xd9\xe4\x18\xab\x97\xfe\xd7\x6e\xb9\x3e\x68\xd7\xb0\x1b\x9c\xa0\xde\x9b\xbd\xfc\x8d\xb8\x6e\x1c\x5a\x6e\x14\xf3\xd8\x65\xbf\x4f\x41\x4c\x3f\x18\xb7\x02\x90\xd6\x82\x16\x8c\x99\xae\x96\x7d\x9c\x39\xc5\xc0\x69\xc2\x0e\x89\xfa\x96\xd2\x58\x95\x4c\x8d\xa3\x45\x81\xe3\x3f\x85\xff\xaf\x89\xbe\x7e\xfa\xba\xec\xc8\x29\x9c\xa6\x23\xd9\xe7\xae\x5c\x44\x96\x6f\xe6\xf7\xd9\x6f\x29\x97\x52\xc7\x1f\xb3\x24\x09\x6d\x79\x4b\xf4\x03\x88\x30\x4a\xef\xf4\xf1\xe7\x3e\x3f\x21\xa4\x09\x2c\x1e\x53\xd8\x2c\xf4\x96\xc8\x0e\xf0\xd3\x69\xd3\xff\xf2\xdd\x5a\x72\x3e\x29\x81\xa2\xf6\x19\x1e\x41\x09\xb3\x2d\xc0\x5f\xb8\x9c\x1a\xa5\x9f\xbc\x6c\x93\x21\x5a\x71\x73\xde\x81\xd4\xca\xd3\xec\x87\xbe\x4e\x2a\xaa\xa1\xbf\x24\x35\x09\x3e\x26\x96\x4f\x19\x67\x29\x17\x26\x22\x5a\x6a\xcc\xba\x11\x87\xc5\x73\xb5\x04\x12\xc6\xff\xe5\x14\xc1\xc8\xf7\xad\xac\x08\x4a\x8c\xed\xef\xb7\xbd\xf9\x1a\x81\x13\xba\xd2\xfe\x2a\x3a\x85\x5c\xa0\xe6\x57\xa2\xaa\x55\x2f\xa0\x8c\x83\x3d\x7d\x98\xfd\xe8\x22\x7a\x83\xdb\xc9\x72\xf3\x99\xeb\x4e\xc3\x18\x14\x65\x3c\x29\xc4\x3c\x7b\x6f\xaa\x79\xca\xee\xb0\x46\xa3\xff\x6f\x8c\xe1\xfe\xf8\x65\x17\x64\xbc\x65\xf8\x70\x8f\x13\xed\x64\x8f\x56\x21\xf6\xa5\x04\x8d\xd3\xb1\x65\x70\x11\x7b\x0a\x0a\x59\x1e\x46\x36\x44\x88\x19\x35\x27\xaf\xb4\xdf\x12\x71\x0a\x5a\xbb\x27\xbf\x79\x5c\xf6\x61\x4a\x86\x99\x5a\x09\xba\x6e\xaa\x9c\x17\x0b\xee\xfd\x71\x0a\x83\x38\xfd\x27\xdd\x7f\x04\x1b\x04\xd1\x64\x19\x0f\x70\x11\x87\x70\x88\x16\xbf\x8c\xb8\x6c\x1c\x94\xf1\x4a\x61\x59\x05\x08\xb1\xe3\xbc\x08\x29\x2f\x6d\x39\x89\x1d\x86\x91\xd8\xc4\x9d\xa1\x19\x25\x8f\xcb\x06\x14\x67\xa7\xdf\x7c\xe2\x7d\x8d\xcd\xae\x50\x9b\x61\x09\x2d\xe2\x10\x2d\xba\x40\x55\x2b\xdd\x35\x9f\xcf\x71\xf9\x35\x76\xa0\xfc\x81\x85\x20\xfd\x85\x7d\xf9\x26\x90\xb5\x63\xef\x19\xbc\xac\xc5\x5a\x02\x12\x39\x1a\xab\x28\x85\xec\x42\x58\x66\x78\xd2\xdc\x36\x10\x3e\x3b\x46\xf3\x97\xdb\xb2\x4c\xb9\xb6\xc7\x1a\x4e\x00\x54\x69\x47\x44\x56\x11\x7c\xb8\x4a\x6e\x17\xe3\xa7\xbe\xea\x3f\xc9\x87\x27\x0e\x42\x99\x9d\x3d\x53\x06\x6d\x8c\x71\x1a\x81\x6f\xe9\x71\x87\x90\xc9\xcf\x70\xfa\x08\xc7\x03\x3d\x5e\x2a\xe7\x8f\x2a\x3c\xb1\x55\xe7\xf6\x30\x03\x0a\xb2\xff\x5d\x3f\x12\x74\x5c\x76\x14\x1e\x49\x97\x25\xb3\x9b\x0c\x1a\xbb\x5e\xf8\x32\xdf\x3c\x10\x00\xdb\xc6\xb8\xce\x0f\x3e\x99\xd8\x15\x6e\x09\x35\xd5\x12\xb8\xd1\x99\xa0\xf0\xcf\xb1\xac\xd1\x71\xfe\x26\xb2\xa5\xf2\xe2\xba\x6c\x42\x2a\x68\x1a\x77\xf1\x4d\xcd\x1d\x86\xa9\xd9\x06\xec\x43\x3d\x78\x65\x35\x50\x12\x40\x0c\xd7\xc3\x7c\x70\xc5\xcd\xb7\x21\xdf\xe8\xdc\x65\x59\x41\x6b\x8b\x94\xdf\x0f\xb4\xa3\xe2\x9a\x62\x05\xe1\xe6\x25\x03\x19\x7d\x06\x15\xac\xf2\x53\xfa\xfe\xb5\x69\x90\xc5\x2e\x57\xe5\x99\x62\xed\x9b\x1b\x16\xea\x62\x7d\xad\x46\xed\xfe\x32\x26\x56\x41\x32\xa2\xb0\x10\x80\x04\xd2\x14\xce\xe8\x5c\xad\x67\x76\xfe\xb3\x57\x78\xdb\x2f\x7a\xfa\xd3\x53\xa5\xe3\x77\xae\x0e\xda\xcd\x9f\xdf\x78\x88\xc2\xf9\x14\xe7\xb6\xe5\x14\x7d\x25\xab\x92\x1c\xf1\xae\x45\xf1\xcb\x26\xd1\x92\x1c\x37\xb2\xd8\xbb\xf1\x4e\xff\x7c\x77\xd2\xd4\xa3\x4d\x03\xac\xe7\xab\x79\x37\xdd\x72\xd9\x87\x4c\xba\x9b\xec\x1f\x1e\xe0\xe8\x33\x80\xfe\x36\x18\x73\xf2\xca\x59\x07\x81\x61\x78\x25\x61\x1e\x73\x20\xac\x9d\x8c\xb9\x5b\xb7\x6c\xa3\xc0\x99\x7e\xcc\xb0\xee\xeb\x98\xb1\xff\xe4\x97\x24\x33\xa4\x18\xa9\x1c\x45\x0d\xac\x9b\x2c\x5c\x6a\xd5\x8d\xb3\xdc\x77\xcc\xc5\xba\x95\x41\xd4\x52\x70\xbd\x4c\x3a\x0e\x8b\x79\x8a\x7b\x8d\x5e\x3e\x8b\x20\xf0\xea\xe0\x4f\x7c\x21\xaa\x0b\xf1\x7c\xc2\x53\x8d\xd2\x90\xe6\x1e\x73\xa4\x94\xff\x9b\x07\x12\xb8\x76\x5d\xd7\xb5\xba\xd0\x04\x23\x44\x87\xd3\x84\xbf\xf1\x37\x1c\xf0\x48\x1b\xcd\xf4\x91\x44\xe5\x02\x84\xe5\x5d\xc6\x6a\x02\xb0\xe1\xd8\xa1\x31\x00\x68\x3d\x93\x96\xf7\xa1\xd3\x25\x66\x39\xa1\x5c\xca\xcd\xc4\xe1\x63\x87\x17\x11\xf1\xcb\x12\xc7\x0c\xda\xce\x46\xd3\x87\x0b\xf4\x78\x6b\x35\xe6\x26\xd9\x4a\x22\x28\xea\x21\xe9\x52\xd6\xfe\xcd\x2f\xb3\x2d\xfc\x95\xc9\xbb\xfe\x83\xb3\xbf\x78\xe3\x28\x8a\xe0\xc4\xdd\xda\x7a\x39\x4f\xfc\x25\x21\x6c\x5a\x4b\x71\x4a\x5d\xca\xfb\x58\x52\xee\xa9\xba\x51\x00\xbe\x8a\x57\x2a\x54\xbd\x42\xe0\x86\xfd\x8e\xef\x2d\x78\x03\xe2\x7d\x65\x27\x8b\x83\x53\xf3\x5b\xbd\xe7\x2d\xd0\x1f\x12\x46\x43\x30\x0f\x21\x08\x09\xe7\x80\x9e\x34\x3a\x31\xd8\xa4\x6d\xf5\xa1\x7b\x79\xb8\x1e\x81\xe4\x82\x13\xcc\x6b\x7f\x78\x69\x27\x24\x65\x30\xbb\xcf\xf7\xcc\x58\xf1\x87\x4b\x3d\xff\xf2\x3b\x47\xd9\xa2\x2d\x84\x49\xd2\xac\x9f\xe7\xcf\x72\x74\x5d\x68\x59\x71\x30\x06\xa7\xb1\xf1\x32\x97\xf5\x23\xdb\x72\xc2\x80\x11\x05\x92\xe4\x6d\xfb\xe6\x82\x9b\xe3\x2d\xa6\xe4\x45\x39\xb6\x12\x2d\x49\xb4\x44\x97\x03\x19\xf1\x4e\xaf\x1d\x98\xa8\x89\xb3\x31\xbc\xb0\xa1\xe2\x95\x16\x85\xd8\x35\x55\xc8\xcc\x03\xec\x38\x69\x64\x84\x33\x6d\xa4\xbb\x1e\xa3\x26\xc5\x2c\x3b\xb4\x65\xd8\xde\xfe\x37\xc7\xbd\x44\xdb\xda\x33\xfd\xdf\x33\xd9\x6f\x5f\x37\x3c\xee\x6e\x64\xdc\x0f\xb3\x7d\xbc\x5d\x35\x38\xb4\x63\x5a\x29\x70\x20\x90\x0f\x28\x7b\x0a\x9c\x8a\xaf\x44\x69\x93\x0c\x08\xd4\xd1\x9a\x40\x17\xe4\xd4\x56\x23\x35\x1d\x22\x78\xb1\xd4\xaf\xaf\xc1\x9e\xaf\x0b\xe9\xf8\xfd\x68\xf9\xee\x14\xfa\x7b\xbb\xe9\xa5\x06\xa7\xd5\x8b\xd8\xf6\xc4\x9a\xe2\x8f\x9e\xff\xe7\xbb\x79\x95\x28\xbf\xdd\x96\xbb\x5b\xb1\xfe\xe0\x22\x9b\x2e\xbf\x97\x0a\x15\x6c\xc0\x19\xe3\xfe\x83\x05\xfb\x37\xf1\xf1\xe2\x4a\x33\x36\x59\xfe\x96\x15\x67\xe8\xe2\x0a\x27\x59\xf9\x17\x40\xb4\x9e\x5d\xaa\xf0\x07\x1b\x22\xe5\x1a\xe9\xa8\x25\xa7\x02\xa2\x49\x17\x49\x47\x28\x93\x19\x8a\x24\x16\x34\xf2\x9e\x11\x0a\x0f\xd9\xeb\x26\x6b\x0d\x22\x6f\xe1\xed\xaa\x77\x04\xb1\x7d\x94\x1e\xc5\xa5\x09\x26\xe4\xd7\x92\x1c\xf1\xdf\x7c\x48\x8f\xd3\xed\x93\xbc\xe3\x5e\xd6\xfd\x9f\x58\xee\xf1\x86\x65\x48\x5d\xe0\xe5\x65\x63\x2f\xb4\x9d\x92\xbf\xcc\xa8\xa4\x81\x26\xa6\x00\x9a\xd6\x53\x5e\x38\x46\xa1\xab\xb8\xa2\x95\xb9\xe7\x0c\xb5\x37\x75\x45\xcd\x2c\x5c\x83\x48\x3f\x4d\x25\x7c\xff\x31\xb3\x54\x53\xbd\xda\x64\x57\xe9\xfa\xa6\x51\x1f\x9a\xdb\xcf\xf0\xf7\x0e\x42\x10\x96\xbc\x91\xd2\x42\x05\x48\xaf\x6b\x45\xe0\x2e\x19\x0e\xbb\x8f\x31\xa7\xdc\x7f\x48\x3c\xeb\x61\x08\xfe\x2a\x77\xcd\x30\x2a\x27\xbe\xfb\xa1\x05\x16\x51\xf3\x18\x2c\x61\x54\xa7\x7f\x85\x1b\x2f\x30\x33\x17\xa2\x90\xfe\xe1\x84\xc4\x80\x9c\x4e\xbc\x28\x66\x97\xc0\xae\x57\x20\x59\xba\x9d\xa4\x4f\x2d\xd6\x62\xab\x9e\x69\x42\x57\x7e\x89\xd4\x3d\x54\x47\xc1\x07\xb8\xfd\xc3\xc1\x5f\x26\x84\x55\x19\xe5\xcb\xe3\x77\xa3\x94\xdc\xb5\x32\xdd\x1f\x83\x21\xbd\xb3\xe9\xed\x22\x54\xf1\x4f\x91\xf7\xd6\x16\xa6\x99\x34\xea\x3f\x90\xc3\xaa\xae\x20\x06\x7f\xf4\x8c\x27\x60\x33\xac\xfc\xf9\x2f\xcb\x98\x17\xce\x2c\x59\xf7\x05\x16\x86\xb4\xfd\x3a\xbc\x53\xd5\xa7\x55\xba\x1d\x62\x7f\x40\x6e\x28\x3a\xad\x74\x5e\x07\x0e\xc3\x7d\x89\x1c\xbf\x90\xbc\x5c\xd4\xa5\xe1\xce\x48\xe7\x45\x0b\xc5\x95\x57\x85\x71\x7b\x0a\xdd\x17\x50\x05\x36\x39\x07\x62\x1a\xc2\x3e\x68\xb4\x83\xa2\x2e\x20\x7a\xaf\x94\x55\x75\x9f\xb4\x88\x49\x8b\x9e\x5b\x60\x5b\x38\xd6\x6e\xf9\xb3\xde\x3d\x32\x25\xc5\x21\x1c\x37\xa4\x40\x81\xf9\x63\x3b\xdc\x12\x78\xeb\x53\x30\x18\xc3\xe8\x6a\x10\x44\x12\x6b\x6f\x16\x11\x18\xbf\xa7\x0a\xf8\xe5\x93\x4b\x25\x9e\xe1\x2c\x1b\xda\xc8\x74\x27\x9b\x10\xba\x85\x02\xcf\x1f\x2a\x23\xd7\x52\xd9\x78\x65\x40\x87\x5e\xc8\xe8\x2b\x79\x3b\x14\x35\x0a\xa1\x93\xcb\x5f\x52\x70\xc8\x05\x5a\xa0\x39\xaa\x6a\xf5\x02\xf2\x24\x18\xc0\xa7\x09\x8d\x9e\xb9\xee\x07\x1b\x8b\x67\xdf\x7b\xf9\x12\x30\xe7\xf0\x04\x18\x85\x0b\x6d\xf7\xd6\x97\x4e\x21\x77\xbc\xde\x4c\x0d\xfd\xeb\xe7\xb2\xfe\x1a\x13\x32\x48\x7f\x7b\x15\xf3\xd2\xe4\x53\x91\x13\x32\xab\xc8\xc4\x16\x68\x3c\xe5\x61\x5e\x7a\xd2\xc9\xe8\x1b\x9c\xc8\x81\xee\xd4\x34\xd2\x84\xa7\xa4\x7f\x7d\xdd\x24\xa1\x56\x21\x9e\x28\x7b\x54\x4b\x3e\xda\x3d\x9c\x95\x3a\x3a\xae\xcc\xea\x36\x81\xa4\x63\x35\x0f\xbf\xbe\x28\x27\xd8\xda\x86\x7c\x98\x15\xac\x24\x1c\x2f\x7d\x07\x47\x63\x7d\x0b\x94\x1e\x1c\xba\x61\x4e\x5f\x4a\x5b\xee\x7a\x8e\x45\x64\x45\xdb\xff\xd1\xa4\x9e\x41\x28\x82\x67\xf6\x46\x33\xb5\x7f\x82\x00\xe2\xf5\xe8\x83\x13\x0b\xe9\xb5\xb2\xa7\x89\x8e\xa5\xa2\x16\x69\x4c\x7e\xe0\xba\x83\x51\xe5\xc7\x8f\x46\xfb\xe2\xba\x68\x26\xd2\x98\xe4\x18\xb4\x25\xd4\x26\xd8\x4b\x1b\x94\x76\xd7\x21\xc8\x3a\xb5\x6e\xdb\x3d\x98\xfa\x78\x41\x38\xc5\xf4\x48\xa9\x6b\xad\xf9\xed\xb4\x6c\x13\xfb\x32\xbd\x07\x67\x1d\x02\x4b\x45\xd3\xa9\x55\x2a\x0b\x49\x82\x75\x13\xf9\x63\x97\x0c\x16\xaa\x91\xe9\x2c\x6d\x99\x1f\xbc\xa2\xd4\x85\x35\xb5\xa6\x71\x59\x33\x90\x27\xaa\x0f\xa0\xaa\x4b\x3e\x30\xfa\x60\x67\x93\x03\x69\x3a\x8a\xf2\xdd\x29\x9d\x37\xf2\xfd\xa5\x07\xc1\xc2\x3a\xa2\xe6\xcf\xd9\xeb\xba\xff\xd8\xf2\xb4\xc1\x27\xa8\xc5\xdf\x68\x1d\xc9\x3e\x87\xcc\xcc\x2d\x1f\x6e\xaa\x70\x11\x63\xa3\xe9\xf6\xe6\xaf\x44\xf7\x59\xb4\x56\x5a\xc5\xb5\x53\xf7\xb0\xb5\xe0\x4b\x94\x65\x54\x5a\xa0\x2d\x35\x43\xe2\x74\xa2\xe0\x95\x2c\x49\xa4\xc9\xed\xe6\x9c\x96\x38\x0f\xa5\x26\xe2\x02\x6c\x3c\x9e\xf3\xa2\x69\x5b\x50\x7c\x35\x15\x9e\xcc\x1a\x74\x2d\x4f\x13\x65\x08\xf5\xe5\x33\x80\x6b\x25\x28\xbb\xa1\xec\xb4\x00\xeb\x86\x96\x97\x22\x8b\x7a\xd5\x9e\x8d\x1a\x79\x19\x90\x5f\x18\x8a\x05\x7f\x57\x0c\x2f\xee\x5e\xa2\xfe\xef\x8f\x35\x25\x9d\xe4\xe8\x29\x7d\x8e\x68\xf4\xfc\x0c\x87\xc5\x58\x11\x7e\x69\xee\x2f\x56\xea\x5a\xe4\xaf\xf9\xa6\x79\x3d\x10\x84\x51\xf1\xf3\xe8\x7c\x0d\x99\x40\xe4\xdb\x2f\xd7\x21\xc5\x4b\x15\x64\x25\x43\x5b\x85\x5e\x0b\x83\x88\x72\x3d\x05\x6c\xdb\x01\xfe\x08\x57\xd3\x5b\x07\x03\xd9\x48\x15\x8f\x35\x3a\x3e\xab\xa7\x14\xac\xa6\xd7\xce\x66\xce\xf9\xa5\x93\x81\xdf\x95\x84\xa6\xa4\x24\xcf\x08\xbd\xca\x4e\x78\x73\x68\xcc\x5c\x8a\xe2\x47\xec\x67\xe3\xcb\x95\x86\x0c\xe5\x1e\x23\xf6\x72\xfb\x39\x6c\xbf\x4a\xcf\x5c\x8a\x13\x4d\x7f\x24\xf6\x80\xc5\x11\xff\xcc\xa8\xf5\x65\x16\x2e\x9f\x94\x19\xff\xa0\xa7\xf3\xe8\x7f\xdb\x2d\x97\x39\x23\xff\xb5\xa1\xa8\x3c\xa9\x3d\xb3\xbe\xad\x58\x93\x60\x9d\x8c\xef\x74\xb1\x46\x20\xa6\xd0\xdb\xc8\xa3\xf6\xf7\x89\xf4\xcc\x54\x6e\xfd\x4b\xa2\xa3\xf6\x0d\x5e\xfd\x40\x0b\x7b\x2a\xbe\x1c\x7f\x7e\x14\x38\xd1\xbf\xa9\xfa\x60\x78\x47\x54\x74\x12\x16\xf7\x99\xd6\x1f\x94\xee\x04\x5c\x2c\xaf\x71\xc1\x08\xa9\xa3\xbd\x24\xff\x94\x1f\x65\x09\x3c\x47\x16\x2d\x80\x81\xe9\xef\x47\x9f\x74\xf6\x14\x9c\xe1\x7a\x64\x01\xc0\xef\x19\xbe\x0a\x73\xb3\xac\xa0\x80\x34\x30\x49\xf4\x9d\x30\x7f\x39\x69\xb1\xe8\x6a\x2a\xd9\x72\x67\xac\x25\x4c\x1c\xde\xea\xac\xef\x75\x71\xcf\x17\x6f\xe7\x79\x19\x52\xfd\x91\xb8\x0a\x61\x49\xd3\x49\x69\xa7\x8a\xe0\x41\x46\x70\xf9\xed\x44\x72\x60\xc1\x83\x4a\xe7\x86\x1e\xf5\x1f\x02\xec\xbc\x2b\x40\x0a\x3d\xf2\x2d\x5a\x1b\x72\xb5\x36\x89\x63\xa0\xac\xf9\x92\x5d\x2f\x46\x81\xb2\xcb\xd0\xbd\x0a\xc4\x12\xf3\xd8\x0b\x44\xd0\xa9\x2c\x4f\x04\xb6\x12\xbb\x3e\xbb\x6d\x9b\xf3\x2d\xb5\x49\xca\x82\xd5\x2c\x23\x08\xae\xe5\xef\xe4\x15\x83\x2f\xed\xae\x26\xab\xfd\x95\xa4\x67\x38\xa4\x41\xc6\xdb\xcb\x5e\x6a\x41\xd6\x39\x3f\x35\x4f\x94\x3a\xe4\xd6\x21\xec\xae\xc4\xc4\x81\xfe\xf8\xe9\xfb\x87\xdc\x2f\x1d\x26\xea\x0f\xf9\xcb\x8f\x58\x6d\xd0\xf7\x13\x2d\x9f\x62\x9d\xa3\x4c\xd8\xf1\x3f\x6b\x0b\x8c\x56\xe7\xea\x2b\x21\xa5\x26\xb2\x62\xb5\x2f\x33\x27\xd4\x03\x26\xfa\xa3\x85\x14\x45\x5e\xb3\xf1\xac\x4a\xfb\x8b\x41\x8f\x0e\x6b\x4a\x3a\x22\x1d\xcb\x1d\xc7\x52\x2c\x19\xcc\x4f\xb3\x02\xa8\xaa\xe4\xea\x5a\x13\x98\x9a\x61\xf6\x86\x55\x05\xd5\x98\xfc\x96\x57\x79\x0e\x90\x57\xda\x5e\xfe\x68\x9a\x4e\x06\x52\x07\xf1\xbe\xa8\xce\xd5\xa6\x18\x76\xef\x08\x89\x78\x5e\x5b\x9d\x4d\x3f\xdc\x04\x9b\x5c\xef\x4a\x38\xe7\x3f\x50\x66\x50\xe8\xe8\x7a\xfa\xba\xc0\x11\x6e\xe2\x35\x74\x96\x98\x49\x1a\xc4\x6f\xf4\x2e\xb8\x47\xed\xbd\xf7\xd7\x6e\x07\x5a\x5a\xe1\xf2\xf2\xe7\xc0\x6d\xce\x57\xdc\x94\xee\x36\x7a\xc8\xa6\x49\xfa\x18\x14\x17\x55\x12\x71\x06\xe5\x1d\x95\x79\x76\x77\x58\x45\xd3\xa0\xc3\xf6\xcd\x82\x26\x00\xb2\xfa\xfd\xf0\x58\xc1\xe7\x5a\x60\x18\x73\x92\x7e\x7c\x12\x8a\x4f\x38\x52\xcc\x0e\x49\x09\x62\x5d\xe2\x6d\x14\x1c\x90\xfa\xfc\xcf\x71\x1d\x73\xcf\x87\x23\xa5\xc7\x1c\x92\x2c\xb7\xc2\xa1\x81\x9f\x43\x8e\x5e\x11\x31\xa9\x68\xb2\x44\x4f\x12\x2e\xa7\xe3\x5a\xb6\x9f\xb3\xe3\x7e\xa7\xf3\xc1\xfe\x3e\x49\x24\xb6\x75\xd0\xd6\x0f\xd0\xa5\xc6\xd8\x69\xc6\x92\x32\x75\x53\x22\x32\xc2\xbc\xbe\x56\x3b\x86\x6c\x1f\x20\x69\x95\x8a\x23\xa1\xfe\xc2\x2a\xed\x18\xac\xd3\x09\x14\x23\xad\xc1\xd9\x51\x59\x5c\xc3\x12\x85\x31\xa5\x5b\x8a\x52\x18\xcb\x30\x3c\x21\xc9\x15\x10\xc9\xa3\xa4\x1f\x04\x14\xb5\x30\x72\xde\x30\x8f\xf2\xf9\x1e\x7f\x15\x4f\xb2\xc0\x39\x68\xc0\x7b\x40\xc1\x70\xc4\x10\x10\x23\xc0\xef\x8b\xed\x17\xa8\xbe\x13\x5f\x7e\xe5\x88\xae\x85\x7e\xc6\x15\xa1\x39\x79\x4a\x0c\x4d\xa6\xaf\xf7\xad\x0d\xd1\xfa\xe9\x2f\xec\x4f\x6f\x3e\x99\x5f\xfe\xf1\x5a\x6f\xc6\x57\x9e\x38\x8c\x22\x88\xd1\x06\xbf\xaa\x62\xf8\x7b\x7b\x9b\x55\x28\x86\xe1\x90\x66\x91\xd2\x38\xcc\x15\xbb\x04\x98\x40\x28\x1a\xfb\x9d\xef\xe7\x6a\x7d\xf0\x0e\x24\xf3\x2b\x6e\x4c\xfe\x02\x81\x64\x15\x13\x15\xfa\xe4\x06\x2b\xd9\x49\x22\x1d\x1b\x41\xcd\xa1\xf6\xb0\x09\xc3\x70\x8e\xa5\x0e\x86\x39\x92\x79\x19\x5f\x08\xb9\x9f\xbd\x08\x45\x5e\x2a\x11\x56\x9c\x81\x71\x82\x7e\xe4\x8c\x4c\xd9\x8f\xcf\xe0\x43\x7d\xad\x6b\x30\x9a\x01\xda\x9b\x98\xfd\xa7\x4e\x05\x88\x5f\xe0\x35\x10\x84\x9e\x32\x11\x3b\x6e\x52\x3c\x15\x2c\xa4\x4c\xb0\x44\x55\xc9\x3d\xe8\xf5\xf0\x78\x8b\x48\xa2\x56\x93\x0a\xa0\x1a\xcd\x2e\xf8\xbe\x22\xf2\x22\x25\x4d\x5b\x55\xa0\xd2\xae\xe2\x64\x5d\xf1\x29\xab\xe7\xda\x3f\x7e\x2f\x09\x96\xea\xee\x71\xa7\x7e\x28\xf8\x70\x96\xc2\xe4\x66\x5a\xc1\x0c\xf1\xb7\xef\xcb\xa3\x8f\x05\x46\x95\xd6\x3f\x79\x74\x76\x99\x7f\xed\xbc\xeb\x19\xa2\x4f\x1b\xfe\x0b\xd7\x2e\x2b\x56\x77\xc0\xcb\x25\x83\x45\x31\xf1\xb3\xd4\xb6\x90\x32\x10\x5d\x5f\x19\x0e\x6d\xc5\x45\x61\xa7\xcf\x5d\x85\xc0\x90\x36\xf1\xfd\x27\xeb\x3a\x5e\xa9\xac\x38\x1b\x7a\x3d\xb0\x15\x89\x2d\xe7\x2e\x39\xaf\x34\x8c\x91\x9b\x7e\x3e\x15\x1c\x58\x3c\x60\xa7\x86\x98\xf6\x84\x90\xe6\xc8\x16\x30\x3a\x0d\x5d\xc8\xcd\x03\xdb\x94\xaf\x6c\xad\x1b\xc3\x79\xc2\x07\x14\x5b\x36\x2e\x9c\x6c\x69\x0f\x7e\x5a\x76\xf0\x83\x8a\x7f\x52\x62\xda\xe8\xab\xa4\x62\xa8\xe3\x7d\x73\x87\xf7\x3e\x9d\x4a\xe5\x32\x1c\x45\xd2\x11\xae\x57\x98\x6d\xa1\x40\xf7\x48\x13\x58\x0d\x74\x1e\xc4\xaf\x6e\xf9\xe0\x84\x5f\x9e\xb6\x96\xfd\x27\xcd\x1a\xcb\x68\xb4\x89\x8c\x19\x79\xa2\x5f\xeb\xb7\x93\x42\x5c\x62\xbf\x94\xbf\xfe\xe9\x87\xcc\x78\xc6\x00\xed\x53\xfd\x98\x25\x47\xc6\x72\x85\x97\x33\xe4\x98\x9d\x86\x6f\xe0\x02\x2d\x2f\x20\xae\x4d\xec\xdf\x6b\x20\x56\x90\x66\xb8\xdc\xbe\x67\x7e\x2c\x1a\x2e\x9b\xa0\x5d\xf5\xf6\x9e\xbf\x23\x7d\x89\xd3\x76\x89\x2b\x50\x4e\xf5\x6e\x39\x55\x18\xc9\x87\x4d\x60\x84\x22\x76\x88\x85\xb4\xbc\x8a\xe1\xad\x16\x01\x49\x4f\xc9\x2b\x2a\x03\x8c\x64\x93\x4f\xf5\x02\xa9\x15\x35\x2b\xc7\xbd\x69\xb9\xc5\x6f\x7a\xb3\xe5\xb0\x89\xb0\x60\x02\x33\x8e\x35\x55\xb9\x47\xe6\x6f\x5d\x1a\xc7\xf1\xba\x4a\x31\x4a\x76\x26\x97\xd8\xb2\xff\xa6\x09\x95\x3e\x33\x34\xde\x4a\x3b\x6b\x24\x41\x74\xa5\xaf\x95\x67\xc6\x12\xc3\x8f\xc8\xd3\x60\x7b\x73\x08\xd4\x7d\xcf\xf0\xf1\x2c\x2a\x7b\x37\x63\xc0\x9e\xc1\x87\x80\x0a\x36\x7f\x53\x59\x35\xe0\x40\x5d\x67\x16\x19\xd8\xcc\xbd\xd1\x1f\x6e\xc7\x32\x13\x6f\x31\xde\x1a\xac\x7a\xbb\x18\x04\xd6\x9a\x72\x07\x6b\x0b\x1d\xb6\x1a\x23\x28\x7f\x74\x80\xd0\x7b\x1b\xe4\x31\x0a\xe5\x1f\x00\x28\x77\xc3\x00\x53\xed\xff\xf5\xc8\xce\x73\x29\x78\xcb\x31\x89\xdf\x54\x85\x46\xe2\x4b\x83\xc7\x6c\x56\xd7\x5d\xe9\x30\xeb\x82\x44\xdb\xbc\x8f\xdc\xe1\xce\xa8\xb2\xb4\x2d\xc9\x4b\xc6\x40\x19\x41\xeb\x57\x74\xae\xe8\xfc\xa1\xcb\xeb\x0e\xed\x11\xd6\x93\xc5\x78\x93\x1c\xe5\x4b\x32\xb4\xd0\xaa\x9b\x5c\x8f\x23\x34\x38\xd3\xc2\x5d\x1e\x8e\xc2\x73\x2a\xc3\xda\x7a\xc7\x30\x43\x63\x2c\x47\xa8\x2d\x4e\x20\x1a\x92\xf7\x04\xfb\xff\x0d\x8c\x53\x20\x6b\x84\x70\x8c\x2a\x7a\x98\x24\x7d\xd3\x82\x20\x7c\xac\xe0\xf6\xaa\x02\xaa\x6b\x5e\xd5\x1c\xd1\x78\xd4\xe6\xf6\x1b\xaf\x31\x16\x46\xfa\x39\xaf\x8f\x66\x78\x91\x0b\x62\x6d\x08\xbc\x29\xc3\xb7\xd1\xef\x74\x59\x08\x5c\x7f\xfa\xe4\x30\xd5\xc7\x05\xce\x66\x69\x20\x90\xc3\x59\x2c\x11\x92\x29\x03\x26\x25\x4f\x60\x3c\x95\xff\x1e\x1c\xb1\x15\xc3\xbd\x30\x2c\x31\xe5\x10\xbb\xfe\xcf\x46\x04\xcf\x94\x06\x2d\x76\x9d\xa1\x14\x9d\x41\xcc\x43\xad\x93\xa0\x65\x48\x3c\x7f\x14\xd3\xcf\xc9\x22\x35\x33\xaf\xb6\xf4\xc4\x33\xc7\xb6\x55\x7a\x34\x97\x51\xe8\x69\xa4\xfc\x5c\x0f\xaf\x54\x58\xbb\xa4\x12\x93\xe9\x37\x5a\xb4\x3e\x43\xcb\xef\x7b\x30\xd2\x25\x42\x36\x65\x4b\xe6\xf7\x2a\x14\xaf\x1a\xeb\x30\xc0\x88\xa4\x18\xde\xb5\x10\xc5\xf4\x24\x73\xd8\x32\xff\xdc\xdf\xd0\xea\x8c\x14\xb1\x56\x5d\x9a\x03\xfd\x71\xbf\x79\xd7\xb8\xc3\x6c\xc2\x96\x11\xd5\xbe\x4b\x37\x14\x77\xd0\x07\x15\x26\x9f\x0e\xa1\x42\xf6\xa1\x33\x04\x36\x38\x6b\x03\xaf\x76\x8e\x00\xe9\xa1\xf1\xd4\x5a\x67\x0e\x39\xa5\x82\x8b\x23\x9c\x0f\x05\xca\x82\x24\xaf\x99\xb9\x15\xfe\x70\xb6\x39\x27\x00\x0a\x1a\x9d\x57\x71\xc8\x27\x82\xb3\x47\xfc\xb7\xc5\x4f\x2d\x62\xeb\x10\x6d\x5c\x29\x0c\xd5\x26\x0c\x6e\x28\xe2\xe5\x6f\x24\x2c\x39\x3f\x5e\x03\x3f\xac\x05\x0e\x56\x80\x48\x05\x2b\x21\xb7\x9c\xa2\x53\x03\x18\x9d\xc4\xd3\x87\x97\x41\x3d\x82\x04\xb3\xf4\x2d\x27\x3f\x45\x8c\xdb\xd1\x67\x80\x18\x4d\x81\x61\xfa\x56\xd0\x1a\xc0\x98\x8a\xe2\x35\x2c\x2a\x3b\xb7\x95\x3e\xe1\xec\xa9\xda\x7f\x73\xe4\x74\xfb\xe7\xc7\xe1\x1f\x0e\x1d\x37\x3a\x04\x4b\x1a\x8b\xde\x0c\x03\xfd\xed\x9b\x13\x93\x6e\x51\x41\x7d\x82\x54\xc3\xd8\xd8\xbf\x62\x24\x25\x54\xff\x16\x77\x5e\xc2\x78\xb9\x8d\x9e\x7e\x06\x40\x6a\xb3\x52\x01\xd5\x3c\xe1\xa0\x7f\xb0\x5f\x3a\xcf\x2a\xcb\xce\xb0\xb2\x5c\xf7\x6b\x43\x4c\x38\xa7\x7f\x6a\xfd\xef\xa5\x1d\x7d\x15\xd9\x82\x6c\x9d\x8e\x3f\x08\xf1\xfe\xaa\x29\x5e\xc4\xee\x40\x24\x66\x9f\x5d\x6d\x29\xdc\xd5\x54\x0c\xaa\xd6\xb4\xf9\xb0\xae\x8a\xe3\x85\xce\xfb\xc3\x2d\x8a\x29\xd7\x5e\x22\x4c\x84\xab\xec\x4f\xa5\x4d\x49\x8c\x4f\x6e\xf7\x1e\x6a\x03\x76\x6a\xce\x09\x74\x1a\xa0\xf6\x31\xdd\x91\xa4\xe1\x27\x39\xbb\x46\xf8\xe7\x41\xbb\xfe\x7f\x76\x74\xb9\xad\x34\xfa\x38\xad\xf5\xa1\x8a\x87\xe5\x11\x73\x04\x48\x18\xfa\xd2\xbf\x99\xb1\x20\x53\x86\xe5\x0d\x9f\xa7\xf1\x9e\xfc\xcc\x94\x7d\x86\x6d\xa7\xc7\xc0\x5d\xa0\x9f\xe2\x62\x81\xeb\x06\x18\x45\xc0\x51\x0b\xaf\xc7\x75\xbe\x5e\x0b\x95\xa6\xcc\x49\x45\x8d\xb1\xd6\x82\x43\x58\xe2\x7e\x12\x67\xf1\xfb\x0f\x26\x04\x86\xe3\x5d\x94\x5e\xab\x12\x90\x71\x10\x9c\x58\x1a\x94\x42\x8d\xc5\xf2\x07\x45\xa0\x82\x9d\xfe\xdd\x6f\xde\xf5\x85\x5f\x07\x44\xb6\xec\x49\xa2\x4d\x4d\xea\xb7\x2d\xcf\x37\x7a\xc6\x75\x80\x79\xd9\x52\x61\x1e\x5a\x9d\xb0\x61\xec\xae\xa8\xb6\xca\x33\x3f\x3a\xaa\x00\x3d\x75\xfb\xef\x1c\xd4\xe1\xf3\x9d\x59\xf7\xd0\x88\xf8\x79\xee\xf8\xba\x6a\xd7\x1d\x20\xc9\x05\xf1\x87\xfb\x5c\xea\x61\x90\x1f\xd3\x1b\x52\x07\x98\xcc\x08\x06\x6b\x0f\x4f\x6d\x78\xe0\xe7\x75\xab\x8b\x56\x05\x5d\xe2\x24\x48\x6e\x54\xdb\xee\x7d\x84\xa5\x06\xd0\xe1\xd9\x31\x7f\x53\x99\xff\xeb\xf6\x9a\x66\xca\xe2\x58\x0e\xf8\xe9\xdf\x0d\x5c\x47\xf1\x4f\xc3\x95\xfe\xd3\xaf\x35\x8a\x39\xf2\xa2\x60\x2a\xeb\xb2\x6c\x3f\xc4\xce\x25\x51\x52\xb1\xc5\x4c\xc7\xb3\x37\x36\x86\xfa\x10\x87\x47\xea\x19\x08\x92\xae\x30\x45\x81\x3b\x6a\xd1\xc9\x9a\x8c\x43\x6b\xe7\xc3\x3b\xd1\xd3\x57\xe7\x2f\x26\x68\xc1\x65\x22\x96\xf9\xeb\x7b\xc2\xf0\x78\xf9\xe4\x5f\xe8\x31\xc2\xe9\x6a\x4f\x60\x67\xf6\x70\x51\x54\x55\x3c\x1b\x91\x1d\x40\xeb\x19\x69\x52\x70\xe8\x1e\x52\xfd\x0e\x44\xfb\xbf\xd9\x99\x32\x6d\x9c\xa3\xaa\xad\x62\x3a\xe3\xc5\x71\xe5\xda\x9d\xea\xd5\x15\xa6\x41\xbd\xa6\xed\x9a\x2e\x3b\x39\x5d\xd6\x24\x89\xb1\x46\xc6\xc4\x23\xe5\x9d\x54\x3e\xa3\x72\xea\x5c\x5d\x64\x53\x8e\x3a\xb4\xea\xab\x02\x52\x99\x17\xd7\x84\x9d\x2f\xe9\xed\xfd\x07\x77\xf6\xc7\x67\x38\xfe\x16\xd5\xa8\xd6\x7c\x8f\x00\xe3\xea\x2c\xd7\x95\x84\x1f\x38\x2c\xdd\x31\x84\xcb\x18\x05\x28\x9b\x65\x74\x36\x11\x19\xa7\x31\xfd\x13\x01\x2c\xdb\x1e\xd2\x8f\x58\xdc\x24\x7a\xf7\x55\xbb\x36\xb7\x03\x68\x82\x56\x4b\x50\x98\x04\x7b\x78\x9f\xd2\xb8\x4e\xcf\xfb\x38\xfd\xdf\xeb\xad\xec\x25\x95\x38\xee\x9a\x03\x23\x92\xe3\xfd\x7d\x79\xc0\x65\x7e\xe7\xd2\x68\x3c\xc9\xee\xf9\x33\x2d\x51\x08\x42\xb1\x6b\x7f\x11\x84\xa1\x26\x59\xf6\x20\xbf\x83\xaa\x42\xa6\xa9\xad\x41\x25\xa4\xe4\x30\x7a\xda\x5f\x94\x8a\x11\xaf\xfc\xdc\x50\xb0\x5c\x02\x6f\x38\xa9\x60\xf3\xf3\x45\x34\xa0\xc8\xe9\x3d\x8a\x87\x22\x0e\x17\x5c\xc5\x65\x9e\xc9\xf8\x3f\x9c\x3a\x67\x15\xc6\xb9\xad\x3f\x9a\x21\x34\xd5\xd9\x54\x17\xb6\xc4\xa1\xc9\x8f\xc3\xf0\x48\xba\xbf\xfc\x1f\xdf\x91\xaa\x02\x86\x61\xc0\xa0\xc4\xaa\xf4\x24\x84\x01\xf5\xc8\x11\xba\x04\x7f\x01\x5c\x04\xf8\x14\x90\xc6\xdf\x4b\x2d\xb6\xbe\x45\x84\x79\xed\x0a\x21\xd3\x47\xa7\x75\xce\x94\xbb\xc0\x9b\xd5\x3c\xaa\x61\x08\xc8\x2c\x99\xb4\xd1\x09\x55\x4b\x7f\x99\xae\xd1\x6e\x1b\x5b\xd0\x1e\x9f\xd1\x16\xba\xdd\xc5\x25\xd4\xa2\xb0\x9a\xb0\x55\x7f\x17\x9c\x55\x3d\x55\x83\xa2\x16\x32\xbb\x00\x71\x47\x64\x85\xa5\x21\x37\xd4\x5b\xe4\x0b\x6d\xe3\x5c\x78\x6c\xec\xe0\x5e\x41\xc9\x55\x6b\xe3\xb1\x91\xc1\xd6\xf1\x4a\xe7\xea\xe9\xc3\x7b\x66\x9f\x0d\xe7\xfe\xca\x52\x13\xee\x5a\x9f\xd0\x9d\xb2\x0b\xd9\x85\x54\x49\xb0\x53\x5f\x4f\x9b\x02\xc8\xd4\x05\x1a\x9f\x9a\xf1\xec\x45\x61\x18\x96\x17\xf6\x35\x08\xb1\x09\x33\x2a\xa0\x5c\xc9\x87\x11\xf6\x98\x77\xef\xb1\xac\x80\x14\x4e\xc6\x27\x10\xe6\x48\x57\xfb\xeb\x3a\xaf\x07\xec\xfe\x99\x07\x6b\xba\x1a\xeb\xc5\x31\x2a\x88\xd8\xc2\x89\x7f\xe2\x23\x42\x6f\xd9\x4a\x2c\xb6\x7a\xb9\x29\x2c\x6d\xe1\xa2\xf4\x7e\x3e\xd9\xbb\x51\xbd\x87\xbb\x42\xa7\xfe\x9e\xcb\x9a\xa1\x28\x10\xdf\xc9\x86\xbd\x3d\x0c\x5c\x3f\xe4\x98\xf9\xdb\x63\xd5\x7e\x4a\x76\xb9\xa7\xee\xe6\xe2\xc7\xfc\x04\x67\x20\x82\x7a\x2a\x87\xf0\xe5\xe5\x97\x4c\x8b\xae\xdf\x6a\x5c\xc2\xa3\xe6\x3e\xdd\xd6\xf0\xb7\xe7\xa5\xeb\xc0\xa4\xa5\xbf\xe2\x66\xe2\x5f\x13\xc5\x72\x87\x12\x70\x2a\x75\xcf\xa3\x12\xaf\x73\xa8\xfd\x61\x9c\xa3\xa6\x46\xeb\xc7\x86\x8c\x81\xa9\x2a\xfe\x47\x46\xd5\xd2\xdf\x19\xa4\x6e\xfa\xd4\x78\x91\x97\xeb\x60\x6d\x6f\xae\x24\x27\x11\x86\xd8\x4a\x3a\x32\x09\xbf\x43\x40\xdb\x3e\x94\x18\xff\xbc\x7f\x3a\xff\x68\x5d\xa0\xc2\x6c\x53\x03\xe1\xb7\x20\x03\xf1\xa9\x8d\x1b\x52\x04\xad\x6c\xbf\xbe\x64\x7c\xde\xd0\x82\xc1\x75\x33\x5d\xf2\xa1\x9f\x01\x47\xfd\x32\x2f\xe5\x82\x5b\x9d\x8e\xec\xad\x96\x78\xc4\xbe\xe0\x32\x6f\x7f\x23\x61\x39\x98\xe3\xb2\xef\x9d\xc6\xf2\x15\x26\x11\xb0\x0d\xdc\x2a\xa0\x4e\x00\x1b\xc1\x98\x96\x31\x86\x3a\x44\xd2\xb7\x16\x88\xe6\xba\xca\x0f\x23\xad\xd5\x1b\x0e\xbf\x25\x64\x92\x1c\x46\x61\x95\x44\x81\x2c\xd7\x72\xdb\xdf\x3b\x40\xc3\x93\xe8\xf2\x24\xcf\x6d\x11\x50\x8b\xa7\xd8\xca\x06\x01\x02\x16\xe7\xa4\xde\x55\xb6\xd4\x61\xe0\x2a\x76\x19\xa3\x9b\xfa\x9f\x0b\x31\xa0\x35\x55\x6a\x55\x2f\x3f\x38\x84\x20\xb9\x72\x54\x7d\xf1\x10\x7e\x10\x74\xe9\xdc\x83\x6d\x43\x6e\x52\x3f\x52\x09\x44\x7f\x4e\xd5\xbb\x8a\xf3\xec\x94\xee\xa9\x02\xec\x1e\xdc\x41\x15\x2c\x26\x89\xa4\x13\xa5\x70\x1b\x64\xae\xf3\xe4\x17\x66\x2b\x2d\xf4\x64\x77\x9b\x02\xe3\xb3\x82\x49\xb4\x90\x69\xed\x10\xbf\x39\xcc\xe3\x37\xe3\xa6\x3b\x3a\x18\x37\x53\xa6\x80\x47\x78\x9f\xda\xdb\x2f\xe6\x72\x18\x49\x7f\x87\x70\xf2\xea\x57\x17\x77\xf7\xd9\x67\x5d\xd5\xca\x9b\xa6\x73\xf5\x22\x74\x6f\x27\x86\x8c\x92\x28\x40\x2c\x30\x8a\x9a\x9c\xc2\xcf\xc2\xbc\x51\x74\xa1\xc4\x53\x05\xf4\xb8\xf4\xa1\x85\x3c\xf3\x0b\x0d\x37\xd2\x07\x84\xff\xe7\xf2\xd6\xe2\xf6\x94\xd7\xd3\x4e\x39\xc7\x1d\xd0\x86\x69\x0a\x08\x32\xbb\x53\x91\x22\x28\x42\xbc\x5a\x7c\xe3\xa0\xa8\x87\xf1\x28\xe8\x5f\x02\xb6\xb7\x7b\x3b\x64\xda\x7c\x2a\xe8\xb2\x84\xae\x3a\xed\xba\x02\x83\x5b\x02\xe0\xfc\x01\x02\xfa\x7b\x9c\xdb\x46\x5c\xe5\x37\xdf\x39\xe4\xf7\xb9\xe5\x0d\xb8\xe5\xca\x62\x1f\x25\x25\x82\x38\xb8\x5c\x0b\x5a\xe5\x04\x8d\x8d\xd7\xdc\x48\x05\x54\xdc\x9b\xec\x04\xa7\x59\x32\x78\xb3\xcb\x3e\x23\x3a\xe0\x7f\xb0\xfc\x8c\xbf\x1c\x28\xcb\x47\xe7\xae\xc8\xdc\xa1\x11\xc2\x7d\x55\xf8\x44\x9b\x51\x92\xbf\xb1\xe5\x27\x57\x14\x60\xcb\xda\xdb\xcf\xae\xf9\x35\x20\x78\x7d\xf3\x08\x85\xa2\x9b\x1a\xa3\xff\xa8\x0f\x80\x47\xe1\x90\x97\xb6\x9c\xdb\xcc\xdf\x1a\x12\x83\x4d\x89\x38\x22\xb2\xc2\x1a\x83\x49\xb8\xa0\x90\x57\xf0\x3f\xda\x77\xa1\xc9\x27\x0a\xf0\x36\x1b\xdc\x9b\x67\x0d\x2f\x96\x1a\x34\x4a\xcd\x42\x83\xc2\xf1\x62\xc2\x5c\xa6\x66\x9e\x87\x2e\x11\xd8\x6c\xa1\xc5\x81\x12\x9a\xec\xe4\xfd\x9a\x3b\xbf\x5d\x0e\xdb\x26\x55\x75\xa5\xd5\xf4\x9f\x13\xab\x10\x44\x67\x3a\x5a\x9d\x9b\x8b\x47\x01\x95\x08\x66\xad\xa3\xc0\x0f\x9f\x2e\x4f\xf0\x2e\x0f\x5b\x5b\x77\x86\x76\x90\x22\xc2\x10\xf7\x22\xd1\x28\xc1\x2a\x0d\xb5\xb2\x90\x44\x88\x96\x7c\x01\x61\xb1\x1f\x64\xfd\xc1\x74\x5d\xcf\x8e\x44\x3b\xf5\xa8\xec\x8e\xcf\x1d\x4e\x2c\x53\x25\x0c\x20\x6f\xc1\xa3\xfe\x99\xef\x93\x48\x2c\x7e\xfa\xbd\xaf\xce\xaf\x0e\xe4\x54\xda\x34\x3d\x99\x5e\x2e\x7a\x75\x16\xba\xe9\x4e\x0f\xfd\x06\x6b\xa4\xe0\x2c\x18\xee\xbe\xa7\x7a\xef\x90\x91\x14\x12\xf5\x8c\xc2\xdb\x12\xfd\x64\x25\x01\x3c\x6e\x7d\x79\xc8\x16\x46\xc1\x88\x4d\x06\x58\xbf\x7c\x97\x49\xa6\xb9\x2c\x7c\x80\x63\xae\x8d\xdb\x32\xc8\x42\x6f\x58\xca\x50\x62\x10\xa9\xd1\xb1\xf3\x0c\x6f\xa0\x2c\x34\xe1\x8c\x8d\xf3\xa5\x68\xf4\x91\xbf\xa4\xff\xc9\xfb\xc6\xf6\xb1\xd6\x78\x73\xe5\x50\xb7\x6d\xb4\x36\x83\x78\x70\xc2\x73\x58\xb1\x43\x99\xe0\x17\xd8\x9b\x45\xb1\xcb\x2f\x9f\xbb\x1d\x18\x3d\xbe\xba\x9b\xdf\x5c\x25\x5d\xf1\x66\x4d\x27\xb9\xff\xee\x7f\xcf\x86\x79\xfb\x45\x4f\xda\x16\xf4\x68\x1b\x6a\x6d\xed\x5d\x49\x8c\x4e\x81\x37\x09\x9c\xc7\x54\x91\x22\x0e\xbd\x65\x28\xc3\x71\x79\xa3\x3a\xa8\xf2\xfd\x9d\xb3\xa0\xa7\x15\x97\xe2\x84\x58\x0a\x4b\xb1\x13\x27\x0c\x5f\x6a\x58\x91\x85\x13\xca\x76\xb5\xe2\xcf\xc3\xf6\x34\x59\x96\xaa\xb9\xf3\xab\xa6\x2b\xf9\xd5\x53\x2d\x18\x89\x90\x41\xcd\x4b\xdd\x4a\xec\xa8\x81\xa3\xfa\x9c\x64\x92\x4d\xd3\xa2\x94\x0d\x73\xd0\x3e\x57\x8c\xab\xf6\xc8\xfc\xb5\xe0\x2f\x43\x48\xf4\xd6\x91\xef\x4a\xc9\xce\x2b\xda\xd8\x08\x35\x80\x92\x32\xb0\x73\xa3\x6d\xd2\x38\xe5\x5f\x59\x78\x0a\xd0\xd2\xe0\x05\xa2\x1d\x9c\xd5\x77\xf5\x0f\xdf\x7a\x5a\x50\xef\xbe\xc9\x20\xa9\xb9\xc2\x90\x65\xed\xbc\xfe\xd4\xaf\x98\x1f\xa6\xfb\xea\x3e\xbc\x52\xfb\x8d\x24\x7a\xcd\xd4\x9b\x97\x8d\xd0\xcc\x2b\xf8\x82\x8d\x64\x70\xc9\xc3\x68\xfe\x61\x25\x7b\x54\x42\xb8\x5b\x82\xc7\x2e\xb4\xfd\x9c\xc9\x55\xc7\xd6\x5e\x0b\xc5\x43\xa2\x1d\x20\x03\x43\x78\x9f\xfa\x0b\x2d\xc7\x1a\xb5\x70\xb6\xa9\x99\x7a\xc3\x18\xa5\xea\x29\x45\x65\xe5\x6a\xc6\x7d\xeb\x4d\xbe\x3a\xf4\x3b\xdc\x3f\x9e\xc3\xb6\x80\xeb\x4a\x1c\xc3\xbd\x48\xa1\x0d\x49\x93\xc6\x9a\x77\xaf\x63\xd7\x2d\xa4\x16\x4b\x38\x85\x54\x3e\x76\x12\x8c\x56\x70\xb0\x4a\xfc\xc3\x17\x55\xce\x5d\x7a\xa4\xa8\x0c\x4c\x10\x20\xd4\x4f\xa3\x60\x40\xc1\x09\x99\x8c\xd1\x57\xdb\x36\x6c\x1b\xff\xdc\x02\x62\xd2\x3d\xea\x82\xcb\x11\xa2\x22\x40\x53\x15\x8f\x83\x94\xfd\x9d\x63\x21\x41\x1c\x99\x4d\x01\x05\x4d\x0c\x82\x19\xa4\x89\x8b\x29\x1f\x69\xee\x14\x68\xbf\x94\xca\xb5\xe6\x92\x71\x05\x1a\x21\x74\x48\xbd\x68\xb1\x3d\x36\xd1\xad\x54\xd7\x17\x0c\x07\x00\x2d\x2d\x96\xeb\x98\x18\x0a\xa8\x80\xf7\xef\xfd\x4d\x5a\x37\xcc\x4f\x65\x2a\x96\x6a\xca\x87\xc4\x88\xe2\xea\x1c\xc5\x15\x50\x4b\x02\xcb\x4b\x91\x81\x17\xc9\xbe\x2f\xad\x71\x87\xf2\xa7\x75\x25\x56\x6b\xfa\xa3\x6a\x13\xf7\x9f\x73\xf8\x91\x4f\x70\xb8\xc6\x0b\x12\xc3\x21\x62\xf4\xae\xb3\xba\x71\x5a\xb2\x38\x00\xf0\xaf\x9a\xfc\x65\xbe\xe3\x35\x0c\xbc\x51\x92\xa5\x74\x3e\x75\x99\x21\x26\x87\x90\xda\xe8\x78\xda\x04\xae\x36\x16\x1f\x25\x67\xe5\x14\xe6\x6b\xf4\xb4\xfe\x7a\xde\xe9\x95\xa8\x15\xbc\xf6\x04\x51\x83\x04\x9f\xc7\x2d\xb7\x87\xcd\x71\xf0\xf6\x53\xf7\x0d\x1f\xdb\xc2\xaa\xfb\x1d\x5e\x1d\xcf\xd5\x76\x3f\xf5\xfd\xd3\xbf\x54\x54\x26\x38\xfa\xc1\xb1\xfe\x6c\xca\x7e\x5e\xa8\x87\x28\x2f\x8d\xce\x22\x94\x19\x99\xba\xc3\x5a\xed\x8e\xa2\xc0\xec\x31\x88\x29\xb5\xc3\x44\xd1\x95\x06\x9d\x14\x27\xc6\xd1\xef\xeb\x79\x5e\xe3\xea\xb0\xef\x93\x17\x36\x12\x7d\x91\x0a\x60\x21\x41\xa4\xc6\x28\x70\xae\x71\x77\xff\x8e\x8a\x44\x14\xba\x6c\x96\xfe\x8f\x0d\x98\xe3\x07\x1e\xa4\xf5\xed\x57\x68\x2d\x81\xea\xc5\x43\x9a\x45\xe2\x66\xec\x1a\x25\xd2\xe6\xd9\xc1\xd2\x16\x4b\x70\xc1\x27\x50\x21\xb8\x37\x4e\x6d\x4d\x34\xff\x68\x44\x30\x2a\xa2\x56\x26\x44\x53\xe1\x86\x6d\x9e\xcd\x63\x5d\xd3\x92\x6d\xea\x1a\xd0\x51\x13\x21\x5a\x44\x81\x75\xf4\xd2\x6b\x23\xf8\x71\x5b\x91\x02\xd4\x1b\x35\x77\x6d\x5d\x06\x93\x26\xc8\x7c\xfb\x25\xc2\x6b\xd3\x6a\x17\x67\xfa\xd5\x4f\x53\xe3\x53\xf7\x60\xef\x8d\x87\x34\x53\x5e\x2d\x0b\x4b\x86\xbe\x9d\xb4\x36\x8c\x28\x56\x6d\x3c\x30\x74\x04\x68\x12\xd0\xda\x7b\x9f\x3a\x7e\xaf\x8c\x7b\xae\xe5\xa1\x06\xf9\x85\x1b\x40\x99\x04\x91\x2e\xdc\xdc\xe2\xab\x23\xff\xf8\x13\x33\x6a\xa4\x0e\xad\x05\xaf\xe3\x4a\x42\xb3\xd3\x98\x3a\x2a\x62\xe6\xbf\x31\x43\x62\xef\x7c\x9b\x28\x6c\xe8\xe3\x35\x74\xb5\xba\x65\x0d\xf5\xb4\x20\x8e\x48\xf3\xa2\x88\xc2\x19\xca\xcc\x5e\x4a\x5f\x5b\x51\x1b\xc2\xd0\x38\x90\x51\x27\x70\x62\xb6\x7e\xb1\x04\xcc\x62\xcb\x96\x10\xa5\x1c\x73\x47\x40\xbb\x2c\x26\x49\xb6\x06\x04\x6a\xc5\x76\xdb\x09\xf8\xc3\x2d\x78\x2d\x97\xc3\x86\xd0\xc7\x16\x92\x0d\x03\x2a\x26\x70\x43\x5c\x2e\xc7\x3f\x3b\x03\xac\x38\x60\x1c\xf4\x16\x45\x2e\x1c\x9e\x7c\xe4\xce\x34\x2d\xcd\x69\x29\xc2\x75\x81\xde\xb2\x34\x23\x14\xc7\xb0\xc2\x80\xd7\x26\x60\x19\xa1\x2f\x41\x65\xfc\x54\x5c\x18\x93\xc0\xd1\xdf\xea\x74\x6a\xd6\x91\xd3\xec\x40\xd3\xa3\x40\x4b\xb4\x65\x77\x2a\x43\x2a\xcb\x6e\x92\x3d\xb6\x1b\xb0\x02\x57\x3f\x32\xa8\x84\x9b\xc3\xa8\xd2\x7d\x8a\xee\xae\xeb\x96\xea\xbf\xfd\xf7\x6f\x8b\x0d\xbc\x33\xde\x23\xdf\xe2\x6c\x1f\x1e\xfb\x77\x34\x8b\xe1\xbc\x60\xa4\x87\x88\x3d\x19\x0f\xaa\xea\x44\xc7\x6d\x34\x99\x6e\x79\x89\xf6\x9a\xf5\x68\xab\x3e\x1d\x4e\x6d\x2d\xc6\x0e\x4d\x18\xcc\x5d\xab\xb8\x9d\x94\xe9\xd5\x94\x5a\x69\xa0\xe3\x31\xa7\x12\x68\xf4\xfa\xf6\xb9\xfd\x7e\x24\x4e\xf9\x2e\x8a\xd4\x74\x97\xec\x99\x62\xbb\xa7\x4d\x2b\x5d\x88\x78\xba\xfb\xa7\x18\x74\x1a\xef\x81\xba\x4d\x02\x68\x72\x16\x2c\x55\x83\xb1\xd9\x5e\x45\xf8\x8b\xd2\x6f\x61\xa6\x7f\xd1\xea\xe6\x63\x42\x8d\xbd\xd2\xc8\xdf\x31\xc2\x56\xe7\x2a\xcf\x9e\x49\x97\xfd\xe6\xfd\x60\x68\x09\x87\x25\x15\x84\x39\x6a\x9a\x69\xe3\x02\xbe\x90\x40\xe4\x50\x46\x12\xcb\xba\x29\x48\x89\xbb\xf1\x1e\xce\x57\x12\xff\xe5\xc3\x0a\x63\x2c\x87\x38\x43\xed\x8e\xcb\xbd\xec\x17\x3a\xd6\x6d\x64\x3b\x3b\x1c\x11\xf3\xa5\x10\x57\x33\x50\x00\x68\x4e\xf9\x44\xee\x10\xf5\x8f\xd0\xf1\xf0\x9e\x3b\x1f\x22\x48\xad\x74\x89\x27\x6f\xfc\x8c\xf2\x1f\x08\xf8\x59\x0c\x58\x24\x3e\x60\x6d\xfa\x24\x0f\x30\x66\xbe\x49\xc2\x2b\xa1\x91\x5b\xd5\xfb\xc3\xc9\x2f\xc9\x3e\x27\x68\x54\xc2\x69\xc7\xdc\x3a\x2d\xda\x51\xda\xfb\x36\x2e\x6e\xc3\x5a\x60\x0d\xb3\xe5\xdd\x0f\x8d\xe4\xd3\xed\x6c\x7d\xf9\x42\xc7\xaf\x47\x3c\x40\xc1\xa8\xb6\x77\x31\x59\xb0\x0c\xb3\x71\x19\x26\xd5\xa4\xce\xc5\xa8\xd2\x8e\x97\xe0\x61\x20\x0b\x5a\xfa\x6f\xec\x89\xe9\x04\xbe\xf7\x85\x42\x0a\xad\xb3\x98\x20\x8d\xc2\xfa\xb8\x7f\x3c\x56\xe5\x53\x58\x5a\xe0\x3f\x58\xf6\x45\xd9\xb0\x1a\xb2\x97\x78\x29\xc0\xbc\x16\xf4\x54\xa6\xb0\x99\xbc\x07\x42\x84\xa7\x58\x1f\x55\x41\x0b\x29\x0f\x91\xd8\x81\x3e\x18\x43\xbf\x5b\x54\x52\xe0\x77\x2f\xd7\xc3\xf3\xac\x55\xc6\x37\x89\x8b\xdc\x07\x33\xa5\xe7\x9c\xc5\x93\xc9\xe0\xe0\x5c\x27\x3a\xed\xb3\xe2\x76\x20\xbf\xb7\x82\xdb\xa3\x98\x22\x08\x8e\x29\x40\x24\x35\xa9\xba\x37\x6f\x7d\xde\x4d\x12\xeb\xf1\xff\xe4\x9a\x15\x54\x88\xfd\x07\xf8\x76\x22\x87\xdc\xe4\x8c\x5a\xff\xcc\xe0\xf1\x2d\x99\x5e\xfa\xb7\xb0\xf9\x95\xfb\xd1\x2b\x96\x13\xde\xb4\x27\x58\x69\x29\x07\x1d\x41\xf8\x01\x52\xfc\x80\xfd\xae\x9b\x72\x89\x3f\x84\xc6\xb1\xe1\xad\xd3\x2d\x06\xde\x4f\x06\x7d\xdf\xce\xd9\xb0\xa9\xbb\x9f\x68\x18\x62\x7d\x3d\xaf\x98\x76\x28\x88\x14\x4c\xe5\xdf\x7b\xd1\x64\xe2\x94\x79\xfa\x4d\xbb\x08\xa7\xe9\x47\xc3\x8d\x14\x24\xd5\x50\xe7\xe2\x5e\xea\x0b\x89\xc1\xd5\x8c\xf3\x47\xaf\xa7\x9c\x54\x7d\x64\x01\xa0\xfe\xec\x9a\x68\x67\x7d\xcb\xe7\x3e\xf3\x5d\x18\xe8\x06\x65\xac\x54\x81\x3f\xa3\xb0\xe8\xe7\x34\xb1\xe4\x6f\x3d\x14\xa3\x6b\x6c\xcc\x25\x9b\xd6\xce\xb3\x2e\xf3\x5a\x2a\x23\xbf\x16\xd8\xf8\x13\x9c\x51\x9b\xbd\xcf\xe0\xac\x1b\xce\xc7\xd6\x34\x67\xc2\x66\x21\x7d\xea\x77\x4a\x94\x56\x50\xd5\xd9\x5e\x38\xc3\x9b\xfc\x2d\x28\x75\xc7\x49\xc7\xfd\xa2\x39\xf1\xe4\xab\x01\x76\x60\xf3\xc3\x8f\x97\xf5\xb8\x7e\xbf\x48\x03\xb5\xcd\x42\x81\x3a\x57\x60\x6b\x8d\x02\x49\x86\xa9\x5f\xe2\xa3\x4b\x05\xb5\xf1\xc7\x7c\x6a\xc8\x5e\x3e\x76\x38\xea\xac\xd1\x5f\x79\x2c\x63\x38\x63\xb5\xf3\x9f\xe2\xe5\x5e\x08\x21\xeb\x44\x14\xaa\xd3\x7e\xb0\xab\x16\xbf\x3d\x16\xb6\x27\x58\xfc\x8a\x35\xc5\xe4\xa0\xc8\x36\x34\x01\x83\x71\x40\x98\x19\x4d\xb6\xe3\xc7\x4f\x20\x90\x80\x69\x4e\x59\xc7\x68\x6c\xe1\x7d\xbc\x14\xa6\xb6\xab\xc1\xb1\x6b\xc2\xcf\x12\x68\xfa\xfb\xcc\x35\x21\x68\x27\x05\xd6\x57\xa2\xea\x97\x53\x0c\x6e\xf0\x74\xe2\xb8\x7b\x9b\x05\xea\x5e\x10\x6a\xad\xb6\xed\x9a\x57\x8c\x53\x47\x0e\xee\x9e\x75\xf6\xd1\x52\x0a\x9f\x73\xe0\x67\x41\xd1\x0a\x2b\x27\xc9\x53\x67\xac\x97\x29\x29\xbf\x7f\xeb\x0d\x58\x86\x6e\x59\x15\x1a\x09\x74\x48\xcb\x90\x88\x03\xa2\x6e\xd9\xde\xd9\x0c\xa2\x12\xbb\xdc\x55\xa4\x30\x26\x7e\xd3\x71\xa3\x9b\xfe\xa2\xb9\x57\x3f\x66\xd3\x53\x54\xbd\x83\x5d\xdc\x82\x57\x99\xf3\x5a\x18\x75\x1c\x4b\xfb\xcd\x8d\x2e\x40\xf9\x92\x28\xb0\x76\x75\xec\x90\xa7\x7c\x7f\xae\x55\x30\x95\xd1\x7b\x93\x32\xdd\x7f\xa2\x92\x89\x87\xc4\xc4\xb9\xb4\xdd\xda\xf9\x06\x6d\xbb\xe8\xdc\x3d\x53\xf9\x20\xc2\x70\xac\x2e\xf3\x38\x04\x98\x4d\x1c\x63\x23\x76\xc7\xd3\x87\xdf\x28\xea\x03\xee\x0b\x84\x61\x1c\xbf\x68\x6b\x6f\x5e\x69\x6f\x28\x2e\xe0\x1f\xf8\xb7\xd6\x52\xe1\x76\x05\xb7\x1e\xd6\x89\x71\xd5\x0b\xc5\x70\x5a\xe3\xc8\x8c\x52\x05\x0e\xf6\xd0\xd0\x1e\xd9\x22\xe9\x24\x06\x43\x11\x58\x43\xe7\x8a\x1d\x19\xa2\xac\x9d\x9e\xa5\x85\x4d\x55\x4a\x88\x9a\x94\x42\x29\xe2\xc2\x87\xa0\x6f\x39\x03\x14\xb7\x77\xda\x4b\x98\x69\xc3\x14\x84\x7f\xe9\xaf\x5e\xf1\x76\xd2\x38\x16\x23\xe9\x5b\x94\x89\x3e\x24\x55\x17\xfd\x19\xea\xcc\x40\xcc\x85\xe7\x09\xbf\xef\xe3\xbb\x10\x2a\x84\x27\xd4\x00\xe9\x70\x8b\xd5\x9c\xab\x0a\x55\xd9\x27\xf5\x48\x14\xff\xee\xed\x30\x68\x5b\xc8\xa5\x6f\xf7\xb6\x3f\xa1\xae\x47\xdf\xa8\x67\xe5\x74\x0c\x30\x09\xea\x64\x1b\xa4\xe0\xa9\x80\xca\x66\x64\x43\xf0\xe4\x21\xa4\x23\x71\xda\xa0\x4b\xc5\x7f\x5f\x7d\x95\x86\xbe\x4d\xcd\x1d\xe7\x20\x31\x0a\xc2\xd3\xc8\x44\x7e\x75\x71\x03\x50\x68\x8d\x75\x07\x5b\xa1\xa0\x99\x04\xe8\xd1\x81\xd7\xe3\x72\x3f\xff\xb1\x7f\xa5\x1e\x0b\x89\x8b\xd9\xaf\xc8\x93\x89\x0f\x6a\xf7\x3d\x33\x82\x53\xdb\x37\xe1\xb8\xbf\x95\x3c\xe9\xf2\x8a\x5e\xb0\x65\xc7\xa2\x32\x86\xf3\xea\x80\x20\xaf\x7a\xb1\xc1\x4a\x67\x09\x20\x3f\xef\x51\xa4\x22\x89\x73\x59\x73\xc1\xf9\x5b\xef\x2f\x30\x08\xb7\x05\x0e\xd8\x5a\xed\x4f\xe9\x27\xd8\x71\xd9\xc8\xee\x07\x63\x15\x9e\xa3\x45\xe6\x1b\x0f\x78\xd0\x2d\xd4\x46\x82\xa9\x27\x6f\xcb\x09\x48\x6f\xf2\xdd\xf8\x07\x6a\x9b\xe6\x65\x14\x77\xec\x62\x0a\x07\x22\xba\x7b\xb3\x9b\xa4\xf5\xa4\xad\x07\x9f\x83\x72\xf3\x92\xb7\xa6\xd3\x54\x59\x13\x63\xbf\x14\xcc\xaa\x24\x42\xae\xc4\xb1\x69\x81\x7a\x8b\xb5\xc0\x70\x73\x3c\x9c\x71\xd9\x42\x46\x2c\xc3\x89\x18\xce\xf2\x65\xe6\xa7\x2b\xe3\x4c\x81\xf4\x75\xd1\xca\x88\xdf\xe8\x75\x8b\x46\x05\x1e\x77\x1f\xe8\x6e\x71\xfb\x8e\xcb\xac\xe2\x68\xa8\xd6\x3f\x39\xe0\x7e\x49\xf0\xa3\xe1\x58\x2b\x77\x23\xcb\xd4\x4d\x61\xc5\xc3\x4a\xbe\x8c\x68\x30\x74\x75\xa7\x49\x5b\x58\x08\x0f\xd2\xc0\x03\x95\xcf\x40\xe0\xbb\x1f\x88\x95\x07\xaa\x2b\x14\xd9\x05\xc6\x32\xfa\x43\x6e\x51\xf6\x19\x70\x1a\xc6\x74\xb4\xef\x56\x65\x49\x25\x82\x60\x6e\x2d\xca\x08\x3c\x88\x8c\xca\xc7\xc6\x07\x1d\x3b\xd5\xa3\xd6\x9c\xc3\xf8\x2f\x76\xb3\x69\x6a\xf5\x9e\x91\x9c\x9b\xc8\x3a\x91\xbf\xcc\x94\x56\x26\xe0\x84\xc6\xcf\xf3\xf7\xcd\x7e\x9f\x8e\x7e\xf0\x1a\xfa\x4c\xf2\x70\xf5\xdf\xde\x1d\x8e\xf9\x5b\x90\xf6\x8a\x86\x69\x51\xb2\x9b\x44\xe3\xd1\x1d\x0a\xe4\x9e\xef\x3c\xf7\xb6\x18\x3d\x07\xe6\x34\x17\x1f\x01\x83\x39\xb6\x83\x42\xe6\x1e\x8d\x42\x9b\x42\x4c\x3c\x65\x0d\x9c\x2d\x58\x6d\xed\xd9\x44\x43\xb5\xc8\x9e\xd2\xe6\x92\xf8\xb5\x81\x2c\x9c\xb0\xa7\xab\x7c\xc3\x2e\x9c\x4e\xb2\x82\x54\x5f\xf5\xcc\xb8\x2c\x52\x33\x1c\x43\x86\x62\x1a\x4d\x5d\xdd\xa4\x83\x04\x4a\x7f\xb4\xd9\x6a\x2e\xe5\x41\x52\x80\xa7\x9f\x3e\x52\x4c\x38\xb9\xc2\xc4\xc7\xff\x13\xbc\x54\x16\x7e\xb4\x3d\xb8\x53\x81\x60\x40\x7a\x99\xd8\xd3\xe5\x3c\x98\xfe\x35\x99\x3c\x8d\xba\x7d\xc9\x46\x6d\x15\xcf\xcf\x34\x25\x53\x49\x83\x4c\x21\x69\xf8\x94\x69\x8e\x73\x84\x89\x7e\x4b\x0d\xb3\x71\xb2\xbf\x3b\xe1\x7a\x8e\x47\x1c\x7b\xdc\x01\x98\xbe\xae\xb2\x9b\x11\x18\x87\x15\x84\x9b\x13\x44\x8e\xf2\xbf\xaa\xbc\x16\x28\x87\x4e\x1d\x06\xae\x83\x38\xbf\x9d\x3c\xff\xfc\x6d\x27\x71\xce\x1a\xcb\x28\x8d\xbe\x7b\xa2\xd3\x7d\x76\x03\x29\xcd\x54\x53\x1f\x6f\x18\xb7\x29\xa0\x3e\x6f\x9c\x2f\xaf\x5d\xd1\x2a\x06\xff\x0c\x43\x6e\x97\xd0\xda\x50\x2b\xe5\x9d\xcc\xf7\xb2\x0f\xc9\xdf\x57\xd7\x14\x6d\x0f\x87\x68\x0f\x7d\x61\xcb\xe3\x7c\xf4\xed\xac\xa8\xec\xe9\xaa\x64\x82\x78\x3e\xb9\xfd\x85\xb1\x18\x9c\x51\x2c\xdb\x87\xe9\x36\x5b\xab\xa0\x32\x86\x0c\x88\x49\x96\xc8\x74\xa5\xd8\x25\x12\xf6\x42\x9c\xdb\x0b\x54\x28\x10\xa3\xc0\xb4\x60\xf5\x03\x0a\xd4\x07\x1b\xc1\xfb\x53\xf6\x9b\x64\xdf\x33\xb8\xc7\x9e\x34\xf6\x95\xce\x66\xde\xc9\x78\x28\x72\x5e\x29\x41\xdc\xea\xad\x03\xae\xff\xa7\xff\x4f\x7f\x9d\xdf\x8e\x1b\x0a\xac\xac\xb0\x11\x8f\x98\x56\x11\xbd\xe2\x59\x10\x8d\xa6\xde\xc2\x0c\x60\x50\x36\xe8\x26\xb3\x44\x2b\xd3\x3a\x07\x43\x51\xb5\x44\xbf\xab\x16\x78\xed\x9d\xb2\x9c\xfb\xa6\x84\xf5\x1b\xa9\xb9\x40\xc7\x35\xe9\x11\x6e\x49\xc7\x99\x5a\xd8\xd9\x4d\x1a\xf8\xf2\xd8\x10\xd7\x76\xbf\xa3\x96\x82\xc7\x80\x18\x02\x49\x8a\x98\x4d\x89\xa9\x53\x6a\xb3\x71\x59\xd6\x0c\xd9\x36\x02\xb8\x56\x02\xb8\x36\x02\x58\x7f\xe3\xb2\x58\x07\xe9\x41\x07\x99\xeb\x75\xcb\xb7\x3b\xd2\xc2\xd1\x72\x15\xf8\xc4\xf7\xd6\xf3\x5a\x93\x79\xe7\x0d\x65\xba\x91\xe8\x05\x13\x4e\xdb\xfd\xd8\xf4\xcc\x6c\x2f\xe4\x49\x96\xbb\x88\x79\x93\x3f\x76\x91\xf7\x46\xe3\xcf\x1c\xab\x9f\xba\xf4\x70\x43\x16\xa5\x7f\x63\x99\x29\x77\xf3\x9d\xd9\xee\xdc\xf1\x67\x41\xb9\xb0\x57\xac\xfc\xf2\x60\x53\x67\xae\xe9\x46\xfc\x9d\x40\x78\xad\xe3\xb3\x67\xe5\xb4\x90\xd8\x81\xdc\xef\x58\x69\x85\xbf\xe6\x1f\x8a\x4b\xd5\x84\x03\x55\x0c\x3f\x5e\x30\xa8\x9e\x73\x18\x50\xf2\x4f\x3f\xac\xf6\x8f\x4d\x6c\xda\xdf\xf1\x95\xcb\x96\x01\x5b\x0f\x06\xf9\x65\x9b\x1c\xf4\xcb\x76\xa1\x77\x66\xab\x17\xe5\xcd\x75\x91\xe6\xc2\xf6\xee\x5d\x5f\x23\x73\xae\xd0\xfe\x88\xf4\x5a\x88\x3a\xe7\xec\x58\x1b\xea\xf6\x97\x25\x00\x19\x66\xa7\x1b\x94\xd9\x98\x31\x3a\xeb\x0a\xda\xc8\xd4\xbd\xae\x62\xc4\x45\x0b\x25\x70\x5c\x1f\x80\x81\xe0\x41\x5d\x44\xbf\x0e\xd0\xb8\x7e\x48\x09\x23\x29\x26\x7d\xb7\x38\xd5\x3a\x77\xcf\x5a\xbb\x69\x5f\x8e\x0c\x9a\xe9\x16\x8c\xd1\x50\xaf\x02\xca\xad\x55\xe1\x18\x55\x5a\xb2\x4f\x23\xa0\xdd\x3d\x09\x55\x02\xd6\xf4\xa3\x00\x5b\x3e\xc9\xd1\xcd\x99\xe3\x97\x22\xc5\x94\x22\xe1\x00\xcf\xed\x46\xf8\x73\xc8\x05\xa1\x1b\x84\xe2\x12\x45\x83\x9a\x59\xe3\xcf\x18\x4d\xb1\x7b\x46\x86\x55\x40\xef\x29\x8f\x78\x75\x38\xa6\xc6\xea\x5f\x47\xe4\x77\xfa\x2b\xa5\xb6\xf1\xf4\xf1\xb9\x47\x6e\x15\xdb\x17\x37\x65\x59\xa6\x4a\xc5\x01\x01\x9e\x5e\x64\xbe\x79\x4f\x70\xe3\x1f\x0a\x30\xb9\xc6\xc1\xf2\x5f\xcc\xe1\x8f\x0f\x93\x48\x36\xfe\xd9\xae\x63\xb3\xc0\x4e\x14\x49\x14\x7d\xad\xf8\xed\x0f\xdd\x0b\x32\x53\xea\xdc\x1a\xa7\xb6\xef\x7b\x96\xcc\x96\x14\xf9\x6f\x55\x77\x6d\x49\xeb\x96\x8d\xcb\x9f\xc8\x8d\xed\xfe\x23\x50\x85\x2d\xf3\x34\xb2\xe9\x08\x7d\x55\x25\x28\xee\xb7\x26\x78\xfa\xf0\x50\xb1\x66\xdb\xe9\xf9\x18\xef\x05\x27\x3f\x94\xe7\x0f\x5b\xf9\x79\xdb\x8d\x87\x05\x6c\xf7\x49\x81\x0d\x4e\xb3\x5e\x1d\xe0\x65\xe5\x4b\xc2\x70\x3f\x41\xad\xcf\x35\x22\xe2\x0e\x9e\x60\xa1\x44\x82\xdb\xe7\x08\x53\x42\xb5\x01\xe0\xb1\x66\xe3\xb1\xa6\xe3\x07\x90\x05\x54\x80\xfd\x4b\x6d\xba\x3b\x63\x99\x19\xeb\xfd\xab\x4a\x9d\xbb\x44\xf1\x80\xd8\x0d\x47\x71\xf7\xa1\x7b\xd0\xa4\xdd\x40\x59\xa9\xfd\x51\x5c\xc7\x6f\x4a\xd0\x09\xc1\x17\x2b\x46\x89\x83\xa7\x1c\x8e\x49\xb8\x3a\xe0\x18\x1c\x1d\x53\x5f\x4b\x1d\x4d\x75\xb5\x25\x58\x8f\xe3\xb8\x0e\xcb\xef\xf1\x62\xdb\xe9\x0f\x10\x12\x23\x56\x85\x20\x14\x5d\xe8\x4a\x7c\xa0\x12\x1b\xca\xbe\xe8\xf8\x21\x29\x6a\xe7\x58\xb0\xba\x50\xd2\xa7\x5f\x40\xe7\x30\x24\x4f\x31\x96\xd1\xd8\x19\x2a\x6d\xb9\x83\x09\x53\xd6\xfc\xe5\x1c\x5b\x6c\xd5\x9e\x84\x2a\xac\x91\x6f\x9e\x77\x71\x16\x73\xdb\x8b\xe4\x2e\x74\xed\xf5\x83\x3f\xb1\x65\xd0\x06\x9f\xc3\x4e\x2d\xeb\x89\x42\x18\xaf\x0a\x5e\xe1\x82\x26\x6d\x92\xa4\x8b\xd9\x64\x1b\x48\x60\xfc\x86\x50\x85\xee\x44\x7f\x27\xb2\xc1\x24\x0d\x88\x7c\x03\xab\x30\xc4\x60\x52\x0d\xe5\x96\xfc\xe1\x2f\x20\xf3\xfd\x32\x10\xd7\xf4\xb9\x38\x75\x3a\x4b\x4f\xe4\x76\x21\x4d\xfb\xdf\xb6\x00\xc2\x20\x38\xa1\x6b\x4c\xe9\x66\x7c\xe8\xfe\xb7\x1e\x5f\x27\x44\x67\xb5\x75\x5d\x07\xab\x03\x81\x2b\x3c\x2d\xa3\xe6\xdd\x57\xab\x9b\x09\x56\x5e\x86\x4d\x5c\x11\x69\xef\x99\x5b\xe5\x64\xed\x1d\x5e\x4f\x61\xea\x34\xf7\x57\xb9\x7a\x4b\xe4\xa2\x73\x8d\x25\x67\x05\x37\xca\xc1\xe9\x64\x43\xbb\x79\x02\x52\x1c\x3b\xdb\xcd\x8a\xd2\xdc\xe4\xa2\x45\x61\x04\x59\xe2\x88\x79\xeb\x07\x6a\xb2\x56\x53\xc5\xda\x7d\x10\xfa\xd5\xb3\x68\xd9\x52\x87\x53\x50\x56\x68\xfd\x9b\xda\xf2\xd4\xe5\xd1\x19\x6b\x0c\xd8\xcd\xa4\x75\x53\xa5\x2d\x36\x38\x65\xec\x3c\x00\xe6\x95\x8d\x12\xd4\x4a\x5c\xdb\x64\x01\x6f\xc2\xf3\x33\x1d\xcf\x6a\xbd\xb6\xa7\x35\x1a\xf0\x2e\x64\x9d\xe4\x87\x04\x6d\xb6\x4f\x42\x14\x60\x06\xae\x18\x55\x1a\x3e\x30\xe3\x7c\x75\x7d\xf9\xba\xae\x6b\x31\x7e\xbf\x6b\xb2\xa7\x14\xa6\x72\x40\xd0\x05\x67\x1f\xd5\x1b\x34\x29\x38\x19\xd7\xb5\x31\xc3\xf7\xa3\x33\xbf\xe1\x04\x08\x18\x73\x63\x8a\xd7\xc3\x9a\xfc\xa5\x47\xaa\x6d\x70\x56\x23\x63\x53\xc2\x38\x79\x16\xdc\xf3\xb4\x54\x21\xf4\xf7\x6d\xae\xf9\x65\x20\x13\x7f\x20\xe8\xc9\x36\xb6\xc2\x47\xc0\xd4\xbb\xbc\x85\x6b\x73\x9c\x17\x2b\x77\xd3\x16\x70\x75\xce\x4e\x16\x9a\xee\x00\xe8\xfb\x64\x71\x22\xe5\x77\x97\x6b\x89\x94\x30\x70\xd1\xa9\x69\x8d\xaf\x14\xf8\xe1\x7a\xc0\xf8\x1e\x7d\xe9\x0e\x00\xa9\xad\x05\x6f\xd5\x10\xff\xa0\xa7\xcb\xca\x3c\x0d\x54\x56\x69\x7d\xe8\xef\x04\xb5\xef\x7d\xa9\xa5\x36\xf8\x36\xb0\xa9\xfe\x69\xd1\x34\x94\xb9\x18\x73\xcd\xd1\x72\x4c\x45\x70\x4a\x4f\x04\x7b\x41\x35\x3c\xdc\x09\x94\xdc\x16\xc0\xe6\x55\xd9\x81\xd7\x1f\x0a\x14\xd8\x0b\x9c\x53\x6a\x17\x90\x03\xb4\x54\xbc\x7e\xd4\xba\xe4\xae\xe9\x46\xbb\x93\x75\x24\x1e\xdd\x06\x84\x2c\x00\xa8\xe5\x04\xad\x09\xc4\xfb\xfe\x15\x8b\x68\xbc\x04\x91\x19\x89\xd1\x52\x11\xe7\x39\x7a\xaa\xb3\xb7\x15\xa2\x78\x0a\x14\xa3\x25\x17\x27\xfa\xf3\x0f\x00\xd4\x9b\x04\x46\x16\xb4\x88\xe3\x03\xfd\x99\x13\x89\x63\xf4\x8f\x44\xf1\xa5\xcf\xba\xd1\x4f\x69\x64\x7e\xd3\xfd\x25\x70\x5a\x55\x05\xd8\x78\x98\x6a\x7a\x18\xe0\x8f\x8d\x91\x2c\x70\x93\xa9\x6d\xa3\x11\x89\x46\x13\xed\x9c\x7f\x02\xfb\xb6\x12\x4b\x1a\x85\x3a\xb3\x5b\xe8\xf4\xe2\xca\x31\x7e\x6a\xfd\x64\x48\x7a\xfe\x46\xd2\x2b\x5a\x26\xe1\x8d\x6d\xc8\xf7\x77\x16\x59\x15\xa5\x7e\x8d\xa1\x6e\x17\x21\x75\x22\x99\x88\x38\xfd\xf9\xd1\x05\x5e\x41\x28\x14\x15\x12\xb6\x4f\x59\x5f\x0f\x26\xd6\xb3\x54\xd3\x27\xfa\x2b\x4e\x2c\xc9\x6d\xe4\x57\x9c\x43\x8e\xa2\x36\x26\x2e\x59\xd4\xce\x91\x4e\x0c\xc9\x25\x78\x17\x4c\x01\xb9\x19\x5d\x88\xfa\xb3\xc0\xa2\x94\x44\x4f\x75\xa6\xce\x63\x94\x3a\x60\x6a\x99\x21\x26\x12\xda\x6b\xcf\xd7\xf8\x12\xea\xc5\x9a\x92\xa0\x48\xcd\x6f\xc4\x2e\xf6\x66\x17\xe3\x59\xb9\xd3\xef\x67\x7a\x2b\x1d\x24\x31\xcb\x88\x1f\x68\x93\x34\x80\xfe\x40\x63\x1a\xb7\xf0\x44\x4c\x3e\x47\x79\xb0\xb2\x3b\x77\x61\xf3\x15\x50\x02\xe9\x14\x1c\x7a\xbb\xd1\xa5\x45\x67\x96\x5d\xbd\x40\x65\xb8\x58\x5b\x2a\x4d\x71\x29\x0f\x23\x82\x24\xb2\xd9\xb3\x69\x21\x1f\x8f\x9c\x53\xef\x1f\xa0\xc7\xbc\x79\x97\x99\x59\x3a\x22\x32\xdd\xd1\x9f\x26\xaa\xc6\xff\x47\xd2\x59\x2b\x49\xaf\x43\x41\xf8\x81\x1c\xc8\x0c\xe1\x18\x66\xcc\xcc\x99\x99\x99\xfd\xf4\xb7\xf6\xbf\xd1\xd6\x26\x2e\x59\x6a\x9d\xfe\x5a\x75\xc6\x1a\x6c\x09\xce\x0b\x53\x3c\xd1\x91\x3b\x47\xa3\xbe\x8c\x57\x8e\x60\xfc\x2c\xa9\xb9\xbc\x53\x4b\xf9\x5a\x8e\xf9\x60\x52\x06\x5e\x03\x2b\x0f\x4c\x65\x0f\x10\x51\x3b\xfa\x68\xea\xc5\x1a\xe3\x42\xee\x2b\x8e\x27\xfa\xef\xcd\xb7\xd2\xf8\x11\xc4\x43\x32\x94\xaa\xac\x2b\x85\x0c\xd7\x64\xc9\x53\x4d\xf5\xb8\xf0\xf8\x7d\xec\xa5\x08\x0a\xa2\x4d\x24\x18\x07\xde\xd5\x7a\x45\x61\x8f\x6b\xe0\x0c\x2a\x8d\xd1\xdd\x31\x70\x88\xdf\x2f\x4d\x53\x14\x75\x11\x19\x94\x17\xe6\x91\x29\x13\x23\x4c\x50\xad\x21\x07\x83\xa4\xfa\x00\xe2\x2d\xd0\xc5\xdc\xf7\xfd\x00\xd9\x53\x85\x75\x9c\x07\xf2\x7f\x13\xf5\x83\x57\xd1\x5d\x90\xcf\x3e\x84\xed\xa5\x8e\xf7\x28\x23\xfa\x18\x1f\xa1\xc8\xdb\xb5\x80\x15\xe6\x77\x13\xdc\xf9\xb5\x77\x7d\xd2\x45\x73\x78\xa7\x3e\xa3\x1a\x4e\xf1\xc8\xdc\xa0\xca\x9d\x1e\x91\xca\x8f\x04\x9e\xe4\x47\xe2\xce\xf4\x50\xe9\xed\x0d\x4b\xf9\x76\x9c\xfd\xc3\x21\x4a\x9f\xf4\x49\x22\xda\x42\xf5\xcb\x2d\xa6\x0d\x19\xe8\x7a\x8e\xe6\x9e\xe7\x45\xcd\x48\xeb\xe4\xce\x34\x04\xf2\xc1\x78\x29\x9c\x2c\x56\xe7\xaf\x34\xfc\x81\x01\xb5\x3c\x5b\xc4\x73\xc9\xc4\x8b\xf0\xd3\x39\xce\xec\x73\x0b\x12\x2c\xe8\x3b\x29\x1c\xbc\xab\x36\x6d\x9b\x03\x4c\xe6\xc6\xee\x0f\x3b\x79\x46\x73\xa5\xa9\xf5\xc8\x40\x04\xdf\x47\x85\x21\xbe\x4c\x11\xfa\xa1\x0f\xe7\x62\xcd\x80\x9d\x18\x37\xe8\xd3\x78\xa5\xbb\x7f\x95\x59\x67\x2b\x4d\x4e\x82\x7e\x4e\x82\x9e\x20\x10\x80\xcd\xce\xec\xbd\x1a\x95\xd8\xb8\xc6\x9e\xe5\x81\xfa\x26\x11\x07\xff\xee\xf9\x42\xfc\x38\x14\x71\x7a\x88\xe0\xe2\xe5\x63\x5e\xd9\xc3\x75\xfb\xd9\x48\x21\xc1\xb8\xc0\xb3\x4c\x0c\x9d\xbf\xd4\x9d\x3b\xac\x30\x38\x82\x84\xc9\x55\x80\xdc\x4a\xad\xab\x8a\x50\x10\xd5\xa9\x75\xb7\xcb\x0c\xf0\x63\x2c\x61\x64\xbf\x63\x9d\x7f\x98\xf9\x76\x1c\xfb\xd6\x8a\xf8\xc7\x66\x81\x22\x39\x6e\x74\xa0\x66\xb0\xb8\xdf\x89\x94\x69\xe1\xb6\x04\xc9\x57\x2f\x66\xf5\xc3\xf0\x86\x99\x78\x7b\xb3\x23\x34\xce\x81\x3f\xc5\x94\x8f\x5b\xb4\xab\x95\x00\x3d\xd7\x77\x46\x29\x69\xa5\xbf\x7f\x7e\xf4\xc7\x51\xbd\x49\x9c\x55\x4e\x43\x34\x7d\xf9\x19\x49\x5a\xc4\x4a\xed\x10\xf6\x96\x68\xeb\xaf\xfa\x08\x1e\x27\x51\x5d\xfc\xc4\x88\x52\xa5\xa4\x14\x2a\x9d\x6d\x97\x28\x6a\x7d\xdf\xa6\xed\x5f\xfb\x37\x34\x0e\x9a\x7e\x54\x58\xb7\x73\xb1\x61\x16\xa4\xd8\xc1\xd0\xc6\xdb\xac\x8d\x2e\x9a\x9a\x0b\x19\xcf\xc5\xb6\x7a\x4a\x9e\x67\x05\x04\xf7\x3d\x82\x2f\x4f\x3f\xcc\x7f\x93\x87\x00\x70\xbf\x77\xa8\xf6\x17\xf4\xd8\x52\xd3\x2c\xf2\xf0\xc6\x3b\xf1\x52\x14\x66\x54\x95\xac\x9d\x9c\x8b\x33\x57\x56\x02\x53\xfc\x9a\x78\x83\x5f\x71\x5e\x96\x41\xf8\x10\xda\xd8\x50\x87\x6b\x4f\x70\x01\x0a\xb0\xe5\xd2\x40\x5d\xdb\xb6\x9d\x25\x94\xc6\x18\x2a\xc2\x1a\xb2\x87\x3e\x53\x2c\xbd\x73\x84\xbe\xf3\xea\x8f\x61\xa2\x87\x29\xb6\x2b\xb1\x63\x98\xed\xbf\xc4\x56\x77\xdb\x66\x31\x0f\xf8\xb6\x37\x4a\x02\xc6\x4d\xee\xfd\x4c\x80\x0b\x18\xf4\xdd\x1f\x42\xa8\xde\x01\x69\x90\xd4\xc4\x5a\x00\x4a\x8c\x62\x86\xd0\xcc\x09\x5c\x16\x9e\x34\xcb\xf6\x63\xdf\x1e\x12\x0a\xcc\x85\x0a\xfa\xdd\xa5\x21\x9c\xa2\xc8\x3b\x3d\x1e\x22\x57\xcf\xcd\x92\xdc\xa3\xf2\xbe\x37\x74\xdb\x01\x86\x61\xbd\x18\x05\xdf\xfa\x6f\x8f\x91\xcb\xba\xe4\x0c\x01\x15\x8c\xf9\x6b\x3d\x63\xe3\x64\xf1\xe8\x58\x48\x2c\xd4\x36\xa7\x6a\xaf\x54\x7d\x08\xc9\x06\xbf\x8d\x50\x93\x0e\xb0\x13\x38\x3e\x73\xaf\x55\xad\x4a\x9f\x80\x95\x04\x3f\x59\x0f\xa4\xa1\xb0\x9f\x10\x4e\x2b\xb6\x70\x32\x75\xcc\x5b\x56\xe7\x5d\xc3\x26\x41\x7d\x23\x6e\xbd\x42\xaa\x69\xb1\x9c\x90\x28\xb9\xfa\x43\x56\xf9\x54\xab\x95\xa3\xb0\xeb\x1c\x5f\xf9\xdb\xa7\x70\xc6\x0b\x5a\xc6\xfc\xb4\x9f\xb5\x05\xea\x5c\xa1\xa5\x3b\x0d\x2e\xbd\xee\xa8\x4a\xb5\x67\x08\x18\x12\x18\x4c\xc1\x98\xc7\x8e\x7f\x04\x1a\xd2\xf2\xf0\x00\xca\xff\xf3\xf7\xfc\x41\xa3\xff\x70\x38\x41\x9f\xfa\x79\x00\x0c\x4d\x48\x88\xd2\x37\x72\x93\xf7\xc4\x14\xae\xcc\x10\xbf\x2d\x3d\x5e\x10\x96\xea\x78\xc6\x4d\xc1\x43\xa5\xe1\x6b\xaa\xcc\x4a\x90\x44\x6e\x60\x45\xfc\x16\xc9\xba\x52\xfd\x80\x9d\x37\x71\x84\x3d\xa1\x05\x60\x87\x49\x24\x1d\xb1\xf5\xd1\xa1\x3c\x3b\xef\xce\xa8\xa9\x7c\xc3\x56\xb9\x85\x70\x92\xa2\x28\x6c\x9c\xe7\xfd\xbc\xab\x5b\xdb\x7f\x9e\xef\xc0\x61\x16\x74\x5f\xb6\x2a\xfe\xef\x17\xb1\x27\x38\xd1\x83\x74\x43\x35\x43\xe4\xa7\x01\xb9\x1c\x34\xd5\xa9\x02\xd9\xe7\xf9\x82\x5b\x82\x47\xf2\xd4\x2b\x4d\x1e\x82\x6e\xe8\x04\x7b\x7b\x32\x68\xb9\x24\xef\x8b\xdf\x76\x26\x9e\xa0\x6d\x88\x14\xa2\x73\xcd\xd0\xf5\x87\xa4\xcb\xf9\x1b\x2c\x74\x80\xdf\x44\xcc\x40\x1a\xec\xba\x10\x55\xee\x0f\xad\x9e\xcc\x96\x19\x22\x5b\xe1\x9b\x23\x9f\x18\xf5\x34\xee\x33\x87\xab\xf9\xa5\xc1\x5d\x86\xd8\x4a\x60\x37\x43\x77\xf2\xb7\xd7\xaf\xc8\xe6\x3e\x76\xb0\xf6\xcd\xbf\x3e\xd7\x94\x5a\x09\x62\x06\x19\xc8\x4d\x4d\x51\x3a\x8f\x9b\x42\x88\x3e\x32\xa0\x82\xfe\xca\xbc\xe4\x10\xae\xcc\x42\x40\xba\xa3\x44\x4e\x1f\x62\x1b\xbe\x33\xdc\x9c\x3d\x33\x39\xf3\xbb\x77\x8a\xea\x6b\x8d\xa0\x03\x23\xc5\x77\x5a\x92\xc2\xd9\x0e\x3b\xeb\xb6\xed\x49\x0a\x1d\xb6\x9b\x1b\x5d\xfa\xf4\x6d\x9d\x58\x50\x10\xe3\x18\xec\xe6\x4e\x38\xdc\x97\x2b\x66\xfe\x86\xa6\x0c\xf9\x14\xa1\x51\x5c\xef\x17\x80\xf3\x5d\x89\x0d\xb8\x64\xe8\x44\x16\x3d\x86\xf0\xae\x3e\x27\xc5\x10\xc9\x06\x0e\xcc\x6a\xbe\x9c\x01\xe1\x12\x9c\x41\x85\x09\xf1\xae\xbd\x61\xcc\xe9\xc2\xce\x6f\x15\x43\x33\x44\xde\x17\xa3\x28\xf3\x04\xd0\x9e\x31\x26\x38\xe3\x55\xda\xc7\xbb\x24\xe5\x8e\xf2\x79\xe5\x6a\x39\x99\xd8\x50\x50\x9c\x79\x8e\x6d\x94\x10\x14\x2f\xb2\xa7\xc1\xce\x10\x34\x4d\xa0\x18\x46\xe0\x77\x06\x45\xfb\xce\xc0\x89\x75\xff\xca\x9c\x21\x48\x88\xa4\xcf\xf3\x7d\x61\x18\xfb\xd5\x9e\x51\x9b\x25\xa8\x5b\x0b\x36\xf9\xea\xa2\x99\xda\xac\xc6\x77\x12\x78\x96\xb6\xf3\x60\x3c\x73\x20\x76\x32\xba\x07\xdf\xe6\x4e\x94\x81\x05\xa3\xf1\xa3\x08\x9b\x3e\x00\xf4\x82\xf2\xba\x5f\x49\xfb\xd2\x85\x69\xb6\xc1\x80\x82\x1d\x55\x71\x66\x0d\xf6\x1f\x8f\x20\x69\xc0\x1c\xeb\x4a\xbd\x0f\xd3\xef\x67\xe8\xe6\x27\xb6\xa1\x18\xf6\x7b\x5e\xf4\x15\xc4\x7a\x21\x9f\xed\x54\x6a\xe8\x66\x24\x50\xfb\x00\x5e\xbf\x00\x00\x9c\x4a\xd7\x93\x61\x30\x06\xcf\x32\x55\x68\x7c\x35\xdd\x21\xea\xa0\xa6\xf2\x28\x21\xfe\x53\x59\x7a\x6c\xbc\x53\x76\x53\x18\xf5\xb6\xbb\xd8\xde\x37\x81\x5b\xf4\x39\x8f\x27\xc5\x48\xa4\xd1\x56\xe5\x71\x5c\xa0\x5c\x3e\xc2\xef\x7b\x5d\xbf\x3f\x6f\xa2\x0b\xda\x04\x3d\x92\x7a\x8f\x49\xde\x63\x77\x9f\x75\x84\xec\xb1\xdc\x30\xe5\xd8\x39\x8a\x46\xaa\x9a\x74\x57\x8e\xc4\x0d\x7c\xe7\x48\x51\xe3\x19\xb7\x24\xd5\x8d\x4d\xda\xf2\x8a\xc6\x3f\x6d\x1d\xec\xb3\x9c\xc5\x00\xf3\xac\x41\x0f\x70\x53\x65\x4a\x59\x55\x29\x0c\x7a\x31\xa6\x28\x18\x04\xd1\x19\x86\x74\x60\xc2\xe0\x8f\xd8\x81\xeb\x0b\xe4\xc7\x3d\x32\xcc\x9b\x62\x3b\x69\x78\x9a\x3b\x6f\x37\x4c\x81\x33\x3c\x4e\x90\x1e\xa8\x63\xf6\x63\xf2\xec\x6b\x88\x75\x78\x94\x8d\x6e\x4c\xd1\x97\xa4\x99\xbd\x44\x47\x42\xae\x8d\x6e\x9f\x42\xd2\x77\x78\x0a\x53\xe4\x20\x6b\x2b\x40\x11\x9c\xf4\xd7\x83\x82\xb6\xca\xb0\x75\xee\x1f\x9c\x01\x90\xa2\x95\xe5\x49\x8b\xc3\x0b\x88\xd8\xa8\xc1\xf1\xc7\xc1\x73\x5e\x16\xcd\xf0\x4b\x90\x10\xa2\xe9\x1f\xc0\x30\x6c\x14\x3d\x0b\xca\x32\x3b\x37\x35\xf2\x59\xd5\x26\x37\x12\x3d\xd7\x82\xc2\x38\x7e\xa1\xde\x3f\x48\xde\x9c\xb3\x3d\x14\xee\x7b\x86\xe7\x09\x15\x63\x6e\x82\x17\xe2\xa9\x98\x81\x86\x21\x90\xb5\x9c\x82\xc2\x07\x62\x18\x86\x4a\xe9\x1f\x0d\x65\x34\x60\x90\x3b\x4d\x9e\x6d\xb8\x10\x2e\x33\x44\xb1\x39\xc7\xf3\x78\x8b\xb4\x2b\x04\x3b\xf4\x99\x8c\x67\x18\x04\x30\x46\x6d\x3b\x05\xe2\x2b\xac\x4d\xd2\x26\x45\x6d\x6f\x47\x60\xc3\x79\x62\x2b\x0c\x4a\xa8\xad\xf7\x2f\xf1\x8a\xd6\xf5\xa3\xa8\x13\x8b\x41\xfd\xe3\x5d\x1e\x27\x40\x9d\xa6\x14\x4e\x50\xc4\xbc\x86\x58\x7b\x40\x9e\xd5\xfd\xe5\x67\x92\x8d\xda\x36\x7f\xe7\x2f\x8a\xce\x7b\xc7\x5d\x2c\x27\x72\x0c\xc6\x39\x38\xcf\x02\x59\x92\xc6\x3b\xe8\x45\x57\xea\xed\xfb\xbd\x1a\xe4\x7e\xa1\x9b\x9e\x71\xf2\xfe\xa0\xa3\x40\xfd\xbe\xd6\x0c\x9d\x00\x94\x22\xf6\x5c\x89\x49\x72\x33\x41\xd1\x6f\xd2\xbb\xf3\xcb\xe5\xdd\xc2\xdd\x53\x21\x16\x07\xc4\xb0\x59\x7b\x1b\xc3\x1b\x1f\xa7\x19\x0e\xc3\x0d\xe1\x14\x46\xca\x32\x9d\x53\x54\x79\xd2\x7f\xe4\x02\xe5\x58\x18\x8e\x1d\x52\x1f\xbb\xbb\x3d\x1b\x10\x2b\x52\xf4\xb1\x07\x2e\x75\x91\x66\x1d\x9a\x66\xb0\x87\x7f\xf0\x80\x30\xe7\xcf\xc9\xdf\x14\x4d\x38\x06\x38\xfe\x9e\xf5\x57\x33\xc7\xd7\x60\xdf\x82\xc2\x1c\x08\xa2\xcd\x23\x1a\xa1\xd3\x3f\x29\xc2\xf1\xfd\xe0\x3b\x70\x39\x67\xc3\xa5\xf8\xb7\x67\x9b\xb4\x65\xd1\x38\xcf\xa4\x01\x57\x0c\x62\xfe\xe3\xec\x65\x58\xf6\x2f\xf6\x63\x5d\x8f\xf9\xe3\xe8\xed\xe2\x5d\xf5\xf3\x45\x18\x9a\x8e\x0d\xaa\x1c\x5f\xcc\xc5\xc8\x44\x9d\x81\xc2\x65\xf2\x1d\x6a\x61\x23\x5b\xe7\xf0\x86\x60\xef\xfd\x82\x3a\xa8\xed\xd6\xac\xc8\xe6\x3f\x51\x09\x32\xef\x14\x92\xb0\x18\x51\x07\x14\x87\x15\x9a\x33\x63\x1a\xeb\x09\xf7\x2f\x00\x50\xb4\xf1\x21\xca\x4e\xd2\x99\x1e\x68\x69\x98\x27\x80\x99\xb2\x2c\x01\x4f\x31\x80\xce\xda\xfa\xba\x6b\xb1\x92\x04\xa8\x65\x08\x82\x84\x10\x02\x41\x5e\xea\xd9\x76\xe0\x06\x4d\x72\xef\x9b\x9f\xe2\xe4\xb9\xce\x1d\x9c\x78\x7e\x1a\x78\x92\x1b\xcd\x68\x39\xb7\x9c\xfa\xb7\x36\xfa\x57\x4d\x67\xff\x71\x37\x73\x7a\x99\xb1\x66\x28\xd9\xe8\x26\x62\xdf\x98\xc6\x3e\xdb\x51\xc8\x18\x20\x2e\x48\x5a\x16\xb9\xa9\x9f\x23\xb6\x2c\x5b\x22\xb0\xdd\x33\xdf\xac\xf0\xc5\x29\x5d\x14\x4d\x51\x80\xcd\x28\xdd\x51\xaa\x2c\xb3\xfc\xdc\x5b\x40\x3d\x3e\xe2\x8d\x70\x73\x97\x37\x26\x66\x3f\x12\x02\xe5\x56\xec\xfb\x85\x61\x1c\x3a\x05\x65\x4e\x6c\x81\x0a\xa0\xf9\xd8\xcf\xc2\x48\xe7\x99\x38\x92\xa1\xe5\xc3\x9a\x54\x17\x5b\xf7\xce\xf2\xa4\x24\x06\x22\xf1\x0c\xca\xc7\xf1\xc2\x9e\x4d\x05\x80\x2a\xc0\x4d\x70\x1f\xbc\x1d\xcf\x7e\x8e\x33\x9b\xf2\xec\xe8\x0c\x15\xff\xf8\xa0\x0f\xd1\xa0\xd1\xc8\x7c\xf2\x71\x65\xaa\x8f\x37\x28\x85\xa5\x80\xa8\xeb\xbe\x73\xf7\x4d\xfe\xcf\x4b\x26\x66\x62\x7c\xc8\x63\x64\x54\x97\x41\xcb\xde\x92\xc4\xea\x04\x0e\x4a\xef\x4b\x43\x09\x00\x24\xc0\x3c\x23\xc7\xa4\x1f\xc4\x40\x49\x0c\x1b\x5b\x2c\x59\x81\xde\xe2\xf7\x71\x9e\x0f\x69\x8f\x6e\x0f\x51\x7a\xdb\x00\xec\x91\xac\x68\x44\xdf\x7d\x3f\x67\x68\x20\xdb\xcc\x10\xf9\x06\x00\x92\x33\x34\x49\x60\x01\x1e\xb2\x78\x92\x85\x4e\x5d\x9a\xc3\x09\x5e\xc7\xb9\xe1\x5c\x8c\x7a\xe8\x38\x52\xb4\x10\x41\x58\x82\x4a\x4e\x98\x44\xed\x6b\x68\x64\x45\x71\x99\x26\xd7\x56\x61\xf8\xb1\x16\x7b\x6a\x63\x0c\xdf\xf8\x06\x40\x9f\x3b\xb1\x1c\x4e\x22\x18\xc8\xad\x51\x23\x3f\xa2\xdc\x98\x9d\x4f\x7d\x9f\x26\xbd\xcc\xc1\x9a\xf6\x35\x0c\x0a\xa8\x2c\x2f\x21\xac\x9b\x54\x7a\x0e\x6f\xb5\x95\x37\x1f\x06\xd8\xa0\x74\x00\xa6\x1b\xd0\xb4\x22\x52\xe2\xdb\xa2\x88\x5f\xce\xd0\xb3\x2c\x0b\xb9\x03\xc8\x84\xcb\xd3\x1c\xc9\x1f\x6d\xe2\x84\xb6\xfc\x60\x17\x21\x19\xa3\x31\xcb\x93\xe7\xef\x9b\x61\x78\x15\x0a\x22\x8c\xef\x1e\x59\xa4\x4a\x2c\x2d\xcf\xb0\x2c\x3d\x04\xf1\xb1\x92\x01\xa7\x4f\x9d\x37\xb9\x87\x37\xe8\x3c\x94\xca\xcf\x95\x3c\x56\x8b\xac\xbf\x3b\x66\xcf\xbf\xd1\x1d\x5a\x23\x86\x8d\x06\x8a\xf2\xe9\x27\xfd\x98\x97\x40\x83\x42\x6f\x23\x34\xe2\x8a\x51\x22\x81\x07\x01\xe6\x7e\x77\x86\x79\x48\x9c\xda\xd1\xfb\xa7\x6f\xb4\x2b\xe2\x60\x00\x26\xc0\x66\xa6\xdf\x0f\x33\x65\x81\x49\xaa\x76\xcd\x80\xbf\x32\x40\x89\xcf\xc7\x28\x9d\x17\x7a\xf1\xcc\x09\x7c\x1e\x10\xf5\x7e\xc6\xfd\x21\xcf\xa2\xd9\x18\x06\xc5\x30\x0c\x61\xde\x2f\x02\x68\x1c\xc6\x3c\x6d\xd2\x26\x15\x98\x26\x00\x74\xdb\xef\x67\x01\x51\x71\x0c\x43\xa5\x39\xa3\x59\x4c\xde\x7b\xdb\x9c\x75\xa1\x2c\xb2\xd1\x57\x7d\xb4\x30\x15\x9c\x27\x94\x23\xf2\x7a\xb6\xa7\x8b\x94\x20\x4d\xea\x4c\xd9\xf7\x28\xf8\x8a\x8c\xa4\xd6\x57\xf1\x6d\x5e\x0e\x54\x53\x7f\xfb\x14\xe6\x36\xa2\x06\x52\xbb\x79\x5c\x83\x41\xb4\xa6\x7f\xb9\x3b\x81\x68\x26\x4d\x03\x53\x6a\x8e\xb1\x2c\x4b\x3b\x67\x1b\xe1\xab\x3a\xf4\xe6\xb6\x2f\x80\xf0\x1b\xe4\x79\xc9\xa9\xae\xda\x5a\x1d\x64\xe0\x3e\xc2\x10\x44\x4e\x52\x14\xda\xaf\xc9\x7d\x2a\xf8\xab\xd1\x26\x43\x15\xd8\x49\x52\x33\x01\xa0\xf1\x3d\xc0\x70\x0f\xed\x00\xcb\x54\x7e\x40\x10\xc8\xe3\x74\xc4\xc0\x71\xb8\x24\x12\xf2\xf9\x8e\xb1\x36\x1f\xc4\x34\xc4\x0a\xdf\xe8\x44\xf1\xbc\x6a\x9e\x03\x94\x27\x8a\x44\x75\x82\x36\xf7\xfd\x37\xf5\xaa\xff\xc0\x8e\xe6\xec\x75\x66\xd6\xb3\xed\x47\xd6\x4c\x40\xca\x1c\x6d\x47\x48\xb1\xd7\xb4\x7e\x1d\x48\x02\xe7\xcf\x41\xc9\x63\x5d\x46\xe6\x45\x70\x86\x86\x18\xdb\x3a\xc4\xe9\x41\xf3\x6c\x0b\xfc\x6f\x3a\xbf\x10\xc0\x78\xf2\x78\x1d\x49\xc5\x4b\x95\xac\xfb\x1f\xa5\x5a\xc7\x19\xac\xde\x41\xd9\xa2\x2e\xda\x57\x6e\x44\x96\x0a\xc3\x79\x9a\x40\x7b\x73\x96\x63\x88\xb5\x18\xf3\xfc\x31\x5d\xcc\x53\x27\x5d\x2e\x38\x3c\x5e\xa7\x9f\xd5\x9b\xbd\x0b\x86\x15\x7c\xb9\x5d\xbe\x5a\x17\x9d\xee\xc5\x71\x9a\x9a\xbe\xdc\x04\x31\xb6\xe2\x9b\x7d\x9f\x9f\x27\x58\x36\x0b\x02\x47\xa2\x50\xb7\xdd\x10\x39\xaa\x04\xf9\xc4\x66\x50\x71\x6c\x0c\x4c\x06\xc8\xaa\xca\x20\xf4\x85\x63\x29\x1d\x76\xcb\xf8\x97\x7f\x98\xa4\x7a\xcc\xed\xca\xec\x17\x23\x8e\xfd\xc4\x54\xf6\x82\xd3\x05\x19\xe2\x24\x41\x29\x9d\x62\x20\x14\xc3\xda\xc4\xf3\x83\x20\x1e\x59\xa6\xa4\x73\xf1\xf9\xdd\xd1\x11\x9c\x94\x9d\x35\xb7\x2b\x1c\x65\xca\x65\x4c\xa8\x7e\xc9\xe7\xcf\x5f\x5a\x22\xda\x49\x0a\x79\x29\x82\xca\xf1\xee\x8d\xc3\x74\xb3\xa3\xf0\x27\x0f\x77\x3e\x04\x65\xb2\x2c\x24\x63\x5c\x03\x65\x0e\xfc\xe8\xa6\x6b\xa1\x16\xf7\xfd\x69\xdb\x40\x17\x79\x06\xa5\xc4\x1d\x2b\xcf\x92\x00\x20\xcf\x84\x85\x10\xde\xea\xe1\x24\xe5\x4e\x8e\x62\xf9\xd5\xd1\xd1\xb4\xf4\x1d\xa7\x07\x54\x9c\x56\xcb\x7d\x74\xda\xf0\x10\xc0\x02\x9a\x87\x3e\x6f\x35\x8c\x44\x18\xe2\x70\xff\xe8\x1d\xaa\xc1\xf9\x63\xc2\x96\x23\xed\xa3\xfa\x6d\xe6\xfd\x38\x44\xb1\xad\x27\x4c\x2e\xa1\x99\x97\x9f\xee\x40\xea\x60\x0a\x2e\xca\x42\x2f\xfc\x61\x27\x04\xbf\xfd\x50\x48\xc8\x69\xc6\xe7\xb9\x6f\xbe\xc6\x47\x65\xf9\xfb\xa9\xb8\xd2\x11\xfc\x4f\xe2\x4b\x15\xc7\x49\x91\x54\x03\x6a\x40\x15\x3c\x0c\x26\x00\xf0\xf9\x48\x65\x5f\xb0\x96\x07\xdd\xcf\xe4\x8f\xdb\x70\xc2\xf8\x95\x32\x84\x2a\x1d\xfd\xa0\x19\x9d\x8f\x9c\xa6\x5c\x94\xde\x40\x38\x14\xa5\xe9\xf8\x22\xbd\x5f\xd2\xe5\xc8\xfc\xce\x8d\x0f\x60\xb2\xfc\xc7\x19\xcd\x0b\x68\xfa\x7b\x95\xe1\x3c\x4c\x57\x11\x90\x04\x99\x63\x26\x30\x61\x98\x40\xf3\x31\x6e\x57\xfc\x58\x37\x4a\x7c\xd1\x21\x07\x0c\x21\xe4\x18\x92\xbb\x9e\xf0\xb1\x6f\x48\xfe\xe0\x62\x3c\x18\x22\x3f\x70\xa8\xb4\x12\x1a\x73\xae\x58\xf9\xca\xf1\xbf\x33\x0c\x71\x43\xad\x84\x97\xac\x9e\x72\xfb\x9f\x77\x7c\x4e\x1f\x65\xce\x54\x47\xb1\xac\xe6\xba\xba\x4c\xbe\x16\xa9\xfa\x61\x78\x62\xc5\x98\x33\xdf\x91\xca\xa2\x5c\xb4\x61\xd3\x3c\x35\xea\x26\x69\x70\x09\x9e\xe6\x58\xd2\xb4\x4e\x89\x19\xd3\x62\xd3\xdd\xc8\x73\x96\x35\xa1\xf5\x0b\xaf\x39\x9f\x2b\xe9\xa0\xc1\xc7\xa9\x51\x4c\x99\xa1\xfa\x38\x90\x20\x6e\x8c\x4b\xd1\xb8\xa0\x9b\x00\x62\x4e\x0f\x0b\x38\xec\xa6\xbb\x93\x7c\x8c\x38\xf7\x51\xfb\x2d\x89\xeb\xdc\x9f\xaa\xe1\x60\x65\xeb\xf3\xab\x51\x2c\x6d\xa2\xac\x08\x8b\x65\x56\xa0\xa7\x02\x6e\xd2\xe0\xbb\x51\x88\x53\x1b\xf2\xb2\x60\x5e\xb7\x23\x12\x08\x05\xf3\x0e\xf9\xa5\x37\x1f\xa4\x9e\x03\xaf\x16\x8b\x63\x08\x55\x37\x2f\xcb\x8a\xf3\x4e\x3a\xd8\x37\x6b\x0a\xfd\xa9\x94\xc9\xd3\xa3\x69\x70\x36\x3c\xc3\x40\x25\x6d\x07\xa6\x11\x51\x14\x28\xb5\xf3\xdf\xfb\x5c\xd1\x1c\x13\x0e\x0b\x95\x82\x89\x8d\x27\xe8\xe7\xfd\xc0\xd6\x7d\xe4\xa1\x98\xc4\x8f\xb7\x3c\x01\x40\x03\xf4\x4f\xe2\x3b\x10\xc8\x33\x4e\x9c\x8f\x95\x88\x09\x25\xf8\xcd\xbd\x7e\x9f\x7b\x5a\x8a\xd1\xa6\x2d\xfd\xed\x98\x2b\xa6\x89\x09\xa1\xd1\xf4\x7e\xd9\x26\x3c\xfa\x60\x0b\xab\x7b\x9e\x5c\x41\x74\x19\x94\xd2\xa8\x34\x1d\x41\xcb\xe4\xc5\xfd\xe5\x85\xc2\xa0\xe2\xf3\x84\x82\x61\x20\x7d\xcb\x7a\xcc\x2f\x06\x34\x3a\xec\x9e\xdf\x86\x4e\x65\x70\x0c\x8c\x2d\xd2\xea\x0d\x7f\xb4\xdb\xd0\x67\x97\xd2\xe2\x3e\xc0\x29\x5e\xe6\xa6\x10\x4e\x29\x66\x47\xd0\x87\xc4\x52\xf3\x84\xe1\x3d\x3d\xee\xb2\xa3\x37\x8c\x80\xca\xc2\xcb\x21\xb4\xdb\x6c\x96\x13\x5c\x32\xdf\xb1\x1a\x86\x60\xff\xb6\x3a\xfa\xfd\x51\xb2\xe6\x8b\xad\x2d\xaf\x1e\x2e\x14\xde\x6c\x35\x84\x49\x55\x3a\x7c\x26\x3b\x06\x64\xd3\x14\x49\xef\x6b\x76\x01\x05\x55\xcc\xfd\xf8\xa1\x59\x86\xeb\x42\x1e\x31\x01\x08\xcc\x85\xc1\x99\x1e\xf7\x64\x89\xaf\x1a\x24\x7b\x20\x45\x40\x37\xce\x60\x5d\xcf\x19\xaa\xb7\x67\x25\x79\x45\xe2\x89\x64\x3f\x5e\x68\x64\xb0\x91\x26\x30\xa6\x7a\x96\x96\x3e\xf4\x3d\x0d\x30\x0c\x0b\xcf\x73\x04\x14\x7e\xc3\x9f\xaa\x52\x87\x22\xe1\x61\xc6\x2c\x01\x7d\xbf\x8c\xb0\xca\x61\x5c\x2d\x46\xd4\xfc\x00\x35\x07\x4a\x91\x8f\x11\x39\xc6\xc6\xe8\x0a\x63\xf2\xce\xa7\x4e\x4c\xfb\xf8\xde\xf1\x5d\xfd\x65\x73\xbe\x8e\x5b\x3b\x50\xe1\x33\x3c\x50\x08\xd0\x2f\x56\x00\x1f\x87\x6f\x61\x32\x45\x1c\x8c\xbd\x44\x31\x38\xb9\x8d\x25\x6f\x3a\xf3\x78\x21\x52\xb7\xd9\x9a\xc1\x6d\x73\x2f\x6f\x2d\x17\xbd\xc6\xf5\x31\x85\x9a\x12\xf9\xcf\x6f\x1c\xff\x32\x6f\x66\x80\x9c\x79\x2d\x4c\x27\x73\xda\x65\xd2\x3d\x4a\x17\xb1\x08\x42\x3a\x40\xcf\x48\xb5\x4a\x68\x78\x94\xce\x16\x26\x8d\x15\x67\xc1\xa0\x29\xea\xf1\x64\x4d\x13\xc6\x79\xee\x12\x75\x77\x86\xd6\x3f\x9a\xbc\x78\xc5\xb6\xd0\xa4\xd0\xf8\x19\x50\x5a\x3e\x59\x51\x34\x27\xf1\x90\x30\xbc\xdf\x86\x79\x66\x67\x1d\xb8\xed\x29\x96\xe6\xb8\xef\xe7\x19\x60\x39\xba\x06\x51\xd6\x7e\x0d\x5e\x79\x70\x63\x2e\x82\x7e\x4e\x44\x11\x7b\xa7\x26\xcb\xca\x14\x05\xe6\xb1\x7a\x46\x81\xa5\x27\x38\x7f\x26\xd5\xae\xab\x9f\x17\x71\x77\x83\x12\xca\xfb\x71\x67\x10\xfa\x21\xc9\xfc\x78\xf9\x10\x46\xac\xb0\x39\x7e\x12\x61\x1a\x4c\x81\xee\x6b\x02\x87\x59\x24\x4a\x64\x06\x47\xee\x0e\x6f\xa3\x65\xb3\xea\xb7\x01\xec\x2d\x7f\xaa\x96\xce\x5f\x8c\xc2\xb0\xf3\x74\xc2\x13\xb7\x39\xc9\xb3\x79\x9b\x85\xce\xf0\xc4\x72\x03\xc2\xe9\xa2\x94\xbb\x7c\x25\xe8\x8a\xf9\x49\x46\xc8\x06\xc5\x88\x2d\x2b\x22\x9b\xee\x32\x1c\xba\x12\xba\x24\xc5\xf3\x9f\xdf\x20\x10\xa0\x1f\xcb\xf3\x84\x45\x04\xd0\x15\x6c\x3f\x9a\x8f\x40\xf4\x66\xea\x17\x59\x85\x5b\x80\x9b\x34\x34\x3d\x45\x01\x74\x81\x03\x9c\x39\x59\xb8\xb5\xd0\x41\x5a\xf6\x5e\xc5\xbd\xac\x2e\x1b\x9e\xb8\xf6\x93\x43\xc6\x8f\x6b\xfc\x30\xfc\x21\x4e\xf8\x90\x6a\x88\x86\xd0\x31\x2a\x22\x83\x60\x6c\x3f\xc6\x33\x4d\x37\x7d\x44\x48\x0b\x06\xcd\xfb\x04\x2f\x3a\x97\xa9\xb1\x3c\xf4\x18\xba\x6c\xce\x12\x9c\x9e\x47\xf4\x09\xff\x2e\x37\x86\xb5\x77\x1a\xea\x96\xf2\x12\x49\x79\x6a\xba\x4e\xa6\xf4\xb0\x64\x9e\x71\xa6\xfe\x1f\x30\xd1\x42\xb6\xab\x0e\xc2\x50\x1b\x24\x00\xb1\xc2\x45\x91\x9a\x5f\x8c\x21\x70\x95\xa2\xd0\xc7\xbe\x70\x97\x17\xc0\x28\xac\x49\x8b\x5a\xa9\x9a\xc0\xd1\x32\x48\x01\xaa\xc7\xcc\x31\xaf\x6b\x37\x3e\x0e\x51\xc1\x85\x2f\xdb\x5e\xfc\x93\x7e\xc8\xfb\xd2\x59\x81\xaf\x82\xbd\x30\x07\x48\xf3\x67\x37\x92\x26\xd6\x52\x0f\xd3\x19\x0a\x50\xa7\x85\xad\x08\x5a\xd6\xc9\x43\x1f\x4a\x16\x09\x86\x72\x34\xf8\x6e\x8b\xf3\x62\x79\x4f\x84\xb3\x5f\xdb\x19\x50\x6f\x95\xf1\x41\xd1\xe4\xc1\x39\x23\x9e\xc7\x69\x49\x33\x57\xbf\x81\xc2\xaf\x4c\x31\x45\x2a\x6e\x5b\x1a\x48\x41\xc8\xe8\x23\x66\x00\x23\x46\xec\xd0\x3e\x60\x9b\xb6\x24\x1f\xc5\x27\x42\x09\x1a\xa4\x74\x0e\xff\xa0\x93\x1a\xb7\x34\xa2\xd7\xe2\x56\x4a\x46\xb3\x33\x1a\x66\x84\xa9\xcf\x7e\x8e\xac\x33\xa7\x6b\xed\xb8\xbd\x43\x2c\x1a\x46\xe1\xc8\xcc\x51\xc3\x44\x40\x34\xe5\xed\xc8\x07\x94\x02\x85\x10\xc6\xf9\x4c\x94\x3f\x9a\x0a\x27\x4a\x2f\x95\xdc\xfb\x4b\xb4\xc2\xb2\xf9\xc4\x77\x5a\x90\xe4\x38\x0e\x33\x40\x71\x82\xc9\xad\xf7\xcd\xc4\xb6\x74\xf1\xf5\x0a\x20\x7e\x33\x59\xca\x94\x2e\x00\x80\x3c\x8c\x23\x44\x2d\xe4\xb6\x3e\x9e\xee\xfa\x48\x8e\x31\x38\x01\xc1\xe3\x3a\x28\xa6\x81\xbd\xf8\x1f\x6b\x97\x25\xa0\x54\xe2\xdf\x79\xe1\x2d\x48\x65\xc7\x4a\x91\x95\x0a\x46\xe1\x6f\x68\xfa\xb7\x8f\xe1\x71\x7d\xf5\x41\x3c\x84\x53\x3a\xa8\x85\x44\xc6\x97\xd6\x92\x44\xcc\xb9\xf7\x8f\xef\x28\x8a\xc2\xc5\xbd\x10\x9c\xe7\x28\x5f\xb3\xa4\xa6\x08\x00\xec\x7e\xc1\x6d\xca\x8c\xaf\x62\xaf\xd2\x2b\x5d\x04\x52\x5d\x8c\x8f\xc5\xeb\x0d\xc0\x1f\xa6\xd8\x06\x71\xfa\x0d\x4c\x67\xf4\x96\xfe\xd7\xde\x64\x1e\x9e\x1b\x5d\x94\x52\xd7\xf3\x06\x47\xe9\x6e\x8e\x85\x98\xe9\x62\x14\x89\x46\x78\xee\xed\xc7\x6d\x7d\x00\xf1\x30\x99\x07\x0e\xbe\x3a\xa9\x41\xca\x99\xe2\x6e\x01\x92\xc3\x49\x49\x66\xd8\x19\x02\xb4\x3c\x57\xc3\x68\x9e\x75\x03\xe5\x52\x88\x54\x45\xb0\x4e\xe7\x7f\x6d\xc1\x67\x79\xee\xde\x58\x57\xf8\x28\xe1\x19\x06\xa3\xa1\xef\xe9\x41\xf5\xa9\x3c\xdf\x05\xf5\xb9\x85\x8f\x67\xb3\x2c\x6b\x55\x5f\x76\xa8\x84\x7f\x1f\xc8\x6a\x5f\x26\x08\xed\xb2\x7e\xb5\x87\xd1\xa0\x92\x39\xcd\x34\x0e\xed\x08\xe4\x10\x35\x8e\x6b\x7f\x53\xe7\x50\xc0\x8c\x73\x6e\x70\x2d\x60\x22\xcc\x22\x3b\x17\xfb\x74\x41\x83\xb2\x6d\xe3\xe7\xf9\x74\x6f\x05\xff\x26\x8c\xc7\x83\x7a\x49\xe6\x2a\xfa\x51\xc1\xb5\xa5\xc9\xbd\xb7\xd6\xa3\x8d\x2f\xa5\xb7\x98\xf5\x42\xcc\x37\x3a\x94\x9d\xb8\x9e\x89\x4f\xba\x49\x08\x8f\x06\x0d\x7d\x3d\x10\x51\x7b\x3c\x8f\x93\x74\x2e\xdb\xf2\x6f\xf2\x36\xe5\x72\x7a\xeb\x6d\x2a\x14\x0e\xe4\x8f\x2f\xc5\x4f\x6c\x50\x15\x4f\x34\xcb\x6e\x66\xd3\xbe\x26\xae\xd3\x3b\x1b\x65\x60\x67\x03\x99\xe2\xf8\x12\x98\xf8\x98\xcf\x17\x22\x34\x43\xcc\x39\x81\xa2\xfa\x17\xa2\xd2\x70\xd1\x7f\x58\xca\x20\x9c\x42\x51\x17\x38\x31\x8a\xf4\x8d\x11\x39\x18\xc5\x39\x30\xba\xf8\xce\xc9\xb0\x42\x27\x46\x1a\x62\x20\x92\x92\x24\xd2\x6e\x0e\x45\x5b\xaa\x6c\x8a\xe3\x51\xc3\xaa\x41\x1f\xcb\xd2\xfc\x2f\x6b\x7d\xd8\x44\x6b\xa6\xf7\x43\x3f\x12\xfb\x91\xbe\xcd\x5b\x9c\xc1\xc0\xdb\xc7\xad\xc5\x77\x67\x88\x22\x0d\x99\xce\xec\x41\xc1\x62\x2f\x6c\xca\xa0\x94\xf2\x6c\x33\x4e\xaa\x10\xfb\x40\x21\x4a\xed\xba\x48\xd6\x0c\x6f\x79\x02\x9b\x6f\x8a\xf0\x1a\x7c\xb2\xdc\x05\x7f\x25\x7c\x10\x33\xa9\x07\x8f\x32\x9c\x6b\x76\x5b\xd3\x55\x6a\xb2\xc4\x49\x9c\x56\xec\x78\xbd\x4c\x98\x37\xbe\x14\x74\x0c\x53\xd1\xfc\x95\x4b\x60\x7c\x4c\x7c\x8a\x2a\x34\xb9\x73\xcc\xbf\xdd\x3f\x79\x77\xc0\x50\x06\xb9\xc2\xda\xee\x6e\x90\x8c\xcf\x31\x86\x50\xa4\x0f\x76\x62\x2f\xb1\x31\x09\x44\x6e\x26\x48\x0f\x6c\x0c\x09\x7c\x0b\xb4\x1d\x1a\xa3\xce\x63\x34\x8d\xad\xb4\x6f\xe0\xf7\xa1\x0f\xe7\xda\x6b\xba\x7d\x83\x6e\x6b\x02\x6f\xed\xe7\xd2\x11\x3d\xf4\x03\xee\x1a\x2c\xfb\x33\xb6\x04\x14\x69\x61\x98\xf4\x2f\xf5\xed\x6f\x88\x3f\x0b\x7b\xd0\xe0\xf0\xe4\xa0\x56\x5c\x5b\xbb\xd0\xb8\xb1\x3d\x49\x28\x15\xf1\x73\xd6\x09\xfc\x7e\x19\x64\x34\xbd\x7a\xf0\x7b\xd7\x55\xc4\xd5\x08\xd2\xef\x86\x26\x91\xfe\x83\x82\x9d\x50\x42\x3b\xd0\xf7\x68\x20\xf6\x96\x2b\x47\xe0\x21\x48\x7e\x86\x29\x32\xac\xc3\x4b\xa0\xbc\xda\x06\x0c\x3e\x00\x02\x7d\x12\xf5\x1b\xc2\x3b\xa2\xc4\x57\x79\x62\xe1\x4b\x4c\xee\x27\x0b\x07\xe2\x08\x6b\x4b\x28\xac\x55\xcb\x7f\xd6\xeb\x7b\x9d\x29\x0f\xaf\xd9\xcd\x8a\x33\x62\x14\x63\x69\x5e\x29\x1b\x09\x74\xaa\xbd\x83\x5f\x16\xe9\xcb\x71\xe0\xf6\x2d\x7a\x5a\xaf\x96\x7e\xa7\xda\xb1\x89\xee\x64\x3b\xeb\xe0\xf0\xf6\xa6\xc1\xb3\x8d\x50\xb6\xf6\xd9\x8b\x08\x2d\x9d\xd6\xa0\x02\x9b\xc4\x23\xbe\xef\x8d\x8e\xca\x9c\x26\x76\x91\x6a\x4b\xdd\x9a\x8b\x0d\x3a\xb3\x98\xad\xfc\xa1\x13\xf3\xa2\x0d\xf1\x61\x7d\xda\x1c\x81\xb1\xea\xbd\xac\x22\xa4\x05\x79\x06\x54\x6a\x59\xb4\xfb\xee\x8d\xb2\x7e\xe0\x15\x63\x29\x23\x07\x54\x09\xb5\x36\x93\x34\x75\x9f\xdf\x6c\x1a\x5b\x80\x44\x8c\x7a\xea\x60\xd4\x9f\xee\x95\xd8\x8f\x53\xa0\x12\x9e\x74\x73\x55\x60\xe2\x49\xe4\xd0\xfc\x12\xaa\x39\x12\xf4\x20\x4b\x4e\x69\xac\x3d\x8a\x24\xf3\xec\x3d\xc9\x19\xae\x22\x9d\x08\xad\xb4\xc6\x1b\xb6\xb5\xd2\xbb\xe5\x4d\x03\xe7\xfc\x9c\x73\x5e\x6f\x07\xc8\xae\xda\x7a\x2b\xa1\xdb\xfa\x20\xd1\x9e\x66\xaf\xe6\x9a\x3e\x9c\xfb\x8e\xd7\x17\x07\xf8\xd7\xa3\xe3\x63\x24\x42\xc8\x7b\x40\xe5\xd0\xee\x4e\x6d\x4b\x90\x81\x75\x95\x24\xff\xb1\x59\x41\x28\x8d\xcd\xd5\x80\xde\xc5\x96\xc2\x49\x4e\xd8\x9a\x1d\x41\xb0\xdf\x5a\x2a\x81\x3e\xf6\x8f\xe3\x75\xb2\x3d\x30\x3c\x6d\x86\x98\x7d\x9b\xd0\xd9\x48\x9d\x1c\x0e\x26\x1d\x2d\x7a\xe3\x09\x6b\xb9\xb5\xf9\x81\x95\xbc\xd5\x19\x00\xf0\x86\x3b\x9d\x9b\x55\x1e\x2b\x8c\x34\x48\x5a\x0b\x52\x2d\xbb\xe4\xde\x4c\x8b\x32\xcf\x49\xb0\xad\x8a\xd3\xcd\xca\xf3\xb7\x5c\xd3\x22\x35\x35\xbd\xd7\x9a\xdf\x69\xf2\x64\x7e\x63\x5d\x9c\x73\xe5\x6b\x29\xac\x25\x43\xe1\x0d\x85\x01\x9c\xb7\xff\xee\xe3\xa8\x7d\xdf\x0f\xfb\x38\x08\xfa\x38\xf0\xfb\x39\x09\x7b\xa2\x08\xf1\xa5\x66\x67\x4e\xa2\x4b\x33\x5b\xe5\xc7\x12\xbc\xde\xbc\xbb\xf7\x5c\x34\x9a\xbd\xd8\xe2\x26\xcd\x76\xba\x37\x2c\x9d\x90\x7b\x1a\x60\x45\x6b\xcd\xf1\xed\x19\xbb\x8b\x7f\xec\xd9\x01\x65\x36\x65\x44\x4f\x03\x64\xe7\x3d\xff\xab\xfb\xbe\xef\xbb\xbe\x1f\x07\xf1\x2a\x46\x2a\x9b\xae\x0e\x02\x49\xc7\x0a\xcd\x6b\xd2\x4c\x0a\x07\x9d\x0b\x57\x9d\x2a\xa0\xe8\x23\xe5\xaa\x4a\xbb\xf9\xaf\x4e\x32\xc5\x9b\x1d\x92\xc8\xbf\x48\x03\xef\xc1\x56\x7f\x15\x98\x06\x25\x00\x6a\xff\x50\x63\x35\xe3\xa6\x12\xa1\xc5\x79\x52\x82\x13\xeb\x12\x3d\xfc\xb6\x55\x81\x19\x7b\x7a\x24\xee\x03\x44\x1c\x28\x7e\x97\xe8\xa2\x97\xba\xd6\x93\x51\x46\x7a\x72\x96\x14\xd8\xeb\x15\x5d\x15\x3e\x98\x3b\xd9\x7a\x72\x7b\x43\x2e\xc0\x8c\xc0\x67\xbe\xa8\x3d\x4a\xc6\xad\x0c\xc9\xaf\xf9\x1b\x52\xa5\x24\xec\xa4\x38\xc7\xa4\x34\xfb\xc5\x56\x54\x9d\xa9\x73\x29\x47\xad\x10\xf1\x5c\xc2\x3b\xf6\x47\x08\xe9\x4f\xc8\x79\x1e\x57\x25\xdc\xb0\x2f\x49\x96\x23\xcb\x17\xa5\xeb\xba\xfa\x95\xed\x60\xf7\x04\xc3\x52\xa8\xf6\xe9\xd7\x73\xe2\xf0\x0e\x34\xbc\x2b\xf9\x1f\x49\xab\x69\xe6\xa1\xde\xf2\x36\xa5\x9f\xf5\xfc\xb6\x68\x90\x9b\x64\x98\xb7\xf4\x77\x4f\xf1\xef\xee\x52\xe1\x76\x72\x5c\xe8\x2e\x38\x69\xb3\xb8\xd1\xd2\x2e\x53\xa7\x52\xc5\x43\x89\xe0\xfa\xeb\xcb\x4f\x25\x33\x62\xd0\xb2\x2a\xf7\x46\x1d\x6f\xdc\x64\xb4\x7b\x62\x68\x77\x6c\x68\x42\x20\x1e\xff\xef\x4e\x32\x41\xb0\xf6\xf0\x4d\xba\xce\xc8\x2c\x8c\x09\x36\x8c\xbe\xf5\x38\xbc\x86\xf3\xab\xcf\xb7\x85\x0e\x24\xba\x4f\xa4\x31\xcc\x4b\xf2\x27\x99\x66\x5a\x9e\x6d\xd5\xd4\x7a\x53\x99\x9f\x81\x80\xcf\xf7\xaa\x04\xa0\x2e\xe4\xf0\x6f\x65\xd6\x87\x3e\x15\x85\x3e\xd5\x07\xde\x55\xc7\xc5\x83\xaf\xcf\x0e\x42\x7f\x56\xb4\x96\x7f\x40\x64\x9c\x68\x9a\xa1\x93\xbe\xb2\x02\x7d\x5a\x25\x6c\x32\x5a\x6a\x3c\xef\x0c\x83\x1e\x93\x0a\x0b\x37\x38\x1e\xba\x40\xb5\xd0\x4e\x99\x41\xed\xe7\x2a\x70\xa6\x68\xed\x15\x99\x1e\x07\x2a\xbf\xb9\x81\x45\x05\x6f\x6d\x2d\x6e\xe5\xae\xd7\x4b\x8f\xf6\x66\xaf\xde\x46\xb7\xe6\x0a\xb7\xd6\x46\xa8\xce\xab\x1e\xb2\xff\x69\x28\x1d\x32\xbe\xd6\x3b\xdb\x93\x58\x2d\xfc\xde\x9e\xff\xb5\x23\xef\xcb\xfe\xc9\xd4\xa6\x41\xa9\xbd\xc6\xbb\x51\xca\xab\xbd\xea\x43\x1b\xb4\x51\x2a\xe6\x70\x87\x8b\x0b\xa5\xb4\x3c\x95\xce\xdc\xc1\xe9\x65\x04\xab\x4f\x32\xd9\x58\x8a\xa2\x88\xb5\xa5\xca\x86\x45\x8c\xfa\xfa\xf0\x4e\xfb\x48\x58\xfd\x2b\xa4\xbf\xfb\x4f\xfd\x47\x3a\x10\x43\x3a\xc4\x4b\x32\xcc\xeb\x4c\x16\xfd\x9c\x04\x13\x66\xfd\xed\x2a\xa8\x6c\xef\x08\x89\x87\xf8\xdf\x2e\xf9\xfb\x3b\x27\xc5\x99\x52\x0c\xe4\xc4\xeb\x97\x87\xc9\xdc\xf0\x9a\x58\x0f\x56\x1f\x6b\x29\xe3\xda\x68\x20\xfe\x88\x50\x0d\xd7\xef\x46\x15\x99\x2a\x90\xc7\xbc\x00\x33\x9a\x95\x66\x39\x82\xb4\x08\x1e\x28\x70\x88\x47\xd7\xc7\xb7\x6b\x65\x27\x24\x90\x6c\x0f\x0b\xd1\x92\xaa\xa1\x5e\x63\x50\xa6\x14\xc5\xb8\x0c\x30\xcd\xb1\xdd\x46\xd3\x81\x77\xd9\xf1\xbe\xfc\xe3\x35\x34\xee\x7c\x6b\x99\x54\x9b\xc7\xac\x59\x44\xb7\x3c\xfe\x73\xeb\xae\xf7\x26\x68\xbc\x45\x83\x52\xa5\x28\x5b\x25\x0a\xf7\x17\xd3\xfa\x35\x41\x3b\x46\x3a\x7b\xcc\xa0\x21\x21\x0b\xc7\xdf\x29\xb0\xcd\xb6\xcf\x07\xa9\xfd\x69\xe5\xaa\xfc\x64\x34\xe1\x7b\xd0\x15\x5b\xde\x85\x4f\xf5\x68\xab\xf6\x6a\xab\x06\xcc\xc9\xfd\xda\x9e\xff\xb7\x1a\xd6\xa3\xb5\xa6\x8b\x30\x66\x88\x30\x9f\x4b\xe3\x73\x0b\xd6\x0b\xff\x80\x6d\xc5\xb4\xd1\xdf\x15\xd4\x34\x52\x67\x4c\x95\xf1\xf3\xa9\xe2\xa1\x42\x88\xfc\xca\x20\x38\xa5\xd7\xd4\x43\x0f\xae\x3e\x20\x67\x89\x2a\x77\x56\x68\x23\x9d\x86\x8b\x99\x11\x42\x12\xf9\xae\x0f\x44\x22\xc3\x8c\xe8\xd5\xe5\xb7\x53\x4b\x11\xdf\x09\x80\xd3\x07\x18\xaa\xcb\x46\x34\x57\x40\x34\xd7\x43\xf5\x36\x42\x90\x5c\xf4\x52\xd3\x75\xd6\x59\x71\xba\x4d\xf9\x54\xf2\x53\x8e\xa0\x3c\xb1\xc3\xed\x08\x8a\x21\xfa\x79\x45\x88\x0b\x32\x6f\x47\xac\x2f\x1a\x93\x5f\xf9\x72\x8c\x80\x62\xee\x0a\xc3\x28\x66\xac\x0d\xd0\x8e\xaa\x4f\xe2\x11\x71\x33\x56\xf0\xad\xa6\x91\xda\x4b\xff\xeb\xc0\xb9\xf9\x2d\x39\xab\x93\x7d\xbe\x5f\x9d\xf2\x37\x1f\x69\x82\xe6\x5b\x81\xa6\xf1\x81\xa5\x8b\x1f\x95\xfd\x55\x09\xdc\x9d\x6e\xa7\xab\x10\xd9\xd9\x15\x96\x82\xa5\x01\x96\xee\x0b\x9a\xef\x11\x8a\xec\x11\xaa\x77\xf1\xcf\x36\xd4\x94\x8b\x78\x16\xce\x45\x1b\xce\x45\x07\x5a\xca\xb3\xa5\xc1\x9f\x48\x86\x79\x45\xa0\xf1\xec\x08\xbd\x3c\xbd\x45\x77\x03\x5f\x19\x68\x48\x08\xbf\x56\xf8\xbd\x34\x03\xbd\xd9\x60\xd6\x08\x12\xd2\xa0\xa8\xb2\xab\x72\x7d\x86\xf9\x48\x33\x34\xad\x6e\xac\xc7\x23\xd5\x96\x06\x2a\x43\x53\xb2\x04\x6b\xd0\x55\xbf\x80\x7b\x82\x35\x41\x76\xe8\xc2\x8d\x34\x5f\xe0\x24\xf0\xd7\x85\x4c\x06\xb6\x51\xd6\xff\x3b\x91\x88\x02\xc0\x76\x1e\xf6\x64\xd1\xcd\xef\x43\x0f\xa1\x83\xc3\x85\x19\x3e\x51\xef\xa4\xc8\x1c\x8f\x3e\xc2\xa4\x6f\x9c\xdd\xd1\x19\xe4\x32\xb0\x44\x28\x6e\xdf\x29\xfd\x11\xbb\x1e\xbc\xa9\x39\xb8\x7e\xfa\xf6\x66\x17\x72\x04\x86\x43\xb1\xfe\xaf\xf1\xd4\x9c\xbd\x94\x8f\x29\x92\x8a\x77\x98\x8c\x0d\x37\x44\x73\xe5\x28\xc6\x9b\x48\xf6\x60\xc0\x8a\x63\x0a\x1d\x0d\x3e\x88\xd0\x20\xd1\xd1\xdd\x07\x77\x3e\x0c\x25\x94\x85\xbd\xeb\x35\x57\x7f\xb0\xfc\x61\x64\x73\x7a\x9c\x6e\x96\x77\x92\x49\xd0\x35\x40\xf7\xd5\x13\x4a\x6b\x0f\x48\xbd\xc1\xc1\x79\x08\xf8\x4c\x3d\x8a\x5d\x7f\x84\xd1\x22\x5d\x9c\x6f\xc1\x24\x7f\xc7\xbb\x54\x1f\x7a\x76\x3b\x42\x76\x3b\xc2\x9c\xb1\x32\x5c\x49\xa8\xd9\x83\x35\x77\x6d\x24\xf9\xd7\x78\xf5\x37\xbc\x75\x4d\x8e\x7d\x21\x4d\xc5\x39\x5d\xe0\xd4\xae\x15\x38\x17\x3a\xd0\x48\xb3\x31\xfd\xf6\x9d\x4e\xc6\x24\x56\xdc\x3e\x58\xc4\xd9\x96\x6d\x08\x01\x1d\x90\x67\x43\xd6\x73\x42\x70\x68\x30\x22\x87\x9b\x0e\x27\xf1\x59\x94\x86\x3c\x69\x10\x17\x77\xee\xb7\x1a\x33\xf9\x45\xc9\x0e\xfb\x33\xc0\x48\x26\x08\x9a\xa5\xfd\x68\xe8\xdc\x5f\x3e\x40\xfa\xb4\x04\xa8\xec\x70\x2e\xd9\x0d\xbd\x5c\xcc\x22\x4c\xe9\xa3\xdb\xaa\x59\x4c\x70\x3d\xa1\x38\xdb\x1f\x61\x21\xe8\x21\xf5\x25\xf0\xdf\x8c\xd6\x5e\x1a\x06\x16\x92\x87\xf9\x1e\x96\x26\xa3\x43\x23\x71\x94\xe3\xc3\x1c\x10\x86\x1f\x60\xc7\x54\x22\x3b\x25\xba\xcc\x33\x20\xf9\x7b\x12\xe4\x63\x82\xf6\x73\x14\xd4\x53\xfc\xb3\xbb\xe4\x97\x2c\xf3\xe2\x74\x8b\xd2\x4a\x11\xcf\x92\x26\x43\x0d\xb8\xc1\xc1\xbb\x59\x86\x08\x79\x65\x26\xb5\x64\xdd\x0c\xb7\x8f\xca\x22\x40\x07\x44\x6e\x57\x89\x6e\xea\xe0\x05\x2f\x29\xd2\x67\xa7\x02\xe4\xaa\x98\xf0\xb7\xba\x5c\xf2\xba\xf9\x81\xba\x1d\x61\x30\x07\xb6\x07\x54\xbc\xd8\x31\x51\x3b\xa3\x8f\xe4\xce\x28\x2b\x19\x54\x9a\xd8\x89\xe3\xda\x4f\xbd\xd9\xc2\x1b\x10\xf2\x89\x72\xf3\x97\xee\x28\x85\x63\x03\x0d\x47\x96\xc0\x42\x20\x3f\xad\xdc\xca\xf4\xa2\xc0\x6c\x98\xcc\x67\x9b\xf4\x3f\x74\xa2\xa9\x1f\x6f\xdd\xa0\x64\x49\xc6\x99\xcc\x2a\xa9\x65\x63\xb9\x9b\x97\xc4\x38\x31\x6c\x49\x82\x7e\x0e\x1c\xdc\x29\xd6\xe4\xcd\xc2\xef\x9d\x05\x50\x19\x9e\x32\xc2\xa8\x01\xa2\x5b\x74\x01\x56\xf8\x5f\x9b\x1b\x0a\x4a\xc5\xa9\xa6\x4e\x91\xcc\x9c\x9f\x19\x30\x49\xa0\xbe\xf0\xd4\xae\x59\x01\x9d\x37\x2c\xa2\x30\xf6\xa8\xc9\x33\x50\x3d\x27\x1f\xee\x0f\x4c\x8f\xca\x73\xce\x2b\x5c\x48\xd8\x12\x2a\x49\xad\x06\xe8\xde\x93\x68\xd4\xf9\x6f\x03\xa5\x1d\x10\x2b\x44\x77\x83\x54\x47\x61\xf2\x87\x1d\x3f\xeb\x2c\x9a\x4a\x67\xa7\x9d\xfb\xf2\x35\x4d\x16\x06\x5e\xea\xf1\x76\x7e\xa8\xdd\xf5\x10\xe3\x2d\x76\x67\x7b\x4c\x41\x39\xfa\xf6\xaf\xea\x2f\xc5\x89\x59\xb6\x0a\xdc\xc7\x12\xfc\xef\xed\x57\x27\x75\xd1\xa5\xd9\xb5\xb7\x46\xf1\x71\x6a\x9e\x28\x53\xc3\x54\x5e\xac\xd1\x12\x1b\xc8\x9e\xfa\x51\xb2\x28\xdf\xde\x73\x1a\xee\x11\xe9\x3b\x95\xe3\x31\x16\xe3\x5d\x86\x9c\xb1\x99\x3e\x1f\xee\xf3\x71\x3c\x9b\xf5\x45\x41\x6e\x6f\xcd\x11\x5b\x08\xf5\x55\x3c\xc1\xf5\xd4\xeb\x0a\xf6\x3b\xa7\x4e\xcd\xdd\x21\xf1\xd9\xaa\x9c\xff\x4c\x72\xba\x0f\x0b\xe2\x32\x2f\x87\x2b\xe4\xd1\x4e\xd0\x49\x92\x47\xdb\x03\x11\x00\x19\x2b\x7b\x38\x0f\x1f\xbe\xa2\x41\xc7\xd1\xfd\x13\x91\xa2\x45\x56\xf4\xb7\xd2\xea\x6e\x23\xe6\x12\x68\xfe\xb0\x01\x40\x8b\x59\x61\x35\x63\xcb\x50\xfa\x79\x98\xc1\x9f\x55\xb9\x80\x10\x2d\xd8\xf7\x72\x67\x71\x26\x6f\x50\x65\x15\x78\x82\x95\x9e\x47\x9b\x32\x16\xfa\xda\x4c\x8e\x33\x43\x1d\x09\x9b\xb9\x48\x8a\xb0\x1c\x56\x60\xcf\x49\xd0\xbb\xb7\x52\xdc\x3a\xc4\x64\x0f\x80\xc4\xae\x7f\xda\xd1\x22\xcb\x8c\xa4\x8f\x02\x2f\xc4\xb1\x86\x40\xdb\xf5\xb2\xe3\xad\x7d\x83\x82\xef\xcd\x98\x70\x06\x81\xec\x0c\x17\x73\xc4\x28\xdd\x7c\x31\xd6\x52\x59\xaa\x47\x29\xb7\xbe\x28\x77\x59\xa8\x04\xdd\xd2\x1f\x5d\x1a\xed\x44\x1a\xed\x98\xee\x68\x1b\x5c\x8a\xe2\xe0\x8b\xd1\x6e\x68\x6a\xda\x9d\x2f\x38\x03\x29\xf8\x1a\x47\x5a\xda\x39\xde\xe8\xbe\x26\x45\x68\x0e\xe6\x5a\x83\x10\x99\x4a\x4b\xf8\xb2\x93\x7f\x62\xe9\x8e\x50\x8c\xc8\x6f\x98\x39\x84\x3d\x39\xcb\xa3\xb1\x2e\x64\x55\x62\x14\x03\x41\xb9\x7b\x42\xd4\x8e\x3e\x5b\x2b\x2b\xe2\x4f\xd5\xda\x37\xb3\x19\x54\xe4\x3f\x59\xe9\x0f\x73\x13\xd5\x42\xfe\xed\x86\x1f\xb8\xcc\x6d\xa6\xf2\x87\x59\x50\x63\x74\xeb\xea\xea\x0e\x11\x21\x99\xd2\x2d\x09\x7a\xc1\x52\xc3\x9a\x97\x78\x30\xdf\x02\x2b\x4f\x2c\x7f\x74\x9d\x84\x30\x5f\x79\x96\x40\xed\x1f\x22\x3f\xb9\x66\xff\x15\x12\xfc\x1b\xb0\x60\xe4\x87\x42\x7a\x91\xde\x6c\x19\x43\x90\x6c\x49\x56\xe7\x0b\x9c\xaf\x8c\x3f\x65\x71\x8a\x5d\x6b\x22\x34\x93\xdc\x47\xea\x25\xba\xc8\xdb\x15\xde\x99\x8f\xfa\xf4\xd0\x38\x4b\x96\x50\x33\x0f\x51\xfa\x3b\x54\x34\xda\x33\x78\xef\xb8\xf6\x18\xf3\x01\x0f\x70\xf2\x54\xfa\xb0\xfd\xa9\xc1\x32\x6f\x0d\x44\x76\x22\x84\xeb\x3d\x9a\x59\xdf\xea\x8b\x03\x95\x1f\xf6\x60\x9d\x5d\x3f\x0f\xbf\x7d\x7c\x84\x87\x29\xee\x28\x99\x63\xe6\x86\x7d\x3b\x27\x05\xc5\xdb\xd7\x5c\x59\x2e\x81\x67\xeb\x43\xb1\x7d\xf0\x21\x11\xc1\x68\xc0\x2e\x31\xa5\x4e\x96\x7b\x18\xcd\x49\x65\x83\x4a\x65\x53\x7d\xe9\xac\x9c\xe9\x12\xbc\x1d\x37\xf9\xfc\x87\x00\xda\xf7\x53\x7d\xcb\xbf\xd8\x5d\x0b\x4a\x8d\x1b\x00\x70\x96\xc7\x55\x5e\x35\x09\xd3\x22\x58\xcb\xd7\x92\x59\x49\x06\x80\xa4\x1c\xce\x72\x84\xc8\x96\x64\x4e\x85\x7a\xf4\x63\x83\x02\x2a\x16\x40\x01\x18\xaa\xe0\xdf\x84\x18\x33\x00\x8c\x7e\x2f\xb9\xbd\x94\x2e\x69\xbd\xbf\x9e\x02\x53\x08\x28\x12\x6e\xa0\xf4\x09\xac\xeb\x27\xdd\x25\x15\x9d\x8e\xcd\xe2\x50\xc1\xb3\x80\x5a\x9f\xdf\xce\x26\xb1\xa1\x56\x68\xf6\xe3\xdb\x2f\x49\x83\x42\x0b\xa2\xa3\xd4\x44\xd5\x5f\x69\xec\x37\x8d\x7c\x82\xf6\x00\xbc\x83\x9d\x41\xa5\x26\xe3\xe3\x9a\x9a\xec\x43\x64\xe7\x8a\x40\x54\x7e\x86\xcf\xb7\x18\x83\x03\x7b\xe4\x99\x81\x46\xb7\xf4\x62\xe3\x8e\x4d\xb8\xa4\xf3\x14\x94\xa7\x78\xc1\x14\xd4\x58\x75\x15\x4a\xc8\x2f\x85\x3c\x11\x40\x56\x4f\xe5\xd7\x95\xa9\x24\x87\x36\x5d\x03\xc3\xea\xc0\x90\x0c\x04\xdc\x03\x66\xce\x0f\xac\x7e\xe6\x17\xfb\x89\x7c\xfd\x6a\x0f\xbd\xb9\x0c\x59\xee\xb0\x22\xf0\x7a\xa9\xb6\x26\x4b\x9c\xc8\x76\x81\xb1\x25\x08\xe9\xec\x75\xed\x6e\x34\xb5\x23\x8c\xf4\xc4\xf2\x50\x9d\x91\x04\x95\xd2\x2c\xe9\x2a\xe1\xd3\x1e\x18\xb5\x63\x74\xa6\x7e\x0f\xac\x3c\x3a\xd5\xf8\x22\x7d\x76\x99\x0c\x25\x04\x44\x17\xc3\x64\xc4\x73\x1d\x99\xeb\x1b\x26\xf6\xb7\x1b\xa2\xfb\x9b\x85\x02\x83\xf1\x34\xff\xd5\xdd\x3f\xd7\x28\x8e\x10\xcf\x6e\xe9\x12\x1e\xed\xd5\x46\x37\xae\x23\x65\xf1\x6e\x12\xb3\xc8\x33\xda\xdd\x2f\x96\x99\xed\x43\x18\x6e\x2d\x43\xfb\xaf\xaa\xac\x45\xfc\x77\xee\xe2\xd9\x82\xcd\x40\x20\xef\xe9\xa9\xc1\xc8\xd1\x9d\xdb\x1e\xcd\x67\x97\x00\x62\xcb\x54\xe2\x7d\x51\x18\x91\xa0\xf3\x81\x91\xc1\x1f\x45\x31\xa5\xef\x7b\xbd\x83\xd0\x98\xed\xf9\x5f\x0f\xd1\x5d\x0e\xde\x54\xe5\x39\xd7\xb7\x23\xf2\x57\x7b\xb5\xc5\x0c\x89\x07\x9e\x55\x1c\x32\xcf\x33\x5c\x09\xfa\xc0\xd2\x1d\xa2\x1f\x6d\x5b\x95\x67\xb0\x5b\xa2\x3c\x43\x98\xf8\xfd\xea\x29\x26\x68\x28\xd5\x07\xe2\xc0\xb6\xd5\x47\xb2\x51\x76\xd8\x60\x5d\x6d\x01\x5f\x94\x67\x2b\xff\x81\x88\xec\x78\x5d\x49\xa1\x54\x7e\x60\x77\x16\x7e\xb7\x7e\xf6\xda\xb3\xbf\x0d\x47\xb8\xb5\x50\x7c\x6a\xa9\x73\xca\x61\x1e\x34\xb6\xc9\x0f\xcc\x2a\xcc\x9f\x23\x65\x4c\x71\x08\x03\xc6\xfa\xb2\xae\xcb\x1f\x7a\xa8\x3f\x98\x5a\x60\xaa\xce\xc5\x47\xcb\x7e\xcd\x16\x60\xe0\x81\x1c\xc5\xd6\x92\x6d\x46\x49\xe8\x90\xa2\xe8\xf0\xb8\x65\xfd\x8c\x24\x01\x91\x27\x91\x95\x63\xc7\x2c\x48\xda\xdc\xd9\x91\x0c\xbc\xea\x57\x81\xa1\x88\xf7\xb7\x4f\xe3\x44\xa2\xe8\x70\xb2\xf3\xb8\x40\x15\xe8\x4d\x88\xcb\x90\x9f\x62\x5d\xc8\x96\x25\x0e\x0c\x97\x22\x7b\x2f\xa1\x27\x14\xcc\xb0\x79\xd9\x98\xd5\xfd\x78\x76\xba\x7f\xbe\x15\xea\x0f\xb1\x20\xc5\xe1\xf0\xa5\xae\x8d\x14\x57\x9b\x82\x2b\xa3\x3c\xac\x4f\x0e\x07\xcc\x17\x3f\x80\x30\x2b\xd9\x78\x6a\x3b\xf1\x97\x14\x02\xff\xeb\x58\xe6\x8d\x25\xb4\xf9\xe2\x98\xbb\x63\x7e\x73\xa7\xee\x94\x2e\x01\xeb\xf9\x7d\x89\xf3\x50\x45\xe7\xe6\xfe\x72\x57\x25\x0b\x1e\xf7\xb1\x46\x7e\x26\xe8\x8d\x83\x40\xa0\x32\xeb\xdc\x3b\x51\x8b\x8f\x23\x0d\x95\x3a\x5a\x1c\x84\x6c\xb6\xc1\xbe\x26\x16\x9e\xe9\xa2\x1b\x6f\x83\x42\x16\xe2\xe8\x9b\x1f\xeb\xfa\x4d\xe4\xa1\x3a\x48\x16\xf6\xf8\xa2\x34\xa3\x7e\x67\xa9\x68\x6b\x7f\xa1\x3c\xac\x87\x9e\xc7\x3e\x32\xa6\x19\x22\xff\x48\xb2\xba\x0f\xf1\xcf\xf5\x9e\x5c\xb0\x33\x03\x93\xc6\xfc\xc0\x4c\x0c\x23\x67\x05\xdd\xdb\x40\x68\xfd\x96\xa0\x21\x9e\xdf\x77\x06\xea\xbb\xfa\x0e\xbd\x5e\x4a\xb4\xe1\x9d\x38\x81\x31\xb5\x0c\x15\x2a\x49\x36\xe6\x77\xa3\xfe\x82\x97\x01\x95\x3d\x31\x25\x62\x4d\xe7\xbf\x1b\xae\xf0\x88\xda\x57\x82\x26\xe1\x9d\x77\x89\xc6\xeb\x5e\x8d\x32\xc9\x20\x30\x58\xeb\xcb\xfa\xbe\xef\xe7\x61\x8e\x5d\xa6\xf1\x22\x09\x93\xa3\xa9\xbe\x19\xbf\x4b\xa7\x78\xe8\x0d\x13\x5a\xde\xd9\x19\xf9\x79\x08\xeb\x01\x5d\x41\x5b\x46\x16\x6d\xc4\xd7\xd7\x12\xfa\x80\xd3\xa3\x70\xa0\xe3\xa7\xb6\x2a\x4f\x13\xa1\x0d\xbe\xe1\xa2\x85\x43\x70\x88\x51\x6f\x8d\xe9\xbf\xf3\x25\xab\xcc\x6f\xfe\x72\x5a\x17\x4c\xf8\x32\xd8\xc6\xd5\x22\x79\x18\x1e\xe4\x31\x52\x8c\xf3\x27\xec\xc0\xef\x65\x6f\xfc\x11\xf2\xa3\x36\xef\x81\x83\x8b\x2d\xe6\xf9\xf7\xdb\xd0\x91\x61\xbb\x71\xf0\x64\xc7\xef\xa3\x4c\xfb\xbd\xf3\xc2\xfc\x2a\x66\x71\x1f\x21\xeb\x2e\x09\x44\xbd\x80\x2d\x14\x00\x1d\xfc\xe5\x68\x75\x79\x78\xc8\xc1\x2f\x9b\xdd\x3e\x68\x72\x98\x98\x14\x3c\xef\x45\xf0\xad\x23\xfc\xa8\xfc\x54\xfb\xe9\xca\x94\xdf\x0a\x05\xcb\xba\x7c\x77\x33\x43\x62\x33\xf9\xd9\x64\x32\x8f\x49\x09\xe1\xe9\x2b\xdc\x9a\x3d\x1e\xb8\x4b\x4c\xb0\xc2\x01\xec\x86\xd4\x53\x1a\x39\x81\x76\xc6\x4c\x51\x49\xaa\x04\xa0\x1b\x24\xf5\x1a\x3f\xe4\x94\x27\xbc\x2c\x51\xf1\x8e\x32\x27\x46\x51\x8c\x48\xe9\x63\xe8\xd6\xc0\x6c\x25\x1a\xdf\x51\x2a\x47\x54\xe2\x27\x65\x86\x58\x5b\x12\x2b\x1b\x83\xab\x45\x11\xe8\x18\x98\x29\x9d\x5f\x41\x55\xa6\xcc\x3c\x00\x2c\xff\x7a\xc5\x97\xa5\x9a\x69\x2e\x31\x29\xf8\xf7\x73\x56\x53\xb3\x1a\xcf\x12\x99\x03\x36\xf9\x6a\x71\x8a\x75\x2d\xaf\x5d\x6e\x5a\x39\x0f\xff\x22\x53\x24\x6f\xa2\x56\x57\x9a\x8a\x32\xe7\xf7\x2e\xc2\x6f\xb6\x87\xb2\x8a\xe0\x52\x12\x99\x2e\x69\xda\x8f\x8c\x97\xdf\x6b\xf9\x36\x77\xb4\x95\xa6\x7b\x4d\x8e\x85\x25\xfb\xb2\x0d\x09\x54\xa6\x80\x66\x3f\x64\x0b\xed\xe6\xa8\x8f\x79\x32\xc1\x89\x2e\xb6\x36\xc5\xd0\xda\x8f\xdf\x74\xee\xaa\xb5\xc2\xa4\xcb\x6b\xd2\x6e\xcb\xff\xe6\x28\x93\x5d\xb9\xb5\x7d\x4f\x8c\xaa\xa7\xe4\x77\xb8\xf1\x65\xff\x0a\xe9\xe2\x5f\x1c\xbb\x20\xf3\x8d\x86\x78\x7f\x71\xda\xae\x08\x7c\x31\xb6\x5d\x74\x7f\xc8\x6f\x70\xc4\xbb\x38\xe6\x05\x87\xb2\xc3\x95\xba\x44\x17\x97\xa4\x99\x3c\xad\x3a\xac\xc7\x68\x7f\xae\x3e\xb2\x95\xf5\xfb\xab\xcd\xe4\xee\xca\x1d\x14\xf6\x84\xad\xa6\x8c\x12\xa8\x74\x7f\x12\xcf\xef\x73\xf9\x5f\xdb\x2b\x9b\xde\xb3\x27\x3c\xc9\x0b\x35\xca\x32\xfe\xf3\xad\x96\x2f\x42\x32\x05\x84\x9a\xa8\xca\xdf\x73\xf9\x81\xc2\x07\x45\x9a\x60\x1e\x4d\x02\x81\xa0\xfc\x33\xa2\x1e\x16\x6e\x88\x36\xdc\x19\x9a\xd1\xc6\x4a\x2b\x35\xad\xd5\xef\x33\x6b\x7a\xdc\x1d\x58\x57\x7e\x8e\x50\x25\x9a\xcd\x2d\xe4\xe4\x98\x97\x08\xbb\xe9\x7a\x22\x8a\xd9\x69\xa6\x45\x82\x19\xa6\xaf\xb8\x5e\x44\xba\xa6\x21\xa0\xdc\x34\xc9\xee\x89\xd2\xc7\x8b\x9e\x1d\x40\xa1\xf6\x73\x26\xfd\x27\xdd\x47\x3c\x3d\xcd\x3c\x5f\x76\x19\xfd\xc4\xc0\x21\xa0\x1f\xcf\xe2\x5b\xa8\x9e\xab\xaf\x1a\x3f\x44\xa6\x2f\x48\x8c\x2b\x86\x12\x69\x62\x47\x6a\x97\x01\x80\xa0\xe3\x64\x0f\xce\x91\x84\xca\x74\x42\x4b\xad\x14\x8b\xef\xa4\x0a\x6a\xd8\x33\x3c\x22\x17\x13\x24\xac\xb7\x56\xd5\x1f\x47\xe4\x0d\x2e\xf5\x6a\x8e\x24\x1c\xaf\x17\x62\xbc\x98\xa8\x8b\x51\x6f\x8a\xa0\x29\x1b\x56\xf9\xf1\x25\x18\x15\xb4\x9a\x20\xba\xe3\xbf\x7b\x41\x3e\x97\x76\x75\x23\xfd\xef\x17\x7b\x4a\xcc\x9c\x03\xfd\x8e\x2f\x01\x40\xb0\x56\x93\xe4\x7c\xd9\xa3\x86\xda\x0c\x2a\x8d\xb0\xc5\xa1\xd1\x7e\xbf\xa8\x96\x06\xb7\xee\xc2\x97\xf2\xe3\xeb\x8b\x2e\x8c\x51\xc5\x37\xbe\x2e\x4c\xb4\x5e\x12\xf9\xc3\x98\x14\x41\x12\xd9\x9c\xea\x28\xa3\xa4\xa2\x39\x10\x47\xda\xca\xd3\x7b\x22\xe9\x86\x41\xe5\x8e\xe8\xf5\x2a\xbe\x33\x9c\x1b\x58\x0e\x0d\xb1\x0d\x47\x26\xcd\x72\x29\x83\x5b\x9a\x2b\xa0\x79\xf5\x6e\x06\x4d\xd7\xd4\x66\xca\x8c\x67\x18\x63\xb9\x2f\x0b\x74\xf2\x6f\x13\x4b\x6e\x44\xca\xcd\xe7\xea\xe4\x8b\xd1\x51\xe7\xf3\xc7\x8c\x46\x6a\x8e\xa7\x08\x40\x38\x4b\xa9\xef\xb3\x16\x6d\xa6\x37\x6d\x53\xeb\x44\x72\x95\xf5\x15\xff\x7d\x3b\xf9\x86\xa1\x4c\xd3\xd2\x54\x79\xab\x49\x31\x5f\x2f\x89\x65\xec\x96\x65\x73\x10\x9e\x61\xc7\x81\xb9\x2f\x48\xfa\x71\xfd\x36\x42\x25\xee\xae\x82\x65\x21\x8f\xf6\x2c\xd8\xcc\x10\xb3\xe2\xe4\x8b\xa9\xc4\x3f\xe0\x37\x6d\x15\x3d\xe9\x92\xcc\x2f\x78\x49\xd1\x82\xbe\xb9\x7d\xb6\x22\xf4\x29\x62\xbf\xb6\xf1\xc5\x79\x8a\x7f\xba\xce\x18\x31\x07\xd7\xcd\x48\x79\xd9\x8c\xce\x76\x5d\x1b\x72\xe8\xd0\x25\xb8\x45\xd2\x9b\x84\x9b\x70\xab\xd8\xf5\x8f\xeb\x2a\x8d\xad\x39\x96\x2d\xac\x33\xb8\xbd\x01\x33\xbc\x10\x26\x0e\x7a\x40\x71\x88\x3c\xbd\xee\xd3\x3d\xd5\x02\xbe\x6b\x0a\xbb\x87\xcc\xcb\xc4\xee\xba\x29\xb2\x26\xae\xdc\x01\xa2\xc5\xad\xc4\x21\x98\x8a\xf4\x4d\xee\x6e\xa0\x95\xa9\x35\x57\x00\xe5\x8e\x96\xe7\x46\xfa\x9a\x9c\x62\x58\x89\xad\x48\xa6\x8e\x05\x8c\xdc\x8d\x16\x83\x91\xa4\x5b\x02\x9c\x63\xcb\x5e\x1d\x54\x9a\xdd\xb8\x27\xdd\xaf\x35\xc2\x72\x37\x46\x8a\x83\xd8\x68\x0f\xe0\x79\xc8\x20\x6d\x74\x57\x76\x4f\xd3\x7d\x7b\x72\xd5\x81\x7b\x39\xca\x42\x43\x25\x16\xdb\xe0\x21\x2c\xd9\x4a\x3d\xc3\xf8\x51\x4e\x85\x5d\x75\xd0\xb3\x18\x81\x61\x8e\xee\x6b\x1f\x30\x5d\xfe\x3c\xd2\x28\x49\x1f\x19\xde\xe8\xcf\xea\xb3\x33\x80\xce\x3e\xf6\xfc\xb1\x4f\x26\x77\xb8\x35\x5e\xe1\x92\x2d\xfd\xde\x35\x8e\xe7\x4e\x1a\xf0\x3a\x3b\xef\xbf\x5f\xab\x9c\x0b\x57\x7d\xd4\xb4\x11\x97\xd1\x6c\x86\x50\x0d\x1f\x6b\x70\x86\xfb\xfd\xcb\x85\xa8\xc9\xd7\x5d\xfe\xb5\xf1\x27\x37\xa6\x1f\xf1\x00\x6e\x57\x9c\x6e\x01\x2e\x01\x27\x62\xed\x11\x99\xfe\xa9\x8a\xb4\x8a\xbc\x88\xa8\xa9\x4d\xaf\x33\xa6\xa3\xc5\x03\x74\xb4\xad\x4f\x2a\x5f\x35\x9d\x53\x69\xc7\xaa\x2b\x24\x93\xec\xa2\x3b\xc3\xd6\x8f\xb6\x6d\x91\xc4\x33\x70\x18\xac\x4e\x61\x39\x04\x6c\x10\xda\x02\xa4\xd9\x72\x07\xd7\xde\xdd\xd5\xad\x10\xc4\x2b\x97\xec\x7c\x2d\xce\x66\xb5\xf4\x9c\xf0\xb1\xd9\xf8\x36\x15\xca\x6a\xdb\xc2\x73\x57\x07\x40\x89\x68\x42\x5c\x33\x98\xed\x7e\x8e\x8b\xe8\x62\x8f\x5c\x1d\xad\xbb\x29\x9d\xcc\x95\x26\x18\xf4\x60\xa2\xb7\xe7\x59\xe6\x29\x03\xf9\x53\xa4\x20\x32\x8b\x9d\x2d\x56\x4d\x1f\xde\x28\xe7\xab\xc9\x49\xa8\x60\xf6\x55\xee\xdd\x98\x83\x2a\x19\x80\x8e\xee\x9e\xec\xbf\xaa\xc6\x3d\xe4\xc4\xa8\x74\x77\x7f\xd7\x56\xaf\x2e\x9d\x19\xef\x04\x27\xbd\x5b\xce\x7a\x93\xed\x0f\xb1\x60\xba\xe5\x98\xdc\xa0\xc6\x5b\xdf\xdd\x2f\x70\xea\x6c\x9c\x21\xee\xf2\x3e\xbb\xca\x21\x6d\xcc\xd7\x30\xd9\xf1\x19\x28\x9b\x08\xfd\xae\x77\x4f\x7c\x98\x5a\x63\xeb\xf6\x54\xe1\x66\x5a\xcc\xcc\x74\xdf\x6e\x8d\x29\xef\xca\x84\x9a\xd1\x5b\xbb\x08\x81\x31\x23\xd1\xf9\x59\x2c\xe8\x8f\x1f\x21\xc0\xd7\x1f\x92\xaf\x36\x43\xe4\x9d\xb4\x49\x2d\x3c\x32\xea\x18\xd1\xbf\x6c\x67\x57\x99\xd0\xf2\x93\x62\xb2\x5f\x94\xc9\x3a\xbf\x19\xd0\xbd\x4f\xb0\xad\x33\x8c\xd6\xac\xad\x0d\xde\x53\xbb\x7b\xbc\x28\x17\x63\x14\xf4\x0d\x4e\x64\x46\x53\xcd\x89\xd7\xb3\x75\x30\xe3\xa2\x42\x4c\x74\xf6\x41\xa0\x58\xa8\xa5\x3c\xf4\xfb\xa4\xd9\x29\x3e\x3b\x44\xaa\x2d\xfd\x28\x58\x95\xe4\x3c\x5f\x3a\x69\x1e\xf6\xb9\x8b\xc1\x95\xe9\x60\x59\xc9\xe4\x38\x07\x8a\x87\x4e\x2f\xd5\x09\x19\xc6\xe6\x60\x11\xd0\xdf\x3d\x50\x2c\xe5\xa8\x36\xb0\xf7\x0a\x48\xe8\x63\x08\xd8\x0a\xb1\x82\x89\x9c\x20\x59\x8a\x47\x43\xef\x64\xeb\xfd\xc9\xbe\x6c\xbb\x7e\xbb\x23\xe4\xeb\x0b\x7a\x01\xd1\xfa\xb7\x7c\x58\x88\x59\x68\x77\x54\xe0\xe0\x93\x98\x51\x49\x09\x1a\x72\xc0\xb8\xf7\x60\xd4\x8e\x74\xe8\xb7\x15\xdf\x19\xe5\x2f\x58\x0a\x55\xd0\xab\x0e\x2e\x9b\x0a\xa7\xd8\x89\x66\x90\x4c\xc4\xe6\x8e\x2d\x3a\xd7\x61\xde\xdf\x06\x89\x36\xd1\xa4\xf8\x93\x37\x48\x0b\x13\x9e\x6d\x5e\x18\x06\x67\x06\x2a\x3f\xfa\x90\x1d\x00\xb7\xfd\xd8\x2a\x12\xf9\x1a\x79\x28\xe3\x92\xe4\xa4\x59\x96\x7d\xf5\xef\x28\xe8\xc8\xe2\x33\xba\x04\xb1\x05\x6a\x5e\x7c\xea\x7d\x81\x13\xf5\xdb\xc5\x7c\xf5\xe7\x61\x4f\xc7\xfb\x51\x61\x54\x70\xd0\x1e\x62\x8d\x8f\x17\x0c\x42\x91\x34\x04\xef\x53\xc5\xe3\x76\xc7\x22\x8c\xe8\xaf\x8d\x33\xc5\x25\x29\xe6\xb8\xe2\x0a\x97\x8d\x2c\xa4\x89\xfd\xba\x63\x54\xfd\x58\x0f\x2f\x77\x55\xf3\xf1\xbe\x76\x38\xbe\x33\x83\xc9\x7c\x2d\x05\x7d\xde\x73\x39\x37\xa4\xf9\x61\x4d\xe8\x0f\xb8\x25\x9c\xe7\x9b\x24\xc3\x9d\x45\xdb\x38\xe2\xf9\x7d\xf4\xfb\x2a\xcf\xb4\x7c\x2a\x90\xdb\x8b\x5e\x3b\xde\x26\x7f\xec\x60\x53\x87\x6f\x1d\x5c\xe0\xe5\x34\x89\xae\x10\xe2\x48\x7b\x73\x6c\x2f\x7b\xc4\x48\x91\xaf\xff\x02\x74\x65\x14\x18\xbd\xee\x4d\xfe\xe3\x3b\x01\x2e\x04\x34\x5d\xb6\x03\xb3\xde\x2d\xbd\x94\xc4\x1d\x95\xc7\x44\xcd\xde\x9a\x7a\xdb\xf3\xb5\x27\xd1\x52\x03\x3f\xd8\xb6\x12\x8a\xcf\x37\x03\x42\x9d\x0e\x08\xaf\x8d\x3e\xbc\xaf\x29\xef\xb6\x7d\x2c\xb5\xfd\x44\x1b\xfc\xb5\x08\xd5\x29\xa2\x90\xdc\xa6\x61\x4b\x83\x41\xfd\x36\x8f\x87\x6a\x95\x60\x73\x6b\x47\x18\x96\x00\x55\x79\x76\x60\xb3\xae\xf4\x67\x88\xe8\x76\xb6\xfd\xea\x9a\x54\x7f\xad\xd7\x33\xce\x92\x38\xdd\xfe\x0b\xd3\x7d\xfb\xf2\xf5\xc4\x4d\x45\xd9\xe3\x1b\xd3\x6f\x5a\x4f\x0a\xdb\x0e\x81\xf0\x65\xcf\x73\x6d\xcb\x9a\xff\x44\xed\x1f\xbb\xd7\x97\xcc\xa5\xc9\xbd\x65\xe2\x39\xc8\x49\x80\xec\x2b\x42\x12\xc9\x19\x4a\xbf\x2f\xa1\x3b\xcd\xa6\xf2\x57\x38\x5e\xf4\xc4\xf1\xb1\x3c\x9a\xc1\x8d\x1a\x02\x4b\x72\x89\xc3\x39\x4a\x3b\xbd\x9c\xf0\x51\x3b\x0b\xa1\x0a\x7a\x09\x55\x99\x37\x96\x83\x42\xf9\x8b\x12\xdc\xfb\x45\x7e\xad\xcc\x12\xfe\xdd\x69\xf5\x02\x95\x21\x5c\x47\x8b\x61\x85\x89\x23\x81\xc3\xde\xf8\x96\x42\x5d\x19\xa6\x3c\x44\x77\xaa\x1d\xf9\xd0\xc5\x59\x4d\xb2\xe3\x7d\xfd\xdd\x0c\xdf\xbb\xd0\x6d\x9b\x23\xf0\x63\xf5\x97\x47\xb1\x8f\xcf\x92\x00\x4b\xe3\xf2\x83\x8a\xd7\x04\xdd\xd5\xc8\xfc\xc1\x71\x23\x50\x0b\xbd\xef\xea\x0a\xbb\xfc\x79\x88\x63\x1c\x74\x4e\xc5\x55\x01\x0f\x61\xea\x78\x62\x2b\xca\x0b\xeb\x4b\xb4\x7c\xbf\x0f\xb0\x6c\x93\x1e\xed\x62\xaf\x95\xc0\xc1\xd5\x5f\x69\x60\x89\x04\xed\x7f\xed\x60\x7c\x89\xfa\xa6\x4d\xbe\x26\xea\xc8\x41\x8f\x53\x79\xb6\x35\xd6\x00\xfd\x11\xb9\xc4\xec\xa4\x15\x87\xcc\xea\x13\x52\x90\xb6\xa3\x74\x7f\xa2\x1d\x39\x16\x38\x74\x35\x1a\xad\x8c\xea\xb4\xfd\x84\xae\xc8\xc2\x6f\xc4\x7f\x02\x90\xfa\xf8\xb5\x38\xb2\x9b\x5b\xb7\xd6\xa6\x28\x73\x0a\x35\x27\xc9\x30\x54\xfe\x92\x61\x9e\x00\x41\xd3\x7f\x0f\x77\x49\x24\x85\x99\xd2\xc7\x28\x66\xa3\xca\x43\x12\x44\x9d\x0d\x47\x8c\x38\xd2\x2d\x37\xc4\x1f\xb3\xc6\x78\x1e\x78\x52\xf0\xc6\xa8\x4d\x6b\x43\xce\xa0\xfb\x98\x5e\x0c\x11\xdd\x5a\xf8\xd5\x03\xdc\xe2\x4b\x89\x29\x79\x02\xe0\x91\xf2\x25\x8a\xb0\xc7\x77\xdc\xea\xe8\x21\x33\x47\xf3\x37\x8e\x08\xc5\x5b\x97\x4e\x64\x79\xf1\x97\x47\xf9\x2b\x13\xa1\x72\xa4\xf0\x37\x50\x65\xe9\xbd\x99\x43\x7e\x8e\x88\xe3\x64\xc7\xeb\x61\x5f\xc4\xef\x8a\xd4\x60\x83\xad\x02\xe1\xcb\x5b\xb4\x01\x81\x72\xa9\x37\xab\x6a\x7c\xe4\xa1\x8a\xde\xd7\xf2\x57\x51\x7b\x70\x21\x50\x9a\xcd\x5b\x7f\x73\x0b\xb4\xab\x1b\x3b\x67\x99\xa2\x11\x9b\x7a\x62\xb7\xf3\x97\xc1\xeb\xa7\x1b\x5c\xe6\x18\x7d\x53\x98\xb8\xd0\x7e\x9c\x41\xa3\xee\x40\x91\x49\xf0\xde\x2e\x44\xab\xb0\x63\xe1\xdd\x85\xc1\xf5\xc4\xcf\x31\xbf\x23\x67\xbc\x57\x13\x95\xb7\x76\x15\x2a\x6c\xc7\x6d\x9d\xca\x55\xeb\xf0\xce\x73\x1e\x20\x87\x9a\x39\x44\x2b\xf2\x3d\x5d\x18\xe4\x86\xda\x32\x8e\x9f\x64\x41\x6c\x68\x4a\xbd\xfb\x15\xe9\x14\x0d\x79\xb3\xe2\x0c\xce\x1b\xe7\x2f\x4e\x5b\x5b\xa8\xa2\xd2\x33\x44\x18\x85\xff\xe5\xbe\xe1\x0c\xd7\xf2\x74\x1e\x22\x87\x5d\x66\x4a\x11\x94\xc1\x87\xbf\x57\x79\x84\xdc\xc0\x3c\xc5\xc0\xc8\x2d\x4c\x77\x14\xfa\x84\xd4\x95\xa1\xda\xb8\x93\xd0\x07\xec\x0c\x28\x91\x4b\xad\x5f\x42\x88\x7a\x61\x73\x7f\x96\xf4\xd6\x92\x21\x8f\xef\x0f\x65\xd5\xe7\xcf\xe3\x17\xa2\x38\xa2\x85\x65\x35\xf5\x18\xd3\xdd\xe9\x66\xf3\x7b\xda\x1e\xff\xc1\x4d\xa6\xbe\x08\xb2\x08\x4f\x75\xca\x34\x8d\x1d\x4c\x85\xa2\x98\x1d\x4b\x7f\xf9\xce\x6d\x34\xf1\x99\x91\xbc\x0c\xea\x0b\x4f\xd9\xa4\xc6\x55\xe3\x59\x76\x71\x92\x1e\xfb\x54\x56\x42\x72\x04\xf6\x5b\xeb\x22\x03\xdd\x90\x18\x29\x56\xe1\x28\xdd\xac\x38\x3a\xd9\x9f\xd7\xcf\x8f\x55\x3d\xf9\xb9\xf1\xf6\xe3\xe3\x14\xf9\x72\x5f\xbe\x77\xd9\x18\x51\xf8\x12\x61\xe7\xdf\xa0\x80\x51\x69\xea\x03\x53\x2f\x79\x93\xb5\x8d\x1e\x4d\xe3\xd6\x92\xa2\xb1\x45\x55\xd2\x4a\xc7\xd9\x17\x45\x50\x28\xd3\xd9\xc2\x6b\x20\x5f\x0c\x0a\x1d\xbb\xe1\xd8\x3f\x62\x6b\x6d\xa3\x25\x84\x34\x1d\x39\x09\x66\xb3\x63\x23\x2a\xfa\x17\xe9\xe2\xf8\x60\x27\xf6\xa7\x1d\x4d\x56\x39\x02\x21\x99\x72\x45\x20\x8a\xef\xf4\x3c\x5e\x9a\x65\x99\x27\x90\x43\x24\x5b\x96\x5b\xbf\x21\x09\x65\x0e\x17\x5a\x40\x6a\xe7\x04\xa2\xd8\x52\x01\x92\xc0\x7b\x52\xe2\x91\x26\xa6\xf3\x4d\x93\xf1\x8f\x30\x88\xbf\xf1\x2f\x7a\x70\x6c\x69\xf2\x00\xc0\x1d\x04\x75\x86\xed\x3b\x93\xba\x81\xed\xc1\x2a\x6f\x91\x11\xac\x1d\x33\xc3\xd4\x26\x9d\x92\x4b\xf2\x2e\x99\x02\x06\x9c\xe7\xb2\x07\xbb\xac\x0b\x52\x0e\xd9\x22\x46\xed\x98\x0a\x40\x65\x7b\xec\x87\xc6\x2c\xdd\x00\x97\xc0\x47\x9a\xf6\x28\xad\xe4\x7c\xc8\x71\x36\xc5\x15\x27\x0d\x47\x16\x20\xb5\x68\x66\xe3\xcd\x98\xf6\x8e\xa8\x04\xdd\x4f\x79\xdb\x13\xa3\x8d\xfe\xfe\x27\x91\x74\xa7\x93\xa9\x7b\xd7\x22\xc2\x90\xaa\xbe\xa2\xf0\x5b\x27\x0a\x74\xc7\x92\x5b\x35\x5f\xaa\x7d\x8e\x3f\x7f\x86\xe8\x6e\x63\x05\x11\x7a\x72\x6d\x74\x69\x2e\x5d\xde\x4f\xd4\x1a\xde\xea\xbf\x15\xf1\xc0\x45\xbd\x6b\xd1\xe7\x3a\x79\x6c\x7c\x89\x77\xab\xc6\xf6\x88\xdc\x78\x68\xe8\x98\x73\x12\xf7\x08\x44\x77\x6e\xe3\x1d\x45\xd5\xad\x89\xcf\x50\x71\x86\x54\x1f\x2e\x8f\x7c\xa2\x87\x3e\x9a\xd4\xc5\x14\x34\x14\x3f\xfb\x9e\xd6\x2a\xca\xd3\x63\xd0\xd3\x75\x6b\x64\xae\xfa\x85\xe1\x93\x44\x72\x94\xd4\xc6\x76\x3d\x51\xb2\x09\xd8\x34\x46\xd5\x86\xd6\x8f\x69\x95\x59\xbf\x8f\x83\x49\x06\x60\x8d\x0f\x4c\x56\xc1\xec\xaf\x09\x1a\x65\x85\xc9\x46\x78\x2a\x53\x42\x01\x4d\xe8\xd0\x10\xa6\x3b\x39\x86\xf8\x66\xaf\x56\x1e\x82\x11\x22\x3b\x75\x93\x64\xce\x38\x40\x91\xb5\xc5\x8c\xd1\x78\x68\x4e\x5f\x73\x93\xd2\x8d\x69\x28\xd6\xd0\xd3\x10\x95\xeb\x93\x54\xcd\x71\xfa\x97\x29\xf2\x64\x67\xd3\x44\x4c\x56\x35\x2b\x7c\x2c\xb6\xa0\xbf\xad\x36\x0f\x7c\x3d\xf3\x0c\xe4\x33\xb6\x97\xff\xf6\xf3\x3e\xaa\x48\x57\xd4\xef\xdb\x7e\x66\x69\xf0\xfa\x38\xd8\x03\x35\xd6\xca\x0f\x4c\x9e\xd0\xe7\xcd\x8f\x77\x58\xfd\xbd\xaa\x1f\xd9\xf9\xfe\x90\x9d\x4a\x61\x91\x59\x4f\x84\xc2\x99\xc0\x61\xf3\x3c\xcc\x61\xf6\x73\x95\x5c\x32\x25\xdf\xba\x1b\x20\xa5\x73\x51\xb1\xf9\x1e\xd8\x25\x43\x65\x5d\x31\x71\xf5\x1a\x8f\xe0\x59\x85\x63\xde\x85\xa3\xe0\xc4\xec\x96\xe5\xac\x6b\xe1\x74\x6d\x3f\xf3\x36\xf4\xef\x6e\x68\x22\x01\xd3\x64\x1a\xf4\x41\x15\xbb\x47\xf5\x45\x4c\x3a\xae\x69\x3d\xde\x50\x7c\x5f\x67\xcd\xa5\x30\x84\x4a\x8a\xa1\xa4\xa1\x44\x3d\x80\xf6\x6b\xbd\x48\xe5\x3e\x6f\x76\x0c\x06\x75\x4c\xd1\x60\x65\xa6\x41\x9f\xcc\xc7\xf1\xfa\xf9\x4d\x17\xe4\x84\xa1\x5c\x99\x7e\x02\x4e\xa4\xfa\x80\x40\x4c\x31\x05\x85\x47\x4c\x22\x03\x41\x3a\x7d\x01\xe9\xd5\x1e\x8f\x16\x93\xd8\x35\x12\xa1\xb1\x35\x53\x74\xc7\x6c\xfd\x76\xef\x32\xd6\x3d\xb6\xde\xc4\xa3\xff\x2e\x38\x30\x7f\xe0\x57\x9c\x5f\x27\x71\x49\xf7\xdb\xdc\x52\xef\xca\x10\x96\xee\x24\x00\x19\x25\x77\xcd\xe4\x73\x78\x34\xf7\x0f\xd6\xd1\xe3\xd9\x18\xd4\x2a\xf9\xcf\x8b\x88\x6d\x66\x9d\x81\x66\xdc\xbb\x6a\xd1\x5f\xd1\x15\xae\x5d\xe2\x56\xe7\x53\xb3\xe5\x48\xfc\xf1\xe7\xe7\x76\x37\x6c\xd1\x28\xb9\x20\x44\x2c\x11\x45\xbc\xf3\x5b\x2e\x1c\x5d\x54\xbd\x6f\x9c\xcc\xcd\x91\x76\xc6\x17\x55\xee\xbe\x21\x4a\x73\x0c\x49\xfd\xf7\x92\xbe\x0e\xb9\xb1\x73\x04\xe0\x25\x10\x65\x9c\x9a\x30\x7c\x19\x10\x70\x65\x1a\xca\x6f\xb6\x10\xd9\x39\xbd\x3f\x7d\x0a\xae\xee\xcb\x47\xf9\x75\x2d\x4a\x33\x15\x63\x63\x5a\xc1\xc7\xb1\x75\x46\x75\xab\x62\x1b\xff\x8a\x1b\x79\x68\x94\x7f\x10\x34\x62\x46\x5d\xd0\xd3\x4d\x6b\x64\x36\xb9\x90\x42\xd6\xee\xdc\x1b\x79\xd7\x20\x3c\x70\xd3\x08\x1b\x7f\xb3\xd9\x02\x31\x20\xf4\x72\x31\x66\x06\x85\x08\x6b\x4a\x7a\x89\x60\x45\x56\x44\x08\x5d\x86\x2e\xb3\x49\x69\x96\x23\x4c\x99\x03\x9e\x5d\xb9\x60\x6f\x70\xf5\x15\xc0\x50\x98\xda\x97\x63\x5e\xa2\x1e\x51\x30\x1f\xc9\x43\x7a\x0f\xfa\xdb\xf7\xa3\xe0\xe7\x11\xf9\x9b\x15\xd9\xdf\xd8\xba\x53\x17\x87\x6f\x1d\x8b\xd5\x64\x8a\xae\x5d\x9b\x47\x3e\x37\xfc\x94\xbd\x19\x13\x95\x32\x4c\x96\xf4\x99\xde\xff\xd1\x74\x16\x4b\xd6\x32\xcd\x16\xbe\x20\x06\xb8\x0d\xb1\x8d\xbb\x33\xc3\xdd\x9d\xab\x3f\xd1\xef\x77\xfe\x01\x11\x1d\x1d\x7b\x40\x15\x59\x2b\xd7\x93\x50\x59\x40\x46\x84\x93\x7e\x0d\xc5\xa4\x40\xd3\x1f\x27\x2d\x23\xb6\xa3\xd6\xf4\xc1\x46\x10\x54\xe8\xf8\xc3\xeb\x1e\x89\xd1\x7a\x56\xd9\x7e\xcf\xd0\x34\xde\xac\x84\xf8\x92\xbd\x57\x4a\x38\x53\xf9\x99\x30\xbb\x1d\xcd\x40\xb0\x7b\xfa\x2f\xda\x50\xe1\x87\x81\x3d\xd6\x7f\xbb\x18\xff\x18\x86\xab\xb1\xcc\x6a\x6e\xf7\x7c\xb1\x25\x0d\x86\xf0\x3b\xc9\x1f\x36\xd4\x8e\x07\x45\x1a\xfc\xe6\xe6\x04\x11\x45\x63\xac\x92\x56\x5c\x68\x86\x43\x54\xa2\x61\xb4\x12\xfa\x83\x91\x9e\x11\x0d\x2a\xbb\x63\xa4\x60\xae\x67\xe9\x03\x17\x53\xe0\x6f\xc1\xa8\x79\xe9\x38\x34\x89\xe8\xf9\x27\x44\x5f\x88\x4a\x33\xee\x8f\xbd\xad\x2f\x47\x69\x2d\x79\x7e\xa6\x37\x45\xe4\x73\x33\x41\xf2\x35\x6a\x3e\x45\x2d\x63\x3b\x0c\xae\xb0\x0f\x22\x2f\xe9\xbb\x5f\x12\xff\xc8\xdd\x08\xf7\xeb\xc0\x12\x56\xef\x95\x17\x66\x80\x52\x24\x7d\x0b\x4a\xd2\xe7\x81\x12\xa5\xf2\xe3\x05\xe5\xfe\xf6\xb4\x14\xa2\x52\x63\x1b\xa8\x98\x5c\x34\x3b\x86\x25\x09\x09\x2b\x03\xa1\xe9\x0f\xfd\x4c\xc9\xeb\xa9\x9c\xca\x74\x54\xb9\x73\x2a\x84\x06\xed\x2b\x50\x8a\x4a\x8d\xea\x85\x8b\x76\x8e\x3b\x3e\xfe\x99\x0b\x7a\xe0\x25\x04\xa4\x7a\x33\x22\x5d\xea\x0a\xba\x27\x3c\xa3\x97\x74\xc0\x66\x27\x10\x71\x6e\xeb\xbd\xab\xdc\xba\x6e\x2b\x39\xe4\xff\x5e\xc0\xaf\xeb\x4a\xec\xd4\x07\xae\x0e\x26\xe2\x3c\x82\xef\x88\x63\x63\xd5\xaf\xf0\x83\x51\x1f\xca\x23\x8c\x2d\x85\xf2\xd3\xee\xef\x67\x31\x5d\x9e\xc1\xa5\x15\x14\x5e\xec\x9c\x1c\x71\x3a\x29\x31\xfd\xd7\x93\xc5\xaa\xe8\x5c\xa3\x20\xee\x58\x04\x81\x13\x60\x56\x1f\x98\xab\xfa\xee\xa8\xc6\x9a\x9d\x6c\x54\x06\xef\xc3\x05\x00\x66\x2d\x35\x3d\x13\xc0\x87\x17\x08\x8e\x59\xb0\x3f\xa5\x5b\xfc\x40\xeb\xe6\x63\xfd\xec\xf4\x4e\x7e\xb3\x03\xa1\xda\x3c\x46\xba\xd3\x92\xba\xdd\x04\xb4\x3f\xcf\x93\x5a\x62\x27\x24\x9d\xe0\xdb\x26\x89\xb2\xaa\x0b\xcd\x0c\x9b\xc1\xd4\xc5\x87\xf0\x61\xf0\x31\x7b\x69\x19\x6c\x80\x60\x8e\xfa\x14\xb5\x5e\x3d\x6e\x3a\x3b\x9a\x29\xbf\x4d\x39\xe6\x6c\xfc\x3d\xa6\x59\xcb\xca\x9e\x67\xdd\x3c\x2e\x44\x29\xd6\x32\x99\x1e\x4f\x72\x2c\xa6\x53\xa0\xe4\xb1\x05\x2b\x50\x23\xd4\x02\xce\xc4\xb9\x9d\xa8\x66\x90\xc4\xe5\x2c\x83\x40\x98\x30\x54\xb0\x76\xfa\x4b\x76\x24\x3e\xc2\xcd\xbe\xf5\xcf\xf0\x02\xb8\x02\x3f\x54\xc1\x88\xb2\x92\x1a\x5f\x6b\xde\xd3\xdf\x9e\x9f\x07\x3c\x23\x73\xff\xad\x67\x74\x85\x49\x03\xfb\xe0\x65\xe5\xfa\x45\x73\x3a\x18\xc2\xf7\x43\x90\x4b\xec\x04\x4b\xcd\xad\x67\x86\xb5\x7b\x10\xf1\x4c\xe0\xf2\x56\xd4\x39\x91\x9f\xff\xf8\xac\x96\xc4\xa9\xfd\x91\x34\x80\x05\x11\x52\x06\x1a\x8c\x20\x21\xe9\xcc\xb5\x47\x82\x92\x50\x48\x0f\x01\x91\x47\x57\xb4\x61\x97\x73\x34\xd7\xc5\x92\x75\x97\xf2\x57\xcf\xa2\x0c\x1f\xac\x18\x0e\x4b\x26\x3c\x7a\xc6\xa5\x36\x16\x1b\x41\x50\x44\x0e\x42\x39\x8e\x81\xcd\x1a\x77\x0b\x81\x68\x7e\x88\xab\x53\x56\x21\x05\xcd\x6a\x4e\x0b\x5d\x4e\x19\x0c\x42\x8c\xc3\x39\xae\xe6\x50\x6f\xa0\x3e\xf4\x31\xcc\x30\x41\x16\x77\x6e\x4a\x85\xf4\x23\x10\x17\x68\xb7\x95\x00\x12\x1a\x00\xb4\x9e\x6c\xb7\x32\xc9\x2f\x34\x29\xfc\x40\x70\xce\x19\xa5\x58\xa5\x38\xd1\x18\x2b\x2d\x20\xab\x31\x8e\xb7\x94\xbe\x06\xad\x07\x4b\x84\x6a\x1a\x3f\x67\x7f\xda\x1c\xa4\x30\x8c\x02\xaa\xea\xa8\x37\x3e\x2f\x92\x30\x1a\xb6\xe2\x44\xd2\xf0\xd8\xe6\x27\xe8\x65\x2e\x26\xc4\x81\x33\x84\x45\xc7\x2f\x70\x62\x6a\x2c\x37\x19\xc7\xd1\x3d\x88\x06\xfb\xaa\xe6\x30\x60\x8d\x5c\x01\x36\x3a\xc7\xcb\xca\x3b\x28\xa2\x02\xa1\x59\x30\xf1\x52\xb6\x95\x0b\x4d\xfc\x76\xfa\x04\xf2\x3b\x37\x35\xdc\x0f\xc1\x5a\x60\x77\x59\x5e\xde\xbc\xb7\xa4\x3f\x0b\x88\x02\x01\x44\x14\xe6\x9f\x32\xdd\x30\xbe\x55\xd2\x43\x41\xbf\x5a\xe8\x7d\x53\xb5\x7f\x20\x58\x00\xa4\x8b\x57\xfb\xb8\x50\x9d\x25\xda\x0a\xb1\x62\xb4\xd0\x08\x79\xaf\xb8\xa1\xe2\xd1\xc0\xb3\x03\x16\x12\x79\xe7\x13\xa9\xc6\x93\xf3\x6d\xee\x05\x3b\x42\xa3\x0e\xfc\x2b\xa8\xf1\xdd\x37\xf5\x18\xbf\xb4\xf9\xc5\x1d\xf8\xa4\x6c\x0e\x64\x06\x9a\x35\x78\x4f\xac\xb1\x08\xa8\x9e\xf4\x4e\xd3\xf3\xd1\x20\x38\x3d\x35\xfa\x61\x4f\x1b\x53\xa9\xe5\xcc\x52\x5e\xab\xed\x4a\x94\x68\x76\xea\xe2\x18\x0c\xab\x1d\xa0\x2f\x05\x5a\x17\x4a\xee\x96\x2a\xb4\xc1\x9b\x7c\xb0\x58\x92\x27\xdf\xed\xbb\xdc\xc9\x2d\xd3\x5b\xdb\x40\xb7\x54\xee\x18\x3b\x0b\xbe\x17\x61\x76\x33\xc9\x23\x37\x4a\x79\x02\x2b\xc0\xa7\xa9\xa2\xd9\x61\x8c\x4f\xfa\xe4\xc0\xd0\xb7\xbf\x61\x85\xd3\x22\x52\xa0\xc6\xf0\x75\x6b\xba\x85\xae\x82\x86\x92\x7f\x4a\xc0\x9c\xbc\x5d\xd9\x68\xd4\x78\x6f\xbe\xc6\x59\x9c\xb5\xe2\x01\x81\x4c\xc9\xf9\x6c\x68\x00\x86\x29\x83\x68\xed\x00\xd8\x79\xe3\xee\xdc\x00\x4a\xab\xd4\x3c\x92\x4e\x69\x00\x48\x8f\xf0\xeb\x73\x7e\xd8\x8a\x94\xad\xf5\x67\x59\xe0\xf4\xce\x75\x89\xe3\x00\x2f\x78\xc9\xb2\x45\x01\x72\x40\x20\xf1\xea\x45\x0e\x3a\xb5\x59\x61\xec\xc8\xf4\x20\xd6\x9d\xa6\x07\x2d\x4e\x14\xc6\xcb\xa8\xc5\x4c\x3c\xc5\x4e\xad\x33\x26\x30\x16\x24\x51\xc9\xc2\x2d\x38\xac\xc9\xc3\x8c\x2a\x61\xce\xdd\x13\x1e\x7b\x15\x6c\x5f\x61\xd6\xfe\x9b\xb6\x18\x61\x6b\x48\x0f\x17\x8e\xe0\xeb\xae\xbc\x22\x17\x3a\x34\x3d\x9b\xd3\x57\x89\xb4\xe0\x66\xa5\xc5\x48\xa4\x20\x08\x60\x84\xc2\x0a\xa7\x4f\xc4\xd4\x52\x2f\x68\x5f\x11\x38\x4e\x0c\x91\x1e\x76\x63\x98\x9b\xd2\x96\xb9\xda\xbf\xe4\xe9\x83\xc9\xa1\x6d\xcb\x0d\x6f\x77\xa1\xd1\x03\x3e\xda\xcd\x85\xb6\x96\xea\xc2\x81\x94\x7b\xb9\x97\xcb\x61\xc3\x0b\x99\x74\x47\x32\x03\x2a\xb4\xea\xf1\xd3\xae\xc8\x4a\xa6\xa0\xb6\x5b\x63\x07\x08\xc8\xd4\xb7\x9f\x9f\x36\xaa\x4e\x68\x8c\x8c\x73\x8b\x62\xed\xc1\x7a\xfc\xa2\xd3\x73\x73\x50\xe9\x13\x10\x8b\x6e\xb1\xaa\x36\xad\x07\x32\xb7\x3e\x05\xb0\x92\xac\xa5\x26\xb6\xa1\x83\xe2\x34\xd8\x02\x4f\x90\x08\x31\xb2\x28\xaf\x08\xa6\x30\x0d\x4f\x9f\x52\xcd\x8c\xb1\x85\xab\xd3\x56\x90\x84\xcd\xde\x26\x10\x3b\x07\x36\xe6\x5e\xb5\x76\xd9\xb1\xd5\x8f\xf2\x64\x12\xf1\xcc\x0a\xff\x0c\x07\xbb\x99\x40\x3d\x8f\xcd\x83\x49\xbc\xbe\xc5\x90\x31\x69\x64\x83\xbf\xe5\x6b\xfd\x9f\x63\xfb\xc7\xf8\x65\xe9\x28\xb2\xf3\x8d\xa5\xad\x6f\x4a\x7c\x7b\x84\x5b\x68\xdf\xa2\xd8\xfe\x1a\xed\x77\xa1\x24\x71\x4c\x0e\xb2\x27\x17\xe7\xc8\xbc\x8b\xd4\x76\x2d\xd4\xff\xf4\xf4\xb7\x16\x27\xe8\xdc\x8f\x93\x59\x9c\x28\x4b\x0a\x1d\x30\x46\xe4\xc3\x1a\x63\x9e\x9d\x14\x1f\x1a\xc3\x06\xa2\xa5\x12\xcf\x36\x03\x60\x75\xa2\x59\x03\x44\xfe\xd7\x92\x0e\x94\xc3\x23\x98\xd7\xfa\xf0\xa8\x62\x0d\x21\x97\x1a\xa8\xf0\x4b\xb4\xe1\x81\xa1\x7b\x69\x49\x37\x55\x59\xb2\x0d\xc8\xb7\xc3\xaa\x5c\xbf\x6c\xc1\xfa\x95\x07\x51\x55\x88\xf2\x04\x11\xd2\x8f\x0e\x58\xed\xc8\x89\xba\x9c\xed\x3e\xb8\x54\xee\x62\xdf\x69\x9d\x1e\x49\x28\x75\x46\x32\xbf\x2d\x84\xf7\x43\xbd\x03\x8d\xb9\xbc\xf5\xc7\xfd\x4d\x50\x24\x9f\x94\x5b\xe7\x6d\x88\x65\x53\xb3\x9b\x3b\x89\x11\x7b\x45\x28\xad\x4e\xea\x1e\xb0\xd9\xa0\x04\x02\xfe\xdd\xc3\x89\xa6\xb1\x6e\x1a\x98\x5f\x5a\xd1\x65\x02\xa2\x3e\x02\x2d\x8b\xdf\xda\x69\x5b\x64\x03\x5a\x9f\x0f\xff\x62\xf8\xe0\xcc\xca\x9a\xe2\xb2\x08\x7d\xc8\x6e\x7e\x00\x63\x3d\xab\x26\x4b\xb2\x36\x10\x3b\xb3\x72\xb1\xcf\x15\x92\xeb\xd4\x7c\x96\xf6\xb4\xe3\x07\x82\x69\x39\xb6\xda\x78\x27\x4a\x3e\x9c\x57\xca\x7b\xa8\x79\xc9\x85\xc6\xca\xc2\x04\x2d\x60\xfc\x96\x05\x26\x88\x62\xb4\x1c\x6b\xfa\xe6\xa1\x3b\x73\xac\xf9\x2d\x31\x42\xb7\x82\xc4\x40\x1e\x81\xc8\xbf\xb6\x55\x61\x50\xea\x38\x8c\x2a\xad\x87\x37\x80\xf4\xf8\x55\x15\x3e\x26\x63\x29\x36\x3f\x87\x16\x9d\x3e\x2d\x65\x52\x7c\x4e\xd4\x95\xdb\xf9\xe6\x02\x51\x7f\x47\x5b\x97\x78\x42\x9d\x7f\x9e\x9d\x66\x49\x4d\x26\x62\x19\xa3\xca\x9b\x37\x37\x55\xc6\xf2\x47\x4f\xfa\xa6\xbe\x0b\x5f\x0b\x92\x30\x83\x5f\x06\xd3\x08\x59\x9c\x84\xc4\x7b\x61\xd5\xaf\x3f\xa1\x9c\xd5\x7d\xeb\xe5\xac\xc6\xcd\xa7\xcf\x6c\x23\x21\xdc\xd8\x6d\x33\x4e\xb8\x64\x51\x68\xe2\x8c\xe3\xba\x05\x29\xc6\xcf\x99\x6b\xff\x5f\x7d\xb2\xc5\x64\xee\x07\x73\xc7\xa9\xd6\xb1\x16\x42\x82\xb2\xa6\x63\x2d\xae\xe9\xb8\x2c\x2f\x21\xfe\xf6\x42\x78\x44\x67\x8e\xb1\xc1\x8a\x60\xda\x2b\x2e\x84\x58\xeb\x59\xe6\x58\xae\x26\xb4\xa7\x58\xb1\x24\xd2\x3f\x2a\x74\xa1\x74\x5c\x56\xfa\xfc\xd2\xc6\xcd\x34\x1d\xc0\x3a\x8b\xc1\x24\xc9\x13\x10\xa3\x8f\xb7\xab\x2f\x56\xa0\x92\x8a\x13\x4d\x35\x1b\xcd\xe6\x5d\x14\xcf\x2b\xf8\x9e\x53\x9e\xb3\x08\xa5\xc0\x8b\x7d\xd4\xa9\xa6\xf1\x32\x63\xaf\x21\x5b\x60\x12\x22\x97\x91\xf2\x1b\x1b\xab\x38\xad\x6e\xd5\x4e\xee\x04\xdd\xda\x71\x05\xc3\x0a\xed\x85\x16\x26\xc9\x0b\x53\x6c\xed\x8f\x6e\x9f\x94\xa3\xfc\x1d\xa8\x4c\xa2\xe0\x1e\x19\x9c\xeb\x38\x67\xb5\x57\x04\x8b\x4b\x19\x93\x31\x9e\x44\x70\xb9\x33\x98\x00\xc0\x8f\x5a\x39\xb8\xf2\x3e\x1e\x62\x3b\xc1\x77\x4b\x3f\x48\x42\x76\xf0\xb4\xd2\xda\xc3\xbf\x71\x2f\x6b\x3a\xfa\x26\xec\x1e\x99\x0b\xe1\x16\xef\x1c\xe9\xba\x12\x27\xc7\x32\x88\x46\xd4\xe3\x57\x5c\x3d\xac\xb9\xf7\xd9\x05\xc2\x3b\xaf\x6a\xb3\xa3\x59\x12\xd8\x90\xc1\x4b\xa6\x12\x69\x03\xad\xb8\x3e\x2e\xf6\x40\x68\x5f\xe8\xb9\x7e\x0a\x68\xf5\x47\x01\xf8\x20\xa0\x14\x96\xd6\xd1\x80\x76\xb5\xa5\x4e\xa6\x61\x32\x1a\xe3\x65\x66\xfc\x3b\x0b\x3d\x1b\x04\x51\x54\xcf\x82\x34\xd7\x98\xab\x74\xf1\xf4\xfb\xd3\x7f\x3f\x28\x22\x12\xe8\x55\xc0\xc3\x76\xf0\xc4\x0b\x4a\x88\x88\xbd\x77\x86\xa4\x0c\x97\xfe\xad\xd8\xe4\x4f\x10\xcb\x8a\x36\x1d\xf0\x68\xb2\x17\x82\x80\x7e\x0b\x08\xd0\x85\x8a\x1f\xab\xbe\xae\x92\xbe\x74\x84\x98\xc1\x66\xaf\xc2\x6d\xf0\x75\xdc\x55\x10\x3e\x17\xcc\x16\x0e\x2b\x9a\x1d\x68\x39\x7b\x50\xda\xbe\xfc\xdb\x69\x04\xcb\xa4\x7c\xfa\x17\x9b\x90\xa1\x88\xb7\xf9\xbb\xe7\xdf\xba\xdf\x1c\x79\xcf\xf5\x26\x75\x0f\xb6\x69\x73\x52\x9d\x10\x37\x41\x78\x79\x85\xe3\x68\xfa\x48\xf5\xeb\x54\xd1\xe9\x93\x5a\x9c\xb0\x45\x90\x3b\x29\x58\x5b\xa5\x7f\x8e\x2d\x35\xbb\x7a\xff\x49\xe7\x0a\xea\x15\xee\xb9\x4b\x66\x39\x73\xc8\xae\xa4\x92\xf0\x6a\xb4\x05\x2f\xcb\x67\x4c\xff\x9c\x5c\x63\xd3\x8c\xe0\xba\xb2\xcd\xe9\x44\x69\xd9\xfb\x9c\x8a\xce\x8e\xea\xa3\x43\xad\x46\x18\x57\x87\xcc\x31\x2e\x37\x8a\xdd\x6e\x5f\xc4\xd5\x28\x14\x11\x05\x78\xc9\xaf\xe7\xb2\xa8\x2e\x54\x5c\x10\x61\x49\x21\x3f\x13\x62\xb3\x47\x1a\xac\x2e\x6f\xac\x88\x3f\x0a\xac\xe0\x86\x75\xe9\xea\xbc\xbe\xe6\xbe\x73\x88\x3e\x68\x0c\x34\x1b\xc7\xed\x67\x75\x53\x13\x50\x66\x53\x4b\xbe\x9b\xd2\xfe\x7c\x06\x81\x7d\xd0\x8d\x6a\xce\xfc\x60\xb9\x9a\xf8\x13\x69\x02\xe1\x21\x44\xbe\x26\x9f\x44\x21\xd2\xf6\x37\xcb\x35\x53\xcb\xfc\x94\x20\x85\xee\xd5\x43\x2d\xa1\x24\x3d\x98\x93\xe7\x98\x52\xbe\x6b\xdd\xf3\x02\x5e\x7f\xb0\x0d\x10\x4a\xf5\x2c\x88\x52\x3d\x93\x0c\x3f\x85\xb6\x9b\xba\xb6\x04\xd1\xc0\x50\x7d\xd0\xeb\x18\x77\x18\x52\x95\x84\xdc\xa1\xea\x0f\x7b\x26\x3e\xf5\xf2\xea\xad\x05\x54\xc8\x16\x1c\xbf\x5b\xd1\xf1\x86\x5a\x19\x2d\x44\x0f\x64\x58\xd2\xb0\x96\xd5\x69\x1e\x95\x9f\x5d\x0b\xa2\x08\x56\x3e\x6c\x78\x39\xa8\x09\x5c\xc4\x27\x48\x64\x4d\xb7\x95\x46\x8e\x46\xba\xdf\x81\x01\x32\xcf\xd8\x55\xc2\xf4\x60\xf1\x11\x77\x80\x25\x40\xf4\x00\xa1\x50\xcb\xe2\x75\x5c\xb5\x4c\xf3\xa9\x88\x37\x50\x11\xfd\xd8\x18\xfe\x09\xba\x1d\x6b\x33\xc8\xe0\xa0\x69\x49\x1e\xa2\x0e\x5d\xcc\xf5\x7a\x0f\x19\xec\x7a\x04\x00\x58\x52\x63\x52\x38\x52\x8d\x95\x3f\x41\xb3\x1d\xae\x30\xd1\xb2\xd4\xc5\xbe\x75\xd6\x4c\x10\x4d\x08\x76\xfa\xcf\x29\x01\xef\x16\x32\x27\x92\x46\xee\x43\x2a\x3d\xd2\xac\x66\x23\x1c\x2d\x3e\x36\xf7\x6d\x1b\xef\xc5\x00\xb6\x1b\x98\x96\xd3\x79\xfd\x13\x3f\xfa\x61\x1a\xdc\xe4\x0a\xf3\xf1\xdf\x1c\xb2\x43\x8d\x81\x3b\xff\x1b\xf3\x87\xad\xef\x4a\x6b\x3a\xf3\x56\x4a\xb7\xb2\x26\x84\x28\x2a\x3d\x7c\x8e\x0b\x9d\xe4\x53\x53\x31\xe9\xb4\x0c\xe2\x28\xc1\x9c\x65\xee\xb2\x3d\x00\x8d\xb7\x3e\x86\x41\x9f\x47\x13\xea\x94\xc7\x4a\x5d\x43\x85\x1e\x24\xc7\x27\xff\xf3\x9e\xe5\xb5\xd3\x6a\x3e\x29\x5c\x4c\x55\x37\xb2\x11\x40\x75\x36\xbb\xdd\x72\x02\xe3\x39\xeb\xe0\x6f\xb6\x16\xc9\x14\xd3\xdd\xae\x3d\xbd\xff\x9e\x5f\x93\x86\xbf\x1e\xf2\x89\x72\x6b\xe3\x9a\x4f\x75\xb9\xa2\x60\xc3\xf3\x27\xfe\x36\x23\xda\x6d\xe7\x54\x7c\x12\xab\x7f\x79\x61\x57\x76\x84\x77\xec\x0e\xa2\xad\x88\x4f\x4a\x50\x7a\x36\x18\x00\x9d\xe9\x18\xc4\x0f\xa6\xc1\x0a\x92\xf8\xfb\x41\x25\x0c\x0f\x0d\x96\x55\x70\xaa\xfa\x28\xd0\xb8\xd0\xec\x56\xb4\xee\x40\xc1\xee\xdb\x75\x97\xc6\xc3\x2d\x59\xb9\x64\x08\x6f\x1e\x63\x40\x08\x2f\xb3\x93\xec\x1c\x9c\x4d\x18\x75\xb1\xf0\xf5\xb5\x10\x8c\x07\xdc\x7e\x51\x6b\x59\x71\x7a\xaf\x1d\xa8\xbb\x64\x50\xa4\xdc\x56\x62\xbf\x42\xcd\xb6\x3b\xc7\xdf\x78\x26\xe9\x88\x78\x1b\x42\x8e\xaa\x5d\x3b\xb6\xc4\x54\x3d\x36\x1b\x9a\xc3\xdf\x91\xb5\x58\x28\x59\xb7\x4b\x95\xc6\x67\xbf\x6a\x63\xa1\x24\x3e\x6b\xb2\x5c\xb3\x82\x08\x1d\xe1\xae\x95\x6f\x52\x9d\xa3\xbd\x4c\x14\x2d\xfd\xf9\x60\x35\x03\x69\x78\xb1\xc1\x6f\xb4\x5f\x05\x42\x12\x4d\x04\xc6\x29\x1e\x15\xb0\xfa\x70\x9d\xec\xf6\x7b\x0f\xb5\xc4\xcc\xf0\xde\x97\x67\xf5\xdd\xaf\x30\x23\x74\x6f\x2e\x2c\x54\x0e\x7f\x8d\xaa\xd2\x7a\x7f\x4f\x0e\x55\xd9\x33\x22\x1c\x76\x01\xc2\x6f\xf7\xba\xdf\x0c\x54\xb5\x83\xdd\x2e\xcb\x0a\x13\x89\xd3\x7f\x50\x7a\x8b\xfa\x52\x86\x4c\x26\x8a\xe3\x9c\x12\xdc\x00\x42\x89\xee\x31\x8f\x89\x5f\x37\xfa\x63\x6d\x1f\xb5\x36\x94\x7d\x1c\xaa\x5f\x38\xc6\xf0\xc8\x2a\xe7\x40\x00\xbd\x2e\x94\x44\x04\x78\x81\x88\x4a\x59\xd3\x87\x14\x1a\xfa\xd3\x51\xe3\x01\x37\x62\xae\x29\xb7\xa6\x82\xb6\xac\x06\x8c\x81\x29\x6e\x5e\x35\xcd\xed\x2f\x07\x01\x97\x3e\x09\xa3\xe2\xaa\x43\x0a\x1e\xab\x1d\xd1\xa4\xb6\xb4\x70\x41\x90\x5d\x15\xd1\x82\xed\x94\xa2\x81\xbd\x19\x46\x66\x58\xc5\x11\x7e\x3e\xfb\x9e\x71\xbf\xbc\x54\x71\xf9\xa9\x61\x25\xd1\x5f\x1c\x40\x8b\x47\x82\x96\xe0\x29\x3b\x8b\xc4\xab\x2d\x60\xa5\xd4\x60\xca\xca\xb3\x35\x8d\x10\x45\x6c\x30\xb0\xbc\x9a\x7c\x8d\x75\x6c\xb7\x70\x2e\x4e\x12\x40\x66\xdc\xbb\xc2\x1d\xbf\x0a\x99\x8d\xdf\xcc\xc4\x22\x8b\xa0\xd5\xe9\xff\x0c\xcf\xfe\x0a\x80\x8b\x7b\x80\xad\xdb\xdf\xbd\x19\xd3\xb7\xb3\x6b\xbe\x4d\x39\xe1\x19\x13\x26\x8b\x3e\xb7\xa7\x35\x10\xfd\x0c\x2d\xba\x0b\x30\xd4\x05\xa6\x97\x72\x31\xf9\x74\xc0\x33\xea\x90\x78\x65\x47\xd5\x66\x55\xf9\x5c\xc0\xa6\x5a\x19\xe3\xaf\x9d\x3e\xa1\xcc\xdd\x3f\x29\x22\xe5\x0e\x06\x98\x8b\x10\x1d\xa1\x9a\x6b\xbd\xb8\x69\x4b\xe4\x2f\xe7\x8f\xd4\x7b\x42\x4d\xa8\x39\x2c\xec\x5e\xe3\xe2\x80\xce\xd2\x77\xd8\x3c\x78\xe6\x14\xc2\x17\x18\x0f\x47\x69\xe4\xed\x13\x11\x3f\xbd\x71\xc7\xb7\x11\x3b\x39\x24\x33\x08\x13\xbd\xa8\x95\x73\xec\xeb\x40\xc8\xe2\x7a\x58\x2a\xd7\x27\x57\x96\x64\x3c\xaf\x2e\xef\x16\xa2\xb6\xe9\xb0\x54\x64\xd7\x24\x5f\xf4\xd3\x47\x51\xd2\x83\xe8\x52\x82\x4b\xef\x03\x8a\x9f\xe3\x97\xed\xd1\xa9\x62\x3b\x6f\xca\x43\x11\x89\xe2\xbf\x99\x97\xf2\x0e\x84\xc1\xa5\x93\x4a\x24\x15\x4d\x0f\x65\xfb\x02\xbb\x99\xd9\xac\x87\x06\x54\x48\xde\x6d\x0b\xf3\xcf\xf2\x20\x7a\x15\x23\x92\x67\x62\x7e\x40\x2e\x5a\x24\x8b\x13\x6d\xef\x53\xab\x63\x7f\x90\x51\x65\xb2\x82\x25\x3b\xa4\x1c\x3d\xb0\x92\xae\xc5\x71\x59\x63\x31\x06\x28\x4d\xfa\x70\xea\x94\xc0\xcb\x3a\xdd\x5f\x03\x11\x15\x0d\x14\x94\xf1\x4b\xda\xdd\x98\xf6\x30\x33\xa6\xd9\xfe\x8b\x8f\x6b\xe8\x9a\xf9\x13\x87\xf8\x03\x0d\x6f\x59\xd7\x79\xa5\xad\x58\x63\xab\x09\xff\xbd\x74\x5e\x1b\x7e\x8e\x7d\xbe\x68\x82\x7e\xc3\xfd\xd4\x4a\x5a\x31\xfa\xf6\x02\x6b\xfa\x5e\x38\xbf\x7a\x55\x62\x22\xd0\x45\x19\x6c\x12\x21\xf2\xa8\xa9\xc4\x3c\xdd\x28\xeb\x7c\x9e\xa9\xf5\x48\x1b\xb0\xbd\x41\x93\x5f\xab\xfe\xb0\xca\x4c\x77\x0b\x76\x82\xc0\x13\xfc\x25\x6e\xb9\x7a\xd7\xf2\x32\xb2\xd8\x24\x34\xbb\x18\x64\x21\x45\xd8\xa1\x8c\xc6\x28\x95\xb7\x05\x87\x82\x50\x71\x9e\xc6\x87\x02\x38\x78\x67\x5c\x56\x15\xc7\xad\x23\x43\x1e\x2f\x0d\xf7\x31\xba\x18\x31\xe7\xec\x53\x90\xd7\x82\xd0\xb9\x95\x1b\x14\xb8\x54\x68\xf4\x4c\x60\x6b\xf9\x61\xe1\xa2\x21\x09\x8a\x2b\x92\x7f\x7f\x73\x80\x53\xa4\x78\x17\xc9\x42\x37\xd4\x7d\xeb\x9b\xca\xcd\x48\xa0\xfc\xe0\x22\x62\x97\xa8\xc4\x7c\xa8\x5b\xc4\xce\xd9\x25\xd3\x71\xeb\x4b\xc3\x28\xbd\x83\xd8\xee\x42\x79\x0a\x91\xa4\xd8\xd8\xb0\x55\x6d\xb7\x53\x6a\xfe\xd3\x07\xba\x9c\x82\x93\x2c\xe2\x6c\xbd\x5a\x6c\x4d\x4c\xa0\x44\xbd\x05\x02\xe7\x5c\xb7\x9a\x9c\xaf\xb5\xdf\x4b\x97\x57\x94\x18\x36\xbd\x90\xc7\xf8\x05\xe9\x09\xb0\x60\xa4\xc5\xc5\x72\xd7\xad\xac\x72\xf5\xd5\x92\x05\x22\xc0\x64\x89\x1e\x00\x39\xe2\xb1\xc3\xb9\x58\x98\x95\x6f\xd1\x27\xc1\x66\xce\xab\x50\xe7\xd0\x2d\x38\x6b\xc1\x7b\x70\x15\xdc\x39\xcb\xfa\x75\x8f\x01\x7d\xf0\x00\x97\xba\xae\xc4\x2e\xd1\x00\xc9\xa5\x31\x8a\x4a\x77\x87\x83\xf2\x46\xab\xe5\x9d\x4b\x02\x8b\x66\xf0\x8a\x3a\x1f\x0b\xb8\x53\x82\xd2\x0a\x27\xb0\xfe\x8f\x0b\xff\xbd\xa7\x24\xc3\x48\x05\x1e\xc0\xf1\xb3\x7a\xd0\x09\xd0\x8c\xc0\x53\x52\x99\x74\xa4\x90\xd2\x94\x7a\xf7\x6c\x17\x7c\xe9\x89\xaa\x39\xaf\x5d\x91\xd3\x77\xdf\x34\x92\x33\x59\x8a\xc0\xa6\xee\x41\x7f\x05\x07\x09\x76\x92\x86\xc3\x1f\x67\xee\xca\xdc\x39\xd3\xbc\xaa\xed\xda\x1e\x77\xcb\xc1\x7a\xe5\x42\x9b\x0a\x97\x0a\x6e\x4f\x1d\x4c\xe2\x9d\x25\x12\xe0\x0a\xa7\x48\xf7\x6a\xb4\xb8\x15\x00\xe8\xf5\xce\x6f\x83\x57\x74\xc3\x81\x0c\x01\xdd\x6e\xc7\x77\x24\xeb\x9e\x99\x2e\x0f\x80\x05\x7d\xa1\xb9\xa3\x04\x29\x2e\x65\x81\xca\x40\x1b\x10\x5e\xab\xc3\x1e\x12\xa7\x24\x94\x6d\xd0\x4b\xfa\x67\xd2\xd9\xf6\x1e\x9b\xfc\x8a\x04\xa7\x5b\x6d\xa2\xf0\x16\x8a\x4a\xf2\x2d\xa5\xcb\xdd\xff\xb1\x9e\xdd\xa5\x19\x33\x18\x6d\x48\x1e\x2f\xc0\x57\x47\xbe\x10\xeb\xca\x1d\x07\x24\x8a\xbd\x10\x25\x6f\x61\x1b\xc9\x5d\x94\x9f\x2f\xe4\x28\x25\x67\x92\xa3\xbb\xaa\xc3\xfd\xd8\x9b\xb0\xd8\x46\x1f\x7b\xbf\xa6\x84\x58\x9f\x9c\x39\xff\x31\xf6\x20\xf2\xef\x0a\x97\xcb\x9a\xf6\x88\xd1\x25\xaf\x34\xff\xac\xe9\xfb\x8c\x97\xda\xf9\x9f\xe4\xa1\x94\xc1\x7b\x10\x65\x5e\xc7\xe9\x3e\x47\x16\xc0\x7f\x3a\x57\xa9\x76\x43\x8d\x80\x4e\x55\xb2\x6a\xa1\x61\xfa\x00\x06\xcb\x39\x71\xf4\xc3\x01\xa5\xad\xfc\xdc\x08\x34\xb3\xf3\x60\x9a\x98\x1c\xb8\xf0\xc2\x5a\x56\x2a\x4d\xf2\xe0\x91\x17\xe2\xbd\x6e\xf9\x0a\xfb\x86\x15\xd7\xcf\x48\xa3\xc2\x26\xfa\x29\xee\x7e\xf1\x16\x5b\xc0\x64\x61\xd1\x1d\x3d\x3e\x34\xa1\x65\x9c\x5e\xbf\x86\x33\x59\x07\x5e\x6e\xe9\x8b\xfb\x75\x6b\x69\x2f\xb5\xa8\xae\x30\xe0\xf0\x91\xac\xe9\xb8\xad\x22\xbb\xe2\x3f\xa5\xee\x5a\x61\x72\xcf\x1d\x01\xc0\xaa\x85\xb3\xc3\x57\x3a\x37\x56\xf1\xb3\x1a\xed\xd9\x37\x9a\x11\xcb\xaa\x0b\x2d\xaf\x4d\xbd\x75\x00\x28\xec\xdf\xe3\x07\x43\xe9\x6f\xc1\x37\xe3\x26\x21\x04\x9e\x5f\xbc\x74\x69\x45\x5b\xad\x82\xb2\x43\xe1\x69\xe3\x02\xd2\x22\x10\x92\x77\x20\xc1\xcf\x88\x32\x42\x95\xfb\x45\x76\xe9\xbe\x23\xe4\xe8\x06\x40\xf8\xc9\x25\x95\xab\xe7\x44\x74\x66\xc2\xec\x36\x63\x86\x51\x5d\x2f\xe8\x19\x26\x12\xc6\x41\xf4\x97\x3b\xa3\xad\xd7\x57\x3d\x69\xf7\xec\x93\x80\x95\xdb\xa0\x5d\xbe\x6e\x96\x36\x7a\xb6\xfd\x43\x1e\x10\xe6\x5e\x58\x76\x6e\xba\x1c\x3c\x13\x81\xbc\xb7\xd4\xbe\xfb\x5f\x45\x39\xce\x4d\xf1\x8e\x49\xef\x09\x58\x41\x19\x9b\x3f\xbf\x85\xd2\xf9\xc2\xa0\xda\x86\xaf\xa8\x33\xb5\x16\x4a\xd2\x70\x14\x06\xa3\x92\x5d\xd4\xbf\x9d\x8c\x4a\x1b\x8f\xc1\x91\x85\xe7\xc4\x7c\xbb\xdb\x18\xcf\x71\xea\x87\x66\x43\xb6\x20\x88\xf5\xf7\x6b\xa0\xde\x86\x86\xc1\x16\x3a\xe6\x14\xa4\xa4\x70\x03\x38\x97\xa6\x75\xe0\x15\x3d\x8d\x9a\xd3\x8c\x25\xb9\xe0\xec\x6b\x78\x28\x33\x5e\x25\x06\x9f\x16\xe3\x8d\x7c\x45\x60\x8d\x65\xa7\xe7\x7d\x08\x40\xf3\x2f\xcb\xdd\x26\x4b\xa1\xd4\xd4\x5c\x51\x86\x7e\x00\xc8\xf6\x10\xf7\xb1\x7e\x73\xa2\x2e\x44\x5b\x1b\x56\x3b\x78\x96\x35\x2f\x91\xa9\xb9\x45\x60\x72\x93\xcb\x19\x8c\x50\x0c\x77\x25\x5f\x4e\x99\xca\x3b\x68\x02\x7c\xc4\xe1\xda\xf6\x21\xd4\xb0\xd4\x33\xe3\x83\xde\x0a\x11\x71\x06\x20\x28\x75\x00\x2a\x0d\xf8\xd1\xd9\xa3\xba\xad\xd0\xc1\x3a\x76\xaf\x0f\x7d\x79\x1d\x58\x4c\xdc\x2d\x67\x29\xd7\x82\xb5\x4c\x1e\xff\x5a\xd4\x76\xad\xe7\xde\x89\x7c\xf4\xb0\x5e\x15\x24\xfa\xa4\x2e\xd5\x1d\xd8\x0f\xff\x89\x39\x38\xb9\x4a\xd0\xb1\xe8\x84\x12\x31\x47\x77\xfb\x2a\x6e\xeb\xbd\x03\x2e\xf0\xa9\x78\x7e\xcc\x1a\x1b\xb1\xcd\x69\xd5\x2e\x57\x83\xd3\xc5\x60\x73\x96\x22\xbf\x81\xbb\x3d\x1a\x00\xd6\xa1\xdb\x6d\x5c\x9b\x2a\x1a\x78\x3c\x7f\xc0\xd2\x70\x59\x81\x6b\x23\xe7\x18\x02\xbd\xda\x11\x18\x08\x1c\x25\xfe\xe9\x5b\xf1\x26\x8d\x5d\xf6\xf6\xb3\x70\x8b\x28\x82\x81\xac\xf9\xa8\xe6\x65\x3f\x1c\x03\x9a\x08\xe6\x6b\x2a\xea\xa0\x8e\xee\xba\x07\xd1\x94\xbe\x3b\x45\x3f\xb1\x36\x10\x60\x98\x8c\x4b\xe7\x5c\x62\x77\x01\x41\x55\xd9\x61\x64\xbe\x01\x48\xb6\xdd\x93\x8b\x62\x19\xd4\x7d\xb0\xc7\xe4\x64\x0b\x34\x77\x53\xe2\xf9\x18\xd1\x1f\x0d\x09\xf6\x4d\x7d\x65\x2c\x37\xf9\xa7\xc7\x52\x43\xe4\xd8\x4a\x7a\xa8\x8c\xfd\x20\x47\xc0\xb1\x9c\x28\x10\x8c\x5d\x0b\x7e\x2b\xfe\x3c\x6f\xe4\xfa\xcd\x75\xe1\xc0\x6e\xfa\x91\xf6\xc8\xde\x4b\x5d\x1a\x14\xd4\xaa\x9d\x56\x9e\x02\x02\x22\x9f\x57\xbf\x58\x7d\x7a\xe3\xb2\xee\xdb\x36\x62\xbb\x7c\x41\xd7\xc1\xfc\x1f\xeb\x86\x5b\xf0\x39\xa7\xa4\x43\x35\xf5\x8b\x2f\xd1\x55\xda\x79\x56\x91\xab\xa6\x91\x12\xac\x2c\x14\x7d\x7f\x3f\xde\x5e\x82\x1d\x1d\x93\x4f\x0f\x13\xd0\x8c\xb2\x39\xae\x33\x9c\xed\xe2\xd5\x27\xde\xb1\x38\x10\x9a\x45\xc7\x2a\x3b\x10\xfa\xca\x46\xc2\x8c\x10\x74\xc1\x4e\x6f\x4f\x44\xb6\xae\x79\x5c\xa6\x9a\x5e\x3c\x4e\xda\x2b\xa6\x0c\x81\xdd\x23\xc2\x0b\x4b\xa7\x80\xca\xfc\x3d\xb6\x7f\xf3\x78\xd1\x59\xd1\xcf\x80\x62\xb9\xbe\x3e\x09\xa2\xb6\x5e\x0d\xf4\x7e\x27\xd0\x14\x39\x96\x3f\x46\x35\xa6\x6b\x92\x6a\x09\x3f\x55\x3c\xbf\x2e\x74\x1b\xdc\x3e\xf8\xb1\x0e\xc6\x2d\xdc\x8f\x02\xad\xee\xc9\xaa\x25\xb3\x05\x49\xfa\x16\xf4\xb9\x16\x24\x17\xd9\x3a\x3e\x25\x6f\x63\xdb\x4e\xc6\x41\xbd\x42\x25\x80\x79\x06\xf9\x97\x84\xd1\xd0\x25\x3b\x0a\xd8\x55\x4d\xbc\x07\xa6\x28\x76\x55\xdd\x5c\x2a\x21\x60\xb2\xb7\xbe\xf9\xb9\x7a\xc0\xd7\x98\x59\xbd\x70\x41\xad\xfb\x92\x77\x6b\x61\x9d\xa0\x05\x14\xf5\x4e\x14\x80\xdc\xcd\x84\xa8\x39\x72\x8e\x77\x78\x2e\x4d\x77\xc6\x6f\x6b\x46\xd2\x04\x5d\x82\x19\xb4\x16\xb7\x88\x15\x08\x59\x40\x03\x99\x2a\xac\xa8\xa3\x5e\xac\xf3\x0e\x1b\x2f\x6d\x3c\x6a\x1d\x42\xd4\xe1\x26\xda\x32\xda\x2a\x4d\xda\xc8\xa1\x78\xd7\x1b\x52\x98\xf0\x82\xac\x77\xe2\xb4\x23\x27\xf3\xc0\x94\x91\x00\x30\xb9\x36\x79\x11\x65\xbf\x98\x4e\x8e\x6a\xd3\x8f\x7b\x4a\x9c\x2e\x7b\x32\x2e\x3e\x0c\xcd\x0e\xe4\xc9\x2b\x29\xc6\xe8\x17\xe7\x2a\xa1\xa6\x09\x48\xb8\xbd\xc6\x74\xb4\x4d\xc8\x27\xad\x55\xc4\xf2\x66\x68\xba\x00\x88\x7a\x85\x1d\x7c\xef\x6a\xbf\xd0\x5d\x3c\x85\x4b\xc8\x6e\x1e\x59\xee\x80\xb2\xc7\x4d\x6f\xc4\x75\x5e\x35\x1a\x10\x63\x18\x2a\x1f\xdd\x6e\xc2\xaf\x0c\xbd\x50\x92\x66\x57\xca\xfd\x0d\x86\x17\xa2\x1d\xde\x23\xf1\x72\xf5\x28\x71\x6e\xeb\x37\xff\x10\x7a\xe1\x8f\x7f\x75\x66\x4f\xe9\x39\xf3\x95\xa7\xb5\x93\x55\xab\xd7\xef\xab\x48\xc2\x98\x9b\xb2\xc6\x0f\x86\x84\x38\xb7\xab\x0b\x94\xda\xe4\x9b\xfa\x1d\x21\x60\x9a\x6b\xca\xbb\x39\x90\x9b\xa0\xb0\x65\xea\x73\x5a\x88\xa8\x38\x51\x3c\x46\x45\x84\xce\x2f\x10\x03\xd4\xfb\x08\x21\xba\xaa\x24\x40\xf7\xec\x84\x13\x75\x13\xb4\x80\x40\x4d\x86\xdd\x9b\x28\xdc\x28\x2f\xa6\xd6\xb8\x04\xa2\x29\x8c\x02\xb6\x0d\xa1\x9c\x99\x4e\xce\xe8\xc1\x01\x75\xf2\xb4\x47\xa9\x28\xa9\xa6\x2c\x8e\x94\x03\x80\x2c\xeb\xfc\xb5\xc4\x67\xcf\xe2\x47\xc8\xc6\xe8\x77\xe7\x32\x77\x90\x13\x7d\x83\x24\x99\x1f\x27\xd0\x09\x0a\x94\x4b\x31\x20\xb0\xca\x99\x8c\xa9\x10\xc4\xbd\xec\x7a\x54\x67\xd9\xd2\x21\xe8\xca\xa4\x5f\x17\x4a\x60\x89\xd0\xc9\x21\x9a\x1e\x35\x44\x56\xfb\x67\xa1\x30\xed\xf8\x95\x30\x5d\x54\x32\xee\x58\x6e\x48\x28\xf6\x82\xbc\x0b\xd0\xd5\x82\xcb\x2b\xe3\x17\x82\x6b\x65\x02\x38\x6e\x32\xb0\x8e\xc3\x7a\xa1\x1b\xc4\xb2\x21\x58\x32\x0a\xe1\xba\x8d\x5f\x5a\x28\xa6\xaf\x46\xda\x25\x10\x18\xc7\xe5\x21\xcf\xb4\x14\xc2\x5b\x72\x65\x18\x05\xb8\xcc\xa3\xb9\xd4\x79\x6a\x2d\x71\x8f\xbb\xf4\x06\x90\x5c\x8a\xcd\xcd\xa9\x74\x8b\xe7\x48\x91\x77\x72\x5d\xbb\x8c\xfe\x18\x5d\x1a\x86\x4a\x19\x54\x90\x3e\xff\xc4\x94\xaa\xa2\xfd\x24\x8f\x6f\xf4\x92\x7d\xec\x1a\xb0\x5a\xa1\xc2\xf2\xd0\xd2\x2a\x23\x6b\x24\x0f\x84\xc6\xc1\x17\xcf\xdf\x49\x79\x83\x20\x08\xa2\xb6\xc7\x59\xb3\xf1\x95\x0e\x03\xf9\xb1\x96\x8d\xb8\xeb\x17\x8a\x65\xee\x9c\x5b\x97\x30\x1c\xd6\x74\x5a\x52\x71\x4b\xc4\x54\x1f\xe8\x12\x91\x8a\xf3\x31\xb2\x5f\x1c\xfb\x4b\x2d\x42\xfd\xd5\xdf\x7c\x20\xf1\x33\xb6\xaa\xe7\x86\xe1\x42\xa7\x10\xeb\xba\x0e\x06\x00\x52\x68\xf6\x80\xd7\x89\x66\xbb\x45\x1e\xb4\xe5\x45\xb0\x17\xfd\x1c\xdf\x0f\x24\x16\x8b\x58\xa8\x90\xec\x7d\x4b\x6f\xa2\x38\xb7\x19\x59\xf7\x48\xda\x25\x50\xe1\x67\xb7\xec\xe4\x89\x56\x9e\x4d\x3f\xf5\xe7\x3e\x2d\x0e\xa8\x0c\x3b\x9d\x02\xb8\x08\x8b\x36\x06\xd1\x7e\xa3\xbe\x1b\xca\x0d\xa9\x16\x57\x1a\x00\x33\x96\xfc\x02\x9c\x30\x90\x89\xc4\x4d\x41\x01\x5a\xfe\xb1\x18\x8b\x97\xb9\x03\x90\x48\x98\x1a\x22\x0e\xa3\xf2\xc2\x9c\x52\x5f\xb8\xf5\xca\x42\x57\xbf\x5f\x64\x6e\x05\xfa\x08\x93\x01\xa7\x75\x59\xf9\x7e\xa6\x8e\x4c\x42\x9b\xe2\x3b\x20\xeb\x1e\xc5\x9a\x69\x46\xd6\xbb\x7f\xdb\x37\xbe\x0d\xa7\x09\x3a\x8b\x24\x62\xdd\xd6\x67\xff\xd7\x89\x60\xc4\xdb\x78\x64\xeb\x54\x74\xe6\x54\x3c\xb7\x85\x28\xa7\x99\xd8\x15\x93\x82\x2c\xf9\x59\x2e\x3f\xd0\x39\x54\xfe\xec\xf4\x4b\x61\xb0\x42\xdd\x00\xb7\x9c\x8f\x20\x0b\xf4\x7b\x48\x26\xcc\x48\x6b\x7a\x8b\x34\x0c\xce\x6e\x77\x5d\xe1\x0b\x33\xf0\x8c\x18\x96\x64\x77\x07\x97\x0b\x19\xeb\x37\x9c\xaa\x83\xbe\xda\x1e\xb2\x7b\x70\x0c\x11\x5a\x73\x5d\xb6\xb4\x96\x05\x9e\xb2\xaf\x3c\xe5\xe5\x4f\xc7\x29\xba\xbc\xe3\x99\x30\xd4\x63\x24\xd2\x70\xb8\xee\x18\xd1\x16\x43\x44\xf6\x6c\xfc\xca\x65\x0d\x38\x4e\x0f\x24\xe7\x9a\x70\x60\x67\x21\xf7\xd5\xe9\xef\xe4\x67\xdf\xf0\x42\xb8\x9b\x54\xef\x55\x75\x61\xdb\xe0\xdc\x20\xf0\x8a\x47\x1b\xad\xab\xee\x3c\x84\xaf\x8c\x6f\x20\x52\x99\xb9\xf3\xb5\x6b\x40\x68\x6d\x10\xa8\x04\x9b\x30\xb5\xc7\x18\xd1\x0c\xd9\x8a\xab\xc3\x45\x45\xd6\xeb\x6b\x0f\xbd\x44\x5f\xa8\x27\x9a\xc3\x5f\x93\x7a\x74\xc3\xf9\x83\xe2\xfa\x83\x92\xd2\xe5\xb5\x6e\xa0\xfd\xac\xc6\xb2\x8a\xcd\xfc\xdf\x5e\xe4\x69\xf9\x77\x10\x84\xb9\xcd\xc4\xdf\x64\x9d\xd3\x4a\x98\xc7\x96\x22\x1d\x05\x9a\xbf\xeb\xae\xe1\xec\x58\x2b\xdb\x49\xad\x3f\x70\x44\xf6\x4e\xe6\x7e\xd0\x60\x66\x7f\xd3\x9a\x1d\x48\x2d\x98\xef\xb4\x01\xa4\xd2\x4f\xc5\xef\xf8\x16\x73\x98\xd3\xf0\xbc\x50\x92\x03\x8a\x64\x47\x52\xd9\x17\x04\xe9\x00\x2e\x4d\x7d\xf5\x4e\xff\x04\x68\x35\x9c\xd5\x62\xbf\x73\xf9\x09\xac\xec\x0a\x8f\x6f\xa8\x5f\xa3\x83\x67\xdc\x96\xf3\x77\x87\xda\x41\xf0\x89\x97\x36\x37\x55\x91\x07\x42\xe2\xc0\xb7\x6b\x3c\x25\x26\x63\x30\x30\x51\x86\x11\xa5\x37\xb7\x0c\x72\xb9\x71\x98\x8e\xc3\xba\x05\x2b\x5c\x5e\xd3\xab\x04\x7d\xab\xd7\x92\xc8\xee\xd6\xf4\x34\xb2\x2b\x0c\xd0\xa0\x50\x13\x47\x4e\x8a\x9a\xf3\xe2\x5e\xd8\x0e\x0f\x84\xfc\x6b\xca\x42\xdb\x6d\x0b\x96\x1d\xc8\x5b\xea\xd3\xcf\x2d\x22\x1f\x6e\x3c\x02\x71\x39\x7b\xd5\x5a\xec\xd4\x5a\x1c\x00\xab\x0d\xa6\x41\x3a\x08\x83\x21\x09\xe0\x22\x0a\xa1\x42\x0a\xe0\x2a\xba\x75\x96\xf9\xff\x56\x02\x95\xf7\x77\x41\x94\x55\xac\xb2\x25\x77\x78\xad\x12\xe7\x2d\x2d\xc2\x5a\x98\x60\x29\x79\x0c\xc8\x1f\x67\xcb\x62\xbf\x16\x98\xbf\x65\x64\xdf\x48\x14\x35\xab\x23\xf2\x5e\xb9\x8d\x70\xfd\x0d\x49\xf8\x17\x93\x26\xdb\xd8\x88\x1b\x23\xc7\x92\xde\x06\x56\xb3\x82\x10\x8b\xcd\xa6\xbe\xa1\x67\x02\x97\xf3\xe5\xf4\x89\x57\x7e\xf1\x73\xec\xd0\x8f\x25\x47\x58\x7e\xdf\xf0\xc0\x54\x7f\xd5\xac\x4f\x00\xaa\x20\xa0\xb8\xec\x3c\xf9\xa4\x50\xaf\xe5\x3e\xb2\xc4\x62\x39\x92\x15\x73\xaf\xf8\xe2\xb9\x32\x3b\x20\x6c\xce\x42\x3c\x69\x72\xdc\x04\x55\x1a\x9f\x0b\x35\xf2\x34\x73\x8c\x0c\x75\x4d\x7a\x88\xed\x13\x1f\x91\x6a\x01\x95\xf1\xbb\x6b\x61\xdf\x7e\xd2\xcf\xf1\x83\xbf\x4b\x74\xfa\x04\x05\x3f\xca\xa5\x43\x7c\xda\x08\xa0\x4f\xfe\xfe\x23\x3a\x73\x22\x35\x03\x0a\xda\x10\x5d\x49\x73\x5d\xbe\x7d\xf5\xad\xbf\x94\x4b\xf7\xfb\x28\xe5\x75\x64\x73\xb8\x9a\xb2\xe0\x44\xed\x75\xa0\x81\xcb\x5d\x66\x95\x65\x02\x38\x8f\x3a\xd7\x0f\x0a\x7e\xe6\xbd\x84\x89\xe3\x1d\xb0\xfe\x22\x87\x21\x16\x98\x90\xed\x8d\x66\x85\x04\xff\xe3\x2e\x22\x1c\x96\x98\xe3\x6c\xc0\x19\xf5\xb1\xa0\xcf\xdf\x77\xfe\xad\x29\x6f\xa1\x08\xde\x0d\xb0\xbf\x1c\xdd\x3d\x14\x48\x9c\xd7\xf6\x62\x23\xab\xba\x93\x52\x8b\x6b\x61\x7e\x57\x1b\xe0\xc7\x6e\x4a\xd9\x52\x59\x3c\xc3\x54\x0e\xdb\x5f\xb5\xc4\xee\x1f\x10\x3f\x69\x1d\x4b\x0f\x55\xfd\x96\x74\x5c\xc2\x60\xb0\xdf\x6c\x58\xc2\x20\xc8\x00\x58\xab\x5b\x80\xea\x0a\x8b\xe9\x05\xdb\xfe\xbd\x44\x51\x1d\x1d\xbd\x7e\x86\xf8\x95\x8a\xc3\xc9\x09\xba\x23\x57\x50\xe6\xcb\x5b\x01\x98\x82\xd8\xef\xf8\x6f\x0f\x7f\x3c\x2a\x3b\x92\x1a\x9e\xfe\x18\x9e\xf0\xe9\x9f\x0e\x1b\x45\x14\x40\x94\xc5\xf4\x6c\x32\x2c\x69\xc8\x58\x11\xa5\xf3\x36\x6a\x7c\x39\xea\x04\xfe\x52\xc7\xe3\xb2\xc6\xa3\xea\x4e\x09\x64\x28\x49\x1b\x0e\x73\x86\xe7\xbe\x5b\x0a\xd1\x01\x80\x3f\x54\x34\x21\x0e\xe6\x1b\xe8\xb6\x30\x52\x36\x8d\x9f\xf3\xaf\x3e\x7c\xdf\x89\xbc\xd0\x26\x7f\x55\x37\xa3\xbf\x16\x87\x45\xdc\xa8\x76\xf3\x9b\xd1\x46\xef\x58\xa8\x3f\x01\x10\xb3\x95\xce\x81\x60\xa3\x32\x69\x01\xb8\x60\xeb\x21\x7e\x49\xbf\x5f\x03\x35\xd5\xd4\x21\x28\xad\x29\x55\x47\x3a\xc2\x07\x58\x66\x86\xf8\x36\x6c\xef\xd7\xbe\xd0\xb8\x54\xba\xc3\xab\xe8\xc5\x87\xc6\xd9\xfe\x31\x88\x40\x9f\xfd\x1e\xf2\x23\x68\xdd\x99\x1d\x56\xec\x55\xf9\xbb\x69\xc7\x55\xda\xf7\x8d\x13\x0f\x97\x40\x81\x27\xaa\x09\x3f\xbd\x1e\x3f\x3d\x0a\xe0\x01\x30\xa5\x40\x5c\x52\xf1\x65\x47\xd2\x31\x39\xb3\x10\x5e\xd2\x70\x58\x92\x70\x68\xe2\x58\x4f\xf2\x78\x75\x87\xc5\x16\xd7\xa2\xec\x62\xc6\x45\x06\x81\xc1\x0a\xb3\xe6\xc7\x87\xb6\x3c\xe8\x74\xd6\xdb\x73\xb9\x4a\xb6\x62\x0a\xb0\xaa\x8d\x0e\x56\x43\xb2\x09\x34\x25\x0a\xc9\xc1\x3e\x47\x4e\xf0\x01\x17\x1d\x80\xbf\x1d\x5f\xe3\xb6\x16\xbb\xf2\xa5\xcd\xfe\xe6\x32\x33\xbf\x9a\xaa\x2a\x59\x70\x2f\x56\xcf\xcc\x57\x70\x1d\x3d\xe1\x8d\xa1\xc2\x5a\xdb\x6d\x0b\x62\xbc\xb0\xc0\x4d\x91\x2b\xfa\x6d\x60\xaa\xc8\x1e\x1b\x6b\xce\x8e\x38\x2a\x12\xbb\xd1\x3b\x81\xf5\x0f\xe0\xe8\x74\x67\x59\x9b\xb2\x56\x38\xa5\xa7\x4b\xc1\xc7\x78\xdc\xd7\x3e\xb2\xfd\x1f\xeb\xe4\x57\x24\xf3\x01\xcd\xf6\xe4\xaf\xdb\x79\x99\xe9\xdc\x82\x7f\xa4\xb2\x91\x5b\x28\xc9\x8c\x11\xf0\x6f\xa7\xc2\x68\x8b\x25\x2f\x2f\xdc\xd6\x91\xf6\x7c\x17\x04\xc9\x36\x53\xdf\x7d\x0e\x07\x27\xde\x43\x2d\x38\xa1\xcc\x18\xdf\xc0\xdf\x3f\xfd\x33\x20\xd7\xff\x18\x7c\xaf\x32\xa4\x38\xbb\xc5\x71\xdb\x29\x42\xc8\x51\x6c\x6f\x28\x8c\x96\xb4\x1c\x66\xd5\xd5\x2c\x57\x65\x01\x89\xbb\x41\x74\x7d\x12\xfd\xf5\x07\xc5\x7b\xc6\x96\xb9\x3d\xc9\x86\xa8\x31\x32\x31\x50\x40\xc7\x4d\x06\x25\x8e\x01\x19\x50\x6a\x9e\xbc\x12\x0d\x82\x2e\x48\x1a\xe8\x3b\x8a\x24\x07\xfc\x8c\xb9\xa1\x09\xd1\x6c\xb6\xf0\x3c\xd1\xdc\x73\x84\xb2\x4f\xa6\x35\xd1\x28\xca\xcb\x7f\x33\x23\x3a\xab\xc1\xf6\x07\x95\xb5\x55\x1b\x53\xf8\x5f\x0b\xe2\xee\x9b\x1d\xe6\x44\x42\xa2\x02\x5a\xec\xe3\xf9\xf0\x11\x97\x86\x54\xdb\x4f\x2b\x72\x32\xc7\x62\x5d\xb3\x2e\x73\x3a\x3e\xf9\x35\xaa\xe3\x32\xa7\x85\xa9\x67\x7f\x7c\x2a\x2c\xd4\x54\xad\x28\xe9\x07\x8a\xbb\x6f\xe9\x93\x16\x27\x92\x79\x17\x59\x8c\xe8\x41\x5a\x5c\x23\x2d\x9c\x7e\x20\x14\x0b\x17\x2b\x9c\x62\x65\xe8\xd7\x5d\x4c\x3f\xc3\x65\x87\xba\x62\xbb\xad\x54\x5a\x56\x37\x7d\x34\xc8\x2e\xaf\x05\x53\x2b\xf2\x73\xb0\xdb\x91\xd3\x65\x4d\x47\x3c\x67\xf0\x57\x5f\xcb\x71\x59\xd3\xa6\x0f\x7e\x67\xb6\x92\x79\x38\x2e\x4b\x92\x86\xfb\xc6\x3c\xd8\x6f\x5e\xf5\x56\x71\x25\x50\x6a\xc2\xa4\x4d\xeb\x71\x0b\x0d\x23\x22\xc8\x37\x1e\xe1\xc3\x46\x52\x59\xfc\xcd\x86\xb2\x56\x17\x0d\xaa\xb8\xbb\x33\x86\x4b\x97\x27\xcf\xfe\x31\x33\x3d\x06\x97\x12\x0d\x49\x2a\x36\xbb\xc7\x10\x3b\xfe\x1c\xa7\xf6\x84\x4a\x23\x71\xb2\xcc\xf4\xd1\x65\x4d\x90\xce\x33\xe8\xf4\x25\xb8\x17\xfc\x5c\x21\xbb\x5e\xe1\xdd\x37\xf5\x5f\xaf\xe7\xe9\x22\x0c\xce\x8d\x67\xc3\x5a\x86\x21\x09\xe9\x2b\x43\xa6\xec\x80\xc8\x83\x7b\x64\x9c\x08\xc7\xbb\xab\x77\x9c\x48\xc7\x65\x6d\x7a\xe7\x97\xba\xad\x04\xd1\x55\x14\xc0\x45\xa0\xb9\xfd\xc2\xc0\x96\xd6\x9b\x22\xc0\xc8\xb2\x8b\x51\x80\x85\x4b\x1f\xc5\xad\xc7\x08\xa5\xb2\x20\xf1\xca\xaf\xd9\x06\x84\x0e\x07\xbc\xe4\xdb\x26\x8e\x7e\xdf\x4e\x94\x04\xfb\xd4\xda\x4b\x9a\x93\x57\x00\x60\xf9\x56\x9f\x3f\xb6\x2f\x86\x0d\x71\xda\x15\x29\x55\x46\xa6\x2e\x49\x4a\x1b\x87\x22\xab\xf4\x75\x79\x80\x24\xcd\x03\x18\x48\xb1\xd2\xc9\xce\x93\x85\x3f\x94\xc1\x27\x3b\x5d\x60\x84\x2e\x46\x11\x01\x9b\xd3\x4a\x8c\x0b\x63\xff\xf3\x90\xb9\x75\x71\x71\xcb\x31\xaa\xbe\xa5\xf0\xe1\x0b\xdd\x1d\x61\x7b\x74\x83\x89\x3c\x88\xa2\x60\x9f\x62\x94\xb4\xef\xe4\x2d\x64\x9f\x6f\x63\x21\xb1\x48\x71\x7e\x1b\x5a\x48\xff\xce\xc9\xf9\xe5\xcf\xc2\x46\x23\x56\x0e\x8a\x3b\x0c\x6e\x44\xb8\x5e\xff\xe7\x0d\x5d\xa9\xa3\xc4\xbe\xd4\x9e\x52\xa1\xc0\x8a\xce\x6c\x48\x60\x23\xa1\x1a\x84\x8b\x85\x62\x0b\xd3\xc6\x87\x42\xf5\x5c\x91\x5f\x79\x3f\x04\x07\x0a\x3b\xce\xb1\x31\x4f\x11\x1d\x7d\x03\x2c\x09\x94\x01\x5b\xe8\xff\x10\x73\x56\xb9\xa6\x46\x14\xce\x4b\xc6\xcc\x18\x85\x7b\x04\x5a\xb6\x11\x99\x57\xec\x00\x3a\x0e\x75\xe4\x4b\x28\xcc\xff\x3d\x95\xd6\xf7\x3b\x25\xb5\x20\x45\x8b\x43\xec\xe5\x80\x23\x83\x3f\xa8\xe1\x38\xd9\x34\xf8\x00\xa2\x4f\xb2\x42\x69\x26\xe6\x38\xd3\x40\x3a\x01\xa9\x48\x64\x0b\x8e\x2d\x20\xa8\x84\x30\x12\x10\x3c\x1e\xfc\x40\xc8\xb2\x11\x91\x4d\xa9\x74\x99\x95\x35\xee\xee\xe5\xd9\xf0\x0f\x4d\x25\x5d\x3f\x1f\x9a\xc4\x76\x30\xf8\xd6\x0b\x86\x55\x85\x7c\xd0\x57\x6b\xc4\xaf\x86\xf1\x8d\x7e\xc8\x8a\x0b\x7d\x53\xba\x94\x05\xa0\x57\xc0\x0f\xa7\x48\xad\x52\x2a\x85\x47\x87\xba\x70\xeb\x71\x69\xe3\x58\x27\xdc\xdf\x1d\x32\xb1\xc8\xb6\x35\x8f\x2b\xd3\x6b\x70\x4d\x78\x6c\xe9\x6e\x8d\x3f\x81\x2a\xcd\x17\x57\x7e\x7f\xbe\xef\x4f\x31\x6b\x59\x56\xb9\x7a\xed\x9c\x19\xe4\x10\x41\xb7\x9d\xdf\x6d\xc1\x91\x47\x2c\xdc\xe8\xd1\x0f\x19\x6b\xa0\xb9\xf1\x7a\x20\x44\x01\x5a\x6c\xc9\x8e\xe2\x14\x50\x18\x04\x57\x21\x58\x06\x13\xa4\x60\xe5\xb5\xbe\xbc\x3a\x25\x55\xaa\x51\xa3\xcd\xdb\x0d\xe8\xc6\x24\x7b\x0f\x54\x7a\xc3\xbb\x8f\x84\x5f\x89\xab\x05\x1e\x04\x5a\x0f\x78\xdf\x7e\x12\x05\x4f\x6e\x89\x9c\xba\x3d\x22\xff\x98\x42\x38\xaf\x6a\x8b\x15\x96\xd8\x66\x26\xd5\x61\xea\x90\x45\x0f\xe8\x6d\x84\x23\x4a\xa0\xd5\x41\x33\x6f\x24\x33\xf8\x88\xb5\xb9\x89\x8e\x9f\x70\xc5\xd9\xb8\xd8\xfc\x37\x5f\xdd\x83\x91\x6c\x5a\x63\x99\x35\x3c\x81\x67\xc3\x1d\x0f\x09\xf6\x1e\x2a\x53\xf2\x14\x08\x68\xb4\x42\xeb\x58\x49\xc6\xa7\x04\xe4\x75\xea\xbb\xaf\xad\xdc\xaa\xb4\x83\x01\x89\x3e\x4e\x2f\x1d\x5e\x11\xcb\xc8\x6c\x79\xc9\x9e\x35\xa1\x04\xab\x36\x63\x2a\x77\xc6\x43\x8c\xd2\x9c\x0a\xcd\xcc\x6e\x75\x5e\xdb\xc2\xec\x7c\xed\x17\x03\x51\xc5\x11\x6c\xbf\xa8\xf4\x1d\xe8\x32\xb5\x84\xe9\xb8\xcc\x1a\x4e\x01\x1d\x0f\xdb\x8d\xda\x6b\x62\x48\xdc\x8c\x31\x6e\x36\x4c\x57\x52\xcd\x09\x1f\x5b\x27\x58\xad\xba\xfc\x83\xd5\xce\x2e\xc3\xa1\xfa\xee\x9b\x87\x53\x94\xe2\x5c\xe3\xc4\xd3\xe8\xbf\xfd\x79\x3f\xce\x7e\x42\x05\x07\xa2\xa6\x83\x39\x41\x96\x6b\x31\xf6\xcc\x14\xe3\x4a\xc3\x6a\x12\xf0\xc4\x81\x54\x24\x83\x34\xbd\x37\x73\xf2\x9e\x0a\x38\x43\x1e\xeb\x55\xb1\x91\xdd\xdf\xdf\x3a\x98\x5f\x06\x60\xc5\xfd\xc3\x68\x04\x69\xe4\x24\x31\x7c\x06\x8c\xfb\x74\xbd\x57\x30\xb7\x9b\xdf\x2a\xd3\xf8\x52\x04\x75\x86\x90\x85\xe6\x3d\xe0\x8d\xc9\x9b\x91\x9f\xd1\x8b\xcf\xab\xcc\x55\x29\xa3\x6e\x30\x00\x7a\x13\x11\x74\x5a\x95\xf2\xfe\x2f\xe2\xe9\x8a\xee\xd9\xb9\x90\xbc\x87\x81\xfa\x1f\x6b\x87\x52\xaf\x9a\x2c\x22\x11\x85\x35\xc5\x72\x91\x72\xfd\x71\xf7\x0a\x1f\xdb\x11\xc9\x03\xed\x35\x13\x26\xef\xc7\x79\xdd\xea\xf6\xad\xf3\x4e\x7e\x4d\xca\xcf\xfd\xb5\x73\x4f\xea\x5f\xe7\x27\xbc\xfd\x2c\x86\xed\x4b\xec\x34\x20\x64\x73\x53\x49\x79\x7a\x37\x96\x6f\xaa\xdb\x79\xbd\x88\x70\xdf\x58\x34\x48\x87\x6d\x33\x51\xf6\xec\x34\xda\xff\x7c\x87\x0e\x68\x66\x87\xe9\x07\x5d\x44\xc1\x53\xfd\xbb\xe7\xbf\xb5\xda\x70\x85\xdd\xba\x53\x3a\x15\x4a\x1a\x0c\xb5\x7c\x26\x41\xc4\x37\x75\xd6\x3b\x3d\x54\xf0\x38\xef\x8b\x7c\x30\x1e\xaa\xda\xca\xe7\xc3\xef\xf5\x9b\x8f\x23\x59\x9e\x96\x00\xa8\xf7\x61\xf7\xfa\xaf\xee\xac\xe8\xbb\xd1\x86\x17\x04\xef\x0d\x7f\x43\x96\xd1\x23\x62\x94\x1f\xb6\x57\x18\xcf\x9e\x2c\x43\x72\x49\x89\x31\xe4\x8e\x7c\xf4\x4e\x29\x4c\xd7\xdc\xa0\x06\xb2\x6f\x1d\xa1\xbe\xe8\xf6\x4b\x12\x3a\x63\x37\xc8\xf3\x3d\xfa\xf7\xa0\xb8\xe1\xdd\x72\x1b\x0b\xf2\x75\x7b\x61\x35\x69\xc1\x98\x48\xd7\xaf\xe5\x3a\x89\xe0\xf4\x83\xe6\xa2\x17\x4c\x35\x11\x61\x73\xc8\x19\x6d\x7d\xab\x13\x30\x70\xdd\x22\x62\xf4\x45\xf0\xf3\xc1\x62\x61\xd2\x6b\x0b\x14\xc1\xf1\xa3\x1f\x9a\xeb\x7c\x70\x59\xd8\x5e\x9a\xf0\x91\x85\xfe\xd1\xfa\xbd\xca\x36\xe1\x2e\x54\xd6\xd4\xc6\xa3\xc9\xd5\xb1\xed\x70\x4b\x1c\x0e\xcb\x19\x79\xf8\xbe\xb6\x31\x21\xf3\x8c\xfd\xfb\x34\xa8\xf1\xd4\x97\xda\x2d\xd2\xb8\x2e\xa2\xc4\x1f\xac\xba\x7f\x85\xa9\x6b\x49\x1a\xd4\x80\x93\xe6\x50\xff\x2b\x18\x99\x2a\x62\x26\xb6\xfe\x97\xf7\x7e\x11\x8f\xcb\x4f\x10\xfc\xbc\x27\x6d\x85\x97\x7b\x4a\xc3\x6f\xf4\xaa\x9b\xe2\x53\xeb\xa9\xa1\x58\x6f\xef\xa0\xd4\x76\x5d\xe6\xcd\xb1\xc7\xc4\x0f\x2c\x86\x71\x1d\xfd\xca\x5e\xca\x6c\x6e\x7d\x0e\x2d\x6f\x81\xe8\xfe\x4b\x88\x66\x73\x75\xad\x7b\xde\x7e\x51\x63\x8e\x33\xd8\xcd\xf8\x68\xaa\x92\x6f\x98\x15\xd4\xb1\x5b\x89\x1c\x4d\xf3\xad\x47\xb4\xf6\x1b\xc9\xe2\x28\x4a\x34\x68\xa9\x6b\x98\xdb\xd2\x98\x09\xae\x8e\xad\xc9\x5d\x62\x09\x60\x5c\xc0\xeb\x0f\xc6\xb8\x95\xaa\x0d\x79\x83\x8d\x6c\xce\x8a\x42\xe8\xd8\x76\x9a\xc1\xd9\xea\xc1\xf7\x9c\xfd\xe8\x72\x05\x98\xd7\x7a\x39\x99\x92\x4e\xf0\x7d\xfc\x6b\x66\x9e\x50\xe9\xe6\x35\xfc\x92\x5a\x20\x03\x4a\x1f\xc1\x83\xbf\x75\x69\xca\x81\xb1\x5d\x53\x1f\x2e\xf5\xda\x0e\x75\xa4\x9b\x43\x91\xd1\x12\xb9\xf7\x84\xe6\xe6\xd4\xa7\xc6\x5f\xbc\xd8\x44\x64\xd7\x0b\xd9\x66\x39\x49\xdb\xbf\xb2\x20\xcf\x6f\xbf\xc4\xac\x40\xfa\x23\xda\x88\xa7\xb8\x08\x12\xac\x19\xf1\xde\xf1\x6d\x68\x00\x27\xda\xde\xd4\x9c\x48\x16\xa6\x9e\x18\xcf\xc8\xff\xea\xdd\x4a\x1a\xd6\xb3\xcc\x3e\x4d\x55\x7d\x45\x14\x50\x34\x6b\x3a\x28\xb2\x43\x41\x4e\x46\x92\xf4\x8a\x0e\xe2\x3a\x2f\x9e\x9f\x58\xe8\x98\xed\xa2\x06\x63\xd5\xf7\xb2\x2f\x21\xf4\xbc\x5b\xe3\x30\x74\x7b\x50\xc7\xea\xe8\x8a\x4f\xae\x88\x3d\xac\x89\x0f\x9a\xef\x99\x76\x59\xfc\x43\x01\x91\xb6\x60\x7d\xbc\x84\x97\x80\x2b\x65\xf5\xcd\x42\xfa\x8e\x11\xc6\x80\x4f\xd3\x72\x32\xe7\x0a\x37\x20\xfd\x51\x60\x71\x4e\x5f\xf2\xb8\x67\xc4\x3f\x10\x6e\x49\xd2\xab\x58\x17\x42\x56\xe2\x49\x24\xb9\xcd\xcd\xe1\x5f\xfe\x84\xc4\xd2\x0c\x46\xa5\x9e\x8f\x37\xf3\xe1\x59\x0a\x64\x40\xa6\xe5\x24\xba\x70\xea\x67\x4a\xd1\x8b\xf1\x2c\xc1\xf9\x0c\xf9\xe0\x7b\x85\x57\x3c\xa6\x5c\xa0\x2e\xdb\x0d\xde\x1f\x76\x92\x78\x73\xab\xf7\xba\xb0\x4c\xb6\x0c\xfc\xa9\xcb\xb4\x2d\x0a\x5f\xe3\x6d\xdf\x6d\x04\x70\x6d\x34\x6a\x3c\xb5\x91\x8b\xdb\xce\xf9\x3c\xa0\x97\x48\x8a\x54\xd1\x36\x40\x64\xc7\x0b\x82\xed\x77\xb4\x21\x10\xd3\x81\x90\x9e\x32\xf1\xf9\xa9\xa1\x24\x0d\x23\x78\x35\xa2\x28\xda\x21\xde\x02\x7d\x0b\x71\xaa\xed\x9c\x8a\x2c\xde\xb9\x02\x69\x7e\xbb\xea\xe8\x13\x59\xac\x8f\xff\xd6\xfe\x7b\x4a\x27\x83\xc4\x5f\xe8\xbf\x54\x9a\xe6\x6b\xa6\xd5\xd2\xd6\x6d\x7a\xf7\x5a\x2f\x28\xd6\x3b\x7a\xe9\x70\xa4\x10\xbf\x37\xf4\x6a\xc8\x57\xfa\xce\xf0\x7c\x58\xf1\xfa\xc4\x72\xd9\xf3\x78\x81\x22\x3d\xe7\x55\x68\x34\x17\x3a\xc3\xa2\xde\x10\x22\x56\xcc\x05\x31\xf3\xde\x5a\x9f\x49\x96\xa2\xe0\x9c\x3a\x1c\xa0\x51\xac\x7a\xf0\x5b\xa5\xcb\x60\xcc\xc6\xbf\x9c\x10\x49\x17\x3c\x2f\x8c\x42\x92\xe6\xbf\x6f\xbf\xb9\xf4\x5a\x5a\x1c\x95\x04\xdb\x6d\x7e\xbf\xfb\x84\x89\x1f\xcf\x62\xb9\x29\x65\x24\x95\x22\xf8\x99\xf5\xcb\x9b\x1f\x6b\x76\xf0\xc5\x85\x6e\x0f\x4e\x11\xd9\x0c\xbd\x25\x44\x18\xe0\x19\xc5\x80\xd8\xb8\xfe\xa4\x10\x74\x79\x42\x59\x89\xb6\xbb\xdc\xb8\x2a\xa5\x40\xce\x9c\x33\x74\xce\x6c\x03\xf5\x61\x76\x1d\x3d\x6c\x57\x35\x2f\x02\xba\xfe\x18\x3a\x7c\x22\xdf\xa9\xf6\xbc\xbd\x39\x51\x80\xd5\xc5\xbd\x22\xf1\x85\xb9\xac\x98\x3a\x33\xd1\x2f\x94\x0d\x26\xbf\x18\xa6\xb7\x25\x2f\xd9\x61\xe2\xdc\x96\xf2\x44\xe7\xc0\xe7\x75\x4c\x55\x9a\x14\xa8\xc4\x1b\xe2\xf9\x78\x40\x8d\x30\x18\x32\xf3\xdb\xb1\x38\xb2\x5b\xce\x67\xf3\x4e\x7e\xf5\x4e\x26\xac\xb2\xaa\x16\x0a\x28\x2a\x6b\xfa\x80\xe9\xf2\x07\x92\x7e\xb1\x4e\x7d\xaf\x2d\xca\x53\xb2\x78\xfa\x44\x71\xfd\x81\x30\x94\x68\xea\x70\x1c\x3b\xf3\xaf\xd8\x11\xe2\x48\xd1\xec\x50\xc4\xea\xb2\x53\x2a\xa3\x0a\xd2\xde\xde\x4a\x21\x79\x83\x6f\xb5\xaa\xe5\x25\x42\xb4\x6f\xb1\xf3\x63\xaf\x0d\xd9\x32\xad\x34\xdc\xe4\x6a\xa6\x77\xc7\x75\x25\xf6\x2b\xa2\x34\x65\x52\xec\xc9\xe8\x36\xd1\x7a\x59\x66\x18\xc8\x5a\x77\x5a\x1b\xbe\xa3\x3d\xf6\x8b\x97\x62\x38\x87\xb5\x40\xa6\x36\xaf\x68\xeb\xa5\x42\x6f\x04\x81\x72\x63\x98\x0e\x48\xca\x72\x8b\x49\x81\xb6\xbd\xea\x7f\xec\x9d\xfb\xda\x0f\x61\xe0\x3d\xaa\x73\xdb\x61\x12\x1b\x32\xf8\x19\x37\xba\x05\x22\xcc\x29\x23\x81\x45\x7d\x77\xcd\x32\x8a\xa4\xc7\xcd\x62\xc0\xcf\x68\x4a\x90\xe2\xef\xef\x11\x37\xb7\xee\x9e\x3e\x7b\x57\xb9\x35\xd1\xc7\xed\xc1\xde\x00\xac\xbb\xfc\x90\x39\x7c\x37\x60\xb8\xed\x8e\x26\x05\x93\xa8\x06\x3b\x04\x46\x04\x69\x10\x2f\x11\x90\xfe\xbc\x1f\xac\xed\x7b\xa5\x00\xca\xcb\xb6\x91\x36\x10\xfb\xa6\x3e\x82\x44\x34\x66\x35\xe1\x00\x68\x20\xa4\x76\x20\x04\x16\xa1\x48\x07\x81\x05\x20\xae\x1e\x6a\x72\xf0\xe0\x3a\x94\x1a\xa5\x40\x09\xe6\xe7\x2c\x66\x76\xef\x1a\xfe\x1b\x03\x95\x29\xc5\xb9\xd1\xb8\x46\x17\xc3\x24\x0d\x8c\x46\x1e\xfb\x75\x2b\xbe\xdd\xba\x6e\x29\xbc\xe2\x47\x48\x9e\x08\x1d\xd1\x71\x18\x8c\xc9\x80\x9f\xd9\x84\x83\x20\x55\x5a\x12\xc8\xd1\x20\x80\x37\x55\xaf\x80\x20\x51\xe8\x53\xe9\xd6\xd8\x4a\x9c\x5b\x48\x26\x7d\x1a\xfe\x9a\x39\x07\xe3\xbd\x92\x6d\x06\x7a\xb1\xe7\x30\xe1\x52\xa0\xe5\x30\x9c\x1b\x82\xca\x9f\xbf\x9c\xaa\x3d\x9e\xda\x21\xa6\xcb\x26\xc2\x32\xaf\x66\x0b\x31\x5e\x22\xf3\x72\xeb\x2f\xd9\x8b\x41\x8b\xea\xce\xec\xfa\xaf\xd6\xc2\xfd\x7a\xb6\xa6\xec\xb2\x62\x2c\x5e\xe6\x8d\xee\x2d\xe9\xd2\x92\xa0\xb7\xb0\x10\xfe\x84\x95\xeb\x34\x86\x24\xf4\x1f\x28\xe7\x8b\x67\xcf\x08\xa0\x50\x66\x83\xb9\x57\x56\x90\x7a\xe1\x5f\x5d\xef\xd8\xd2\xf7\xd8\x08\x84\x06\xb4\x46\x55\xda\xf9\xd4\xb8\x7b\xd7\xac\xc7\x0f\x7f\x4d\x02\xa8\xd7\x06\xad\x19\x77\x53\x86\x39\xfd\xeb\x97\xd0\xf8\xe1\x4f\x22\x01\x90\x1d\x6e\x3e\x31\x20\x21\x1e\x84\x13\xcd\x76\xfc\x17\x7d\x4f\x0f\xe4\xb2\x65\x4a\x22\xc9\xa7\x07\xa1\x52\x92\x46\x01\x81\x86\x54\xcd\x77\x20\x1a\x1f\x67\xa0\xef\xf5\xbf\x4b\x1a\x1f\xb8\xdf\x83\x29\x80\x8d\xb8\xf1\x15\x8f\xe4\xe5\x4f\x13\x08\xdc\xf5\x61\xa3\x5c\x08\xd9\xd8\x29\xb3\x6b\x6e\xf2\xcb\x23\x41\xef\x64\x7a\x8a\x25\x3f\xb2\x41\xa9\x59\x5c\x77\x10\x39\xa5\x5f\xd4\xf7\xe0\x05\xa8\xe1\x88\x2f\x39\x24\x7e\xc6\x2c\x61\xc0\x98\xb5\x4e\x24\xd6\x11\xc0\xeb\xc1\x00\x75\xf2\x7c\xab\x54\x23\x9a\x77\x20\xa7\xc7\x52\x96\x15\x7f\xb2\x5c\xbb\x12\xfc\xc7\x79\xff\x1d\xec\xd9\x64\xce\xbc\x47\x28\x88\x47\x16\xfe\xe4\xe1\xcf\xb4\x23\xd0\x42\xa3\x85\x52\xac\x32\x1a\x70\xb3\x98\x92\x33\x1b\xf1\x3f\x89\x0a\x8c\xaf\xb2\xef\xdc\x82\xce\x16\xca\x4b\x4b\x7a\xc1\xa4\x09\x82\x24\x6c\x16\x8d\x2b\xae\xcc\x5f\x32\xdb\x27\x65\x41\x3b\x06\x59\xb5\xd3\xf6\xf7\x97\xb3\x23\x0e\x8b\x88\x63\x24\x37\xf6\xad\x30\x47\x4a\x64\x7b\xd5\x1e\xc4\x97\xe7\x80\x89\x25\x27\xa2\x01\xd2\x5d\xf6\x4d\x20\xff\xd8\xb8\x16\x97\x21\x49\xea\x6a\xc0\x2b\x32\x4d\xbd\x85\x65\x6c\xf1\x3e\x33\x49\xfa\x60\x6a\x54\xd4\x1c\xd5\x94\x40\xa5\xb5\x53\x9f\x41\xc9\x44\x51\xc2\x50\xdf\x71\x20\x73\x94\x54\x9e\x86\x15\x04\x1b\xf1\x29\x55\x57\x7a\xb1\x99\x63\xb1\x99\xb3\x0a\x24\x4a\x0e\xb4\xbe\x7d\x52\xde\xfc\x4f\xa3\x69\x7a\xba\xd0\x31\xec\x17\x22\x9a\x70\xa0\xf0\xe2\x35\x37\xc9\x0e\xa8\x37\xf5\xa6\xd2\xcb\x99\x45\x0f\xbf\xd3\x73\x59\x73\xbe\x3a\x46\x11\x64\x01\x74\xe0\x3c\x1f\x32\xfe\x9e\x17\x0d\xcb\x73\x30\xf9\x7f\xc3\xe5\xea\x5a\x8d\x29\xd4\x5f\xa6\x95\x72\xc4\x54\x5c\xd7\x73\x53\x97\xfc\x9a\xeb\xf7\x79\xe8\xfd\x4d\xdc\x40\x1f\x5f\x28\x11\x9b\x1d\x1e\xd5\xb7\x5f\x6c\x2f\x92\xb4\x17\x3b\x9f\x8b\xa9\x75\x2a\xf8\x95\x32\x2b\x3b\x72\x69\x4a\x21\x9c\x21\x24\x4e\x00\xf6\x62\xeb\x40\x23\x43\x72\x62\x88\xd0\x48\xbe\x9f\xe4\x40\x69\x58\xb3\xe1\xb1\xa6\xe3\xc6\x5b\xc5\xfd\x0c\x0d\x23\xd8\x29\x6f\xc3\x85\xe5\xc1\x85\xf1\xe5\x12\x8f\x01\x8b\xf5\xef\xd5\xe6\xa1\x79\xd0\x61\xb9\x7a\x27\x7f\x3e\x6c\xd8\xe8\x9a\x8e\x3d\x19\xbe\x40\x55\xee\x48\x15\xa1\x34\xd9\xc1\xc4\x6b\x6e\x0e\x93\x3f\x23\x75\x4d\xd4\x87\x53\x60\x8a\x34\x73\xac\x3f\x5e\x8b\xab\xae\xb0\x33\x97\x6c\x66\x92\x10\x0d\xe2\x65\xf4\x79\x10\x84\x77\x46\x57\xd3\x87\x83\x4f\xca\x89\xef\x7f\xda\xc5\x47\x7d\x6b\xf4\x27\x07\xe0\xc5\x15\xac\xd6\x97\xa3\x48\x51\x17\xbc\x0d\x19\xab\xf5\x61\xcd\x4d\x55\x3a\xff\xc9\x9f\x5e\x5a\x12\x2d\x08\xfe\x29\x54\x02\xcf\xa2\x74\xf3\x30\xb7\x77\xa2\x19\x52\x52\x5f\xd8\x9c\x50\xf2\x0a\xe6\xbb\xdb\x9c\x80\xe5\xe6\x4d\x6c\x84\x37\xbc\x8a\x52\x69\x8f\xcf\x72\x02\x63\x3b\xd2\x3b\xaf\xea\x95\x1d\x08\x7d\xa2\x20\x79\x80\x01\x02\x1f\x64\x79\xfa\xf0\x4b\x57\xca\x06\x13\x40\xa5\x0c\x50\x7f\xb8\x41\x92\x6b\x4d\xae\x0e\xd5\x0b\xe1\x42\xf3\xe8\xdf\x79\xd4\x10\x26\x19\xc9\x99\x0d\x78\xf8\x03\x26\x49\xeb\xf1\x32\x61\x9d\xc5\x26\xf0\x3d\x77\x80\xd8\x3f\x83\x29\x08\x82\x8c\x85\x81\x6b\xc2\x78\x19\x94\xb9\xee\xe7\x40\x61\xcb\x91\xac\x10\x88\x6e\xff\x01\x84\xda\xad\xf7\x81\x12\x3b\x29\x21\x1c\xf3\x49\xa0\xf0\x63\xf7\xe1\x26\x8a\xcc\x80\x0e\xd9\xf5\x7f\x4c\x2f\xcc\xbe\xc0\xe2\xbf\x2f\x79\x81\xdc\xba\x81\xcc\x19\x7e\x7e\xc0\xde\x78\xd9\x38\xa2\x10\xcb\x75\xcb\x39\xcd\x4e\x0f\x07\x59\x2c\x44\x19\x9d\x57\xb4\xed\x88\x71\xe2\x7b\x66\x7c\xc9\xe3\x5f\x00\x71\x9c\xd7\x46\xae\x84\xd9\xf4\x80\x34\x83\x12\x80\x5a\xa5\xa5\x76\x2a\x4f\xaa\xcd\x9c\xf6\xca\x6a\xc5\x8d\x76\x83\xdd\x18\x29\x14\xc0\xb0\x38\xcc\x7b\x3e\x65\xfb\x8a\xbc\x01\xb2\xf9\x51\x26\x7d\xc5\x4a\x4a\xdf\x36\x52\xf2\xc1\x0a\xff\xcb\xdb\xac\x84\xb8\xd6\x63\x96\x4a\x46\x03\xc0\x10\xc3\xb4\xee\xf1\x76\x83\x6b\xea\x4b\xa1\xbf\xbf\x71\x94\x55\x5d\x3b\x3c\x49\x31\xb5\x52\xb3\x29\x5d\x9e\xc9\xa2\xbd\x23\xdd\x86\x62\x1d\x6f\x26\x6f\x63\xb9\xe1\x07\x81\xff\x34\xec\x5f\x8c\xb9\xf2\xb4\x90\xe5\xac\x8b\x7c\x40\x3c\x69\x51\x49\x2a\x5e\x70\x9d\x83\x02\x95\x79\x44\x25\xba\xe0\xe6\x02\x5d\x8f\x4c\xc2\x20\x88\x92\x03\xd5\xf8\x2f\x91\xa5\xc0\xd5\x11\x75\x78\x65\x64\xc6\x3c\xf5\xbb\x88\x05\x1f\x4d\x3e\xcd\xa0\x10\x14\x28\x42\xd6\xfc\xae\xea\x09\x0e\x29\x84\xe6\xb5\xd4\x5a\x6c\xfb\x1b\x7f\xaa\x35\x79\xae\xcf\x9e\x7b\x3f\xa5\xa1\x2b\x87\x15\x23\x6c\x53\x64\x9e\x8d\x9b\xde\xc8\x80\xc5\x1f\xf3\x6a\xd3\xb7\x50\x13\x43\xc6\xb1\xc8\x36\x9c\xfb\x97\x5c\xe6\x45\x90\x9b\xd5\x68\xf6\x9f\x68\xff\xd1\xf7\xc4\x84\xc2\x3d\x2d\x68\x5a\xa1\x75\x84\x92\x8c\x42\x23\x2c\xa3\xb0\xae\xc4\xdf\x77\x1f\x6a\xae\x16\x66\x06\x02\xe6\xaf\xbe\xe9\x2c\xeb\xf4\x7b\xd0\x95\x56\x87\xc5\xd6\xdd\x72\xb2\xe9\xb1\xc8\x9e\xa5\xc8\x9e\x10\x9b\x42\x5f\x79\x20\x39\x5f\xb2\xa3\x1b\x0c\x90\xe0\xf9\x2d\x3e\xf6\x63\x64\x25\xd4\xbc\xde\xc1\x00\xa6\xb1\xbc\x67\xf8\x42\x61\x50\xfe\x14\x9a\x0f\x67\x2a\x46\x17\x42\xac\xe3\x03\xf7\x1b\xcb\xbd\x0b\x5f\xff\xec\xd7\xee\x77\xe7\xf4\x43\x0a\x88\x04\xda\xf2\xa0\x59\x4d\x7f\xf6\xa8\x84\x01\x9b\x5d\xb3\x28\x08\xbd\x27\x06\x03\x9e\x44\x5a\xaf\xe8\x78\x14\x9d\xf8\x36\xb4\x30\x37\xc3\x87\x21\xef\xa1\xa6\x3d\x08\xed\xae\x3e\xb2\xfb\xda\x8f\x48\xcc\x89\x48\xeb\x59\x60\xe1\x10\x7a\x74\x2f\xe5\xfa\x92\x7f\xca\x6c\xc4\xce\x6b\xf7\x1b\x05\x01\x3d\x94\x90\x15\x45\x76\xc4\x19\x9c\x08\x20\x85\x44\x2b\x2b\x2a\x53\x2a\x00\x50\xb6\x95\x73\xe2\x8e\x1e\x5f\x4c\x57\x62\xe4\xcd\xe4\x98\xda\xfe\x63\x34\xff\xa9\xfe\x74\xc4\x6f\xe5\x65\x49\xc3\x13\x2b\xa5\x13\xab\xa4\x01\xef\xe9\x3c\xac\x3a\x7f\x51\x3d\xa5\xba\x13\xfa\xfc\x52\xb2\x78\xe1\x15\x13\xd9\x3a\x7e\xf0\x14\x61\x6b\x46\xf1\x2b\x0f\x3d\x79\x20\x92\xd6\x3e\xc1\xc4\xe2\xf0\xe6\x82\xdf\xf6\xf6\x5f\x9d\x21\x6b\xa3\xb2\x16\x00\x00\x55\x4b\xe5\x64\xd9\xfb\x6d\x0c\xb6\x32\x27\xa0\x7a\x4a\x99\xe3\x6c\x2c\xb7\x1c\xb8\xcc\xea\x6b\x97\x79\x88\x83\xdf\x7d\x53\xdb\x27\x3f\xdf\x99\x39\x92\x31\x19\x6b\x71\xb9\x20\x5a\x7f\xa0\xbd\x56\xa4\x3f\x34\x1b\x79\xdb\xe6\x51\xdb\x24\xda\x3f\x8f\xd8\xc5\x7e\xa5\xec\x98\xae\x74\x0f\xc8\x27\x7d\x1c\xf3\x7a\x12\x5b\x30\xa0\x4b\x8c\xc3\x0a\x8a\xda\x6d\x2b\x79\xea\xa1\x22\xf8\x42\x77\xef\x89\xa5\xfb\xd4\xac\x32\x0c\x53\x33\xc2\x20\xd8\x81\x3d\xa1\x42\x81\xa9\xdc\xbc\xba\xe3\xe7\x05\x41\x10\xa4\x70\x79\xf5\x1e\xac\x31\xf6\x01\xe4\xa8\xf2\xae\xeb\xba\xea\xc2\xbc\xb0\x32\x28\x31\xf0\xf3\xac\xaa\xb9\xbd\x08\x73\x43\xbf\xe0\xbf\xd8\x1d\x6e\xcb\xe4\x01\x73\x08\x31\xf9\x88\x7f\xc7\x36\x2a\x6b\x7a\x6e\x35\x26\x73\xa7\x51\xfb\x12\x7b\x57\x5e\xb2\x43\xff\xce\xac\x90\x47\x8f\xf9\x1d\xc6\xf8\xd9\x0c\x39\x6f\x0f\x05\x38\x72\xd7\x25\x5f\x3d\xbb\xc2\xc1\x33\x19\xcf\x92\x4b\xe0\x8a\x8f\xee\x09\x83\xc2\xf9\x03\x22\x68\x0f\x86\x6a\x41\xa4\xc1\xef\x54\xb7\x8c\x6c\xb7\xc2\xae\x71\xdf\xf8\x25\x34\x48\x5f\x2f\xbe\x16\xe6\xe4\x86\x0f\x0e\x11\xa6\xc4\x53\x40\x65\xbe\x74\xe7\x2d\x6b\x32\x42\x3f\x85\x8b\x23\x6e\x51\xed\x9e\x17\xb0\x15\xcd\xef\x49\xb1\x05\x44\xe3\xe5\x2f\xc5\xd2\x50\xbe\x54\xfd\x2f\xff\xb2\x75\x2c\xd6\xc2\x18\xc2\x6f\xbf\x94\x3a\x63\xbb\x03\x40\x43\xbd\xb8\x19\x71\x6e\x4a\x58\x7a\x1a\x0d\x8c\x16\x68\xc1\x1c\x99\x0b\x1d\x4a\xe5\x5f\x04\xec\x07\x3f\x5b\xd0\x84\x40\x71\xa7\x97\x8d\xfd\xc4\xec\x07\xf2\xef\xfe\x2f\x1b\x8b\x0d\xb8\xf0\x7c\x96\xf5\x7a\x2a\xaa\xa7\xae\x81\xa6\x9b\x20\x68\xaf\x1f\x70\xd0\xac\x9d\x99\xe3\x0c\xe7\xb2\x60\x9a\x32\x63\xdb\x61\x84\xd9\x79\x54\xb7\x9f\x81\x98\x2a\xc4\x09\x1b\x8b\x0b\xe1\xd8\x84\x9d\x49\xd2\x38\xbf\x85\x48\x47\x67\x89\xa9\x43\x73\x21\x66\x70\x48\xf0\xbc\x93\xa6\x0d\x7f\xae\xf4\x96\xae\xb1\xc4\x76\xc3\xab\x72\x41\x52\xa6\x52\x69\x6c\xf6\x99\x71\xea\x67\xf6\x38\xb6\x33\x21\x33\x70\x50\xef\xf0\xce\xb2\x35\xcd\x07\x4b\x67\xdc\x14\xc7\xfc\xe3\x7b\x91\xed\x1d\xd5\x36\x91\x43\x6c\x1a\xe6\x0d\x83\x7e\x91\x39\x93\xb1\x83\xda\x95\x41\x8b\x04\xea\x99\x61\x69\x99\x83\x72\x7e\x2c\xf5\xe1\x29\xf7\x64\x74\x04\x47\x0c\x86\xa5\x70\x50\x3e\x7b\xb0\x4b\x3e\xbd\x1e\xf7\x03\xeb\xf8\xd7\xaf\xc4\xfe\xd9\x29\xaf\x17\x0f\x5d\x0a\x0e\x04\x5b\x6e\xa2\xc3\x8e\x1f\xe8\x2e\xb1\xc5\x2a\x57\x0f\xfa\xe4\x51\xab\x5b\xc2\x59\x38\x5b\xd3\xb3\xe0\x75\xb5\x3c\x9a\x35\x75\xd8\x2f\xd0\x2c\xe1\x7c\x07\xe1\x5a\x45\xad\xbc\x2d\x43\x4b\x16\xde\x0d\x02\x3f\xd0\x1e\x92\xbe\x09\x4b\xf4\x95\xdf\x9f\xdf\xd9\x06\x84\x66\xdb\x2e\x9e\x91\xc2\x2a\xa2\x00\x36\xb4\x6c\x59\xd5\x76\xa6\x4d\xd2\x13\x61\xfe\x06\xb6\x60\x4b\x7c\x96\xcf\x57\x57\xf6\xe2\x3d\xf4\x7f\x32\x6c\x78\xfe\xb5\xcb\x6e\x5e\xe9\x4c\x48\x71\x5a\x7b\xeb\xc6\xc7\x8a\x6f\x3a\xab\x6a\x2b\x5f\x9f\x9f\x96\xd3\x09\x5b\xe7\xbe\xfd\x76\x34\xa3\x94\x15\xa8\x23\x2c\x26\xed\xfa\x6f\x3c\x92\x9b\x7a\x44\x19\x1d\x92\x83\x05\x48\x04\x32\x8c\xf6\x3b\x55\xde\xc6\xfe\xd8\xc3\x13\x13\x4a\xff\x84\xc7\x0f\x58\xbb\xfe\x29\x9a\xdb\xaf\xeb\xaa\x76\x4c\xaa\xda\xc2\xdf\x9a\x69\xe3\xb1\xa6\x4b\x23\x1c\xce\x7a\x95\x77\x40\xb6\x3c\xfa\xcc\x0e\x2c\xf7\x19\xb4\x4a\x5e\xd9\xc7\x73\x19\xc7\xf4\x31\xbf\x49\x0e\xe7\x9a\x8f\xb7\x83\x73\xff\x6f\x7f\x00\x4c\x0e\xe7\x5a\x1e\xe2\xe4\xb1\x03\x7f\x80\x1b\x4c\x8a\x62\xd2\x33\x37\xa5\x02\xc1\xcf\x0f\x2c\x3b\x37\x1c\x25\xa4\x00\x57\x11\x48\x26\x9a\x61\x6a\xd0\x78\x47\x57\x59\x9b\xe3\xb6\x64\x83\x29\xd2\xfc\x6a\xa2\x63\x7d\xc1\x76\xf8\xc4\x0e\xe0\xa2\x3a\xa7\x2f\x81\x4f\x34\x3b\x34\x17\x7e\x32\x57\x69\xe7\x55\x5d\xf5\x46\x0e\x3d\xcd\x40\xf6\x38\x75\xe7\xcd\xfa\xd7\x3c\xe0\x01\xbb\x9e\x95\xa9\xca\xe2\xea\x6d\xc5\x4c\x77\x46\x79\x2c\x69\xb3\x91\x30\xb7\x96\x7f\xf8\xa5\x5a\x9e\xba\xe5\x4f\x94\x2a\x3d\xc3\x57\x94\x58\x39\xb7\x51\x69\x63\x53\xf2\xe6\x5a\xc5\x39\x28\x5b\x0c\x91\x6e\x61\x20\xe3\xf8\x50\x0d\x38\x15\x3e\x32\x65\xd1\x95\xe2\xdc\xc4\x80\xfb\x14\x81\x59\x7f\xdd\x83\xb7\xa0\x57\xff\x44\x1e\x26\xfe\xd5\xf0\x56\xb6\x76\xfd\x51\xf9\x09\xb4\xcd\xda\xfe\xef\xbf\xef\xa7\x23\x01\x9b\x84\x7f\x03\x98\xb1\xd3\x83\x40\xd1\x53\xbe\x19\x37\xe7\x45\xb1\x3e\x99\x62\x26\x6e\x9d\x0b\xf7\x49\xe9\xdc\xf4\x4d\xf4\x9c\x8a\x3d\xae\x13\xaf\x26\x17\x84\xec\x05\x1a\xdc\x82\x99\xb5\x2e\xa8\xe1\x58\xdf\x29\x51\x82\x72\xe2\x33\xac\xc5\xc5\x12\x1a\xa5\x27\xfc\x55\x7c\x99\xfe\x12\x06\xba\x4f\x44\x9b\xe1\x4e\xa5\xf7\x26\x3e\xb7\xbc\x9b\x81\x33\xf5\xdb\x1f\x0a\xa8\x84\x66\xb1\xbf\x3a\xef\x6a\x38\xe7\x40\x0d\xa2\x2d\x2f\x47\x7f\xb7\xae\x83\xda\x4d\xeb\xa3\x47\x5d\xca\x4b\xcb\x12\xb5\xaa\xeb\xc2\x47\x7a\xc5\xaf\x07\x4e\x9a\x8d\x93\xc6\x90\x60\x4a\xd2\x6e\x8a\x5c\x23\x40\x82\x0d\x77\x31\x12\x25\x6f\xae\x0b\x98\xcd\x0a\xbf\x9e\xff\x7c\xf8\x28\x21\xb2\x40\x3b\xbc\x94\x0f\xfe\xd2\xfe\xf8\x68\x0b\xd6\x4f\xeb\x7e\xe1\x03\x80\x3a\x79\x98\x9f\x8c\xdc\x83\x3d\xfe\x13\x4c\x04\x8e\x61\x8a\x2c\xa5\x01\xfe\xe1\xec\xf7\xd0\x70\xb1\x64\x2b\xb1\x6f\xcc\x3b\x04\xc3\x90\x70\xde\xc9\x31\x82\xd0\x33\x56\xd3\x7f\xbd\xc8\xb3\x84\xb9\xed\x96\xb7\x91\x77\x92\x2d\xec\xf0\x03\xdd\xb1\x90\xbc\x03\x61\x06\x97\xcc\xaf\xfe\x6d\x9a\x01\x3f\xe5\x57\xaa\xbf\x05\x03\xc0\xf6\x46\xc2\x2f\x5e\x04\x2e\x37\xa4\x85\x19\x92\x30\x78\x7c\x9b\x1f\x08\x92\x04\xaa\xa3\x69\x38\x46\xae\xf7\x7a\x35\xd8\xe5\x00\xe6\x3b\xd9\x81\x4c\x5f\x8e\xdf\x4c\x31\xf4\xdc\x07\xc2\x1b\xe3\x6e\x31\x39\x48\xc1\x2f\x59\xbc\xa6\xeb\xca\x2c\x94\x5f\xcf\xec\x47\x53\x58\x81\x08\xe4\x53\x9c\xc8\x1d\x3e\x50\x4b\x62\x35\x6d\x41\x44\x07\x05\x5b\x82\xd4\xb2\x1a\x6d\xf0\xfb\xb3\xa9\xcc\x6e\x25\xf5\xdd\xd7\x33\xc2\xcc\xfc\x33\x46\xda\xb9\x81\xfc\x63\x46\x73\x5e\x95\xf6\xcf\x2b\xdb\xba\x84\x9d\x68\xfe\xc7\x94\x0b\xf9\x7f\x2c\x9d\xb5\xd6\xb4\xcc\x12\x85\x2f\x88\x00\xb7\x10\x67\x70\xb7\x0c\x77\x77\xae\xfe\xac\xf7\xfb\xcf\x24\x93\x0c\x2c\x56\x4f\x57\xed\x67\x37\xd5\xd5\xfe\x20\x3b\xd4\x6b\xbd\x6f\xcc\xd5\x25\x3f\xd2\xce\x35\x33\x70\x64\x43\xc7\x2f\x35\x18\x0f\x9b\xc2\x66\x76\xb9\x66\x17\x40\x4e\x12\x64\x72\x2d\xe4\x00\x36\x52\xae\x5e\xd3\x71\x49\x09\xba\x94\x38\xe1\x0f\x34\xdf\x2f\x6f\x9c\x19\xc9\xac\xc9\xd6\xcf\x11\x6f\xe3\x50\x74\x7c\x85\xdd\x43\xd5\xdd\xb7\x10\x5e\x38\x6f\x48\xa9\xdc\xc2\x38\xb6\x21\x95\x3a\x84\xe3\x07\xb1\x5f\x84\x74\x8e\x96\xc0\xda\xbc\xc6\x0b\xe6\x38\x99\xa9\x32\x10\x8c\x8a\x8d\x4c\x93\x38\xff\xd7\x7d\x38\x45\xb2\xdb\xc0\xf3\x6f\xf2\xb4\xcc\x94\xa8\x0a\x0e\x5a\x1d\x86\x98\x73\x66\x37\x59\x71\x22\x6c\xfa\x2e\x15\x7e\x01\x46\xe7\xc3\x62\x6e\xea\xbc\xf1\x6f\xbd\x6a\xdf\x98\x87\x9e\x59\xb6\xab\x22\xb8\x31\x21\x6d\xc4\xcb\xa4\xbc\x26\x47\xe9\xb7\x8b\xc1\x40\xd1\x9c\x3e\xcc\x58\x81\xa9\x33\xe1\x38\x17\x63\xff\x57\xb7\xec\x90\x84\x21\x9a\x1d\x18\x75\x5a\x20\xb3\x36\xfe\x36\xbc\x4f\x79\xc9\xe4\x71\x5e\x30\x49\xc3\x08\x95\xab\x62\x1c\x1c\xea\x32\x48\xa6\xb0\x20\x05\x13\x73\xdc\xbe\x0c\xcc\xfc\xef\x37\xfb\x13\xb3\xc6\x71\x90\xa6\xc4\xb3\x0f\xf8\x52\x1d\x7f\xbb\xc2\xd1\xc4\xa1\x4c\xa1\x51\xc3\xdc\x5e\x72\x20\x6d\xbd\xa8\xa9\xf4\xb4\xca\xdd\xb5\xd5\x83\x85\x34\x17\x48\xab\x3f\x28\x36\x55\x5a\x3a\xd3\x35\x30\x23\x22\xc2\x30\x2b\x6d\x3c\xca\xde\x82\x38\x62\x25\xd6\x59\x68\x1c\x21\xbc\xbd\xba\xff\x6f\x5f\xf5\x20\x13\xc9\x83\xa8\x4f\xac\xe7\xed\x5b\xfc\x88\xa0\x9f\x3d\xaf\x42\xf1\xbd\x52\xa5\x3a\x16\x59\x14\xc5\xe9\xd8\x0b\xf8\x1a\xd2\xfb\xb2\x1d\xf5\xae\xc5\x0e\xd5\x16\x7c\xd8\x88\x02\xd9\x63\xef\x9f\x1e\x4b\x75\xcb\xdd\x96\x0c\x02\x95\x49\xee\xa6\x6d\x11\x67\x8e\x54\x26\x00\xde\xb3\x6f\x3c\x09\x45\x97\xd7\x64\xe3\x66\x3b\xaf\x84\xde\x3a\x89\x7f\x86\xfc\x79\x83\x3f\x83\x01\x31\x2b\x3e\x26\x11\x9b\x59\x37\x31\xc6\xe2\xc5\xdd\xa7\x88\xbd\xa2\x86\xaf\x43\x1d\x56\xe8\x88\x6c\x3e\x6c\x7c\xb6\x76\xe4\x59\x74\x1c\xf8\x8f\x97\x8d\x26\xa1\x7a\xac\xa6\x62\xab\x1e\x18\xdf\x2d\x3d\x99\x2c\xd1\xc3\x74\x6e\x73\xe6\xf8\x60\xfd\x7e\x8e\x99\x6d\x4a\x75\xc5\xbb\xfe\xe9\x9e\x2f\xf3\xb3\xce\xdd\xa5\xf8\x9a\xb7\xff\xcd\x1a\x77\x5f\x17\xaa\x66\x88\x80\x3b\x9a\xf1\x14\xcc\x91\x9f\x91\x36\x04\x41\x10\x4a\xb1\x9b\x54\x39\x6a\x7c\x72\xf7\x10\x0d\x8f\x7b\x3c\x4c\x53\xd5\xae\xf9\xb3\xed\x30\x89\xe4\xf4\x2e\xf1\x62\xab\xc0\x34\xa6\xcc\xef\xe6\x0a\x4c\x03\x69\xc3\x99\x8f\x51\x75\xab\x3c\x5e\x18\x4c\x38\x4c\x68\x62\xff\x16\xfa\x25\x5b\x24\xbd\x51\xc3\xd4\xdb\xad\x5f\xa9\x5b\x00\x5a\xe3\xc7\x4c\x37\x45\x81\xe6\xd7\x67\x9e\xa2\xbf\x6e\xe2\x5f\x01\x6c\xd8\x0c\x1b\x50\xa3\x52\x44\x21\xbc\xaf\x92\x99\xa2\xd9\x21\x0a\x3c\x99\xb3\x38\xbd\xdf\x89\x3c\x03\xb2\xef\x17\xdc\xbf\x16\x1c\xac\xd1\x7e\x03\xf4\x58\x18\x56\x0b\xfb\x68\xed\xf4\xb0\x97\x34\xdb\x9c\x56\xd5\x62\xc4\x54\x22\x6c\xe9\x08\x08\xbf\x19\x62\xbf\xc3\x3b\xcf\xd6\x34\x1b\x50\x85\x44\x7a\x0f\x15\x88\x4e\xc0\xdc\x6e\xab\x06\xd0\x4b\x9e\x5a\xcd\x24\x2b\xb7\xae\xeb\x66\x3e\xba\xd3\x8e\xc2\x18\xf9\x6f\x61\xb5\xbd\xdd\xd2\x3f\xf1\x1d\x95\x31\xa1\xcb\x2e\x11\xe0\xf8\x23\x2c\xc6\x79\xa3\x0f\xe3\x80\xca\xc2\x81\x6a\x62\xee\x75\x5d\xd3\xdd\xca\x1f\xc0\xf4\x63\xa1\xe6\x58\x07\x3f\xb3\x09\x88\x51\x28\xb3\xda\x7d\x50\xbc\x1e\xbf\x8d\xea\xa2\x57\x38\x4b\x15\xa8\x87\x0a\xcf\x9f\x2c\x8d\xcc\x30\x8e\xfb\xd3\xfe\x37\xa5\xcb\x37\x8e\x71\x83\xdd\x0c\x2e\xf3\x44\x77\xf8\x0b\x0f\x5b\x18\x16\xce\xeb\x33\x63\xfa\x9a\x7f\xc7\x85\xa8\x52\x33\x27\x63\x72\x66\x33\x29\xfc\xec\xa5\xd2\x93\x91\x89\x6c\x50\xfe\xe3\xaf\x39\x52\x4b\xab\x57\x90\x17\x3a\x7e\x19\xfc\x4a\x24\x32\x45\x1b\x3a\xc0\xbc\x7d\x9b\x86\xe8\x50\x39\x5f\x17\xc8\x5d\x91\x9d\x83\x51\x73\x14\x10\xfd\xba\xc6\x12\x42\x81\xd3\x63\xc9\x9d\x29\xb0\x5c\xbb\xb8\xe1\x70\xfe\x36\xee\xdc\x5a\xf9\x61\x18\x04\x21\x49\xba\xbc\x22\xfe\x8d\xdc\xdd\xc4\xe7\x94\x6d\x77\x4c\x6f\x9c\x1f\x08\x5c\x57\xb5\xeb\xed\xab\x24\xd8\xed\x03\xfa\xfd\x34\x31\xd3\x72\x4c\xab\xba\xf3\xdd\xfb\x62\x7e\x3b\xc2\xdb\x72\x82\xc3\x88\x9d\x74\x99\x66\x59\xee\x27\x11\xc3\x0a\x74\xcf\xf3\x8f\x3b\x4d\x57\x5f\xd7\x1f\xa7\xd6\x5c\xe3\xb0\xae\x6d\xf1\xb2\x5c\x57\x27\x9b\x93\x30\x8e\x16\x4e\xb0\x95\xdb\x42\x82\x1b\x65\xe1\xdf\x64\x99\x41\x57\x80\x41\x62\x14\x68\x00\x07\x19\xb4\xaa\xed\x32\x0b\x35\xcb\xac\x7b\x0e\x14\x95\xea\x4f\x00\x72\x0f\x89\xeb\x6b\xe2\x7a\xf7\x02\x94\x15\x3c\xcf\xfd\xf8\x1c\xfd\x21\x46\x57\xd7\x91\xf4\xec\xe9\xab\x74\x2d\x3d\x45\xa7\xa7\x55\x2c\x74\x73\xe3\x9b\x66\x5e\x0d\x43\x7d\x2f\x9c\x4a\x86\x5b\xd1\xda\x85\xdf\xc4\xb0\xb7\x59\x94\x56\x27\xdb\xc3\x25\x36\x09\x04\xd6\x5a\x08\xdc\xbc\x11\xd9\x04\xe8\xc9\x99\x22\x77\xca\xe7\xef\x6c\x47\xb0\x1c\xf7\x83\x39\xf8\xc8\x02\x1d\xc4\x1b\xf9\x58\xcf\x62\x4a\x60\xc3\x38\x7a\x02\x54\x3c\x66\x07\xaa\x9b\x90\xec\x53\x45\xf6\x0d\x1b\xce\x4b\xee\x8e\x37\x30\xd6\xa9\xaa\x2a\x53\xce\x34\xb2\x53\xc7\x75\xad\xb1\x4a\xb7\xb5\x83\xb1\xd9\x5f\x98\x19\xc4\x97\x17\xc4\xe2\xaa\xbe\xcb\xb9\x5b\x40\xe0\xaa\xd7\xe3\x12\xcf\x4d\x3c\x06\x0a\x94\xe5\x41\x8a\xb8\xb7\x29\x50\xea\x39\xbf\x97\x8b\x7d\xe7\xc7\x3c\x9c\x3b\x6e\x46\x43\x1c\xc4\x2d\x1a\xbb\x72\x13\x06\x43\x92\x08\xc7\x0e\x83\x20\x58\xd7\x3b\xf3\x2b\x5f\x2a\x12\x3c\xe1\x31\x5f\xf7\x4b\xd5\x76\x9e\xcf\xdf\xae\xc7\x90\x78\xfc\x38\xbd\x1f\xd3\xb1\x99\x11\x15\xa7\x4b\xc8\x09\x90\xf9\x35\xba\x12\x51\xc8\xba\x80\x4d\xf7\xcd\x21\x6f\xcf\xe8\xb3\x4b\x7a\xe0\xa6\x3e\xd7\x94\x3b\x84\x51\x4f\xff\xf6\xc5\xa7\xac\x4c\x74\x0f\xf3\x90\x81\x2c\x94\x06\xf7\x3a\x04\x4a\x4b\x68\x95\x36\x91\xd6\xb3\xa0\xb0\xab\x56\xf6\x3a\x24\x4a\xb4\xb5\x51\xbb\xd6\x18\xd3\x4b\x66\xac\x91\x2f\xfc\x77\x2c\xdb\x4b\x55\x16\x9a\x16\x76\xdd\x0d\xd5\x06\x11\xd0\x7e\x1f\xf0\x20\x39\x6d\xb2\xfd\x56\xb3\x9e\x0d\x3e\x43\x92\x61\x1f\xfd\xd2\x92\x39\x68\x51\x7d\x69\x9b\xb1\xe9\xa5\x2e\x95\x07\x6e\xc0\xd6\x0a\x8b\xbb\x77\x2d\x47\xd9\xf7\x61\x4b\xd6\x36\x3a\xd2\xc4\x22\xee\x87\x12\x8f\xc5\xda\x4e\x7d\xd9\xa0\x0d\x5f\xc6\xf4\xfd\x39\xee\xba\x0e\x5b\xfd\xcd\x07\x4e\xca\x96\xcc\x9c\x57\xb3\x1b\xbb\xe4\xd2\xbb\x38\x4d\xc7\x61\x45\xc9\x03\x52\xc4\xab\x6e\x74\xdc\x5a\x10\xf2\xf7\xc1\x86\xd0\x39\x20\x27\xdd\xa8\x7b\x90\xe2\x0a\x67\x87\x29\x65\xca\xe0\x4e\xfe\xaf\x94\x9d\x40\x2c\xc6\xb5\xec\x17\xd5\x85\xdf\xe6\x3a\x18\x9b\xf9\x99\x11\xb6\x07\x00\xcd\x52\x29\x58\x4d\x28\x88\x4e\xb0\xd0\xef\xeb\xb9\xfa\x56\x76\xac\x8e\x0a\x80\x5d\xc3\xe0\x27\x07\x11\x34\x68\x91\x3f\x51\x6c\xfc\x50\xee\x06\x4a\x52\x11\x53\xe9\x89\x82\xd7\x3b\xe3\x73\xa3\x22\xe9\x58\x5c\x36\x59\x70\x65\xf7\x8a\x84\x02\xc2\x22\x3e\x6b\xfa\x28\x79\xea\x10\x59\xad\x1d\xe2\xb7\xed\x71\x97\x83\xd3\x79\x63\x69\xab\x36\xee\x0c\x55\x96\x3c\x7a\x68\x69\xd3\x63\x29\xab\x59\x9d\x7a\x19\xba\x09\x9d\x43\x6d\xea\x7b\xf0\xee\xaa\xfc\xf1\x0b\x0c\xc9\xfd\x18\x22\x3a\x1f\xa1\x18\xbd\xd7\x31\xd5\xfd\x1e\xdd\x15\x56\x07\x3a\xf6\x42\xc9\x70\x01\xbf\xf5\x40\x74\xa0\x5c\xfe\x6c\x86\x69\xf5\x4e\xff\x7e\xaf\xf1\xcb\x78\x9a\xd6\x7d\x5b\x93\xce\x71\x10\x8c\x8c\x85\x15\x71\x48\xca\x48\x78\xe8\x7b\x50\x85\x50\x0b\xce\x74\x4c\x46\x47\xab\x2c\xea\xcc\x39\x9d\x96\x5d\xc8\x5c\x26\xed\xcd\x7b\xc5\x14\x7a\x6c\xb6\xcf\xea\x03\xc0\x4b\xaf\xb9\x87\x4d\x1b\x1e\xad\x5a\xac\x8d\x47\xe5\xb4\xa3\xa6\x71\xf6\xa9\x6b\xa8\xa8\xf5\xdd\xd9\x49\xb9\xec\xde\x35\xee\x44\xab\x53\xe0\xde\x3b\x44\x8b\x1e\x5f\x6d\x93\x4a\x29\x67\x83\x09\xba\x5c\x4e\xff\x31\x5e\xe6\x90\xd0\x68\x1b\x27\x6f\xa9\x6d\xed\xd3\x2f\xcd\x44\xbd\xfa\x27\xce\xe9\x10\x25\x27\x4a\xc9\x73\x15\x91\x35\x07\x15\xb2\x43\x1f\xe3\x97\xb7\x61\x59\x7d\xb3\x1e\x8e\x79\xba\xab\x99\x01\x8b\xd6\xf4\xfc\x76\x5f\x10\xd9\x3b\xac\xf4\x54\xb3\x59\x86\x63\x06\xec\x14\xf9\xdf\x19\x08\x56\x84\xa8\x49\x0e\xfb\xfb\x96\x22\xca\xd0\xa4\xd5\x80\x01\x23\xf6\xfb\x0a\xab\xbe\xf7\x3a\x08\x83\x20\x38\x50\x8d\x61\x37\x9f\x1c\x8f\x91\x2c\xed\xe9\xe5\xfc\x2a\x2f\x2d\x8f\x3f\x18\x93\xd1\xe4\xc5\x97\x73\xd4\x1f\x2c\x66\x70\x14\xf6\x57\x00\xb2\x0e\xa6\x8d\x3c\x2b\xdd\xbd\x6f\xea\xba\xb6\x23\xc7\xd6\x34\x5a\x08\x81\xbf\x96\x51\x83\x51\x72\xdd\x67\x18\xcd\x8a\x98\x1a\xcb\x0e\xd7\x96\x14\x7e\x9b\xca\xf3\x25\x14\x00\x54\x60\x5e\x6a\x31\x94\x76\xaf\xde\x91\xf4\x0b\x74\x5e\x7b\x37\x0d\xb8\xa8\xa5\x87\x92\x07\x36\x8c\x90\xfa\xf1\x97\xac\x60\x24\x4c\xd0\xc8\xe6\x2e\x4c\x9f\x32\x0c\x67\x0b\x4d\x9e\xb9\x84\x9b\xaf\xeb\xbc\x12\x2e\x2a\xd4\x11\xd5\x02\xef\x3d\xab\x48\x15\xcc\x7b\x06\x30\x77\xfc\x6b\x7c\xf5\x4d\x3c\x42\xab\x9a\xb8\x14\xe7\x54\x52\x20\x03\x25\xe9\x17\xaf\x00\xaa\xa4\x42\x55\xee\x9c\xd6\x44\x18\x85\xb2\xcb\x09\x3b\x7f\xe7\xf6\x6f\x1d\xf8\xe8\xdf\x1a\x33\x39\xa1\xd1\x3d\x3f\x91\xf5\x20\x58\x52\xb5\x49\xb5\x30\x4a\x9c\x01\xfa\x9d\xfd\x79\x73\xbf\x4e\x9f\x70\x67\xce\x24\xcd\x41\x0b\xce\x89\x31\x2d\xdc\x02\xe8\xd0\x5c\xbc\xcf\x04\xa3\x60\x19\x6a\x18\x89\xf4\x3d\xb7\x83\x78\x53\xc7\x48\xa5\xda\x5f\xd5\x76\x45\xb2\x62\x54\x4d\x8d\x55\x60\x84\x2c\xbe\x5f\x33\xfa\xeb\xba\xac\xae\x00\x34\xde\x4d\x6b\x25\x5a\xa2\xd9\x2e\x70\x80\xf3\x9e\xa9\x41\x57\x81\x4c\x32\x02\x63\xdf\x3e\x08\x8f\x4e\x9f\xb4\x5c\x31\x48\x63\xb3\x09\xef\x7b\x74\x22\x72\xcd\xb5\xca\xc6\x3f\x6e\xe3\x40\xb1\x05\xe9\x0e\x2f\x21\xdc\xe4\x8f\xb5\xf4\x58\x3b\x12\x43\xb4\xb8\x7e\x01\xb6\x07\x49\x18\x4c\x09\x52\xd4\xf5\x75\xb3\xa5\xdf\xcd\xf4\x96\x4a\x1b\x42\x18\x23\x9f\x29\xbd\xdb\x86\xde\xf7\xcc\x08\x7c\x64\xe1\xec\xde\x99\xf2\xed\x18\x50\x9d\x5f\xbc\x58\x82\x77\x4e\xd5\x82\xac\x07\xd9\xe1\x64\x71\x4e\xd5\x01\xcb\x13\xd6\xab\x52\x66\x8c\x2f\x55\x80\xc5\xe9\xf9\x90\x31\x13\xd4\xf9\xc7\x6c\x35\x52\x47\x48\x88\xdc\x12\x3d\xeb\xb4\xf7\x4a\xa5\xc2\xef\x65\x52\x06\x60\x14\x0d\xdc\x64\x76\x73\x4a\x9c\x64\xb7\xda\x14\xa3\xd6\xe2\x4b\x97\x13\x7f\x90\x62\x0b\x1b\xc8\x95\x9d\xe8\x62\xb2\x03\x9a\x85\x54\x15\x7d\x4a\x70\xfd\xeb\xd5\x63\xa1\x28\xe5\x6a\x3c\xd3\xbf\x85\xd9\x4f\x48\x5a\x00\x9b\xff\xe6\x1a\xc7\x0c\xbe\xc5\x30\xce\x1f\x14\x38\x6a\xbf\xf8\x1d\x0f\x81\x6b\x6a\xee\x9b\xf0\xde\x87\xa5\xbd\xf9\x92\x89\x09\xe0\xfd\xfa\xe8\x06\x26\xe4\x4d\x9e\x3c\x12\x57\xb8\x3c\xed\xe3\xf4\xda\x28\xd8\x60\x68\xe8\x06\xf0\x75\xa2\x85\xf8\x69\x39\x5f\x51\x6e\x0d\x4c\xc7\x51\x53\xc7\x21\x5c\x32\x09\x03\x83\xc3\x30\xe6\xea\x0a\x91\xfa\xee\x78\x7e\x45\xde\xd2\xef\xd6\x09\x58\xd1\xd1\xc5\xa3\x0a\x14\x42\xbe\xaa\xef\xe5\x41\xb4\xc1\xd7\xb3\x1e\x7d\xca\x0e\x66\x7a\x67\xef\x22\x23\x69\x00\xa3\x72\x6e\x9a\xcc\x73\x65\xe1\x8f\x5e\x0d\x98\x5d\x41\xd9\xa0\x89\x30\x5c\x44\xf1\x4f\x64\xeb\x5c\xd4\xbf\xb9\x9e\x0e\xbc\x4c\xac\x32\xc7\x22\x06\x03\xc0\x6c\x77\xf2\x5f\xb5\x46\xdb\x03\x5a\x13\x7e\x0b\xbc\x50\x47\x30\x61\x7e\x7b\x26\x35\xb3\xab\x69\x1c\x71\x5e\x5b\xdf\x3a\x66\xef\x5e\x17\x05\x54\x56\x70\x81\x58\x5b\x52\x43\xe7\xca\x94\xcb\x30\x0c\x1e\xc0\x41\xe0\x44\xcc\x17\x81\xa9\xb1\x17\x4a\x52\x44\x3e\x7c\x17\x0a\x66\x31\x61\xf8\xe4\x65\xed\x26\x3a\x50\x55\xbb\xad\x7d\x31\xa1\xd6\x6b\xa7\x1d\xb6\x76\x45\xae\x42\xfe\x54\xca\xec\x21\x9d\xaf\x2e\x98\xc4\xc0\x9b\xb9\x1e\xb0\xbb\x4d\xb5\xa3\x2b\x69\x8e\x91\x60\x70\xa2\x27\xae\x41\xea\xf4\xa8\x41\xb1\xa3\xc0\x0d\x4b\xf8\xc8\x22\xb9\x7b\xa0\xcc\x9a\xbc\x98\x0e\xaf\xe8\xa2\x81\x09\x48\xb8\xe4\x0c\x49\x63\xac\xa3\x0f\x5f\x42\x7f\xe0\xf9\x53\xaf\x77\x95\xdb\x6b\xe0\xd6\x16\x84\x20\x12\xa3\x60\xfa\x06\x94\xd9\x6a\x2c\x73\xa4\xe4\x79\x96\x39\x00\xb0\x7c\x72\x4f\xa0\xac\xbc\xe6\x9d\x05\x9a\x3d\x8c\x59\xf9\x97\xba\xb4\xe1\xc5\x53\xaf\xca\x47\x56\x83\xec\x16\x4a\xe7\x40\xc5\x47\xe0\x57\x97\x40\x11\xeb\xed\xb4\xf6\xaf\xc5\xbd\x39\x6c\xbe\x3d\x74\x4b\xd3\xcb\x65\x4d\x6a\x20\xa3\x97\x1f\xe1\x16\xf0\xd7\x5f\xbc\x20\xf1\x9b\xbe\x3a\xad\x10\xf6\x11\x59\xfb\xa8\x8f\xfb\xbc\xbe\xe7\xad\xf5\x29\x50\xc9\xa0\x88\x6b\xce\x6d\x26\x34\x50\x5e\x99\x24\x14\x27\x22\xcb\xa0\x8c\x90\xc5\x75\x84\x64\xa1\xcc\x80\xfd\x5c\xa3\xd9\x43\xfe\x8f\x19\x2d\x44\x72\x2a\xa8\x71\x30\xa8\xf4\xb2\x4f\x7f\xf7\x4d\x15\xf3\x33\xec\x51\x28\x61\x30\x55\x6d\xe7\x75\xf4\x92\x91\xc8\x28\xb0\x94\x71\x3a\xcb\x4b\xf0\xbc\x22\x11\x00\xf7\x40\x74\xf2\x97\x80\x2e\xde\xd6\x35\x95\xaf\xf2\x4e\x57\x7d\x93\x67\xb7\xd3\x89\x92\x3b\x16\x76\x6f\xd7\x14\x04\x00\x2f\x3c\xd7\x96\x62\x1f\x43\xb0\xc5\x50\xb0\xda\x1d\xd3\xf0\x9c\x25\xdc\x82\x46\xc9\x4d\x1f\x83\x7e\x88\xb6\xbe\x57\x62\xb8\x44\x30\x24\x81\x80\xcf\x7e\x20\x3e\x45\xc5\x33\x7d\x53\x92\x62\x57\xe9\x65\xfd\xd4\x12\xb3\xb1\xab\xd2\x48\xec\xd2\xc4\xa1\xc8\x71\xc3\xf0\x4a\x58\xae\xc0\x8c\xb3\x73\xb4\xe0\xec\x99\x74\x45\x1b\xaa\x0c\xf8\x5e\x44\x11\xdc\xcf\xa1\x46\x5d\xd6\x0b\x31\xf5\xf2\x63\x55\x45\xdc\xf1\xea\xf7\x43\x60\xf5\x5f\x3d\x3a\x71\x6e\x73\x7d\xdf\x62\xd1\xeb\x3c\x59\x22\xe4\x88\xd6\xb1\xc0\x52\xa1\xea\x09\x8d\x39\xf4\x99\xcf\xb8\xa2\x63\xf4\x2b\x68\x11\x7f\x41\xaf\x80\x74\x43\x8c\xcb\x1a\x19\xe3\x97\x12\xfb\x26\x79\xf6\x13\x10\x94\xcb\xff\xbe\x05\x92\x3c\xe5\x84\x8a\x3e\x19\xbc\xa4\x99\xe1\xf4\x70\x97\xfc\x2d\x39\xb6\x20\x80\x22\xb9\x9c\x0d\x02\xc2\x61\x49\x8a\x13\xf5\x87\xe8\xfc\xf0\x5b\xe7\xb3\x03\x21\x9a\x2b\x11\x82\xdc\xd2\xfa\xfb\xce\x2d\x81\xc9\x43\x0c\xb4\x70\xb4\x23\x3a\x8e\x07\xb9\xba\x37\x00\x30\xb3\x20\x20\x67\x99\x7a\xd8\xc3\x9c\xaf\xf3\xf4\x39\xb6\xe5\xc6\x0a\xdf\xd4\x19\x5b\x2a\x2b\x6b\x82\x39\x81\xeb\x3e\xe2\xf0\xb7\x7a\x0d\x16\x82\x64\xbf\xb5\x24\x31\xae\x34\x15\x12\xd2\x4c\x2c\x62\xdf\x1c\xd5\x23\x2d\x78\x7f\x70\x02\xba\xc1\x70\x64\x27\xa2\x25\x54\x0d\x24\x63\xf1\x9b\x2b\xf3\xc5\x76\x7b\x56\xb9\xba\x7e\xff\x3f\x0e\x26\x06\x4a\x94\x33\x0d\xda\x0c\x38\xff\xf6\xb5\x9f\xd1\x2d\x0e\xfe\xbc\x09\x36\x55\x79\xcb\x7c\xcf\x05\x5e\x3c\x4b\x7e\x45\x0f\x46\x96\x8b\xbd\x88\xe0\x05\xbd\x81\xf9\x7e\x1f\xdb\xe3\x8b\x8d\x77\xaf\xc8\x73\x4a\x12\x06\x81\x1f\x14\xed\xe8\x43\xb6\x90\x18\x88\xc4\x19\x46\xd6\x6e\x01\x42\xe3\x27\x9a\x1d\x48\x73\x2d\xfc\x6b\x76\xc6\x8b\x26\x2f\xd8\xde\xf2\xca\xa3\x05\x94\x19\x52\xc3\xec\x3a\xf7\xee\xdb\xef\x4b\x28\x92\x72\xeb\x3e\x10\x9d\x90\xc5\xef\xe6\x2a\x3d\x50\x82\x9f\x02\xe6\x6d\x06\xa2\x5f\x0c\x97\x7c\xa9\xde\x16\xf0\x53\x15\xa5\x4e\x63\x28\x35\x42\x65\x18\x7e\xaf\xde\xe5\xd3\x29\x56\x83\x98\x09\xdf\x3e\x0e\xe1\x06\xd9\xc4\x90\x5e\x57\x98\xc5\x54\xfb\x5b\x1d\x67\xdf\x46\x11\xc8\x59\xb6\x7e\xd8\xa6\x96\x01\xf7\x4b\x12\x3e\x9b\x75\x99\x00\xa6\xcd\x25\xac\xde\x73\x76\xa4\xb7\x90\x92\xd7\xc0\x16\x35\xc6\x8f\x02\x2a\x53\xc0\x2e\xf1\x82\xb5\x1f\x11\xb3\x1e\x52\x4c\x49\xa7\x75\x65\x2f\x71\x2e\xe7\x74\x78\x65\xe1\x4c\x62\xa6\xbe\xe1\xe7\x93\x82\xe9\xa3\xe7\xd7\x88\x70\x68\x19\x3f\xf0\x3a\x74\xa8\xef\xf1\x59\x38\x9c\x2c\xed\x1e\x75\x27\xc9\x0f\xf1\xe6\x0f\x42\x3a\x6e\x2b\xb4\x07\x9a\x22\xb8\x51\x67\xeb\xb4\xea\xee\x5b\x07\x7a\xaf\x22\x5e\x63\x93\xf3\xdf\x92\x86\x03\x5d\x91\x93\x08\x19\x5c\x3b\xb7\x67\xdf\x09\xaf\x71\x92\xce\xfe\x56\xab\x54\xb3\x33\x79\x59\xd3\x07\x3d\x78\x1c\x4a\xc4\x64\x3e\x7b\x3d\x1c\x75\x8a\x0c\xcb\xdf\x7d\xf6\x2f\x08\xb1\xb7\x30\x05\x66\x15\xa1\xb6\xc3\x91\x23\xdc\x00\xb0\xa2\xdb\x22\x9e\x95\xb4\xb0\x26\x6f\xae\x24\xae\x1d\xee\xb5\xb2\x46\x41\xa4\x6e\xe8\x66\x8a\x85\x37\x00\xad\x6d\xe7\x53\xfb\x9b\x3b\x83\x1f\x29\xa2\x93\x47\x94\x19\x99\xcf\x2d\xa0\x63\x3a\x2e\xeb\x1f\x17\xed\xa3\x95\xd1\x03\x55\xcd\x6f\x7f\x69\x24\xf8\x6b\x38\x59\x04\xb5\x97\x62\xc1\xea\x12\xde\xf7\x76\xe9\xf2\x44\xba\x99\x48\x85\xfd\xc5\x21\x1c\xe2\xc0\xf6\x5f\x4f\x41\x6b\xda\x04\xe2\xc7\xea\x23\xef\x28\xd2\xba\xc3\x3b\x69\xbe\xf8\x4e\x24\x2d\xe8\x84\x17\x3a\x77\xef\x0e\x54\x56\xa4\x87\x02\xae\x67\x36\x08\xe9\xb2\x97\xea\xa4\x7a\x5e\x2e\x67\xab\xe7\xc4\x35\xd5\x45\x87\xbf\x45\xca\xf9\xae\x11\xe9\x5a\xa1\x9d\x19\x94\xc2\xe7\x66\x74\x46\xf3\x4c\xb4\xd1\x85\xc8\x6e\x5a\x89\x3f\xf3\x40\xff\xf4\x27\x93\xdd\xfe\xd0\x5a\xb4\x46\xc8\x17\x30\xe5\x6e\x78\xad\x8b\xa1\xa4\xd6\x79\x60\x02\x2f\xd1\x0a\x95\xb5\xb6\x0f\xc8\xc3\x6d\x6a\xc2\xf4\x04\xec\xa7\x53\x2a\xdd\x0f\x9b\x16\x3e\x45\x14\x78\xfc\x62\xcd\xe0\x47\x81\x46\xff\x25\x4d\x1c\x89\x84\x81\x24\x69\x88\xad\x52\x87\x74\x4a\x1f\x7d\x8d\x41\x46\x07\x01\x16\x18\x08\x04\x0f\x94\x4a\xfd\x8c\xe9\x44\x2e\xeb\x93\xe5\xde\x3d\x87\xda\xf1\xaa\xb6\xa3\x4b\xd2\xf1\x6d\xb6\xaa\xd4\x60\x09\xd7\xd8\x44\xe0\xe4\xd7\xb7\xc1\xf7\x35\x7e\x79\x25\xe0\xe8\xbc\x69\x2e\x52\x98\x11\x2a\x3d\x37\x55\x09\xcc\x86\xcf\x69\x3a\x1a\xe3\x87\xe5\x9a\x32\x4c\x1d\x4c\x2f\x13\x5e\xad\x2b\x09\xd0\x4e\x95\x10\x89\x41\x94\xd3\xcc\x47\x4c\x5a\x0f\xb5\xc4\x08\x29\x49\x17\x4e\xc0\xf6\x7c\xea\xb8\xac\xa3\x1b\x06\x42\x4b\xe9\x25\x3f\x5f\x9f\x77\x4b\x89\x1e\xb8\xf4\xec\x89\xad\xa2\x24\x0e\x13\x40\x74\xe7\xbc\xa3\xd5\x27\x59\x9e\x99\x31\xc2\xe1\xca\x45\x18\x0f\x78\x83\xe8\xe4\x45\x9a\x23\x76\xfd\xde\x5a\xf5\xcb\xe4\x37\x7f\x81\xc0\x1c\xbb\x27\x71\xe7\x70\x5a\x54\x4f\x1f\x3b\x89\xcf\xe4\x79\x06\x04\xf1\xc2\x4e\x43\xee\x40\x05\x07\xad\xfa\xb9\x3d\xad\x52\x32\xa0\x03\xef\xd2\x82\x7e\x67\xc4\x29\xc9\x18\x4b\x7c\x4d\x98\xed\x0f\xef\x6d\x39\x1c\x96\x14\x8d\x2e\xe8\x27\x36\x35\xae\x1a\xb2\x27\x02\xac\x89\x66\x94\xc9\x40\x06\x1f\x8e\x3e\xc8\xd7\x6f\x7e\x46\xaf\x18\x36\x30\x1d\xb0\x49\xe8\x0d\x28\x7c\xbe\xfd\x23\xb8\x82\x7d\x10\x3a\x6d\xfd\x7c\x8e\xb1\x05\x8e\xfa\xac\x8f\xa4\xfd\x0d\xfe\x3c\x05\x03\xaa\x9f\xf5\x84\x16\x35\x67\x40\xaa\x33\x35\x37\xb4\xf1\xa8\x95\x4a\xeb\x37\xfc\xa0\xc0\xb8\xc1\x36\xbd\xdf\x08\xbb\xce\x8f\x5a\xb2\x7e\x26\xf2\xa7\x59\xb3\x26\xb6\x88\x0f\xf5\xeb\x8e\x1c\x5b\xfa\xa7\xe1\x68\xf6\x3c\xcc\x8b\x78\xb0\x70\xb5\x7b\x1b\x68\x4b\x52\x91\xc5\xef\xbd\x36\x52\xf6\xad\x25\x66\x76\x86\xb5\x9a\xbd\x3a\x91\x15\xd9\x66\xdc\x84\x9c\x9a\xad\x2e\x74\xa6\x13\x3a\xdb\xdf\x7d\x51\x61\x5e\x0a\xec\x59\xe1\x95\x99\xa8\x7a\x25\x0c\x9c\xec\xeb\x2f\xe3\xc9\xcd\x01\xc4\x30\xaa\xfb\x75\x0f\x05\x0a\xed\x73\x0b\xbc\xf2\x41\xf3\x24\x0b\x0c\xc0\x2d\x7e\xdf\xf7\xf3\xc5\x7e\x06\x21\x46\x82\xc1\xc7\xf8\x03\xd1\x7b\xd7\xe6\x7c\x8d\x6e\x03\x5d\x9d\xe8\x6c\x84\x07\x6c\xad\xe9\xbb\x4f\x3c\x3d\x91\xf3\x1e\x69\x0f\xa3\x9a\xa9\xbb\xac\xde\x14\x4f\x15\x4b\xcc\xb0\xce\x2e\x28\x8e\x28\x79\x49\x9f\x68\xe1\xf9\xb0\xae\x4c\xb3\x19\x0e\x4d\xf6\x10\xf7\x8f\xe9\x15\x32\x45\x8e\x99\x07\x6e\xaa\xe6\x0f\xd5\x1b\x94\x46\xa8\x44\x6b\x84\x57\x38\xdb\x3f\xfc\xe4\x6b\xcc\x64\xe0\x27\x5f\x44\x17\x73\x38\x25\xd9\xc3\x0f\x8f\xe0\x0a\xb0\xaf\x8b\x72\x6c\xf0\x44\x61\xea\xce\x50\x3c\x08\x92\xd0\x7f\xbb\xfc\xd1\x2b\x19\xa6\x21\x33\x67\x32\x82\x57\xe8\x8b\xff\x70\x08\x8c\xa0\x41\x71\xfd\x55\xb4\x50\x10\xc9\xac\x4c\x0f\xcb\x68\xc0\xd3\x66\xe4\xe6\x4e\xc4\x06\x7f\x0b\x46\x32\xdd\x05\x51\x45\x5f\x5b\x6d\xcb\x8c\xfc\xb5\x84\x40\xc8\xcc\x34\x51\x54\xd5\xa8\x9e\x5b\x18\x2a\xe1\x39\xbb\x27\x3c\x26\xc7\xc6\xa9\xd4\x74\x0a\x2d\xe2\x52\x73\x63\x49\x12\x06\x87\xb6\x56\xfc\xbd\x6b\xcc\xdf\x23\x47\xf0\x91\xb6\x64\x85\xfc\xfe\x38\xa4\x8c\xac\xb1\x17\x11\x98\xa1\xbe\xd6\xc8\xd7\x2c\x93\xa8\xd5\x7c\xaf\xcd\xbd\xba\x61\x02\xe7\xe9\xc1\xa8\x42\x41\x0f\xe7\x86\x4a\x33\x96\x65\xd3\x60\xd8\x7a\xb1\x2b\x94\xc4\x0d\xc3\xb9\x9d\x2a\x10\x1d\x7f\x13\x5b\xa4\x33\x3f\x3f\xec\x60\x1a\xcc\x63\x89\xbd\x7e\xf6\xe5\xf4\x5f\xf2\x39\x33\x24\xb0\x6a\xe3\xef\x7d\xdf\x85\x5b\x70\x04\x17\xee\x4c\xfe\x19\x4d\xdd\xb3\xfe\x44\x8e\xf0\xd1\x33\xb1\x34\xdc\xc5\xf3\x4b\xa8\x53\x29\xb5\x19\x44\xf0\x24\x0c\x30\x8c\xf1\xcb\x60\xb9\x0b\xd4\xf2\x0c\x64\x07\x0a\x8c\xe9\x5b\x8f\x43\xb3\x7d\xc3\x85\x03\xdd\x13\x9e\xf9\x7b\x69\x70\x5b\x5e\x27\x5a\x65\x5f\xd4\x3d\xe8\xca\xde\x1c\x35\xbe\xdf\x83\x01\xca\x5f\x6c\xbc\x78\xd1\x2b\xa3\x97\x1d\xaf\xe2\xb5\xb2\xf5\x52\x08\x5d\x80\xf9\xb9\x3f\x54\x69\x19\x24\xd5\xd8\x07\x66\x49\x3d\xed\x70\x84\xdc\x10\x74\x7e\xd5\x0a\xd9\x57\xd4\xb4\x07\x35\x55\x52\x99\xfe\x2f\x26\x58\xef\xdd\x44\xa9\x73\x76\x77\x6a\x16\x08\xab\xae\x4f\xbe\x60\x81\x6e\x31\xc2\xac\x40\x24\x25\x04\xb3\x02\x35\x72\x65\x18\xc6\x0f\x35\x1a\x89\x5c\x82\x1e\x48\xe8\x85\xcd\xd4\x90\x60\xc3\xf5\xf7\x36\x44\xd2\x40\x13\xbf\x51\x99\xe6\x74\xc4\xd7\xdf\xd0\x12\x41\x54\xf5\xb0\xf1\xe5\x19\x2c\x41\x58\x6e\x61\x84\x14\xd6\x54\x63\xe7\xc2\x36\xb4\x48\x84\x6e\xff\xf5\xc9\x78\xf4\xd6\xa1\x27\xf5\x0e\x18\xad\x16\x41\xb1\xaf\xea\x14\x00\x27\x4c\xf2\x92\xe5\xb7\x81\x2f\x86\x18\xf5\xd2\xa3\xa4\xf6\x51\x07\x9f\xf8\x07\xff\xc7\x64\x64\x47\x23\x5e\x82\x61\x6d\xf9\x9d\xbf\x01\x6c\xf2\x6d\x22\xba\x2a\x58\x24\xcc\xbd\x5d\xcc\xfe\x72\x72\xee\xf4\xb7\xa2\x4f\xad\x25\xd6\xb5\x9d\x05\xee\xbe\x09\xfd\x27\x2e\x7b\xd9\x3b\xf1\x1e\x92\x0d\x56\x42\xed\x05\xfe\xe9\x1a\x05\x64\xfa\x16\x00\xa5\xcd\x0f\x8e\x2f\x32\x77\x59\xaa\x3d\x61\x36\x73\xc3\x28\x52\xf7\x0c\x46\x31\x2c\xb6\xd3\x67\x52\x57\xee\xe0\xb9\xea\x33\x95\x4f\xdd\xdf\xf5\xc4\xb9\xad\xab\x18\x33\xb1\xa9\x76\x65\x49\xec\x48\xd0\xb1\x9e\x91\x2e\xf5\x8f\xd7\x2c\x72\x5c\x09\xbf\x80\x08\x1a\x37\xaa\x51\x8b\x8f\x60\x47\xd7\x90\xac\xc3\xe0\xc8\x4e\xb4\x42\xa7\x1d\xca\x0c\x68\x5e\x8e\xd7\xc9\xc8\x62\xa4\x4b\xda\x92\xba\x40\x2d\x84\xd1\x39\x63\x0f\x1f\x90\xc1\x15\xa4\x93\x01\xdf\x08\xa7\x22\x71\x48\xca\x6a\x54\xf1\x42\xcd\x1a\xbd\x6b\x72\xf6\xe7\x0a\xd7\x43\x83\x81\x56\x5e\x50\x41\xf7\x4f\x04\x9a\x07\x19\x25\xa8\xc7\xbc\x89\xe5\x56\xf5\x9a\x8e\x4a\xf3\x53\x9d\xbe\xee\x53\x8c\x41\x8a\xa0\x67\xeb\x58\xea\x7a\xdc\x4c\x45\x18\xfa\x3d\xb6\x5a\x7e\x3b\x29\xbc\xdf\x0d\x64\xd6\x94\x86\xc3\xe2\x31\xa0\x06\x9b\x93\x27\x75\xc5\xa9\x69\xe8\x2b\x43\x81\x00\xf2\xc9\xe3\x0f\xa2\x23\x04\x5b\xfd\xe7\x2d\x29\x49\xe6\x10\x59\x50\x38\xbb\xff\xb1\x11\x83\xc9\x3f\x7d\xf4\xf2\xae\x9c\xbf\x3a\xff\xe6\xa1\x7b\x50\x62\x1e\xc0\x68\xfc\x0a\x7d\x52\xc4\xfc\x56\xb9\x7e\x29\xa3\x85\x9c\x7d\x8c\xad\x55\xc1\x15\x1a\x35\xd4\x06\x82\xf3\x7d\xc5\xdd\x06\x80\x3c\xae\xd3\x8a\x72\x57\x83\x0b\xd9\x49\x4b\xab\xfe\x89\xa5\x33\xf1\x01\x79\xac\x52\x33\x07\xb6\x25\x38\xb7\x6f\x49\xa0\x29\x6b\x62\xdc\xc9\x19\x39\xbd\xf3\xaa\x2e\xf1\x19\xf5\x3f\xea\x00\x7b\x10\x80\xdd\x0d\x26\xf0\x20\x10\x1d\xe1\x66\x64\x40\xc0\x28\x53\x41\xe4\xea\xbc\xfc\xdf\x87\x8b\xae\xe5\x3b\x7f\xc3\x8d\xed\xa5\x59\xc6\xf2\x11\xda\xfd\xa2\xb9\x5f\x71\x21\x9d\x67\xa2\x1f\x85\x9b\xc9\xc8\xdd\x68\x74\x21\xb1\x89\xcc\x71\x43\x89\x42\x8f\xc8\x40\x5f\x1b\x88\x37\x2e\xdc\xf8\x86\xc4\xe7\xc3\x47\x2c\x45\x77\xd3\x96\xfd\x2d\x30\xbb\xdc\x2e\xfe\x89\x45\x2a\x09\xf1\x8d\x0c\x02\x9d\x0f\xe4\x16\xee\x65\xd2\xb7\x87\x3c\x08\x76\xbf\x5b\x6f\x18\x15\x90\x4c\x6b\x72\xd1\x14\xb1\x23\xe5\xa5\x66\x7a\x5f\xe4\x93\xa3\xd5\xb3\x20\x20\x36\x92\xc3\xfb\x65\x6b\x56\xa7\x2f\x9e\xad\x89\x50\x1b\x10\x2e\x3b\x45\x1a\xc5\xc1\xec\x80\xdd\x23\x72\x5d\x7d\xfa\x6c\x26\x12\x6f\x5f\x64\xb3\x5e\x5d\x7a\xa6\x0e\xb5\x00\xe9\x32\x57\x76\x5b\xbd\x74\xae\xd6\xa2\x7c\x78\x02\x3b\xbb\x5e\xab\x0d\x22\x0a\x0b\xdb\x4b\xe3\x44\xb7\xba\x21\x6d\xc3\x18\xbd\x2c\x40\x8d\x3b\x67\xec\x0a\x13\xbc\x37\x9d\xf4\xaa\x57\x03\x43\xf7\x7c\x64\x28\xe7\xd6\xed\x17\x2d\xd1\x91\xbc\x00\x49\x59\xf1\x2d\xa6\x80\x09\xba\x90\x3f\x1c\x0a\x2d\x4e\xfc\x49\xeb\xe8\x54\x3c\x0e\xfe\x04\x9e\xa5\x7f\x88\xd4\xca\xec\x1d\xdb\x17\x5c\x23\x89\x19\x8e\x6b\x59\x59\x63\xc2\x1b\x6e\xb4\x0d\xd4\x68\x87\x59\x43\x3a\x1b\x8a\x92\x31\x25\x89\xae\x95\xbb\xf2\xa7\x3f\x0f\x38\x5a\x0a\x79\x69\x56\x2a\x49\x4d\x1c\x18\xe0\x08\x3f\xb6\xff\x63\xed\xdb\x00\x92\x71\x59\x10\xd2\x4f\xb0\xb5\x6a\x9f\x19\x2a\x41\xf0\xce\x13\xa2\x1c\x50\x92\xbe\x9b\x52\xb0\x45\x36\x0e\x1c\xab\x23\x66\xcf\x66\xeb\xf3\x38\xd1\xac\x45\xf2\xeb\xe6\xb3\xc7\x82\xd3\x00\x9c\xd4\x7f\x3a\x9b\x09\x97\x8e\x57\x9a\xec\xba\x11\x09\x7f\xc6\xf8\x95\x95\x1e\x9e\xe3\xf1\x03\xdc\x71\xd9\x56\x12\x38\xe5\x48\x8b\x2a\xe1\x8a\xa0\xb5\x04\x67\xdd\x1f\x95\xb6\xf8\x01\xbe\x44\x4f\xf8\x23\x74\xce\xab\xd5\x0c\x0f\xfc\xb4\xd3\xea\xfe\xbd\xfb\xa7\xcb\xd3\x0f\x92\x70\x38\x17\x47\x61\x35\xe5\xea\x60\x52\xa4\xde\xac\xc3\xde\x82\xae\xf4\xd1\xba\x08\xb4\x4d\xcc\x50\x83\x91\xd4\x41\xe4\x74\xcc\x48\x1a\xe8\x17\xb8\x01\x97\xaa\x4f\x4c\x8f\x7a\xeb\xb6\x1e\x39\x76\xf2\x16\xf4\x59\x6d\xdc\xbc\xf4\xda\x9c\x83\x5c\x61\x95\xe2\x42\xd3\x82\x0d\xa5\xc4\x9c\x10\x62\x4c\xc6\x24\x60\x68\x27\x1c\x66\x22\xa3\xc8\x9c\x01\x2f\xd4\x45\x74\x4e\x88\x0d\xff\xdf\xba\xe1\xe6\x2c\x68\x32\xc3\x41\x10\x04\x00\x8f\x72\x16\x38\x11\x00\x2e\x1c\x94\x15\x6e\x30\x2c\x5a\x13\x4a\x4e\x3c\x44\x94\xa6\x20\x23\x31\x3a\x5c\x09\x52\xa5\xd6\x65\xb3\x8c\x4c\xaa\x35\x78\xa1\x0a\x76\x67\x03\x6e\x7a\x35\xcc\xfb\x36\xc5\x2b\xfd\x5f\x62\x4b\x14\x17\xda\x15\x73\xf2\x66\xd8\xf0\x54\xf7\xa3\x18\x53\xf6\xd2\x3d\x02\x41\x00\xea\x70\xd5\xf5\x27\x05\xd4\xa6\xaf\x3a\x80\xc7\x27\x96\x45\x79\xc6\x69\x59\xb3\xf1\xb6\x48\x5a\x27\x2a\x4b\xe5\xe6\x7d\xb0\xd2\xe7\xe3\x50\x7d\x78\xf1\xaa\x59\x6a\x1e\xe4\xeb\xb2\xf2\x49\x11\xda\x97\xf5\xdb\x5e\x5c\x64\xbf\x19\x3d\x10\x12\x6d\x75\x7a\xfa\x68\xb2\x3b\x37\x30\x77\x28\xb0\x12\x5b\xa2\xfc\x8d\xe0\x46\x03\x1a\x8e\x7b\x92\xe7\xd6\x3e\xd8\x25\x03\x37\xa2\xbc\x30\xc5\xcb\x60\x7e\x9c\x1b\x7a\xe3\xa2\x8d\x00\x58\xad\xcb\x9a\xf6\x8e\xc6\x33\x98\xfa\xab\xc5\x38\x10\x5d\x7f\x98\x07\xd0\x06\x72\xc3\xf3\x61\xe7\xc6\x8a\xa9\x5b\xf0\xfd\xf8\xc6\x10\x24\x31\x2c\x37\x30\x90\x14\x76\x44\x89\xe5\x45\xaf\xa4\x67\x4f\x95\x82\x49\x35\x12\xba\x1b\x10\xfc\x70\x0a\xa6\x23\xb0\x55\x30\x8d\x23\x22\x93\x5e\x50\xde\x9c\x1d\x46\xac\x3b\xdd\x95\x9d\x0c\xfb\xae\x1d\xa9\x2c\xe1\x37\x57\x0a\x2e\xfe\xe0\x95\xce\x0e\xf0\xb4\xa2\x42\xcd\x44\x4f\x5c\x3f\xa9\xc1\xbb\x8b\x6b\x95\x78\x3f\x34\xee\xed\xab\xc4\xfb\xe3\xa1\x6f\x81\x00\x8b\xae\x2c\xcd\x15\x68\x79\x05\x92\xdb\x14\x87\x24\x4c\xf4\xd1\xe3\x9f\x97\xe0\x19\xd1\x7c\x29\xa5\xc9\x15\x23\x24\xd3\x79\x55\xeb\x9a\x64\x18\xb0\xeb\xcb\x6d\x7f\xa6\x1e\x3f\xb3\x96\xe8\x35\xe3\x0a\xa7\x15\xd7\x47\x12\xa4\x9b\x20\x0c\x46\xc5\xb9\x58\xfa\x5f\x9d\x34\x59\x5d\x12\x3f\x50\x8f\x0e\x65\x06\xd1\x56\xa7\x37\xd0\xf8\xfc\x4a\xbc\x73\xb9\xfa\xa7\xc2\x47\x16\x36\x73\x2a\x08\x1c\xf2\xe5\xa7\x26\x7a\xcd\x8d\xcf\xf9\x64\x8f\x02\xd3\x11\xf4\x49\xcb\xbb\xce\xa0\x54\x25\x28\x19\x4d\xdc\x3f\x5e\x0d\x87\x25\xf3\x2b\x93\xa5\xc4\x0b\xde\x07\xa5\x42\xc1\xe8\x42\x71\x15\x3d\xa2\x6c\xa0\xca\xca\x9e\x65\xc4\xeb\x1a\x0b\xec\x4d\x3a\xad\x80\x1f\x78\x26\xc1\x97\x5f\x20\x5e\x2d\x10\x50\xfc\xb6\xd3\x9f\x03\x6b\xfa\x8e\x7a\x10\x6e\x3e\xa6\x3b\x35\x18\xbf\xe3\xa0\x16\xfb\x8f\x17\x3b\x13\xfc\x55\x7d\x72\x66\x26\x32\x71\x8f\xc1\x69\x03\xe1\xa0\x2d\x1f\x9b\xfc\x95\x21\xf4\xf5\xcb\x13\x29\x18\x70\xf7\xcf\x9b\x0f\x5b\x0a\x1b\xf7\xa6\xbb\x82\xc3\x82\x97\xff\xe7\x19\x13\xed\x33\x52\xa6\xb9\x5d\xa9\xb3\x34\xb4\x8d\x47\x7d\x31\xd9\xb4\xfa\x60\x80\xac\x16\x04\xca\x49\x81\xdb\x19\xc0\xca\xda\x1c\xaa\x00\x91\xe3\x3a\x7c\xcc\xbb\x36\x1f\x97\x35\xad\x15\x7d\xba\xfc\x82\xb0\xe6\xd3\x74\xba\x0b\x0b\xe0\x21\x09\x83\x1d\xcd\x40\xf1\x96\xd0\x0f\xf9\xd8\x31\xa9\x84\xe6\x26\x0f\x53\xfe\xf6\x7e\xfd\xd3\xaf\x84\xd3\xbf\x05\xfc\x1e\x89\x57\x85\xec\x27\xef\xa3\xa0\x99\x73\xc5\xf0\x09\x8a\x03\xe0\xf5\xe2\x14\x9c\x1e\xa1\x38\xb8\x7e\xfb\xb3\xbc\x94\xb8\x77\x99\x67\x2f\x6b\xdc\x02\x82\x70\x7b\xe0\x14\x23\xc4\xb9\x32\x08\xa4\x8e\x8a\xae\x16\x9c\x89\xc4\xa7\xa8\xb8\x6d\xf8\xd1\x3d\x07\x54\x1b\x31\xdb\x36\x5b\x4f\xf8\x9a\x8e\x8b\x25\x7b\xd8\x9d\xe0\x95\x79\x7c\x18\x6c\x2b\xef\xaf\xbd\xf7\x4a\x0b\x89\xc5\xc1\x26\x15\x87\x88\xc4\xb2\x89\x3a\x33\x10\x82\x2a\xaa\x03\x49\xcf\x38\x1a\xf0\x32\x02\x49\xf9\xa3\x41\x19\x88\xff\xf8\xe9\xb4\x6f\x98\xa5\xc0\x4a\xe9\x08\x04\x70\x0c\xe9\x4b\x6c\x78\x31\xab\x03\x61\x80\xe4\x80\x58\x98\xb1\x8e\x67\x2f\x83\x21\x09\x51\xf2\x68\xcc\x2f\x2f\x74\x7e\x2e\xbd\x3e\x11\x9e\xa2\x52\x7d\x23\x3d\xc2\x17\x40\x38\x30\x02\x82\x7e\x51\xdf\xe4\x08\xd7\xb9\xc4\x4a\x91\x22\xaa\x01\x0e\x42\xa9\x38\xc6\x2f\x6c\x81\x38\x48\x7e\x82\x29\xeb\xd3\x4f\x97\x62\xf4\xcd\x19\xf7\xde\x35\x71\x45\x32\x61\xbc\x6f\xf3\x8a\xb6\xcd\x18\x51\xd9\x62\xe7\x3e\x44\x8e\x2d\xf3\x65\xf3\xbc\x54\xb8\x90\xf8\xe6\x32\xbb\x1a\xcd\xaf\x57\xa7\x34\xe9\xeb\x77\x53\x46\xc9\x83\x14\xbd\x9b\x06\x64\x4b\x2c\x5e\x96\x16\x2d\x79\xcd\x06\xcb\x0b\x40\xb4\x06\x74\x91\xd9\xc5\x46\xa7\xdc\x66\x97\x9b\x27\x11\x48\x02\x63\x18\xcd\x75\x27\xe5\xa6\xe2\xe2\xc3\xfe\x3c\x94\xd8\xf8\xc1\xcf\x59\x2a\xd5\xa5\x2e\x94\x5c\xf0\x97\x7e\x92\x9d\x08\x8b\xea\x78\xf1\x8e\x34\x8e\x1d\x89\x7f\xe6\xaf\xe2\xd3\x22\xa5\x90\x74\x86\x57\xb4\xa7\xda\x3e\x15\xa2\x3f\xd5\x2f\xad\xe1\xaa\x4e\x2b\x0a\x6d\x92\x47\x9d\xd0\x0f\xc4\x27\xb6\x68\xe0\x7b\x84\x6e\x7e\xc7\xbc\xf7\x26\x09\xa6\x8b\x83\x92\x18\x28\xc3\x58\x02\x33\xe4\x7b\xb2\x3c\x98\xce\x8a\x1d\x85\xb2\x24\xe9\xc7\xbf\xb8\x8a\x6e\xca\x94\xcb\xfa\xc6\x8b\xd3\x9d\x27\x29\x8f\x07\xa8\xee\x0b\x84\xac\xfe\xf2\x4d\x7b\x94\xbf\x3e\xa9\x78\x8d\xda\xef\x31\x4e\x9f\x36\x9f\x90\xc9\x3b\xfb\x2b\x41\x9f\x8d\xea\x94\x6f\x26\xf4\x8e\x73\xe2\x58\xad\xcc\x29\xe1\x92\xfe\x9d\xf2\xd6\xc7\x1a\xed\xa5\xae\x0b\xd5\x70\xbd\xdb\xdb\x99\x70\xfb\x43\x9a\x36\x71\x5f\xd2\x7c\xc4\x4f\xf2\x52\x07\x97\x28\xcc\x69\x51\xcb\x61\xcf\xd4\x03\x68\x15\x8c\x2a\xaf\x28\x43\x46\xdf\x9a\x95\xea\xc7\x0e\x13\xbf\x40\xbb\x26\x3d\xbf\xe2\xf0\xcc\x29\x83\x10\xb1\xbc\xaa\x9f\x3c\x31\xf5\x08\x42\xa1\xfc\x9a\x0c\x77\x47\x21\x7c\x64\x65\x3b\xf8\x0c\x80\xde\x71\x6e\xc9\x13\x57\x5a\x37\xc3\x30\x1c\xc3\xb8\xbe\xc3\x06\xdc\xbc\xa9\x90\xc1\x10\xdd\x43\x53\x87\x97\x41\xc0\xc5\x01\x95\xe5\xa2\xb3\xc2\xab\xac\x67\x8e\xbc\xaf\x31\x15\xd0\x86\x60\x75\x42\x48\x65\xce\xe6\x73\xc3\x45\x14\x30\x6e\x61\xf1\x0d\xf5\xd2\xfa\x36\xbc\xc4\x57\x65\x67\x24\xd1\xce\xc5\x37\x37\x46\xe6\x67\x7d\x0f\xbe\xa1\x57\xd5\x05\x83\x21\xaa\x26\xbc\xb3\xd7\xd6\xd6\x40\x95\x09\x8d\x5d\x71\x5d\xd3\x37\x70\x2d\x11\xb9\x74\xef\x3c\xa1\xf6\x4c\xe0\x85\xf0\x95\x1e\xe7\xa7\x4c\x95\x99\x9a\xa5\x9e\xc2\x79\x53\x86\x60\xb1\x29\xa3\x4c\x89\x6b\xc1\x7a\xeb\xfc\xbc\xba\x5b\x6a\xad\x44\x62\x8c\x00\x59\x9e\x44\xc1\xd6\x77\x02\x75\x47\x3b\xb4\x78\xf5\x23\x5b\x01\x43\x58\x24\x31\x9d\xb1\x3b\x50\xe3\xe2\x6d\xc8\xa8\xeb\xf0\x55\x4b\xb3\xdd\x56\xf2\x5c\x5a\x24\x5b\xf3\x5b\x12\x1e\x28\xc0\xbd\xc8\xcd\x81\x6b\xd4\x0a\xb5\xcc\x05\x37\x41\x8d\x2f\xff\x9b\x67\x5d\x33\x0d\xc2\xb3\x7b\x2d\x4e\x65\x30\x03\x3e\x6a\xe9\xa0\xd9\x01\x02\x00\x56\xce\xed\x2b\x34\x8e\xef\x82\xa8\xd1\xc5\x08\x5f\x13\xe6\xaa\xb5\x8c\xc0\x94\x83\x92\x86\x72\xf7\xdc\xb7\x6e\x1c\xb9\xce\x2b\x3d\x11\x0e\x4b\xf5\xcb\xdb\xf9\xd5\x3b\x6b\xf8\xf0\xbf\x41\xbb\x02\x3e\x69\x63\xb1\x01\x8f\xe3\x1d\x1d\xdd\xb5\x36\xd5\x15\x68\x0b\x44\xc5\x4e\x2d\xc9\x79\x1b\x08\xfc\x3d\x2e\x8f\x00\x09\x1a\x20\x6e\x3d\x2d\xdd\xce\x41\x0c\xaa\x52\xe2\x23\xf4\x15\x44\xa3\x33\x10\x56\x83\x0d\x06\xfc\x2d\x20\x14\x85\xa1\xed\xac\x23\x93\x09\xde\x8c\x68\x43\xfa\x6f\x19\x0c\x0a\x52\xde\x7c\x52\x91\xec\xb8\xef\x84\xe4\x48\xbe\xf2\xc3\x39\x10\x15\x37\x3f\xa7\xf6\x29\xa8\xd1\x9b\x7e\x99\x69\x76\x75\x6d\xeb\xb8\xe9\xf5\xaf\xf5\xfa\x99\x84\xef\x7c\x73\xff\x65\x37\xf7\xf7\x4d\xd2\xb6\xa6\xbd\xf2\xc3\xd7\xc4\x87\xe9\x4a\x46\x4f\x41\x8f\xff\x38\x50\xd5\xd6\xf7\x62\x99\xc1\xf0\x7c\x9c\x02\x4b\x8a\x48\x01\xcd\x99\x91\x48\xc3\xdf\x25\xf4\xb7\x22\xeb\x73\xbe\x0b\xe0\xc2\x8f\xbe\x85\xaa\x88\x13\x7f\x72\x8b\x62\x7b\xbf\x13\x50\x83\x09\xc4\x27\xa2\xcf\xa8\xaa\xf4\x1f\xd5\xcc\x49\xc1\xf5\xb9\xaf\x55\x7d\x84\xca\x1d\xaa\x7f\xfa\xf7\xb3\xae\xd6\x94\xbf\xa3\xa4\x69\x6a\x10\xf6\x69\xf1\x89\x4a\x99\x3a\x66\xec\x6e\x93\xb9\xb8\x7e\x56\x8d\x8e\x7e\x5e\x0c\x85\x31\x91\x2c\x4e\xd0\xfc\x72\x24\x38\xa8\x0b\xa4\x4c\x99\x47\x8e\x60\xb3\x7e\xa5\x35\x73\xdf\x52\x1e\x27\x92\xc5\xb9\x2e\xc7\xab\x44\x43\x94\xa7\xf4\x58\xae\x47\xbf\xfe\xb1\x0b\x1a\x04\xc8\x02\xd4\x86\xef\x01\x37\x7c\x0f\x47\xdf\xe2\x7e\x6d\xbc\xab\x18\x95\x19\xe3\x27\x3c\xba\xab\x7a\x18\x64\x42\x85\x5c\x14\x17\xaa\x72\xf5\xfc\xe3\x11\x5e\x64\xaf\x8a\x5f\xab\x49\x29\xd1\x83\x6c\xfc\xca\xec\x6a\x3b\x5e\xad\xf0\x2b\xd4\x6a\xe2\xc1\x3a\x97\x4f\xb2\x37\x25\xbe\x88\x02\x38\x0c\x92\x2d\x3e\x84\xb9\xcf\x1d\x21\x2a\x4e\x14\xed\x7d\xc1\x95\xbc\x47\xb9\x2a\x68\xc5\x69\x00\x82\x33\x63\x3d\xd7\x75\xdf\x56\x96\x9b\x57\x75\xdf\xd4\x77\xdf\x04\xec\x52\x55\x6e\x27\x50\x85\x96\xe5\x67\x4f\x5d\x30\xc9\x6a\xc2\x74\x7d\xb7\x73\x8a\x36\x5e\xd5\xb6\x67\x83\xc0\x65\x6c\x48\x1e\x2d\x69\xdc\xfc\xbf\xf4\x3f\x2c\x69\xd8\xe6\xc1\x80\x97\x3e\x8c\x33\x71\x1e\xd2\x23\x6c\x4e\x66\x8a\x5b\xbc\x8d\x78\xc6\x24\x75\x9e\x0d\xec\x58\x45\xb1\xb6\x1f\x88\x41\xf0\xaf\x96\x9a\xf9\xb1\x43\x78\x6c\xc4\x5a\x4c\x1b\x4e\x7a\x09\x45\xc6\x67\x04\xc9\x83\x9d\x1f\x9a\x0b\xd1\x95\xd9\xfd\xbb\xd6\xfa\xc5\x26\x55\x69\xc8\x72\xf5\xe9\xa0\x82\x3d\x5e\x86\x05\x57\xd7\x3f\xce\x5e\xc7\x52\x0b\xe1\x73\x9b\x89\xdb\xa5\x54\xb3\xe8\x71\xb5\x04\x2b\x98\xc8\xaf\x79\x6d\xe7\x75\x9d\x57\x81\x69\xfa\xd2\xa2\xa7\x89\x96\x80\x18\xfe\xbb\xbd\x74\xdf\xd2\x11\x6d\x37\x0e\x49\x84\xbb\xcc\x8e\x90\x48\xfe\x80\xb8\x8b\xfb\xb4\xfe\x68\x4d\x1d\xec\x24\xf1\x5d\x8b\xf3\xa5\xfd\x8d\x45\x3c\x09\x70\x0c\x17\x19\x3e\x61\xa3\xd1\x30\x4b\xef\x77\x6b\x41\x9b\x1d\xeb\xe2\x91\x13\x0c\xc9\xac\xfe\x77\xbc\xf8\xa2\xba\xc2\xd1\x42\xdb\xbf\x1e\x59\x18\x50\x99\xb2\xb5\x16\x4a\x79\x46\x76\x49\xf2\x68\x02\xe5\xa3\x46\x2b\x19\xa0\xb7\xdf\x41\x13\x97\x47\x97\x60\x39\x4f\xcc\xfa\xe7\x74\xf1\xf8\xf2\xd7\x43\x2b\xae\xd1\x0b\xa6\x62\x18\x13\xd3\x72\x5c\x55\x8f\xe4\xaa\x42\x57\xba\x7a\xf1\x1c\x83\x0d\x4f\x48\x0d\xe9\x08\xd1\xea\x03\x24\x74\xde\x7b\x61\x1f\x0d\x82\xce\x79\x6f\x79\x74\xaf\x27\xc2\xd7\x9e\x62\x84\x3e\x2e\x24\x4b\x02\x3f\x10\x1c\x2d\x19\xe8\x7c\x52\x5f\xa9\xf8\xbc\x58\x9c\xad\x46\xb8\xc0\x2e\xa1\x01\x94\x9c\x3e\xde\x1c\x16\xb7\x03\x1f\x68\x27\x27\x13\x8d\x66\x5d\xe6\xed\x5b\xc7\x8b\xb3\xe3\xe9\x1c\x7e\xc6\xe4\xcc\x78\xe0\xa6\x4a\x4b\xab\x2b\xe9\xd1\xb7\x9b\x44\xc5\x8b\x8a\x44\x38\x8c\x9c\xbe\x0d\x28\x6b\x8d\xaa\xec\xb7\x6a\x6d\xfb\xeb\x7e\x88\x51\x3e\xda\x43\xd2\x2f\x39\x80\xd1\x21\x7d\xdf\x47\x07\x90\xda\x40\xfa\x97\xff\x8b\x24\x9d\x2c\xaf\xd1\x9c\xba\x65\x4d\xc7\xf5\x01\x1b\xc3\x0b\xe1\x3d\x13\x1f\xdf\xa7\xcb\x64\xf5\x07\xc5\x7b\xc1\x0b\x95\xbb\x87\x4e\x8c\x1a\x88\x3e\x20\xcf\x24\xe7\xcf\x6d\x5c\x19\x62\xd4\x58\x51\x3e\x75\x1c\x8a\x2c\x02\xeb\xf4\x69\x81\x0c\xe6\x9b\x72\x22\x2b\xf3\xdf\x38\xe3\x1f\x69\xda\x58\x6e\xcc\x28\xa5\x2e\x43\x7e\x45\x38\x66\x59\x32\x48\xc2\x2d\xba\x1e\x60\xfc\x1a\xbc\x9b\xeb\xe1\x35\x5e\xfc\xf0\x11\x8e\x6e\x88\x8e\x1f\x08\x8f\xee\xf9\x9f\xf9\xe1\x2d\x92\x16\x40\x17\xef\xfe\xe8\x29\x67\x1d\xc2\xf0\x61\x78\x39\x6c\x77\xaf\x50\x59\xe8\x5b\x83\x44\x7f\x46\x19\xa9\x17\x25\xcb\x04\x6c\x4f\x2f\xa9\xdb\x3b\x3c\x4e\x88\x16\x45\x58\x6d\x34\x54\xd1\x92\x9e\xcd\x73\xda\x6d\x6d\x1d\x5a\x08\x7b\x39\xac\x7b\x3e\x6a\x20\x5d\x0b\xe5\x91\xf3\xfa\x83\xe1\xf5\x58\xb9\x69\x2d\xb6\x12\x87\x95\x8d\x21\x3e\x25\x21\x5b\x63\xa6\xb6\x22\x6b\x71\x4d\x44\x22\x39\xe7\xad\x01\x5a\xb8\xc1\xd0\xef\x8a\xa2\x8d\xa4\x5b\x34\xb0\x1f\x3c\x27\xd7\xf8\x18\xc9\x03\x21\xb0\xb8\x02\xc0\xaa\x9a\x8b\xf4\x8c\x26\x1d\xb7\xc4\x27\x54\x08\xae\x99\x4b\xb9\x25\xce\xed\xc4\x42\xbc\xcf\xf4\xd7\x9f\x65\x94\x00\x2c\xb1\x7d\xf5\xf0\x86\x0c\x9e\x02\xe5\x27\x99\x7c\x6b\x83\x57\x04\x25\x8b\x97\x55\xdd\xa4\x42\x43\xb4\x5c\x08\xb7\x5f\xd2\x38\x14\x9b\x34\x1c\xf0\x50\x7b\x4a\x75\x4d\xfb\x85\xd4\x5e\x91\xbd\xd3\xaf\x8a\x13\xca\x9f\xe2\xf8\xcf\xb2\x18\x5f\xfe\x19\xe1\x56\x9c\x64\xd9\xf5\x8a\x71\x86\x9f\x14\x08\x47\x88\x96\x27\x2f\x60\xaa\xd8\x22\x38\xcd\xd5\x76\x6c\x94\x57\x74\xa1\x84\x11\x7e\x5e\xb2\x23\xb4\x02\x50\x40\x45\x9f\x7c\x1e\x89\x50\x20\x3a\xbe\x0f\x74\x53\x87\xd3\xee\x8e\x20\xd9\x15\xd6\xab\x5a\x63\x31\x9d\xe9\x73\x6e\x4a\x7e\x34\xd9\x9d\xe5\x41\xf6\x9d\x5b\x6f\xe8\xe8\xee\x90\x61\x95\x4c\xa0\xe4\x81\x4a\x5d\x73\x5c\xc9\x48\x4a\x6f\x7d\xee\xab\x5a\xff\x2c\xf9\x3a\xef\xd9\xd7\x44\x13\x84\x95\xe1\x08\xe1\x23\x06\x66\x28\x27\x69\x54\x1a\x71\x60\x3a\x10\x2d\xa3\x51\x63\xfc\xf4\xee\x66\xd3\xe7\xda\x18\x17\x3b\xff\x34\x1e\xa2\x35\x77\x1e\x82\x9e\xab\x77\x6d\x83\x11\xba\xec\xfa\xdd\xe2\xfa\xc5\x75\xe3\x29\x96\x9e\x76\x1f\xab\x0a\x9d\x35\xaa\xfa\xe3\xfb\xcc\x39\xd0\x15\xdd\x49\x21\xc3\x01\xd9\x3b\xe0\x26\xa0\x1f\x74\x43\xbe\xd9\xe0\x8d\x11\x8d\x6d\xcb\xf4\x60\xc3\x8a\x78\x12\x8b\xeb\x26\x62\x0d\xd9\x23\xe1\x13\xf1\x14\x88\xa0\xda\x98\x96\x55\xd3\x55\xf7\x4d\x79\x37\x9a\xa0\x41\xbd\x34\xf4\xcf\x86\x12\xab\x0c\xa0\xc9\xa0\x40\xe6\xca\x92\x1d\x25\x68\x73\xf2\xb6\x68\x47\x19\x2c\x01\xd5\x16\x5b\xd5\x69\xc3\x30\x5d\x36\xa4\xaf\xec\xa6\x8e\x08\x60\xfb\x3e\x2c\x14\x04\xdb\x8c\x36\xee\x15\x24\x1d\xe4\x4b\x0e\x7e\x9a\xef\xda\x4f\xa6\x9a\x8b\x5e\x04\x4d\xd6\x21\x04\xc1\x0b\xfe\x13\xe4\xc3\x2e\xca\x25\xca\x03\xd1\xc9\x8a\x13\xcd\x70\x1c\x03\x57\x0d\x7f\xe9\x3f\xa0\xef\x4b\x2e\x31\xbd\x9e\xc8\x8e\x91\x64\xfb\x4b\x20\xf2\x4c\x7c\x82\x17\xaf\xaa\xe6\x4e\x46\x37\xb0\xe6\x5b\xdc\x7f\x0d\xf3\x9b\xac\x0b\xa1\x2a\xeb\x4b\x91\xa7\xfe\x29\x17\xc9\xc3\x3a\x90\x52\x0d\xd5\x9b\xbe\x96\x85\xe8\x91\x1d\x08\x69\xa2\xc1\x9d\x1e\xe7\x29\x7b\xc8\x14\x00\xde\x84\x93\x80\xde\x62\xa7\xd1\xc5\x30\x2e\x24\x66\xdc\x0b\xfc\xf7\x66\x06\x01\x5c\x73\x66\x8c\xf8\x0e\x2f\x2f\x61\x26\xc4\x1f\x9f\xca\xfc\x83\x11\xc5\x65\xcf\xbc\x5b\x39\x3e\xc4\xb2\x76\x2e\x6b\x08\x7a\xb9\xb8\x41\xc7\x46\x53\x3b\xc2\x63\x7e\xf9\x31\xbc\x67\x04\x85\xc8\x71\x65\x1b\x4c\x90\xce\x50\x58\x1d\x96\x4d\xc7\x84\x6e\xf0\xce\x7e\x75\xf6\xa3\xd9\x8f\xa8\x48\xa0\xeb\x11\x0d\x26\x3b\x0a\x2f\x4e\xaa\x41\x50\x3c\xe4\xea\x59\x95\xe9\x07\xcc\xaf\xe8\x9a\xde\x52\x9f\xf4\xed\x16\xc7\x64\x4d\xc9\x63\x44\x03\xf8\x90\x71\x04\x76\x85\x05\x95\x1f\x10\x8c\xe8\x12\xb4\xe3\x3c\x5c\x87\xfc\x4b\xf5\x5f\x3e\xae\xeb\xb9\xa1\x76\x89\x57\x15\x49\x8d\x39\x36\x99\xd1\x75\x4e\xa6\xd0\x39\x2b\xf7\xa6\x9c\x8f\x1a\x68\x35\x50\x4d\xf4\x97\x35\x7e\x4d\xf1\xb5\x14\x38\x01\x18\x95\x11\x40\xb5\x7f\xa9\x98\xd9\x1f\xa1\xe1\x80\x55\x47\xce\x9e\x49\x93\xb7\xc0\xf9\xb9\xc5\x77\x41\x96\x53\x3b\x76\x31\xab\x2a\xb8\x15\x6e\x30\x2d\x3b\x7e\x22\x38\x1d\x4c\x80\x55\x8b\x66\x4c\xee\x9a\x93\xb7\x1c\x28\xd9\xf3\x16\x30\x57\x0a\x7d\x0d\x00\x0a\x80\x1c\x19\x1c\x08\x99\x78\x38\x45\x14\x27\xea\x86\x70\xc8\x27\xc1\x87\xd3\xc0\xe5\xdd\xe0\x6c\xfe\x9a\x1b\xe8\x66\xc2\x5a\x74\x45\xb3\x67\xa4\xb2\x8e\xf2\x8a\xe2\x38\x66\x1b\xca\x50\x3c\xe1\xcb\xf7\x28\xc8\x3c\xe1\xd6\xed\x5d\xe0\xda\x79\x55\xb1\x37\xd5\xe5\x0f\x1e\x79\xcb\xa7\x05\x8e\xe0\x97\x0b\xbd\x10\xd2\x42\x01\x4d\xec\x0e\x73\xc6\x8c\x11\x74\x2e\x01\xca\x9a\x27\x3d\xc2\x2d\xd9\x91\x40\xf9\x43\xd3\x30\x81\x15\xd7\xbf\x7e\x88\xfa\x47\x58\xee\xd4\x78\xbe\x92\x47\xec\x73\xe0\xd8\x04\xfa\x40\x7e\x46\xc9\x9f\x86\x66\xc3\xa5\x13\xeb\xba\xce\x43\xfb\x24\xde\x50\x97\xd2\x71\xac\x48\x96\x1d\x03\xf0\xa5\xac\xad\x73\xe6\x7b\xf7\x16\x47\x9f\x58\x35\x1b\x54\x75\xf1\x98\x3d\x1c\x59\x09\x5e\xa6\xec\xa5\xc8\xd1\xd9\xd4\x01\xa0\xd9\x51\x87\xa5\xe5\x97\xb2\x0e\xc8\x4f\xa9\xc3\xd9\x21\xb3\x50\x21\x7d\xd9\x35\xa0\xda\xd0\x22\x0b\x11\xb0\xaa\xa2\xa8\x91\x06\x53\x40\x8b\x2d\x00\x70\x79\xca\x4b\xb6\xd1\x3e\xc1\x1a\x2e\x33\x98\xd8\xc4\xe1\x09\x56\xc7\x96\x5d\x8f\x3e\x2a\xd4\xa4\x5b\x0d\x61\x5e\x1b\x49\xaf\xe4\x82\x4c\xde\x72\xd6\x2f\xb8\xbe\xdf\x42\x81\x3b\x2a\xc8\x55\x6e\x0b\x87\x96\xc2\x1a\x16\x4a\x31\x0d\xd9\xdb\x9b\x4f\xca\x4e\x64\xd6\x6c\x0d\x93\x98\xb2\xd2\x01\x90\x05\x8c\xc0\xb1\x07\xca\x63\x83\x3b\xcd\x7b\x75\x18\x4a\x53\xb4\xe6\xde\x3b\x69\x7e\x07\x59\x7e\x47\x26\xc1\x47\xea\x29\x2d\x20\x04\x67\x36\x92\xdc\xf8\x55\x0f\x55\xc9\xcf\x06\x93\xf2\x93\x87\xca\x13\xfe\x88\x49\x09\x8d\x2e\x47\x00\x06\x3c\x12\x8a\x5a\xf8\x31\xd7\x65\xfe\x81\x88\x52\x61\x80\x1f\x14\x8e\xcb\x9a\x1d\xc8\x56\x6c\x68\x9a\x18\xd2\x9d\xcb\xed\x95\x6b\x9a\x3b\xaf\xe5\x45\xee\x48\x7c\x4d\x1f\x61\x76\xf3\x01\x7a\xa9\x73\xcc\x22\x5c\x45\x4a\x7e\x86\xd4\x54\x53\x86\x91\x6b\x38\x05\xfe\x59\x33\xfe\x9b\x73\x0e\x11\xf2\x71\x42\x01\xec\x33\xe6\x10\x07\xba\xe6\x07\x5e\x20\xa8\x98\x92\x42\x65\x43\x3e\x23\x7a\x97\x22\xc7\x96\xdf\x87\xf6\x5f\x05\xa9\xfe\xfd\xf9\xc7\x34\x82\xce\xd4\xbc\x77\x9e\xa1\x35\x0f\xa2\x2d\x17\xea\x2c\x57\x87\x8d\x32\x38\xa0\xe3\xb0\xa6\x0f\x7b\xb2\x69\xef\xfe\x64\x7a\xcc\x8c\x91\x8f\xec\xcc\xb1\xc4\x67\x78\x9f\xb4\x30\xff\xbc\xc9\x73\x9a\xec\x63\x96\x50\x25\x4f\x11\x48\x7d\xb3\x32\x11\x27\x9c\x1d\x78\x7c\x46\xad\xf6\xe9\x7e\x4e\x40\x86\xe7\x5b\x32\x8f\xf5\xbc\x70\xd0\xc0\x97\x5d\x00\x68\xcd\x50\x69\x42\xe6\xfa\xaf\x39\x64\xa6\xec\xf0\x8e\xc0\x63\x8a\x18\x5d\x8a\x0c\x03\x92\x39\x8b\x0f\x2b\x3c\xc3\xfb\xb0\x91\xf4\x7f\x3c\xa6\xb8\x95\xfc\x50\x21\xd8\xa2\xaf\x4b\x95\xbe\xf1\xc0\x3b\x7a\xa5\xc6\xf8\xe2\x59\x5c\x20\x24\xb0\x07\x48\xa4\x02\x7c\x2b\xdf\xb4\x1c\xc1\x1f\xfd\x92\x6a\x8b\x74\x35\x0e\x10\x1e\x30\x5c\xda\x97\x67\x25\x57\xcf\xbb\xc2\x95\x0b\x59\x2e\x06\x0d\x50\x60\x84\xda\x5f\xe4\x3c\x44\x69\xc9\x54\x45\x00\xf9\x71\xcb\x70\x58\x8f\x30\x41\x97\x04\xd2\x81\x5e\x62\xd0\xb9\x89\x51\x95\x74\xc1\x9c\x9f\xec\x1b\x07\xe9\x7c\x8e\x1a\x9f\x0d\x19\x52\xe7\x3e\x3a\xcf\xd4\xda\xcf\x02\xbf\x29\x41\x9c\x3e\xf9\x23\x14\x29\x1c\x97\xb4\x04\xcb\x2b\x3a\xa3\x49\x7c\x6c\x5f\xe0\x50\x81\xf7\x1f\x83\x7f\x30\x40\xe1\x90\xa3\x4b\x80\xd7\x0a\x6e\xd3\x7b\xa8\x9b\xdc\xe0\x82\x3d\x3e\x5c\x56\x71\x2f\x46\xf4\xbf\x79\xb4\x85\xc8\xbe\x85\xf0\xee\x09\xb0\xd1\x16\xc5\x15\x0d\x78\x99\xf6\x8b\x1a\x8f\x4a\x1b\xf7\x4a\x6b\xf7\x0a\x57\x0e\x73\xca\xfb\x45\xfa\xa7\x29\x93\xc7\x3e\xbf\x61\x5e\x1a\x4a\x57\x4c\x59\x7c\x69\x02\x2f\x5a\x46\xdf\xe8\x12\x8d\x0a\x3a\x4c\x8d\xc4\x2b\x63\xa7\x46\xb7\x7e\xb3\x4c\xd0\x07\x55\x77\x5e\x8d\x2e\xfe\x77\x00\x5a\x66\xb8\x73\xef\xe3\xbc\xfc\xe7\xbb\x1d\xa8\x90\x6d\xd8\xf0\xbc\x7f\x5b\x35\xe0\x22\x15\xed\xd5\x6a\xc0\xaa\x1c\xa6\xe0\x5f\x8b\xaa\xbf\x4f\x11\xb5\x54\xf4\xa7\x52\x2d\x76\x2a\x6d\xef\xd7\xbd\xb0\x44\x3d\x5e\x66\x23\x2e\x79\x53\x62\x56\xfe\x5f\x8e\x88\xa3\x85\x3f\x48\x13\x0d\x49\xf1\x55\xaa\x90\x24\x6c\x5f\x66\xff\x38\x81\xe9\xd1\xb1\xa5\x46\x4f\xd9\x66\x0b\x8d\xf7\x9d\x06\x7b\x0b\x85\x52\xbc\x1c\x82\x70\x58\x55\x64\x7d\xba\x38\x14\x1f\xd2\xb4\x95\xb2\x27\x61\x73\xba\x88\xcf\xa4\xc8\x82\xd6\x90\x39\xb7\x26\xea\x8f\x64\x92\x3d\x95\xbc\xe0\xdc\x54\xe0\x5f\x03\xde\x85\x06\xea\x3a\x49\xa5\x66\x4d\xa5\x65\x4f\x23\x13\xcd\x0a\x9a\x70\xd3\x71\x59\x89\x92\x0c\x67\xb2\xc1\x0e\xa1\xf1\x7d\xd1\x74\x7a\x1c\x70\xa8\x6f\x9f\x88\x41\x09\xc3\x61\x59\x9d\x69\x10\x93\xd0\x9f\xf8\x14\xf8\xc2\xab\xb8\xd6\x23\xbc\x40\x6b\x28\x23\xbb\xb4\x3a\x99\x21\xe5\x37\x1f\x16\x9c\xc0\x40\x8a\xb7\xc0\x30\x73\x8b\x90\xe0\xc6\x65\x8a\x17\x4b\xb8\x67\x51\x55\xcd\x54\x55\x91\x63\x4a\x29\x90\x6e\xa2\x0d\xc6\x1a\xd1\x62\xd1\x1c\xa8\xac\xf9\x6b\x34\x81\x0f\x63\xab\x23\x01\xef\xbb\x4b\x0f\xfe\x33\x5e\x74\x15\x11\x65\xd3\xfd\x3b\x14\x20\x45\xfe\x7d\xcf\xe9\xd8\xf4\x5c\xbd\xb6\x89\xef\xc3\x86\xe7\x3f\xfe\x2f\x60\x6c\xce\x5a\x80\x6b\x56\x59\x9b\xc6\xe9\x0a\x5c\x61\xe1\xb7\x0e\xa4\xf4\x42\x97\xf6\x52\x97\x46\x50\xf3\xf6\xd6\x8b\xea\x48\x41\x2b\x2c\xc2\x6f\x11\x7f\x81\xd8\xd8\xa1\xf8\xaf\xea\xcb\x9e\xf0\x3f\xc7\x13\x06\x43\x02\x54\x1e\xa8\x1b\x16\xdf\xe7\xdd\x42\x00\xe0\x02\x92\x20\xe1\x65\x9a\x7c\x8c\x6d\xb4\x11\x85\x21\x71\x8d\x67\x57\x15\xcb\xa8\x8d\x8f\x18\x1d\x73\x1b\xbc\x73\x2d\xc6\xb8\xc5\xbb\x24\xf3\xcd\x8c\x40\x87\x66\x43\x06\x1f\xf9\x7f\x8f\xdf\xf8\xbf\x21\x09\x03\xd1\xc9\xfd\xcb\xcb\x90\xb3\x0f\x8a\x30\xf8\x35\xaa\x7b\x6e\x04\x25\x04\xa2\x93\xd0\x9f\x75\x16\x7f\xe3\xab\x7c\xd7\x74\x63\xbe\x41\x84\xcd\x66\xa0\xef\x85\x57\x16\xd1\x2a\xf1\x51\x44\x22\xea\x58\x5d\x9f\x7f\xb3\x45\xd2\x40\x65\x4d\x71\xa1\x8f\xdc\x8b\x94\xe6\xe8\xda\x21\x7e\x0e\x2c\x62\xbe\x94\x27\x3d\xbf\x9a\xa4\x7d\x1a\x4e\xc2\x65\x4b\x81\xa8\x0f\x5e\xc8\xe6\xb8\x44\x9f\xf8\xce\x7d\x71\x8b\xb8\x62\x47\xf8\x2d\x92\x8c\x20\x9c\xe3\xfe\x5c\xf2\x63\xab\x3f\x8f\x3a\xd5\x98\x01\x15\x51\x98\x94\xf7\xa0\x89\x2f\x80\x97\xa5\x2e\xad\x97\x76\x25\x3b\x92\x58\xa1\xd6\xbb\xf2\x5a\x22\x18\xba\x19\x74\xba\x87\x7d\x64\xed\xa5\x5e\x95\xa3\xf3\x9e\xc1\x7d\x0e\x84\xa4\x89\x71\x6c\xc8\x1f\x4e\x92\xcb\x7b\x91\x1b\xaa\x4b\x0d\x38\xe5\x7c\x9b\x1d\x08\x2e\x9e\x3b\x51\x05\xc1\x92\x12\x67\x4c\xf4\xbf\x94\x56\x16\xea\x99\x89\x42\x9f\xe2\x59\x9d\x67\x50\xc3\x4a\x71\x0b\x56\x58\x92\x4d\x66\xfb\xb7\x07\x27\xc9\xcf\x3f\x96\xd8\x81\x97\x40\xf8\x1c\x88\x6a\x4a\xe5\xea\x15\x3e\xb2\x68\x0f\xb1\x70\x59\x89\x93\x24\x29\x1e\x50\xea\xc7\xca\xfc\x59\x26\x69\x82\x1e\x3f\xf8\x0b\xba\xec\xd3\xbf\xef\x29\xf9\x3b\x3c\x64\xb3\xf1\xb5\xa6\x81\xa8\x04\x21\x8b\xb3\x4b\xa2\x1f\x26\x6b\x62\x6c\x19\x5e\xc1\xbc\x57\x89\x08\xb0\xe7\xbe\xd7\x1f\x7c\x0e\xa5\x43\x25\x67\x16\x70\x27\x98\x1d\xf4\x43\x11\xab\x5a\x5e\x1f\x86\xad\x1b\x31\x2e\x7d\x62\xb1\x54\x4e\x14\x26\x4e\xd1\x32\xd0\x2d\xa4\x1b\x7a\x01\x0f\x34\xc3\x8b\x37\xb9\x75\x6f\xff\xfa\xf3\x52\x44\x95\x00\x24\x8e\x23\xce\x84\x92\x84\x88\x46\x2a\x50\x5c\x9b\x9f\x16\x5b\xe9\x2f\x1f\x69\x9a\x60\x7a\x42\xa5\x77\x2f\x36\x9f\xf0\x32\x24\x27\x9a\x86\xfb\x44\x61\x8d\xa8\x79\x69\xfd\xee\x6a\x06\xa2\x9e\x4c\x5f\x9d\x3a\xe8\x42\xb0\x91\xe5\x9d\x3d\x47\x36\xa9\x22\xc1\x90\xf8\xb4\xe5\xd1\xb6\xb9\x15\x4c\xf3\x73\x2e\xbb\x17\xea\x9e\xab\x29\xc3\x7e\x9e\xd8\x75\x55\x67\x97\xe8\xfb\x92\xe5\xee\x99\x2e\x00\xfd\x55\x6c\xee\x6a\xfa\x97\x23\xd6\xf4\x7d\xce\xb3\x4b\x2c\xe1\x54\x5c\x3d\x25\x67\x32\xe2\x00\xad\x3b\x0f\xff\xc3\xc1\xbc\x24\xf5\xd0\x7e\xcd\x1d\xc6\x9d\x38\x14\x31\x49\xf6\x69\x41\x4d\x4e\x2b\x78\xd0\x05\x4d\x66\x02\x63\xc2\xfb\xae\x09\xde\x39\x4f\x94\x6c\x1a\x02\x23\x8f\x72\x5a\x88\xbd\x5b\xe5\x91\xce\x9f\x17\x6f\x8e\x38\x1b\x3e\xfc\x26\x10\xb9\x02\x26\x52\x7d\x77\xc4\x68\x62\xe4\x2f\xa9\x24\x68\x01\x85\x86\xfc\xa7\xf1\xbe\x68\xf9\x02\xb3\x8a\x23\x99\xec\x52\x19\x75\x37\x46\x6a\x6d\x8c\x28\x4e\xb1\x31\xe5\xc5\x43\xf4\xa0\x38\x7e\x2a\x07\x6a\xd6\xeb\x85\x1e\x9c\xd4\xe6\xba\xd3\x92\x86\x93\xf2\xea\xa6\xce\x81\xe7\x14\x7d\xca\xfc\x63\x3a\x89\x1d\xb3\x89\xbc\x5f\x49\xe8\x69\x2e\xf9\xb9\xd0\xb1\xc1\x38\x59\x1c\x22\x92\xab\x6d\x41\xd0\xe7\x02\x03\x66\xed\x18\xe6\x0b\x9e\xa8\xf7\xfc\xe6\x5f\xcd\x23\x64\x39\xab\x98\x7c\x9f\xbc\x5f\x89\x4b\x1a\x6e\x17\x42\xb2\xd3\x80\x51\x26\xc7\x45\xc2\xfe\x9c\xd5\xd7\xdc\x7f\xa2\xdb\x35\x95\x4e\x97\x57\xe8\x60\xd2\x19\x0d\xf8\x9f\x58\xa4\xad\x59\x81\x1b\x46\x85\x86\xe9\xd5\x38\xef\x7d\x18\xa2\x34\x31\x0c\xa8\x74\x3b\x6d\x40\x4d\x01\x7d\x62\x48\xc3\x0b\x18\x9d\x83\xee\xa4\xb9\x72\xc3\xa2\x7f\x3e\x6c\x45\xda\xae\xea\x3b\xa2\xfc\x46\xa3\xf5\x65\x03\x5e\x2d\x0d\xe7\x13\x4c\x57\x51\x82\xed\xf0\x1d\x08\x33\x7e\x1e\xa8\x50\x5e\xa7\xdb\x0b\xc1\xf2\x92\xe4\x13\x1d\xbb\xea\x1e\x03\xa0\x9b\x36\xcc\x3d\xaf\x70\xab\xf2\xca\x32\xb8\x3b\xf6\x4d\xa1\x6e\x6f\x91\x8d\x83\x24\x47\xd2\x2b\xd2\x60\xf5\xc7\x32\xb5\x74\x38\xe8\x98\x26\xe6\x48\x26\x00\x76\xc7\x02\x08\xd0\xae\x3f\xa8\xef\xa8\x81\x07\x0f\x3e\x36\xff\xda\xc0\xb5\xae\x6b\xbb\x2c\x9d\x9e\x1d\xd9\x6d\x5a\xcf\xd2\x13\xd5\x31\x92\x3c\xdb\x3a\xe8\xbc\x96\x48\x56\x9c\x25\xc7\xb4\xb1\x8e\x50\x67\xe2\xec\x52\xe5\x1f\x63\xd2\xc6\xa3\x34\xd1\x9a\xd3\xc7\x92\x4d\x51\x54\x4f\x8a\x93\x76\x41\x84\x97\x56\xb8\xe4\xce\x9b\x4a\xd0\xc5\xf5\x67\x5d\xb4\xa1\xca\x1b\x9b\xcf\x33\x98\xa0\xbf\xe5\x05\x95\xd6\xd9\x3d\x59\xdb\xda\x9d\xb6\x1c\x24\x08\x6f\xb0\xb4\x56\x6b\xa6\x50\x6b\x23\xcb\x57\x9f\xa4\x11\x2a\x51\xb6\xc7\x16\x41\x45\x5f\xd7\x71\x79\x9c\x06\x76\xf7\x6d\xff\xb8\xb8\xd7\x8c\x7d\x9e\xb6\xfb\x27\x91\x34\x00\x0f\x28\x94\xe1\xb4\x21\x5d\x15\x48\x79\x8c\x5b\x1e\x59\x7a\x3b\xdc\x3e\xc7\x12\xdb\x51\x65\xc8\x83\xab\x21\xc5\xfe\xc5\xc1\x05\xdc\x3d\x4a\x57\xae\x2b\xb1\x83\x95\xd5\x30\x5f\x26\xc7\x94\x31\x52\x09\x01\x94\x4c\x58\x98\x08\x7d\x65\x33\x30\xd9\x0e\x60\x49\x9d\x57\xec\xc8\xd6\x90\x28\x8c\x7d\xf9\xa7\x13\x93\x40\x29\x45\x43\x82\xc6\x20\x3e\x7a\x60\x59\xb2\x11\x11\x7f\xfe\xfa\xfb\x75\xfa\xce\xca\xfc\x1f\x6a\xc0\xba\x67\x0b\x62\x20\x0d\x7f\x5a\x3d\xbf\x89\x4e\x17\x47\x6c\x16\xba\x00\x7e\x37\x01\x15\x51\x40\x96\xe0\x7b\x33\xc4\xc4\x8c\xd1\xfb\xa0\x9d\x79\xc7\xb0\xdd\x55\xb3\x1a\x4b\x14\x1a\x9d\xc1\x5f\xb2\x1f\x92\xc0\xd9\xdf\xb7\x9e\x55\xe6\x2e\xaa\x15\x5a\xf2\x33\x52\xdd\x7a\xfe\xb1\x8b\x0b\x17\xde\x8f\xb0\x78\x67\xc6\xf1\x32\x1a\x3a\xd6\xbb\xe5\xc9\x9a\x60\x73\xea\xc8\x60\x1e\x03\xad\x31\xd5\x6a\xb7\x74\x0c\x58\x3b\xf7\x56\x94\x21\xa9\x36\x02\xb8\x76\x93\x54\xa8\x3b\x75\xd5\xea\x83\xaa\xad\x77\x61\x43\x4b\xd1\x45\x47\x72\x81\x1d\xd0\x19\xca\xf4\x69\xcb\x16\x63\x55\x96\x2b\x2e\x89\x8b\x3d\x22\xb5\xee\x56\x78\xcf\x7c\xc3\x94\x11\x35\xe8\x76\x50\x57\x90\xe4\xac\x46\x27\x86\x72\xfa\xca\xe0\x18\x21\xef\x80\x52\xb9\x6b\xf9\x24\xe0\x9a\x5c\x2c\x8b\xb2\x05\x39\x22\xff\x63\xbe\xc0\xce\x68\x59\x9d\xf0\x84\xb2\x60\x52\xbb\x77\x32\x8a\xa1\xd4\xf0\x35\x43\x5f\x10\xe4\xb8\xe2\xea\x44\x4b\xe3\x5e\xf0\x42\xd4\xf0\xe1\x53\x6a\x38\xa7\xaa\xcb\x44\x03\xb8\x70\x04\x43\x75\x04\xb5\xc9\x8f\x68\x1b\xda\x2f\x5b\x51\x3d\x00\x04\x1e\x52\x4d\xcb\x1d\x04\xab\xe1\xd1\x6c\x9b\x24\x3c\xb2\x80\x27\xbe\xa9\xdc\x1c\x9d\x33\x8e\x31\x49\x61\x75\xae\xce\x59\x10\x35\xba\xba\x7d\xc5\x12\x3d\x70\x08\xf9\x74\x16\xa0\xb9\x47\xef\x6a\x82\x4f\xe4\x8c\x74\x4e\x27\x0e\xbc\xd0\xc4\x44\x66\x97\x3a\x05\x1b\x21\xf2\x38\x75\x98\x2e\xca\xaa\x7e\x0d\xa9\xeb\x1e\x04\xdb\xda\x61\x70\xc2\x6c\xfc\x0a\x00\xb0\xa2\x60\x11\x46\x0f\xdd\x09\x3a\x89\xb0\x74\xfe\x44\x5c\x66\x28\x33\xe6\xd8\x50\x39\x3c\xf1\xf8\xd6\x71\x27\x4b\xd4\x42\x85\xf5\x56\xc5\x23\xc4\x5c\x2e\xee\xb1\xc2\x5c\x6e\xc5\x32\x73\xa4\xe4\x99\xb1\x6f\xac\xe8\xf4\xcf\x48\xc7\xe4\x89\xdd\x5a\xec\xc7\x7a\xd5\x9c\x86\x43\xe3\xf2\x3f\xdf\x01\x82\xb5\x16\xb6\x63\xf5\x87\x7f\xef\xa4\xe2\x91\xa9\x99\xd1\x53\x46\x45\x36\xdd\x75\x59\xd5\x06\x2b\xa7\x5e\x6c\x6c\xc7\x1a\xf9\xd6\x99\x1a\x0a\x97\x9e\x3d\x8e\xf9\x92\xa8\x88\x70\x5e\xf5\x2e\x2f\x6e\x43\x73\xdf\xcb\xc7\x34\xe0\x3d\xc6\xac\xfc\x66\xae\x30\xa7\x1c\x28\x3f\xd2\x46\x73\x9d\x07\xcb\x8f\x80\x0a\x2b\x42\xc9\x60\xa2\x89\x1b\xdf\xe1\x09\x04\x34\xf3\xbd\xf7\x34\xa2\xbd\x4a\x82\x21\x00\xb1\x48\xe9\x2f\xa6\x91\xd4\x10\x38\xd1\x17\x79\x71\x89\x43\x8e\x51\xa8\x96\x48\x43\xb1\xbd\xa6\x76\x4b\x56\x38\x5e\x7e\x66\xb6\x12\xe7\x1e\x8f\xca\x58\x4f\x81\xa9\x7d\x40\x46\x1b\x63\xf6\x5d\xb7\x4c\xea\xf5\xf2\x0b\xfe\x3c\x8a\xe3\xef\x21\x49\xaf\x1f\x72\x33\x8a\x93\x77\x45\x1a\x94\x47\x98\xc1\x30\xf0\x65\xba\x54\x2d\x56\x72\xa6\xb1\xc8\xed\xd7\xc1\x75\x7b\x9d\x31\x77\xf6\xcf\x18\x68\x20\xa2\x09\x93\x87\xd3\x2b\x9a\xcd\xb0\xb4\x98\x10\x67\xbb\x9c\xef\x61\xc0\x2f\x95\xa2\x64\x7f\x53\xb7\x32\x70\xc5\xc7\x0a\x73\xe5\x00\x70\x1f\x81\x22\xbc\x46\x72\x43\x67\x58\x17\x14\xa3\xaa\xaf\x03\xf5\xcb\x0f\x97\x92\x3e\x10\x3d\x1f\x3e\xef\xd4\x94\x2a\xf6\xa6\xe3\x70\x58\x5b\x79\x02\x57\x31\x92\xfc\x8e\x02\x70\x0a\x13\x0f\x84\x0c\x3a\x30\x0f\xd7\x95\x38\xd1\x7d\x3c\x45\xf7\x02\x44\xf8\x1e\xbf\xed\x40\x88\xf7\x62\x04\xe7\xba\x88\xb9\xc9\xe6\x35\x46\x78\x06\x4c\xda\x66\x04\x91\x53\xb9\xf3\x30\x1a\x0a\xd9\x5b\x60\x45\x54\x4c\x1a\xc7\x68\x6f\xa1\x68\x1d\x45\x47\x5e\xf8\xe4\xb9\x5c\x92\x64\x22\x31\xc4\x10\x9e\x6b\x23\xe2\x80\x13\xbf\xac\x38\x61\xf3\x31\xb0\x6f\x02\xf3\x90\x7f\xd8\xea\x92\xe1\x2f\x44\x6f\x4c\x67\x34\x1c\xbc\x10\x02\x2b\x66\x90\xa9\x35\xee\x3e\xf7\x12\xd7\x3d\xd9\xee\xe9\x35\x02\xe7\x81\xea\xc2\x1f\x3b\x67\x12\x40\x91\xbb\x0c\x1e\xc0\x14\x61\x53\xdb\x0f\xe3\xb2\xa6\xd5\x45\x02\x22\x65\x70\x0b\x44\x54\xf0\xca\xb2\x0c\xb8\x56\x94\xc4\x58\x05\xed\xa5\x16\x39\x90\x25\xcf\x63\x5b\x9a\x74\x0e\x75\x27\x40\x52\xc8\xae\x5e\x9a\x9d\x42\xf6\x49\x58\x4c\xc5\xf7\xd5\xb8\xf9\xe2\xf9\x9f\x87\x12\xb9\x0c\x7c\xa0\xb3\x24\x77\x8f\xb1\x45\x6f\x81\x68\xcf\x0f\x24\xa7\x01\x0e\x38\x8f\x02\x71\x5e\xc4\x0a\x37\xaf\x49\x21\x0e\x1e\xa1\xb7\xf4\x98\x8a\xbd\x7b\xd7\x5a\x81\x83\x00\x4e\x08\xba\x6c\x05\x93\x52\x29\x89\x6f\x36\xe1\x3d\xcf\x77\xd7\xb8\xfb\x68\xa5\x5b\x59\x87\x0d\x26\x30\x95\xab\xff\x15\xfc\xb2\xbf\x5c\xe4\x9b\x1b\xe5\x73\x68\x21\xfe\xbc\xe6\xd2\xbf\x45\x79\x29\x3e\xc3\x5a\x91\xbb\xa9\xc1\xbe\x69\x6f\xf3\xeb\xbd\x0f\xbf\x49\x84\x0c\x32\x03\x72\x3b\x79\xd8\x12\xc4\x81\xe8\x3c\xfa\x9c\x7e\x0f\xff\xfc\xc4\xef\x99\xa9\x0c\xfb\xcd\x47\x6a\x7a\x5c\x2c\x57\x2b\xbb\x3e\x18\xc9\xe0\x43\x86\x54\x53\xfe\x54\xa6\x87\xf7\x44\xe0\xd6\xfe\x3c\x4a\x4e\x3c\x3a\xbd\x21\x83\x4d\x7d\xf0\x1a\xe6\x18\xe0\x48\xb9\xf5\x48\xb6\x7c\x0d\x59\x7f\x7f\x9f\x5d\x45\x60\xb4\x0f\xe1\x36\x6d\x30\xa1\x5f\x15\x25\x3a\xb6\xff\xcc\x58\xd6\xa0\x1b\xa5\xb6\xb1\xa7\xf4\x70\x0b\x0c\xd1\x5d\x6a\x5f\xf3\x83\x62\x21\xb2\xbf\x87\xb6\xd4\x36\xfc\x7e\x3c\x70\xb0\x0b\x22\xf3\x0b\x35\x46\x24\xff\x60\x90\x8e\x97\x11\x19\xe8\xb0\xc1\x7b\x12\x60\x8d\x2d\x31\x01\x4e\x96\x19\x23\xe9\xc0\x83\xfe\xf8\x3e\xec\x17\x1f\x78\x5a\x12\xb6\xc4\x1a\x48\x7b\xd2\x1d\xcb\x22\x81\x5b\x12\x68\xa9\xad\xd8\xec\xd9\xf8\x82\x0f\x54\xf0\xfe\xc4\x1f\x20\xba\x0c\x5f\xf2\x37\x2f\xa8\xaa\xa3\x0a\x16\x7b\xcd\x2d\xdd\x8a\x33\xc9\x91\x82\x7e\xe6\x27\x8c\xff\xc7\xde\x75\xb4\xde\x8f\x73\xe7\xfd\xfb\x29\xc2\x64\x15\x0c\x71\x6f\x33\x24\x60\xdf\xeb\x5e\xaf\xbb\x4d\x36\xee\xbd\x77\x87\xf7\xbb\x87\xfb\x1b\x08\xff\xc9\x2e\xfb\x11\x78\x61\x21\x74\x2c\xe9\x41\xe7\x3c\xb2\xa4\x47\x30\x10\x5f\x09\x9f\x58\x97\x5b\x8a\x0e\xb7\x03\x00\x89\x93\x1a\x15\x01\x79\x03\xb3\x16\xeb\x02\x41\xa7\x47\xbe\x30\x63\x68\x62\x68\xa7\x99\xc1\x46\xe6\x82\xe1\x3b\x15\xbd\x02\x9d\xbb\x8b\xbc\x17\xef\x81\x36\xec\xe5\x6b\x1c\x15\xbd\x89\x90\x13\x8a\x49\x2d\xa9\x52\x59\xb1\xdb\x79\x5e\x66\x5a\x94\x88\xb1\x50\xf1\x24\x42\x33\xf9\xbc\x62\x3a\x49\x81\x42\x5f\xfb\xc7\x6b\xb0\xf5\x96\xbc\x21\x42\xb0\x98\xaf\xbe\x6c\x74\xe6\x20\xa3\x22\x8c\x76\x52\xad\x0d\x00\x43\x01\x29\xa1\xb0\xb0\x7c\xe4\xf1\xaf\xe2\x10\x1b\x80\xc8\xb5\xc1\x13\xca\x2c\x78\x00\xf0\x38\x50\x62\xdd\xf5\xb8\x93\x7d\x6f\x70\x46\x8c\xce\xc1\xe2\x20\x2c\x8e\x36\xc9\x0c\xa0\x97\xd8\xdf\xac\x43\x8c\xf9\x0f\xf1\xa6\x11\x52\x5f\x60\x02\x1f\xe1\x18\x8c\x55\x2b\x0f\x06\x3c\x74\x39\xf6\x31\xbb\x73\x2f\x8c\x01\xa1\x87\x04\x4b\x05\xca\x38\x20\xba\x70\x8f\x0a\xcb\x9c\x82\x67\x1c\x0e\x37\x70\x0a\x48\x1b\x40\xb4\xfb\x39\x1e\x64\x1c\x34\x9a\xa1\x0d\x2b\xde\x7c\xf1\xdf\x66\x6d\x13\x44\xfa\xef\x7b\x81\x32\x47\x53\x5f\xd8\x4e\xae\x86\xf8\x06\x03\x12\x47\x4f\xa0\xa0\x11\x81\x0e\x26\x22\xef\x40\xba\x13\x17\x88\xd4\x45\x75\x0f\xb2\x2f\xa1\x9b\xe3\x7a\x24\x34\x15\xd8\xf3\xf0\xe8\x63\x3a\xde\xa8\xab\xa5\x85\xe6\x08\x21\xf9\xae\xc6\x58\x24\x39\x86\x6a\x42\x40\x47\xef\xb4\xe3\x2d\xd7\x95\x6e\xb5\x18\x09\xa3\xd2\x86\x46\xee\x80\x78\xf6\xbc\xaa\x8c\x96\x1b\x60\x3f\xca\xdb\xfb\x18\x07\x0b\x7e\x52\x89\x0d\x8f\x22\x4f\x8a\x0d\xe5\xf8\xae\x6c\x8d\x3d\x78\x23\xe7\xeb\x1c\x15\x67\xc2\x30\x2e\x38\xab\x59\xbd\x29\x51\x41\xb7\x89\x26\x82\x80\x89\x89\xbc\x3c\xa3\xb0\xaf\xc6\xdb\xb4\x96\xdc\x0a\x33\x33\x38\xfa\x45\x9a\x95\x57\xd3\x1f\x10\xb9\xe4\x85\x5a\xec\xa8\xd7\x9d\xaa\xeb\xf1\x56\x6e\xd2\x17\x11\x0f\x13\x60\x0c\xc8\x02\x8b\xcd\x89\x24\xfa\x22\xdf\x0a\x15\xbb\x9d\x6c\xbd\xd9\x93\xcc\xf7\x00\x21\xa7\x39\x12\x86\x79\x0b\x6d\xb7\x9b\x6e\xfd\xf5\xa3\x4f\x36\x49\xe1\x8c\xd6\x61\x07\x04\xb5\x19\xae\x36\x0c\x60\x67\x6e\xfa\x41\xec\x99\x8f\x66\x47\xed\x99\x0c\x57\x9a\xbc\x6e\xcf\x82\x6f\x20\x5d\x5d\x86\x27\x6e\x2e\x0a\x19\xef\xc6\xa3\x62\x47\x47\x2f\x0d\x5f\x04\xb9\x2b\xfd\xe2\xad\xc4\x1a\xa0\x74\xe4\xe1\x39\xda\x94\x20\x08\x01\x05\xd1\x98\x51\xb8\x12\x54\x9e\x1a\xc2\x1b\x3c\x0c\x91\xb0\x87\x29\x82\xf0\x22\x4f\x14\x3c\xdd\x30\x80\x28\x7f\x48\x64\x80\xd2\xa0\x55\xd3\x58\xe7\x52\x76\x6d\x7f\x28\xd5\x78\xb0\x2f\x4f\x24\xc0\xe3\xaa\x63\x08\xda\x92\x0f\x75\x38\x97\x98\x0f\x8b\x72\x67\xb1\x04\x2d\x11\x4d\xd0\x09\x93\x62\x82\xc4\x80\xfb\x38\x2b\xcd\x0a\x1a\x3a\x9a\x23\xb3\x63\x0f\x6a\x47\x49\x3a\x52\x0c\x24\x50\x15\xe6\x50\xde\x14\xc7\x5b\xa1\x3f\x6e\x1d\xcd\x62\xa0\x18\xd3\xfb\x3e\x84\xfb\x62\x63\x40\x6e\x46\xbe\xdb\xf1\xd5\x13\x58\x9c\xc5\xa5\xab\xaf\x5e\x82\x7a\x05\x72\xb2\x42\x93\x62\xb7\xbb\xaf\xfa\x9e\x43\x8f\x20\x05\x9a\x27\xbe\x22\x31\x58\x87\x40\x80\x5f\xc0\x4a\x50\x2f\xb6\xc6\xc3\x35\x3a\xf2\x17\x44\xda\xd0\xc6\x9a\x62\xd3\x21\x64\xde\x42\x86\x77\x2a\xd3\xac\x94\x5a\x5a\x1d\x2d\x99\x9b\x0f\x6c\xdb\x70\x40\xd9\x2e\x15\xf0\x66\x42\x50\x91\x86\x14\xf5\xee\x3e\x9f\x11\xab\xc4\xf5\x6e\xb5\x39\x21\x80\x62\x7b\xf3\x9c\x72\x4b\x11\xf6\xb3\x47\x6c\xeb\x9f\x90\x67\x4f\xb7\xe1\x45\xd9\x50\x58\x7b\x0f\x96\xdd\xbf\x97\x2b\xd4\x26\xdb\x6a\x1d\x9e\xbe\x37\xbb\x10\x6a\x75\xa0\x82\xea\xc1\x57\x28\xd3\x06\x67\x6c\xc0\xeb\xfa\xb8\x22\x0b\xa4\x6f\xa6\x55\xde\x65\x39\x4a\x2f\x5d\x81\x0a\x58\x91\xf9\x17\x4c\x83\x07\x85\x67\x7b\xcd\xb8\x0f\xef\x39\x2e\x6a\x3e\xd7\x0a\x3b\x8c\x9d\x3a\xdc\x25\x59\xef\x00\xa6\x0b\x97\x3e\x16\x4a\xdc\xc9\xb5\xea\xec\x2d\xc9\xcd\x60\x33\xc4\x06\x60\x3b\x67\x5a\xc7\x39\xee\xbf\x3c\x20\x9f\x53\x43\xb4\x4b\x40\xed\xb2\xbd\x87\x79\xde\x4a\x7d\xef\x86\x0b\x63\x70\x7a\xa7\x9f\x66\x85\x3e\x52\x4f\x7b\x8c\x07\x2c\x35\x81\x66\x8f\xcf\x01\x0b\x8d\xb5\x3f\x2b\xab\xe4\x43\x42\xcf\xa7\xe6\x8c\x84\x5f\x62\xcb\x86\xfb\x19\x9a\xca\x7c\x4d\xd7\x68\x98\xf0\x9c\xd4\x74\x10\x66\xbc\x27\x97\x28\xda\x54\x9c\x8d\x66\x24\x8d\x4e\x18\x1c\x76\x29\xb5\x56\x36\x97\x27\x25\x0d\x73\x28\x90\xc4\x68\x78\xfb\x76\x3b\xb9\x90\xcf\x23\x5b\x62\xa4\x35\xc4\xf7\xb5\x12\x89\x5c\x42\xdc\x94\xd8\x05\x7a\xa5\x01\x4c\x83\xf4\x76\xe2\xb7\x59\xb6\xef\x58\x17\x01\xfb\xd3\xb9\x87\x0d\x00\x13\xed\xa8\x12\xbf\x27\x1b\x81\x51\x69\x61\xa0\xa8\x7e\xa7\x15\xa3\x00\xb9\xd3\xe2\xaa\x55\x42\xa9\x2a\xb0\x65\x72\xa7\x54\xcf\x57\xa1\xb7\x78\x33\xa2\xe4\x6c\x73\x49\x28\xbd\x46\x82\x0d\x45\x66\x7b\x1b\xe4\x5e\x20\xa0\xac\x4a\x93\x98\xee\x01\x44\xca\xef\x06\x03\x12\x73\x10\xb4\x05\xe7\x5b\x8f\xbf\xbe\xfe\xb1\x84\x0a\x23\x96\x71\x0a\x88\x25\xb6\x5f\xa9\xa2\x50\xa1\xc7\x18\x1c\xe7\xc2\xc0\x6e\x05\xbc\x51\x8d\x91\xad\x36\x68\x53\x46\x49\x9a\xe3\x63\xa6\xee\xe5\xdc\xac\xce\x9b\x48\xf4\x6f\xf4\xff\x62\x3c\x42\x52\x81\x57\x8d\x14\xcf\x8a\x14\xe6\xa7\xa6\xf3\x7d\x38\x86\x77\x17\xd3\x7d\xd4\x47\x74\xfe\x78\x33\x94\x1f\xc3\x9e\xf4\xf8\x20\xdb\xb4\xcd\xb3\x67\x48\xd5\xd2\x6e\x55\xea\xd2\x2b\xf5\x38\x39\xd5\x49\xee\x9f\xe7\x4c\xa3\xc8\xf6\x1b\x6b\x2e\x4c\x94\x32\xde\xe5\x4c\xa4\x39\x4c\x44\x7d\xd8\x13\xc0\xee\xde\x40\x10\x23\xfa\x4c\xec\xea\x8c\xbd\xab\x73\xac\xce\x03\xb2\xdb\x4d\x5d\x30\xab\x78\x2f\xd3\x59\xa6\x41\x61\x28\xf0\xb6\xbc\x11\xe1\xcd\x0e\x25\x56\x2b\x74\x23\xf6\x90\x68\xd1\x81\xcb\xb3\x23\x94\x28\xfc\x0c\x1c\x4c\x51\x9a\x84\x84\x08\x65\xa7\xdf\x40\x16\x1c\xd7\x39\xba\xae\xc8\x55\x89\xff\xac\x2d\xcd\xca\xbd\xfd\xf0\x06\xea\xd9\xf6\x8d\xf0\x15\x55\x88\x57\xba\x10\x68\x57\x9c\x9f\xd7\xe8\x67\xc6\x90\x21\x22\x20\x57\x09\x42\x1d\xc3\x25\x60\x19\x58\xec\x50\xaa\x8b\x5c\x25\xd9\xc7\xe1\x8a\xc0\xb1\x10\xe8\xac\x0b\xf9\xe7\xcc\xa8\x7a\x55\xc3\x46\xba\xb5\x9a\x10\x2b\x0f\x20\xf3\xc5\x03\x7a\x72\x3e\xbb\x48\xb8\xa8\xcf\x2b\x60\x42\x33\x45\x55\x1b\xde\x2c\x4e\xf7\x8e\x05\xa2\x72\x93\x6f\xa5\xed\x3b\x5f\xe3\x40\x31\xdc\xa9\x0a\xbd\xca\x98\x35\x51\xf2\xdb\x37\xd7\x9a\x08\xd7\x07\xa0\x65\xdf\xf3\x02\x18\xc6\xdd\x25\x8c\xb2\x57\x40\xd2\x40\xe3\x62\x2a\x47\xf4\xcb\x8c\x16\x13\xb2\x06\xd9\x49\xe8\xdd\x0c\xc7\xb7\x51\xe6\x5a\x03\xd2\x66\xec\x0f\xd3\x16\x6f\xc1\xb7\x9f\x8a\x03\x25\x36\xef\xe1\x2b\xad\x68\x10\x27\x7e\xc8\xec\xc6\x6d\x8c\xce\x4d\x17\xd6\x1c\xc3\x79\x9c\x6a\x2c\x44\x90\xda\x8d\xa2\xcb\xa8\xe5\x30\x87\x07\x50\xaf\x5c\xb9\xb5\x46\x74\x32\xa2\x0a\xdc\x4e\xf6\x5d\x58\x77\x3c\x2f\xf0\xa0\x8c\xbb\xb6\xe7\x85\x6e\xaa\x72\x6f\x89\xd7\x41\x77\x88\x83\x77\xfb\x68\x8f\x36\x69\x85\x48\xef\xe0\x8f\x1e\x6c\x27\x4d\x02\xb6\x28\x37\xb5\x70\x97\x2d\x21\xe2\xce\xdb\xc3\xc9\xf3\x96\xe7\x65\x3e\x17\xb7\x4a\x05\xe9\x8e\xfb\x68\xaa\x7d\x2e\x51\xa4\x5d\x50\x26\x66\x37\x1d\x3c\x17\x28\x0e\xe3\x44\x6b\xe4\x86\x10\x97\xac\xbe\x38\xf7\x75\x1c\x30\xf9\x80\xd2\x93\xa2\x0a\xd2\x2e\xf1\x05\x4d\xaa\x4d\xe8\x7d\x65\x3a\x24\x6f\xf6\x0a\xd3\x7d\xbd\xbd\xcf\x6e\x4b\x6c\x7c\xa1\xd6\x27\x3d\x9e\x38\x7a\x82\x1b\xaf\xfa\x94\xae\x09\x42\xe5\x27\x25\x3c\xba\xd3\x84\x37\x1a\xe6\xba\x20\xe1\xa3\x06\x67\xec\xc7\xe5\xa9\x42\x7c\x6e\x84\x4c\x27\x12\xd6\xb9\xb1\x57\xae\x9d\x3b\x57\xb5\x0d\x84\x9c\x48\x9a\x74\x69\x14\x65\x1d\x5f\x65\x3c\xc7\xfd\x3c\x03\x45\xaf\x7d\xf9\xb5\x6a\x43\xdf\x21\x39\xd6\x92\x72\xaa\x54\x57\x1d\xa8\x96\x1a\xe9\x32\x73\x99\x75\xda\x9f\x3b\x81\xeb\x71\x52\x90\x6d\x89\xe1\x2d\xf6\x97\x68\x87\x88\x58\xff\x5c\xfb\x8b\xc5\x66\xb9\x4e\x06\x04\xa6\x83\x64\x43\xa8\xe0\x2e\x04\x64\xa0\x97\x18\xd9\x60\x92\x1e\xd8\x2b\x4b\x7d\x2e\x75\x3a\x2b\xf0\x60\x1a\x07\xe3\x2c\x86\xf3\xc3\x1c\x09\x2d\x32\xfc\xa6\xd2\x8e\x6e\xeb\x1f\x6f\xee\x40\xb0\x18\x50\x92\x8e\xb5\x7b\xb3\x59\x8a\x48\x6c\xaa\x38\xdc\x19\x0f\x60\xc5\xef\xa6\xf8\xe3\x0a\x80\xcf\x5f\xbe\x5c\x45\x81\xe7\xa5\x95\x76\x38\x6b\xe9\x7c\x2e\xfd\xfd\x79\x34\xd2\x38\x57\xf5\x75\x6f\x53\x82\x33\xe5\xae\x35\x28\xb5\xc9\xcf\x41\x7e\x19\xcd\x86\x90\x79\x61\x06\x33\x1f\xee\xef\x91\x10\x2a\x28\x23\xad\xd5\x33\x87\xa7\x82\xc8\xcc\xb7\x2e\x7b\x18\x99\x96\xd5\xeb\xb5\x68\xfc\xc7\x5b\xd1\xa5\xa3\x41\xbe\x82\xb6\xd6\x79\xdf\x1f\xac\xae\xc7\x5e\xfd\xd2\xb3\x14\x00\x9d\x09\x4e\xd6\x20\xda\xc6\x17\xc3\xbc\xa5\xfa\x47\x6b\xb7\xc6\x76\xa9\x40\x45\xfa\x06\x33\x88\x06\xb8\x95\x5c\x88\xbc\x83\x49\x5a\x68\x72\x0c\xdc\xe9\x9f\x73\x56\x0a\x6a\x9a\xf7\x80\xcd\x4a\xed\x93\xd9\x1e\x90\x34\xa2\x3a\x61\x5f\x55\x90\x53\xd4\xd0\xa6\x16\x07\x44\xe6\xc7\xd7\x13\x03\x47\x43\xce\x3c\xc6\x5e\xda\x9b\x04\x1c\xa7\xc5\x0d\x8b\x33\xa5\x0b\x17\xad\x86\x50\x9b\x3e\x11\xd5\x25\x7b\x8d\xd9\x0b\xc8\xf2\x15\x79\xf7\x68\xbc\xf5\xb0\x78\x26\x16\xc7\x30\xef\xf9\x1b\x47\xa3\x2a\xfc\xd0\x20\x41\xe7\x14\x50\x8f\xf7\xba\x28\x40\x07\x9e\xa5\xc2\x8e\x82\x31\x7c\x7d\x63\x96\x1f\xe9\xf4\x39\xfa\x9e\x61\x18\x46\xab\x1f\x5a\xb5\x21\x19\x03\x0a\x8b\xf3\x78\x33\x00\x91\x46\x84\x71\xaf\xb3\x5c\xcf\x78\x36\x32\x5b\x49\x23\x48\x46\x48\x13\x7f\xd6\x14\xde\x1e\x4d\x90\xb8\x60\x8a\x0d\xa2\xe4\xe6\x07\xd3\x26\xf9\x7a\x22\xd2\xc4\xe9\x9f\xc3\xbb\x5d\x8c\xe7\x7b\x90\x1c\x8a\x97\x62\x02\x63\x26\x2c\x60\x56\x60\x0b\x95\x6d\x9a\x08\x17\xe4\x89\xd6\x17\x59\x0b\x0c\xd0\x4a\xbd\x2e\x21\x35\x47\x14\x5a\x52\xdc\x65\x38\xd1\x8a\x24\x3a\x02\x5a\x63\x1b\xa8\x3f\x4b\xf9\x47\x89\xbd\x4f\xf6\x1e\x97\x9b\x02\x8d\xde\x91\x21\xa0\x30\x45\xf4\x06\x44\x5e\xb0\xca\x78\x7b\x5a\x98\xfd\xa4\xe2\x17\x86\xec\x99\x0a\xd5\xe2\x6a\x09\x7b\x16\x1a\x5f\xa6\x0c\x23\xbd\xc0\x99\xe8\xa7\x3a\x04\xcc\x06\xdb\xf5\xa2\x40\x67\x38\xdd\xb1\x8e\xba\xf4\x6e\xde\xa7\xc9\xf7\x86\x88\x2e\x94\x65\xfa\x91\x1e\xd2\x17\x1b\x29\x1e\xa8\xe8\xce\x25\x93\x64\x59\x0d\x7b\xbd\x19\x1e\x9c\xa0\x73\x53\xa4\xe0\x74\x0b\x36\x0d\x32\x2f\xc0\xbc\x1e\x0d\xd5\x7d\x32\x9b\xd0\x64\xd2\x7b\x30\x36\x9a\xa9\x29\x99\x95\x31\x04\x16\x04\x09\xef\x40\x10\x32\x3b\x02\x2a\x11\xae\xb4\x10\xe5\xdb\xed\xa6\xd9\xef\x21\x7f\x31\x55\xd6\xf5\x78\x4f\xfb\xf3\xe0\x3c\xb4\x2e\xf6\xb9\xa9\x36\xb4\xa9\x36\x7d\xaf\xcc\xe7\x75\xaf\x8b\xfc\x35\x65\x51\x80\xca\xdf\x64\x8d\xc1\xba\xe5\xf6\xf6\x53\x79\xbc\xee\xac\xdf\x98\x46\x40\xfd\x45\x20\x51\x77\xe6\x3f\xb5\x38\xb2\x0c\xf3\x62\x44\x5c\x70\x86\x02\x25\xe8\x7c\x47\x13\x9a\xea\x65\x3b\xec\x0e\x14\x49\x86\x08\xd6\x1f\x32\xc3\xd4\x29\x5f\x66\x62\x5b\xe2\x3e\xea\x63\x64\x5b\x22\x1f\xee\x42\xc4\x78\x0b\x89\xf7\x31\x61\xcf\xf3\x62\x3a\x3f\xc6\x5b\xad\xa1\x4d\xf9\x06\x1e\xb6\xf9\x60\x58\xa8\xaf\x08\x79\xf7\xdd\x14\x6f\x4d\x88\xc0\x8d\x8b\xa8\x5d\x8d\xae\x3e\x99\x09\x7d\x75\x32\xf4\x2a\x62\x80\x02\xe6\x5b\x06\xd0\x39\x5e\x50\x74\x0f\xc7\x7e\x37\xf5\x56\x1f\xf5\x3f\xbf\xff\xea\x10\xe6\xa8\xf3\x3b\x8b\xc2\xb1\xa0\x7b\x6c\xc9\x30\x2c\x87\xcb\x16\xc7\xbb\x59\x10\xc0\xb4\x69\xc7\x42\xd5\xc2\xba\x3f\xcd\xb1\xde\xb8\xb7\x5e\x4a\x02\x0c\xb1\x8c\x78\x15\x79\xd0\xe1\x9f\x56\x7d\x21\x94\xdd\xe2\xc6\x17\xf4\x36\x1a\xc7\xdd\x04\x75\x8d\xf4\x25\x01\x88\xde\x30\xa3\xd0\x39\x9f\x4b\x73\x5c\xe4\x8b\xa2\x35\x89\x6f\xbd\x09\xcf\x4f\xf1\x85\x71\xd1\xc1\xb2\xed\x76\xb3\xdd\x4e\x82\xd5\x47\x82\x35\x4c\x84\x3f\x4c\xdf\xef\xfa\xd6\xc6\x7e\x3e\x82\xb7\x80\x11\x65\x76\x74\xe0\x91\xf9\xf5\xc9\x4d\xa1\xf9\x40\xb1\x8e\xe0\x2b\xa2\x3b\x1f\x44\x73\x38\x44\xaf\x42\x89\x7d\x95\xe5\xf8\xc2\xb0\x5d\xad\x27\xcd\xe1\x32\x00\xcc\x7f\x94\xd8\xe2\xbc\x8b\x08\x7b\xc0\x01\xa7\xb5\x15\x90\x9d\x89\x7d\x11\xae\x36\xf9\x51\xf0\xbb\xd6\xa4\xc7\xeb\xd8\xe7\xb7\x04\x83\x56\x93\x31\xb6\xaa\x90\x6f\x0a\x54\x6f\x6a\xd0\x80\x22\x7d\x68\x10\x3c\x4e\x5c\x7f\xa8\x43\x7d\x52\xd4\xbb\x3f\x76\x57\xe0\xe6\x8f\x74\xa4\xeb\xe1\x79\x11\x14\xe9\xbb\x4c\xc5\x11\x18\x46\xe5\x55\xfe\x08\x57\x2b\x8d\x84\x83\xba\xc7\x32\xb2\x57\xba\xaf\xf2\x67\xdf\x9e\x52\xcf\xb3\xdf\xcd\x71\x93\x7c\x92\x8d\x65\x66\x4c\xe8\xbb\x2e\x7e\xb3\xdd\xac\x67\xe2\xb7\x7f\x9d\x0f\x75\x32\x8c\xc4\x49\x2d\xd7\x7b\x7d\x24\x3e\x04\xfd\x6a\x07\xe3\x4e\x49\xf9\x59\x41\x95\x04\xc6\x55\x7d\x9d\x2b\xcf\xba\x6e\x27\xf5\xfc\x94\x7b\xdd\x8f\xc3\x5b\xdb\x76\x9a\x63\xa1\x26\x82\x99\xb0\x5b\x4f\xcc\x9b\x3f\x17\x40\x65\x1b\xda\xde\x2e\xa4\xff\x09\x57\x68\x73\xbe\x8f\x0b\xeb\x89\xaf\xf9\x55\x0d\xe9\xce\xc7\xe5\x33\xf3\x8d\x71\xfc\x77\x0c\xee\xce\xf2\xbc\x3c\x68\x71\xc1\xea\xa2\xef\x80\x56\xae\xf7\x0d\xe0\xe0\xc0\x1b\x5e\xed\xc6\x49\x03\x1f\xf9\x51\x17\x06\x66\x5e\x7c\xab\xcf\x2c\x24\xd9\x17\x5c\x47\x13\x60\xcb\xaf\xcd\x73\xf9\x77\x49\x81\x83\xa2\x0c\xbe\xeb\x79\x96\xfb\x6d\xfb\xcf\xdd\x2a\x1e\x9b\x05\x1e\x9c\xcd\x2f\x7c\x85\x14\x96\x3d\xa1\x58\xcf\x44\x0b\x12\x1a\x6f\xfe\x3a\xa2\x26\x86\xc8\x4f\x98\x28\x37\xb5\x3f\xeb\xa2\xce\x56\x07\xdf\xe9\x22\x3f\x26\x90\xfa\xbc\xe5\x2b\xd6\xcb\xed\xa4\x4e\xcc\x28\x6e\xeb\xa2\xd8\xe3\xa4\xb9\xff\x73\x83\xe2\xbc\x2c\xd7\x61\xe2\xe0\x8b\x7e\xab\xdf\xd7\x56\x85\x8d\x56\x86\xb3\x10\x11\xde\xd6\x8a\x40\x3d\xea\xae\xbc\xd0\x58\x25\x94\x10\xf9\xb0\xc4\xfe\x34\x4b\xab\xc4\x50\x65\xd2\x60\x27\xf3\xbf\xe9\xe4\x14\x78\x4b\x02\x6c\x60\x34\x06\xc5\x8a\x2b\xfd\x30\xbf\xa4\xd7\xc7\x7a\x6e\x8e\xf9\x4b\x7a\xb7\x9c\x96\x88\xcc\xaf\xe5\x38\x26\x0f\x83\x33\xfd\x4b\x31\xe3\x63\x5d\x6b\xca\xfe\x9a\xf5\x61\xf1\xaa\x60\xcf\xbf\x14\xc3\x59\x51\xb8\xce\x5f\x4d\xb0\x8c\xd8\xf3\x94\xf8\x7f\x6d\xa6\x7f\xdb\xfc\xdb\xe6\xff\xc3\xe6\x01\x15\x0b\x50\x75\x81\xb1\x89\x3d\xd2\xfe\xe4\xda\xae\x67\x58\x0a\xfe\x0a\x25\xe9\x3f\x7e\xfb\xb7\x3f\xfe\xf1\xcf\x7f\xfc\x7b\xb2\xe4\x71\x96\x2e\x7b\x9f\xfc\x67\x57\x03\x5d\xfd\x7b\x92\x17\xe3\x92\xff\x77\x3a\x0e\x5b\x3e\x6c\xbf\xff\x06\xfe\x17\x04\xc5\xd0\x6f\x7f\x4c\x71\x96\xd5\x43\xf9\x3b\xf4\x2f\xf8\x74\xfd\x91\x8e\xdd\xb8\xfc\xfe\xaf\x69\x9a\xfe\xf1\xcf\xff\x09\x00\x00\xff\xff\xaf\xa5\x1a\xb1\x3d\x07\x02\x00")
func pagesAssetsStylesContainersCssBytes() ([]byte, error) {
return bindataRead(
diff --git a/vendor/github.com/google/cadvisor/pages/templates.go b/vendor/github.com/google/cadvisor/pages/templates.go
index 45f1c1840029..b4821d4ae447 100644
--- a/vendor/github.com/google/cadvisor/pages/templates.go
+++ b/vendor/github.com/google/cadvisor/pages/templates.go
@@ -1,4 +1,4 @@
-// Copyright 2017 Google Inc. All Rights Reserved.
+// Copyright 2018 Google Inc. All Rights Reserved.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
diff --git a/vendor/github.com/gophercloud/gophercloud/README.md b/vendor/github.com/gophercloud/gophercloud/README.md
index 60ca479de89d..bb218c3fe9e1 100644
--- a/vendor/github.com/gophercloud/gophercloud/README.md
+++ b/vendor/github.com/gophercloud/gophercloud/README.md
@@ -141,3 +141,19 @@ See the [contributing guide](./.github/CONTRIBUTING.md).
If you're struggling with something or have spotted a potential bug, feel free
to submit an issue to our [bug tracker](/issues).
+
+## Thank You
+
+We'd like to extend special thanks and appreciation to the following:
+
+### OpenLab
+
+
+
+OpenLab is providing a full CI environment to test each PR and merge for a variety of OpenStack releases.
+
+### VEXXHOST
+
+
+
+VEXXHOST is providing their services to assist with the development and testing of Gophercloud.
diff --git a/vendor/github.com/gophercloud/gophercloud/STYLEGUIDE.md b/vendor/github.com/gophercloud/gophercloud/STYLEGUIDE.md
index e7531a83d9d4..22a290094129 100644
--- a/vendor/github.com/gophercloud/gophercloud/STYLEGUIDE.md
+++ b/vendor/github.com/gophercloud/gophercloud/STYLEGUIDE.md
@@ -1,6 +1,8 @@
## On Pull Requests
+- Please make sure to read our [contributing guide](/.github/CONTRIBUTING.md).
+
- Before you start a PR there needs to be a Github issue and a discussion about it
on that issue with a core contributor, even if it's just a 'SGTM'.
@@ -34,6 +36,9 @@
append. It makes it difficult for the reviewer to see what's changed from one
review to the next.
+- See [#583](https://github.com/gophercloud/gophercloud/issues/583) as an example of a
+ well-formatted issue which contains all relevant information we need to review and approve.
+
## On Code
- In re design: follow as closely as is reasonable the code already in the library.
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/auth_env.go b/vendor/github.com/gophercloud/gophercloud/openstack/auth_env.go
index 95286041d66e..b5482ba8c9f7 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/auth_env.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/auth_env.go
@@ -16,7 +16,12 @@ The following variables provide sources of truth: OS_AUTH_URL, OS_USERNAME,
OS_PASSWORD, OS_TENANT_ID, and OS_TENANT_NAME.
Of these, OS_USERNAME, OS_PASSWORD, and OS_AUTH_URL must have settings,
-or an error will result. OS_TENANT_ID and OS_TENANT_NAME are optional.
+or an error will result. OS_TENANT_ID, OS_TENANT_NAME, OS_PROJECT_ID, and
+OS_PROJECT_NAME are optional.
+
+OS_TENANT_ID and OS_TENANT_NAME are mutually exclusive to OS_PROJECT_ID and
+OS_PROJECT_NAME. If OS_PROJECT_ID and OS_PROJECT_NAME are set, they will
+still be referred as "tenant" in Gophercloud.
To use this function, first set the OS_* environment variables (for example,
by sourcing an `openrc` file), then:
@@ -34,6 +39,16 @@ func AuthOptionsFromEnv() (gophercloud.AuthOptions, error) {
domainID := os.Getenv("OS_DOMAIN_ID")
domainName := os.Getenv("OS_DOMAIN_NAME")
+ // If OS_PROJECT_ID is set, overwrite tenantID with the value.
+ if v := os.Getenv("OS_PROJECT_ID"); v != "" {
+ tenantID = v
+ }
+
+ // If OS_PROJECT_NAME is set, overwrite tenantName with the value.
+ if v := os.Getenv("OS_PROJECT_NAME"); v != "" {
+ tenantName = v
+ }
+
if authURL == "" {
err := gophercloud.ErrMissingInput{Argument: "authURL"}
return nilOptions, err
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/requests.go
index a3916c77c167..d18bff555b54 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/requests.go
@@ -47,7 +47,7 @@ func Attach(client *gophercloud.ServiceClient, id string, opts AttachOptsBuilder
r.Err = err
return
}
- _, r.Err = client.Post(attachURL(client, id), b, nil, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{
OkCodes: []int{202},
})
return
@@ -56,7 +56,7 @@ func Attach(client *gophercloud.ServiceClient, id string, opts AttachOptsBuilder
// BeginDetach will mark the volume as detaching.
func BeginDetaching(client *gophercloud.ServiceClient, id string) (r BeginDetachingResult) {
b := map[string]interface{}{"os-begin_detaching": make(map[string]interface{})}
- _, r.Err = client.Post(beginDetachingURL(client, id), b, nil, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{
OkCodes: []int{202},
})
return
@@ -87,7 +87,7 @@ func Detach(client *gophercloud.ServiceClient, id string, opts DetachOptsBuilder
r.Err = err
return
}
- _, r.Err = client.Post(detachURL(client, id), b, nil, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{
OkCodes: []int{202},
})
return
@@ -96,7 +96,7 @@ func Detach(client *gophercloud.ServiceClient, id string, opts DetachOptsBuilder
// Reserve will reserve a volume based on volume ID.
func Reserve(client *gophercloud.ServiceClient, id string) (r ReserveResult) {
b := map[string]interface{}{"os-reserve": make(map[string]interface{})}
- _, r.Err = client.Post(reserveURL(client, id), b, nil, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{
OkCodes: []int{200, 201, 202},
})
return
@@ -105,7 +105,7 @@ func Reserve(client *gophercloud.ServiceClient, id string) (r ReserveResult) {
// Unreserve will unreserve a volume based on volume ID.
func Unreserve(client *gophercloud.ServiceClient, id string) (r UnreserveResult) {
b := map[string]interface{}{"os-unreserve": make(map[string]interface{})}
- _, r.Err = client.Post(unreserveURL(client, id), b, nil, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{
OkCodes: []int{200, 201, 202},
})
return
@@ -145,7 +145,7 @@ func InitializeConnection(client *gophercloud.ServiceClient, id string, opts Ini
r.Err = err
return
}
- _, r.Err = client.Post(initializeConnectionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{
OkCodes: []int{200, 201, 202},
})
return
@@ -183,7 +183,7 @@ func TerminateConnection(client *gophercloud.ServiceClient, id string, opts Term
r.Err = err
return
}
- _, r.Err = client.Post(teminateConnectionURL(client, id), b, nil, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{
OkCodes: []int{202},
})
return
@@ -216,7 +216,7 @@ func ExtendSize(client *gophercloud.ServiceClient, id string, opts ExtendSizeOpt
r.Err = err
return
}
- _, r.Err = client.Post(extendSizeURL(client, id), b, nil, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, nil, &gophercloud.RequestOpts{
OkCodes: []int{202},
})
return
@@ -256,8 +256,14 @@ func UploadImage(client *gophercloud.ServiceClient, id string, opts UploadImageO
r.Err = err
return
}
- _, r.Err = client.Post(uploadURL(client, id), b, &r.Body, &gophercloud.RequestOpts{
+ _, r.Err = client.Post(actionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{
OkCodes: []int{202},
})
return
}
+
+// ForceDelete will delete the volume regardless of state.
+func ForceDelete(client *gophercloud.ServiceClient, id string) (r ForceDeleteResult) {
+ _, r.Err = client.Post(actionURL(client, id), map[string]interface{}{"os-force_delete": ""}, nil, nil)
+ return
+}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/results.go
index 9815f0c26ac3..5cadd360f205 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/results.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/results.go
@@ -184,3 +184,8 @@ func (r UploadImageResult) Extract() (VolumeImage, error) {
err := r.ExtractInto(&s)
return s.VolumeImage, err
}
+
+// ForceDeleteResult contains the response body and error from a ForceDelete request.
+type ForceDeleteResult struct {
+ gophercloud.ErrResult
+}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/urls.go
index 5efd2b25c05b..20486ed71944 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/urls.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/extensions/volumeactions/urls.go
@@ -2,38 +2,6 @@ package volumeactions
import "github.com/gophercloud/gophercloud"
-func attachURL(c *gophercloud.ServiceClient, id string) string {
+func actionURL(c *gophercloud.ServiceClient, id string) string {
return c.ServiceURL("volumes", id, "action")
}
-
-func beginDetachingURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
-
-func detachURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
-
-func uploadURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
-
-func reserveURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
-
-func unreserveURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
-
-func initializeConnectionURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
-
-func teminateConnectionURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
-
-func extendSizeURL(c *gophercloud.ServiceClient, id string) string {
- return attachURL(c, id)
-}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/requests.go
index 18c9cb272ecb..2ec10ad55ed4 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v2/volumes/requests.go
@@ -83,14 +83,21 @@ type ListOptsBuilder interface {
// ListOpts holds options for listing Volumes. It is passed to the volumes.List
// function.
type ListOpts struct {
- // admin-only option. Set it to true to see all tenant volumes.
+ // AllTenants will retrieve volumes of all tenants/projects.
AllTenants bool `q:"all_tenants"`
- // List only volumes that contain Metadata.
+
+ // Metadata will filter results based on specified metadata.
Metadata map[string]string `q:"metadata"`
- // List only volumes that have Name as the display name.
+
+ // Name will filter by the specified volume name.
Name string `q:"name"`
- // List only volumes that have a status of Status.
+
+ // Status will filter by the specified status.
Status string `q:"status"`
+
+ // TenantID will filter by a specific tenant/project ID.
+ // Setting AllTenants is required for this.
+ TenantID string `q:"project_id"`
}
// ToVolumeListQuery formats a ListOpts into a query string.
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/requests.go
index 18c9cb272ecb..43727409dd91 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/requests.go
@@ -83,14 +83,34 @@ type ListOptsBuilder interface {
// ListOpts holds options for listing Volumes. It is passed to the volumes.List
// function.
type ListOpts struct {
- // admin-only option. Set it to true to see all tenant volumes.
+ // AllTenants will retrieve volumes of all tenants/projects.
AllTenants bool `q:"all_tenants"`
- // List only volumes that contain Metadata.
+
+ // Metadata will filter results based on specified metadata.
Metadata map[string]string `q:"metadata"`
- // List only volumes that have Name as the display name.
+
+ // Name will filter by the specified volume name.
Name string `q:"name"`
- // List only volumes that have a status of Status.
+
+ // Status will filter by the specified status.
Status string `q:"status"`
+
+ // TenantID will filter by a specific tenant/project ID.
+ // Setting AllTenants is required for this.
+ TenantID string `q:"project_id"`
+
+ // Comma-separated list of sort keys and optional sort directions in the
+ // form of [:].
+ Sort string `q:"sort"`
+
+ // Requests a page size of items.
+ Limit int `q:"limit"`
+
+ // Used in conjunction with limit to return a slice of items.
+ Offset int `q:"offset"`
+
+ // The ID of the last-seen item.
+ Marker string `q:"marker"`
}
// ToVolumeListQuery formats a ListOpts into a query string.
@@ -111,7 +131,7 @@ func List(client *gophercloud.ServiceClient, opts ListOptsBuilder) pagination.Pa
}
return pagination.NewPager(client, url, func(r pagination.PageResult) pagination.Page {
- return VolumePage{pagination.SinglePageBase(r)}
+ return VolumePage{pagination.LinkedPageBase{PageResult: r}}
})
}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/results.go
index 5ebe36a33854..87f71262c1db 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/results.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/blockstorage/v3/volumes/results.go
@@ -101,7 +101,7 @@ func (r *Volume) UnmarshalJSON(b []byte) error {
// VolumePage is a pagination.pager that is returned from a call to the List function.
type VolumePage struct {
- pagination.SinglePageBase
+ pagination.LinkedPageBase
}
// IsEmpty returns true if a ListResult contains no Volumes.
@@ -110,6 +110,17 @@ func (r VolumePage) IsEmpty() (bool, error) {
return len(volumes) == 0, err
}
+func (page VolumePage) NextPageURL() (string, error) {
+ var s struct {
+ Links []gophercloud.Link `json:"volumes_links"`
+ }
+ err := page.ExtractInto(&s)
+ if err != nil {
+ return "", err
+ }
+ return gophercloud.ExtractNextURL(s.Links)
+}
+
// ExtractVolumes extracts and returns Volumes. It is used while iterating over a volumes.List call.
func ExtractVolumes(r pagination.Page) ([]Volume, error) {
var s []Volume
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/client.go b/vendor/github.com/gophercloud/gophercloud/openstack/client.go
index c796795b8ee9..5a52e5791487 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/client.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/client.go
@@ -56,11 +56,12 @@ func NewClient(endpoint string) (*gophercloud.ProviderClient, error) {
endpoint = gophercloud.NormalizeURL(endpoint)
base = gophercloud.NormalizeURL(base)
- return &gophercloud.ProviderClient{
- IdentityBase: base,
- IdentityEndpoint: endpoint,
- }, nil
+ p := new(gophercloud.ProviderClient)
+ p.IdentityBase = base
+ p.IdentityEndpoint = endpoint
+ p.UseTokenLock()
+ return p, nil
}
/*
@@ -158,9 +159,21 @@ func v2auth(client *gophercloud.ProviderClient, endpoint string, options gopherc
}
if options.AllowReauth {
+ // here we're creating a throw-away client (tac). it's a copy of the user's provider client, but
+ // with the token and reauth func zeroed out. combined with setting `AllowReauth` to `false`,
+ // this should retry authentication only once
+ tac := *client
+ tac.ReauthFunc = nil
+ tac.TokenID = ""
+ tao := options
+ tao.AllowReauth = false
client.ReauthFunc = func() error {
- client.TokenID = ""
- return v2auth(client, endpoint, options, eo)
+ err := v2auth(&tac, endpoint, tao, eo)
+ if err != nil {
+ return err
+ }
+ client.TokenID = tac.TokenID
+ return nil
}
}
client.TokenID = token.ID
@@ -202,9 +215,32 @@ func v3auth(client *gophercloud.ProviderClient, endpoint string, opts tokens3.Au
client.TokenID = token.ID
if opts.CanReauth() {
+ // here we're creating a throw-away client (tac). it's a copy of the user's provider client, but
+ // with the token and reauth func zeroed out. combined with setting `AllowReauth` to `false`,
+ // this should retry authentication only once
+ tac := *client
+ tac.ReauthFunc = nil
+ tac.TokenID = ""
+ var tao tokens3.AuthOptionsBuilder
+ switch ot := opts.(type) {
+ case *gophercloud.AuthOptions:
+ o := *ot
+ o.AllowReauth = false
+ tao = &o
+ case *tokens3.AuthOptions:
+ o := *ot
+ o.AllowReauth = false
+ tao = &o
+ default:
+ tao = opts
+ }
client.ReauthFunc = func() error {
- client.TokenID = ""
- return v3auth(client, endpoint, opts, eo)
+ err := v3auth(&tac, endpoint, tao, eo)
+ if err != nil {
+ return err
+ }
+ client.TokenID = tac.TokenID
+ return nil
}
}
client.EndpointLocator = func(opts gophercloud.EndpointOpts) (string, error) {
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/doc.go
index a99601371173..3653122bf30f 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/doc.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/doc.go
@@ -18,5 +18,35 @@ Example of Listing a Server's Interfaces
for _, interface := range allInterfaces {
fmt.Printf("%+v\n", interface)
}
+
+Example to Get a Server's Interface
+
+ portID = "0dde1598-b374-474e-986f-5b8dd1df1d4e"
+ serverID := "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f"
+ interface, err := attachinterfaces.Get(computeClient, serverID, portID).Extract()
+ if err != nil {
+ panic(err)
+ }
+
+Example to Create a new Interface attachment on the Server
+
+ networkID := "8a5fe506-7e9f-4091-899b-96336909d93c"
+ serverID := "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f"
+ attachOpts := attachinterfaces.CreateOpts{
+ NetworkID: networkID,
+ }
+ interface, err := attachinterfaces.Create(computeClient, serverID, attachOpts).Extract()
+ if err != nil {
+ panic(err)
+ }
+
+Example to Delete an Interface attachment from the Server
+
+ portID = "0dde1598-b374-474e-986f-5b8dd1df1d4e"
+ serverID := "b07e7a3b-d951-4efc-a4f9-ac9f001afb7f"
+ err := attachinterfaces.Delete(computeClient, serverID, portID).ExtractErr()
+ if err != nil {
+ panic(err)
+ }
*/
package attachinterfaces
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/requests.go
index faf2747246ad..18dade837c17 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/requests.go
@@ -11,3 +11,62 @@ func List(client *gophercloud.ServiceClient, serverID string) pagination.Pager {
return InterfacePage{pagination.SinglePageBase(r)}
})
}
+
+// Get requests details on a single interface attachment by the server and port IDs.
+func Get(client *gophercloud.ServiceClient, serverID, portID string) (r GetResult) {
+ _, r.Err = client.Get(getInterfaceURL(client, serverID, portID), &r.Body, &gophercloud.RequestOpts{
+ OkCodes: []int{200},
+ })
+ return
+}
+
+// CreateOptsBuilder allows extensions to add additional parameters to the
+// Create request.
+type CreateOptsBuilder interface {
+ ToAttachInterfacesCreateMap() (map[string]interface{}, error)
+}
+
+// CreateOpts specifies parameters of a new interface attachment.
+type CreateOpts struct {
+
+ // PortID is the ID of the port for which you want to create an interface.
+ // The NetworkID and PortID parameters are mutually exclusive.
+ // If you do not specify the PortID parameter, the OpenStack Networking API
+ // v2.0 allocates a port and creates an interface for it on the network.
+ PortID string `json:"port_id,omitempty"`
+
+ // NetworkID is the ID of the network for which you want to create an interface.
+ // The NetworkID and PortID parameters are mutually exclusive.
+ // If you do not specify the NetworkID parameter, the OpenStack Networking
+ // API v2.0 uses the network information cache that is associated with the instance.
+ NetworkID string `json:"net_id,omitempty"`
+
+ // Slice of FixedIPs. If you request a specific FixedIP address without a
+ // NetworkID, the request returns a Bad Request (400) response code.
+ FixedIPs []FixedIP `json:"fixed_ips,omitempty"`
+}
+
+// ToAttachInterfacesCreateMap constructs a request body from CreateOpts.
+func (opts CreateOpts) ToAttachInterfacesCreateMap() (map[string]interface{}, error) {
+ return gophercloud.BuildRequestBody(opts, "interfaceAttachment")
+}
+
+// Create requests the creation of a new interface attachment on the server.
+func Create(client *gophercloud.ServiceClient, serverID string, opts CreateOptsBuilder) (r CreateResult) {
+ b, err := opts.ToAttachInterfacesCreateMap()
+ if err != nil {
+ r.Err = err
+ return
+ }
+ _, r.Err = client.Post(createInterfaceURL(client, serverID), b, &r.Body, &gophercloud.RequestOpts{
+ OkCodes: []int{200},
+ })
+ return
+}
+
+// Delete makes a request against the nova API to detach a single interface from the server.
+// It needs server and port IDs to make a such request.
+func Delete(client *gophercloud.ServiceClient, serverID, portID string) (r DeleteResult) {
+ _, r.Err = client.Delete(deleteInterfaceURL(client, serverID, portID), nil)
+ return
+}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/results.go
index e3987eaca841..a16fa14f7598 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/results.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/results.go
@@ -1,9 +1,41 @@
package attachinterfaces
import (
+ "github.com/gophercloud/gophercloud"
"github.com/gophercloud/gophercloud/pagination"
)
+type attachInterfaceResult struct {
+ gophercloud.Result
+}
+
+// Extract interprets any attachInterfaceResult as an Interface, if possible.
+func (r attachInterfaceResult) Extract() (*Interface, error) {
+ var s struct {
+ Interface *Interface `json:"interfaceAttachment"`
+ }
+ err := r.ExtractInto(&s)
+ return s.Interface, err
+}
+
+// GetResult is the response from a Get operation. Call its Extract
+// method to interpret it as an Interface.
+type GetResult struct {
+ attachInterfaceResult
+}
+
+// CreateResult is the response from a Create operation. Call its Extract
+// method to interpret it as an Interface.
+type CreateResult struct {
+ attachInterfaceResult
+}
+
+// DeleteResult is the response from a Delete operation. Call its ExtractErr
+// method to determine if the call succeeded or failed.
+type DeleteResult struct {
+ gophercloud.ErrResult
+}
+
// FixedIP represents a Fixed IP Address.
type FixedIP struct {
SubnetID string `json:"subnet_id"`
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/urls.go
index 7d376f99bb56..50292e8b5a55 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/urls.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/extensions/attachinterfaces/urls.go
@@ -5,3 +5,14 @@ import "github.com/gophercloud/gophercloud"
func listInterfaceURL(client *gophercloud.ServiceClient, serverID string) string {
return client.ServiceURL("servers", serverID, "os-interface")
}
+
+func getInterfaceURL(client *gophercloud.ServiceClient, serverID, portID string) string {
+ return client.ServiceURL("servers", serverID, "os-interface", portID)
+}
+
+func createInterfaceURL(client *gophercloud.ServiceClient, serverID string) string {
+ return client.ServiceURL("servers", serverID, "os-interface")
+}
+func deleteInterfaceURL(client *gophercloud.ServiceClient, serverID, portID string) string {
+ return client.ServiceURL("servers", serverID, "os-interface", portID)
+}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/doc.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/doc.go
index a7bc15c3e5cc..34d8764fadb2 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/doc.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/doc.go
@@ -59,5 +59,79 @@ Example to List Flavor Access
for _, access := range allAccesses {
fmt.Printf("%+v", access)
}
+
+Example to Grant Access to a Flavor
+
+ flavorID := "e91758d6-a54a-4778-ad72-0c73a1cb695b"
+
+ accessOpts := flavors.AddAccessOpts{
+ Tenant: "15153a0979884b59b0592248ef947921",
+ }
+
+ accessList, err := flavors.AddAccess(computeClient, flavor.ID, accessOpts).Extract()
+ if err != nil {
+ panic(err)
+ }
+
+Example to Remove/Revoke Access to a Flavor
+
+ flavorID := "e91758d6-a54a-4778-ad72-0c73a1cb695b"
+
+ accessOpts := flavors.RemoveAccessOpts{
+ Tenant: "15153a0979884b59b0592248ef947921",
+ }
+
+ accessList, err := flavors.RemoveAccess(computeClient, flavor.ID, accessOpts).Extract()
+ if err != nil {
+ panic(err)
+ }
+
+Example to Create Extra Specs for a Flavor
+
+ flavorID := "e91758d6-a54a-4778-ad72-0c73a1cb695b"
+
+ createOpts := flavors.ExtraSpecsOpts{
+ "hw:cpu_policy": "CPU-POLICY",
+ "hw:cpu_thread_policy": "CPU-THREAD-POLICY",
+ }
+ createdExtraSpecs, err := flavors.CreateExtraSpecs(computeClient, flavorID, createOpts).Extract()
+ if err != nil {
+ panic(err)
+ }
+
+ fmt.Printf("%+v", createdExtraSpecs)
+
+Example to Get Extra Specs for a Flavor
+
+ flavorID := "e91758d6-a54a-4778-ad72-0c73a1cb695b"
+
+ extraSpecs, err := flavors.ListExtraSpecs(computeClient, flavorID).Extract()
+ if err != nil {
+ panic(err)
+ }
+
+ fmt.Printf("%+v", extraSpecs)
+
+Example to Update Extra Specs for a Flavor
+
+ flavorID := "e91758d6-a54a-4778-ad72-0c73a1cb695b"
+
+ updateOpts := flavors.ExtraSpecsOpts{
+ "hw:cpu_thread_policy": "CPU-THREAD-POLICY-UPDATED",
+ }
+ updatedExtraSpec, err := flavors.UpdateExtraSpec(computeClient, flavorID, updateOpts).Extract()
+ if err != nil {
+ panic(err)
+ }
+
+ fmt.Printf("%+v", updatedExtraSpec)
+
+Example to Delete an Extra Spec for a Flavor
+
+ flavorID := "e91758d6-a54a-4778-ad72-0c73a1cb695b"
+ err := flavors.DeleteExtraSpec(computeClient, flavorID, "hw:cpu_thread_policy").ExtractErr()
+ if err != nil {
+ panic(err)
+ }
*/
package flavors
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/requests.go
index 6eb3678b2bd2..e7041df05986 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/requests.go
@@ -162,6 +162,151 @@ func ListAccesses(client *gophercloud.ServiceClient, id string) pagination.Pager
})
}
+// AddAccessOptsBuilder allows extensions to add additional parameters to the
+// AddAccess requests.
+type AddAccessOptsBuilder interface {
+ ToFlavorAddAccessMap() (map[string]interface{}, error)
+}
+
+// AddAccessOpts represents options for adding access to a flavor.
+type AddAccessOpts struct {
+ // Tenant is the project/tenant ID to grant access.
+ Tenant string `json:"tenant"`
+}
+
+// ToFlavorAddAccessMap constructs a request body from AddAccessOpts.
+func (opts AddAccessOpts) ToFlavorAddAccessMap() (map[string]interface{}, error) {
+ return gophercloud.BuildRequestBody(opts, "addTenantAccess")
+}
+
+// AddAccess grants a tenant/project access to a flavor.
+func AddAccess(client *gophercloud.ServiceClient, id string, opts AddAccessOptsBuilder) (r AddAccessResult) {
+ b, err := opts.ToFlavorAddAccessMap()
+ if err != nil {
+ r.Err = err
+ return
+ }
+ _, r.Err = client.Post(accessActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{
+ OkCodes: []int{200},
+ })
+ return
+}
+
+// RemoveAccessOptsBuilder allows extensions to add additional parameters to the
+// RemoveAccess requests.
+type RemoveAccessOptsBuilder interface {
+ ToFlavorRemoveAccessMap() (map[string]interface{}, error)
+}
+
+// RemoveAccessOpts represents options for removing access to a flavor.
+type RemoveAccessOpts struct {
+ // Tenant is the project/tenant ID to grant access.
+ Tenant string `json:"tenant"`
+}
+
+// ToFlavorRemoveAccessMap constructs a request body from RemoveAccessOpts.
+func (opts RemoveAccessOpts) ToFlavorRemoveAccessMap() (map[string]interface{}, error) {
+ return gophercloud.BuildRequestBody(opts, "removeTenantAccess")
+}
+
+// RemoveAccess removes/revokes a tenant/project access to a flavor.
+func RemoveAccess(client *gophercloud.ServiceClient, id string, opts RemoveAccessOptsBuilder) (r RemoveAccessResult) {
+ b, err := opts.ToFlavorRemoveAccessMap()
+ if err != nil {
+ r.Err = err
+ return
+ }
+ _, r.Err = client.Post(accessActionURL(client, id), b, &r.Body, &gophercloud.RequestOpts{
+ OkCodes: []int{200},
+ })
+ return
+}
+
+// ExtraSpecs requests all the extra-specs for the given flavor ID.
+func ListExtraSpecs(client *gophercloud.ServiceClient, flavorID string) (r ListExtraSpecsResult) {
+ _, r.Err = client.Get(extraSpecsListURL(client, flavorID), &r.Body, nil)
+ return
+}
+
+func GetExtraSpec(client *gophercloud.ServiceClient, flavorID string, key string) (r GetExtraSpecResult) {
+ _, r.Err = client.Get(extraSpecsGetURL(client, flavorID, key), &r.Body, nil)
+ return
+}
+
+// CreateExtraSpecsOptsBuilder allows extensions to add additional parameters to the
+// CreateExtraSpecs requests.
+type CreateExtraSpecsOptsBuilder interface {
+ ToExtraSpecsCreateMap() (map[string]interface{}, error)
+}
+
+// ExtraSpecsOpts is a map that contains key-value pairs.
+type ExtraSpecsOpts map[string]string
+
+// ToExtraSpecsCreateMap assembles a body for a Create request based on the
+// contents of a ExtraSpecsOpts
+func (opts ExtraSpecsOpts) ToExtraSpecsCreateMap() (map[string]interface{}, error) {
+ return map[string]interface{}{"extra_specs": opts}, nil
+}
+
+// CreateExtraSpecs will create or update the extra-specs key-value pairs for the specified Flavor
+func CreateExtraSpecs(client *gophercloud.ServiceClient, flavorID string, opts CreateExtraSpecsOptsBuilder) (r CreateExtraSpecsResult) {
+ b, err := opts.ToExtraSpecsCreateMap()
+ if err != nil {
+ r.Err = err
+ return
+ }
+ _, r.Err = client.Post(extraSpecsCreateURL(client, flavorID), b, &r.Body, &gophercloud.RequestOpts{
+ OkCodes: []int{200},
+ })
+ return
+}
+
+// UpdateExtraSpecOptsBuilder allows extensions to add additional parameters to the
+// Update request.
+type UpdateExtraSpecOptsBuilder interface {
+ ToExtraSpecUpdateMap() (map[string]string, string, error)
+}
+
+// ToExtraSpecUpdateMap assembles a body for an Update request based on the
+// contents of a ExtraSpecOpts.
+func (opts ExtraSpecsOpts) ToExtraSpecUpdateMap() (map[string]string, string, error) {
+ if len(opts) != 1 {
+ err := gophercloud.ErrInvalidInput{}
+ err.Argument = "flavors.ExtraSpecOpts"
+ err.Info = "Must have 1 and only one key-value pair"
+ return nil, "", err
+ }
+
+ var key string
+ for k := range opts {
+ key = k
+ }
+
+ return opts, key, nil
+}
+
+// UpdateExtraSpec will updates the value of the specified flavor's extra spec for the key in opts.
+func UpdateExtraSpec(client *gophercloud.ServiceClient, flavorID string, opts UpdateExtraSpecOptsBuilder) (r UpdateExtraSpecResult) {
+ b, key, err := opts.ToExtraSpecUpdateMap()
+ if err != nil {
+ r.Err = err
+ return
+ }
+ _, r.Err = client.Put(extraSpecUpdateURL(client, flavorID, key), b, &r.Body, &gophercloud.RequestOpts{
+ OkCodes: []int{200},
+ })
+ return
+}
+
+// DeleteExtraSpec will delete the key-value pair with the given key for the given
+// flavor ID.
+func DeleteExtraSpec(client *gophercloud.ServiceClient, flavorID, key string) (r DeleteExtraSpecResult) {
+ _, r.Err = client.Delete(extraSpecDeleteURL(client, flavorID, key), &gophercloud.RequestOpts{
+ OkCodes: []int{200},
+ })
+ return
+}
+
// IDFromName is a convienience function that returns a flavor's ID given its
// name.
func IDFromName(client *gophercloud.ServiceClient, name string) (string, error) {
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/results.go
index fb5c335b8eac..525cddaea222 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/results.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/results.go
@@ -66,6 +66,9 @@ type Flavor struct {
// IsPublic indicates whether the flavor is public.
IsPublic bool `json:"os-flavor-access:is_public"`
+
+ // Ephemeral is the amount of ephemeral disk space, measured in GB.
+ Ephemeral int `json:"OS-FLV-EXT-DATA:ephemeral"`
}
func (r *Flavor) UnmarshalJSON(b []byte) error {
@@ -154,6 +157,32 @@ func ExtractAccesses(r pagination.Page) ([]FlavorAccess, error) {
return s.FlavorAccesses, err
}
+type accessResult struct {
+ gophercloud.Result
+}
+
+// AddAccessResult is the response of an AddAccess operation. Call its
+// Extract method to interpret it as a slice of FlavorAccess.
+type AddAccessResult struct {
+ accessResult
+}
+
+// RemoveAccessResult is the response of a RemoveAccess operation. Call its
+// Extract method to interpret it as a slice of FlavorAccess.
+type RemoveAccessResult struct {
+ accessResult
+}
+
+// Extract provides access to the result of an access create or delete.
+// The result will be all accesses that the flavor has.
+func (r accessResult) Extract() ([]FlavorAccess, error) {
+ var s struct {
+ FlavorAccesses []FlavorAccess `json:"flavor_access"`
+ }
+ err := r.ExtractInto(&s)
+ return s.FlavorAccesses, err
+}
+
// FlavorAccess represents an ACL of tenant access to a specific Flavor.
type FlavorAccess struct {
// FlavorID is the unique ID of the flavor.
@@ -162,3 +191,62 @@ type FlavorAccess struct {
// TenantID is the unique ID of the tenant.
TenantID string `json:"tenant_id"`
}
+
+// Extract interprets any extraSpecsResult as ExtraSpecs, if possible.
+func (r extraSpecsResult) Extract() (map[string]string, error) {
+ var s struct {
+ ExtraSpecs map[string]string `json:"extra_specs"`
+ }
+ err := r.ExtractInto(&s)
+ return s.ExtraSpecs, err
+}
+
+// extraSpecsResult contains the result of a call for (potentially) multiple
+// key-value pairs. Call its Extract method to interpret it as a
+// map[string]interface.
+type extraSpecsResult struct {
+ gophercloud.Result
+}
+
+// ListExtraSpecsResult contains the result of a Get operation. Call its Extract
+// method to interpret it as a map[string]interface.
+type ListExtraSpecsResult struct {
+ extraSpecsResult
+}
+
+// CreateExtraSpecResult contains the result of a Create operation. Call its
+// Extract method to interpret it as a map[string]interface.
+type CreateExtraSpecsResult struct {
+ extraSpecsResult
+}
+
+// extraSpecResult contains the result of a call for individual a single
+// key-value pair.
+type extraSpecResult struct {
+ gophercloud.Result
+}
+
+// GetExtraSpecResult contains the result of a Get operation. Call its Extract
+// method to interpret it as a map[string]interface.
+type GetExtraSpecResult struct {
+ extraSpecResult
+}
+
+// UpdateExtraSpecResult contains the result of an Update operation. Call its
+// Extract method to interpret it as a map[string]interface.
+type UpdateExtraSpecResult struct {
+ extraSpecResult
+}
+
+// DeleteExtraSpecResult contains the result of a Delete operation. Call its
+// ExtractErr method to determine if the call succeeded or failed.
+type DeleteExtraSpecResult struct {
+ gophercloud.ErrResult
+}
+
+// Extract interprets any extraSpecResult as an ExtraSpec, if possible.
+func (r extraSpecResult) Extract() (map[string]string, error) {
+ var s map[string]string
+ err := r.ExtractInto(&s)
+ return s, err
+}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/urls.go b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/urls.go
index 04d33bf1279f..8620dd78ad0a 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/urls.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/compute/v2/flavors/urls.go
@@ -23,3 +23,27 @@ func deleteURL(client *gophercloud.ServiceClient, id string) string {
func accessURL(client *gophercloud.ServiceClient, id string) string {
return client.ServiceURL("flavors", id, "os-flavor-access")
}
+
+func accessActionURL(client *gophercloud.ServiceClient, id string) string {
+ return client.ServiceURL("flavors", id, "action")
+}
+
+func extraSpecsListURL(client *gophercloud.ServiceClient, id string) string {
+ return client.ServiceURL("flavors", id, "os-extra_specs")
+}
+
+func extraSpecsGetURL(client *gophercloud.ServiceClient, id, key string) string {
+ return client.ServiceURL("flavors", id, "os-extra_specs", key)
+}
+
+func extraSpecsCreateURL(client *gophercloud.ServiceClient, id string) string {
+ return client.ServiceURL("flavors", id, "os-extra_specs")
+}
+
+func extraSpecUpdateURL(client *gophercloud.ServiceClient, id, key string) string {
+ return client.ServiceURL("flavors", id, "os-extra_specs", key)
+}
+
+func extraSpecDeleteURL(client *gophercloud.ServiceClient, id, key string) string {
+ return client.ServiceURL("flavors", id, "os-extra_specs", key)
+}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go
index 1c8a8b2f13f3..0a6eb62cb646 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/floatingips/requests.go
@@ -53,6 +53,7 @@ type CreateOpts struct {
FloatingIP string `json:"floating_ip_address,omitempty"`
PortID string `json:"port_id,omitempty"`
FixedIP string `json:"fixed_ip_address,omitempty"`
+ SubnetID string `json:"subnet_id,omitempty"`
TenantID string `json:"tenant_id,omitempty"`
}
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/requests.go
index 6799d200b7ad..fa346c8555f2 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/requests.go
@@ -49,11 +49,12 @@ type CreateOptsBuilder interface {
// CreateOpts contains all the values needed to create a new router. There are
// no required values.
type CreateOpts struct {
- Name string `json:"name,omitempty"`
- AdminStateUp *bool `json:"admin_state_up,omitempty"`
- Distributed *bool `json:"distributed,omitempty"`
- TenantID string `json:"tenant_id,omitempty"`
- GatewayInfo *GatewayInfo `json:"external_gateway_info,omitempty"`
+ Name string `json:"name,omitempty"`
+ AdminStateUp *bool `json:"admin_state_up,omitempty"`
+ Distributed *bool `json:"distributed,omitempty"`
+ TenantID string `json:"tenant_id,omitempty"`
+ GatewayInfo *GatewayInfo `json:"external_gateway_info,omitempty"`
+ AvailabilityZoneHints []string `json:"availability_zone_hints,omitempty"`
}
// ToRouterCreateMap builds a create request body from CreateOpts.
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/results.go
index e19c8e74c47b..da1b9e4bdfa9 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/results.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/extensions/layer3/routers/results.go
@@ -60,6 +60,10 @@ type Router struct {
// Routes are a collection of static routes that the router will host.
Routes []Route `json:"routes"`
+
+ // Availability zone hints groups network nodes that run services like DHCP, L3, FW, and others.
+ // Used to make network resources highly available.
+ AvailabilityZoneHints []string `json:"availability_zone_hints"`
}
// RouterPage is the page returned by a pager when traversing over a
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/requests.go b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/requests.go
index 5b61b247192b..040f32183b49 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/requests.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/requests.go
@@ -66,10 +66,11 @@ type CreateOptsBuilder interface {
// CreateOpts represents options used to create a network.
type CreateOpts struct {
- AdminStateUp *bool `json:"admin_state_up,omitempty"`
- Name string `json:"name,omitempty"`
- Shared *bool `json:"shared,omitempty"`
- TenantID string `json:"tenant_id,omitempty"`
+ AdminStateUp *bool `json:"admin_state_up,omitempty"`
+ Name string `json:"name,omitempty"`
+ Shared *bool `json:"shared,omitempty"`
+ TenantID string `json:"tenant_id,omitempty"`
+ AvailabilityZoneHints []string `json:"availability_zone_hints,omitempty"`
}
// ToNetworkCreateMap builds a request body from CreateOpts.
diff --git a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/results.go b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/results.go
index ffd0259f1d2f..c73f9e1a63fd 100644
--- a/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/results.go
+++ b/vendor/github.com/gophercloud/gophercloud/openstack/networking/v2/networks/results.go
@@ -69,6 +69,10 @@ type Network struct {
// Specifies whether the network resource can be accessed by any tenant.
Shared bool `json:"shared"`
+
+ // Availability zone hints groups network nodes that run services like DHCP, L3, FW, and others.
+ // Used to make network resources highly available.
+ AvailabilityZoneHints []string `json:"availability_zone_hints"`
}
// NetworkPage is the page returned by a pager when traversing over a
diff --git a/vendor/github.com/gophercloud/gophercloud/params.go b/vendor/github.com/gophercloud/gophercloud/params.go
index 687af3dc0ce6..28ad9068565b 100644
--- a/vendor/github.com/gophercloud/gophercloud/params.go
+++ b/vendor/github.com/gophercloud/gophercloud/params.go
@@ -115,10 +115,15 @@ func BuildRequestBody(opts interface{}, parent string) (map[string]interface{},
}
}
+ jsonTag := f.Tag.Get("json")
+ if jsonTag == "-" {
+ continue
+ }
+
if v.Kind() == reflect.Struct || (v.Kind() == reflect.Ptr && v.Elem().Kind() == reflect.Struct) {
if zero {
//fmt.Printf("value before change: %+v\n", optsValue.Field(i))
- if jsonTag := f.Tag.Get("json"); jsonTag != "" {
+ if jsonTag != "" {
jsonTagPieces := strings.Split(jsonTag, ",")
if len(jsonTagPieces) > 1 && jsonTagPieces[1] == "omitempty" {
if v.CanSet() {
diff --git a/vendor/github.com/gophercloud/gophercloud/provider_client.go b/vendor/github.com/gophercloud/gophercloud/provider_client.go
index 01b3010739ae..72daeb0a3eb0 100644
--- a/vendor/github.com/gophercloud/gophercloud/provider_client.go
+++ b/vendor/github.com/gophercloud/gophercloud/provider_client.go
@@ -7,6 +7,7 @@ import (
"io/ioutil"
"net/http"
"strings"
+ "sync"
)
// DefaultUserAgent is the default User-Agent string set in the request header.
@@ -51,6 +52,8 @@ type ProviderClient struct {
IdentityEndpoint string
// TokenID is the ID of the most recently issued valid token.
+ // NOTE: Aside from within a custom ReauthFunc, this field shouldn't be set by an application.
+ // To safely read or write this value, call `Token` or `SetToken`, respectively
TokenID string
// EndpointLocator describes how this provider discovers the endpoints for
@@ -68,16 +71,59 @@ type ProviderClient struct {
// authentication functions for different Identity service versions.
ReauthFunc func() error
- Debug bool
+ mut *sync.RWMutex
+
+ reauthmut *reauthlock
+}
+
+type reauthlock struct {
+ sync.RWMutex
+ reauthing bool
}
// AuthenticatedHeaders returns a map of HTTP headers that are common for all
// authenticated service requests.
-func (client *ProviderClient) AuthenticatedHeaders() map[string]string {
- if client.TokenID == "" {
- return map[string]string{}
+func (client *ProviderClient) AuthenticatedHeaders() (m map[string]string) {
+ if client.reauthmut != nil {
+ client.reauthmut.RLock()
+ if client.reauthmut.reauthing {
+ client.reauthmut.RUnlock()
+ return
+ }
+ client.reauthmut.RUnlock()
+ }
+ t := client.Token()
+ if t == "" {
+ return
+ }
+ return map[string]string{"X-Auth-Token": t}
+}
+
+// UseTokenLock creates a mutex that is used to allow safe concurrent access to the auth token.
+// If the application's ProviderClient is not used concurrently, this doesn't need to be called.
+func (client *ProviderClient) UseTokenLock() {
+ client.mut = new(sync.RWMutex)
+ client.reauthmut = new(reauthlock)
+}
+
+// Token safely reads the value of the auth token from the ProviderClient. Applications should
+// call this method to access the token instead of the TokenID field
+func (client *ProviderClient) Token() string {
+ if client.mut != nil {
+ client.mut.RLock()
+ defer client.mut.RUnlock()
+ }
+ return client.TokenID
+}
+
+// SetToken safely sets the value of the auth token in the ProviderClient. Applications may
+// use this method in a custom ReauthFunc
+func (client *ProviderClient) SetToken(t string) {
+ if client.mut != nil {
+ client.mut.Lock()
+ defer client.mut.Unlock()
}
- return map[string]string{"X-Auth-Token": client.TokenID}
+ client.TokenID = t
}
// RequestOpts customizes the behavior of the provider.Request() method.
@@ -166,6 +212,8 @@ func (client *ProviderClient) Request(method, url string, options *RequestOpts)
// Set connection parameter to close the connection immediately when we've got the response
req.Close = true
+ prereqtok := req.Header.Get("X-Auth-Token")
+
// Issue the request.
resp, err := client.HTTPClient.Do(req)
if err != nil {
@@ -189,9 +237,6 @@ func (client *ProviderClient) Request(method, url string, options *RequestOpts)
if !ok {
body, _ := ioutil.ReadAll(resp.Body)
resp.Body.Close()
- //pc := make([]uintptr, 1)
- //runtime.Callers(2, pc)
- //f := runtime.FuncForPC(pc[0])
respErr := ErrUnexpectedResponseCode{
URL: url,
Method: method,
@@ -199,7 +244,6 @@ func (client *ProviderClient) Request(method, url string, options *RequestOpts)
Actual: resp.StatusCode,
Body: body,
}
- //respErr.Function = "gophercloud.ProviderClient.Request"
errType := options.ErrorContext
switch resp.StatusCode {
@@ -210,7 +254,21 @@ func (client *ProviderClient) Request(method, url string, options *RequestOpts)
}
case http.StatusUnauthorized:
if client.ReauthFunc != nil {
- err = client.ReauthFunc()
+ if client.mut != nil {
+ client.mut.Lock()
+ client.reauthmut.Lock()
+ client.reauthmut.reauthing = true
+ client.reauthmut.Unlock()
+ if curtok := client.TokenID; curtok == prereqtok {
+ err = client.ReauthFunc()
+ }
+ client.reauthmut.Lock()
+ client.reauthmut.reauthing = false
+ client.reauthmut.Unlock()
+ client.mut.Unlock()
+ } else {
+ err = client.ReauthFunc()
+ }
if err != nil {
e := &ErrUnableToReauthenticate{}
e.ErrOriginal = respErr
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go
index f248c738b232..6e0eb27e2858 100644
--- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/context.go
@@ -9,18 +9,23 @@ import (
"time"
"golang.org/x/net/context"
- "google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
"google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
)
-// MetadataHeaderPrefix is prepended to HTTP headers in order to convert them to
-// gRPC metadata for incoming requests processed by grpc-gateway
+// MetadataHeaderPrefix is the http prefix that represents custom metadata
+// parameters to or from a gRPC call.
const MetadataHeaderPrefix = "Grpc-Metadata-"
+
+// MetadataPrefix is the prefix for grpc-gateway supplied custom metadata fields.
+const MetadataPrefix = "grpcgateway-"
+
// MetadataTrailerPrefix is prepended to gRPC metadata as it is converted to
// HTTP headers in a response handled by grpc-gateway
const MetadataTrailerPrefix = "Grpc-Trailer-"
+
const metadataGrpcTimeout = "Grpc-Timeout"
const xForwardedFor = "X-Forwarded-For"
@@ -39,25 +44,25 @@ At a minimum, the RemoteAddr is included in the fashion of "X-Forwarded-For",
except that the forwarded destination is not another HTTP service but rather
a gRPC service.
*/
-func AnnotateContext(ctx context.Context, req *http.Request) (context.Context, error) {
+func AnnotateContext(ctx context.Context, mux *ServeMux, req *http.Request) (context.Context, error) {
var pairs []string
timeout := DefaultContextTimeout
if tm := req.Header.Get(metadataGrpcTimeout); tm != "" {
var err error
timeout, err = timeoutDecode(tm)
if err != nil {
- return nil, grpc.Errorf(codes.InvalidArgument, "invalid grpc-timeout: %s", tm)
+ return nil, status.Errorf(codes.InvalidArgument, "invalid grpc-timeout: %s", tm)
}
}
for key, vals := range req.Header {
for _, val := range vals {
- if key == "Authorization" {
+ // For backwards-compatibility, pass through 'authorization' header with no prefix.
+ if strings.ToLower(key) == "authorization" {
pairs = append(pairs, "authorization", val)
- continue
}
- if strings.HasPrefix(key, MetadataHeaderPrefix) {
- pairs = append(pairs, key[len(MetadataHeaderPrefix):], val)
+ if h, ok := mux.incomingHeaderMatcher(key); ok {
+ pairs = append(pairs, h, val)
}
}
}
@@ -85,7 +90,11 @@ func AnnotateContext(ctx context.Context, req *http.Request) (context.Context, e
if len(pairs) == 0 {
return ctx, nil
}
- return metadata.NewContext(ctx, metadata.Pairs(pairs...)), nil
+ md := metadata.Pairs(pairs...)
+ if mux.metadataAnnotator != nil {
+ md = metadata.Join(md, mux.metadataAnnotator(ctx, req))
+ }
+ return metadata.NewOutgoingContext(ctx, md), nil
}
// ServerMetadata consists of metadata sent from gRPC server.
@@ -141,3 +150,38 @@ func timeoutUnitToDuration(u uint8) (d time.Duration, ok bool) {
}
return
}
+
+// isPermanentHTTPHeader checks whether hdr belongs to the list of
+// permenant request headers maintained by IANA.
+// http://www.iana.org/assignments/message-headers/message-headers.xml
+func isPermanentHTTPHeader(hdr string) bool {
+ switch hdr {
+ case
+ "Accept",
+ "Accept-Charset",
+ "Accept-Language",
+ "Accept-Ranges",
+ "Authorization",
+ "Cache-Control",
+ "Content-Type",
+ "Cookie",
+ "Date",
+ "Expect",
+ "From",
+ "Host",
+ "If-Match",
+ "If-Modified-Since",
+ "If-None-Match",
+ "If-Schedule-Tag-Match",
+ "If-Unmodified-Since",
+ "Max-Forwards",
+ "Origin",
+ "Pragma",
+ "Referer",
+ "User-Agent",
+ "Via",
+ "Warning":
+ return true
+ }
+ return false
+}
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go
index 0d3cb3bf3caf..8eebdcf49f49 100644
--- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/errors.go
@@ -6,9 +6,9 @@ import (
"github.com/golang/protobuf/proto"
"golang.org/x/net/context"
- "google.golang.org/grpc"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/status"
)
// HTTPStatusFromCode converts a gRPC error code into the corresponding HTTP response status.
@@ -64,7 +64,7 @@ var (
type errorBody struct {
Error string `protobuf:"bytes,1,name=error" json:"error"`
- Code int `protobuf:"bytes,2,name=code" json:"code"`
+ Code int32 `protobuf:"varint,2,name=code" json:"code"`
}
//Make this also conform to proto.Message for builtin JSONPb Marshaler
@@ -78,14 +78,20 @@ func (*errorBody) ProtoMessage() {}
//
// The response body returned by this function is a JSON object,
// which contains a member whose key is "error" and whose value is err.Error().
-func DefaultHTTPError(ctx context.Context, marshaler Marshaler, w http.ResponseWriter, _ *http.Request, err error) {
+func DefaultHTTPError(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, _ *http.Request, err error) {
const fallback = `{"error": "failed to marshal error message"}`
w.Header().Del("Trailer")
w.Header().Set("Content-Type", marshaler.ContentType())
+
+ s, ok := status.FromError(err)
+ if !ok {
+ s = status.New(codes.Unknown, err.Error())
+ }
+
body := &errorBody{
- Error: grpc.ErrorDesc(err),
- Code: int(grpc.Code(err)),
+ Error: s.Message(),
+ Code: int32(s.Code()),
}
buf, merr := marshaler.Marshal(body)
@@ -103,9 +109,9 @@ func DefaultHTTPError(ctx context.Context, marshaler Marshaler, w http.ResponseW
grpclog.Printf("Failed to extract ServerMetadata from context")
}
- handleForwardResponseServerMetadata(w, md)
+ handleForwardResponseServerMetadata(w, mux, md)
handleForwardResponseTrailerHeader(w, md)
- st := HTTPStatusFromCode(grpc.Code(err))
+ st := HTTPStatusFromCode(s.Code())
w.WriteHeader(st)
if _, err := w.Write(buf); err != nil {
grpclog.Printf("Failed to write response: %v", err)
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go
index d7040851ae9c..ae6a5d551cfb 100644
--- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/handler.go
@@ -9,12 +9,13 @@ import (
"github.com/golang/protobuf/proto"
"github.com/grpc-ecosystem/grpc-gateway/runtime/internal"
"golang.org/x/net/context"
- "google.golang.org/grpc"
+ "google.golang.org/grpc/codes"
"google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/status"
)
// ForwardResponseStream forwards the stream from gRPC server to REST client.
-func ForwardResponseStream(ctx context.Context, marshaler Marshaler, w http.ResponseWriter, req *http.Request, recv func() (proto.Message, error), opts ...func(context.Context, http.ResponseWriter, proto.Message) error) {
+func ForwardResponseStream(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, req *http.Request, recv func() (proto.Message, error), opts ...func(context.Context, http.ResponseWriter, proto.Message) error) {
f, ok := w.(http.Flusher)
if !ok {
grpclog.Printf("Flush not supported in %T", w)
@@ -28,7 +29,7 @@ func ForwardResponseStream(ctx context.Context, marshaler Marshaler, w http.Resp
http.Error(w, "unexpected error", http.StatusInternalServerError)
return
}
- handleForwardResponseServerMetadata(w, md)
+ handleForwardResponseServerMetadata(w, mux, md)
w.Header().Set("Transfer-Encoding", "chunked")
w.Header().Set("Content-Type", marshaler.ContentType())
@@ -57,7 +58,7 @@ func ForwardResponseStream(ctx context.Context, marshaler Marshaler, w http.Resp
grpclog.Printf("Failed to marshal response chunk: %v", err)
return
}
- if _, err = fmt.Fprintf(w, "%s\n", buf); err != nil {
+ if _, err = w.Write(buf); err != nil {
grpclog.Printf("Failed to send response chunk: %v", err)
return
}
@@ -65,11 +66,12 @@ func ForwardResponseStream(ctx context.Context, marshaler Marshaler, w http.Resp
}
}
-func handleForwardResponseServerMetadata(w http.ResponseWriter, md ServerMetadata) {
+func handleForwardResponseServerMetadata(w http.ResponseWriter, mux *ServeMux, md ServerMetadata) {
for k, vs := range md.HeaderMD {
- hKey := fmt.Sprintf("%s%s", MetadataHeaderPrefix, k)
- for i := range vs {
- w.Header().Add(hKey, vs[i])
+ if h, ok := mux.outgoingHeaderMatcher(k); ok {
+ for _, v := range vs {
+ w.Header().Add(h, v)
+ }
}
}
}
@@ -84,31 +86,31 @@ func handleForwardResponseTrailerHeader(w http.ResponseWriter, md ServerMetadata
func handleForwardResponseTrailer(w http.ResponseWriter, md ServerMetadata) {
for k, vs := range md.TrailerMD {
tKey := fmt.Sprintf("%s%s", MetadataTrailerPrefix, k)
- for i := range vs {
- w.Header().Add(tKey, vs[i])
+ for _, v := range vs {
+ w.Header().Add(tKey, v)
}
}
}
// ForwardResponseMessage forwards the message "resp" from gRPC server to REST client.
-func ForwardResponseMessage(ctx context.Context, marshaler Marshaler, w http.ResponseWriter, req *http.Request, resp proto.Message, opts ...func(context.Context, http.ResponseWriter, proto.Message) error) {
+func ForwardResponseMessage(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, req *http.Request, resp proto.Message, opts ...func(context.Context, http.ResponseWriter, proto.Message) error) {
md, ok := ServerMetadataFromContext(ctx)
if !ok {
grpclog.Printf("Failed to extract ServerMetadata from context")
}
- handleForwardResponseServerMetadata(w, md)
+ handleForwardResponseServerMetadata(w, mux, md)
handleForwardResponseTrailerHeader(w, md)
w.Header().Set("Content-Type", marshaler.ContentType())
if err := handleForwardResponseOptions(ctx, w, resp, opts); err != nil {
- HTTPError(ctx, marshaler, w, req, err)
+ HTTPError(ctx, mux, marshaler, w, req, err)
return
}
buf, err := marshaler.Marshal(resp)
if err != nil {
grpclog.Printf("Marshal error: %v", err)
- HTTPError(ctx, marshaler, w, req, err)
+ HTTPError(ctx, mux, marshaler, w, req, err)
return
}
@@ -146,7 +148,10 @@ func handleForwardResponseStreamError(marshaler Marshaler, w http.ResponseWriter
func streamChunk(result proto.Message, err error) map[string]proto.Message {
if err != nil {
- grpcCode := grpc.Code(err)
+ grpcCode := codes.Unknown
+ if s, ok := status.FromError(err); ok {
+ grpcCode = s.Code()
+ }
httpCode := HTTPStatusFromCode(grpcCode)
return map[string]proto.Message{
"error": &internal.StreamError{
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go
index 6f837cfd5d95..44550f393b4c 100644
--- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/internal/stream_chunk.pb.go
@@ -1,6 +1,5 @@
-// Code generated by protoc-gen-go.
+// Code generated by protoc-gen-go. DO NOT EDIT.
// source: runtime/internal/stream_chunk.proto
-// DO NOT EDIT!
/*
Package internal is a generated protocol buffer package.
@@ -42,6 +41,34 @@ func (m *StreamError) String() string { return proto.CompactTextStrin
func (*StreamError) ProtoMessage() {}
func (*StreamError) Descriptor() ([]byte, []int) { return fileDescriptor0, []int{0} }
+func (m *StreamError) GetGrpcCode() int32 {
+ if m != nil {
+ return m.GrpcCode
+ }
+ return 0
+}
+
+func (m *StreamError) GetHttpCode() int32 {
+ if m != nil {
+ return m.HttpCode
+ }
+ return 0
+}
+
+func (m *StreamError) GetMessage() string {
+ if m != nil {
+ return m.Message
+ }
+ return ""
+}
+
+func (m *StreamError) GetHttpStatus() string {
+ if m != nil {
+ return m.HttpStatus
+ }
+ return ""
+}
+
func init() {
proto.RegisterType((*StreamError)(nil), "grpc.gateway.runtime.StreamError")
}
@@ -50,7 +77,7 @@ func init() { proto.RegisterFile("runtime/internal/stream_chunk.proto", fileDesc
var fileDescriptor0 = []byte{
// 181 bytes of a gzipped FileDescriptorProto
- 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x09, 0x6e, 0x88, 0x02, 0xff, 0x34, 0x8e, 0xbf, 0xee, 0x82, 0x30,
+ 0x1f, 0x8b, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0xff, 0x34, 0x8e, 0xbf, 0xee, 0x82, 0x30,
0x14, 0x85, 0xd3, 0xdf, 0x1f, 0x85, 0xcb, 0x46, 0x1c, 0x9a, 0x38, 0x48, 0x74, 0x61, 0x82, 0xc1,
0x37, 0xd0, 0xf8, 0x02, 0xb0, 0xb9, 0x90, 0x0a, 0x37, 0x40, 0x94, 0x96, 0xdc, 0x5e, 0x62, 0x5c,
0x7d, 0x72, 0xd3, 0x22, 0xe3, 0xf9, 0xbe, 0x73, 0x92, 0x03, 0x07, 0x9a, 0x34, 0xf7, 0x03, 0xe6,
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go
index 2e6c56213029..205bc4309214 100644
--- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/mux.go
@@ -1,12 +1,16 @@
package runtime
import (
+ "fmt"
"net/http"
+ "net/textproto"
"strings"
- "golang.org/x/net/context"
-
"github.com/golang/protobuf/proto"
+ "golang.org/x/net/context"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/metadata"
+ "google.golang.org/grpc/status"
)
// A HandlerFunc handles a specific pair of path pattern and HTTP method.
@@ -19,6 +23,10 @@ type ServeMux struct {
handlers map[string][]handler
forwardResponseOptions []func(context.Context, http.ResponseWriter, proto.Message) error
marshalers marshalerRegistry
+ incomingHeaderMatcher HeaderMatcherFunc
+ outgoingHeaderMatcher HeaderMatcherFunc
+ metadataAnnotator func(context.Context, *http.Request) metadata.MD
+ protoErrorHandler ProtoErrorHandlerFunc
}
// ServeMuxOption is an option that can be given to a ServeMux on construction.
@@ -36,6 +44,64 @@ func WithForwardResponseOption(forwardResponseOption func(context.Context, http.
}
}
+// HeaderMatcherFunc checks whether a header key should be forwarded to/from gRPC context.
+type HeaderMatcherFunc func(string) (string, bool)
+
+// DefaultHeaderMatcher is used to pass http request headers to/from gRPC context. This adds permanent HTTP header
+// keys (as specified by the IANA) to gRPC context with grpcgateway- prefix. HTTP headers that start with
+// 'Grpc-Metadata-' are mapped to gRPC metadata after removing prefix 'Grpc-Metadata-'.
+func DefaultHeaderMatcher(key string) (string, bool) {
+ key = textproto.CanonicalMIMEHeaderKey(key)
+ if isPermanentHTTPHeader(key) {
+ return MetadataPrefix + key, true
+ } else if strings.HasPrefix(key, MetadataHeaderPrefix) {
+ return key[len(MetadataHeaderPrefix):], true
+ }
+ return "", false
+}
+
+// WithIncomingHeaderMatcher returns a ServeMuxOption representing a headerMatcher for incoming request to gateway.
+//
+// This matcher will be called with each header in http.Request. If matcher returns true, that header will be
+// passed to gRPC context. To transform the header before passing to gRPC context, matcher should return modified header.
+func WithIncomingHeaderMatcher(fn HeaderMatcherFunc) ServeMuxOption {
+ return func(mux *ServeMux) {
+ mux.incomingHeaderMatcher = fn
+ }
+}
+
+// WithOutgoingHeaderMatcher returns a ServeMuxOption representing a headerMatcher for outgoing response from gateway.
+//
+// This matcher will be called with each header in response header metadata. If matcher returns true, that header will be
+// passed to http response returned from gateway. To transform the header before passing to response,
+// matcher should return modified header.
+func WithOutgoingHeaderMatcher(fn HeaderMatcherFunc) ServeMuxOption {
+ return func(mux *ServeMux) {
+ mux.outgoingHeaderMatcher = fn
+ }
+}
+
+// WithMetadata returns a ServeMuxOption for passing metadata to a gRPC context.
+//
+// This can be used by services that need to read from http.Request and modify gRPC context. A common use case
+// is reading token from cookie and adding it in gRPC context.
+func WithMetadata(annotator func(context.Context, *http.Request) metadata.MD) ServeMuxOption {
+ return func(serveMux *ServeMux) {
+ serveMux.metadataAnnotator = annotator
+ }
+}
+
+// WithProtoErrorHandler returns a ServeMuxOption for passing metadata to a gRPC context.
+//
+// This can be used to handle an error as general proto message defined by gRPC.
+// The response including body and status is not backward compatible with the default error handler.
+// When this option is used, HTTPError and OtherErrorHandler are overwritten on initialization.
+func WithProtoErrorHandler(fn ProtoErrorHandlerFunc) ServeMuxOption {
+ return func(serveMux *ServeMux) {
+ serveMux.protoErrorHandler = fn
+ }
+}
+
// NewServeMux returns a new ServeMux whose internal mapping is empty.
func NewServeMux(opts ...ServeMuxOption) *ServeMux {
serveMux := &ServeMux{
@@ -47,6 +113,29 @@ func NewServeMux(opts ...ServeMuxOption) *ServeMux {
for _, opt := range opts {
opt(serveMux)
}
+
+ if serveMux.protoErrorHandler != nil {
+ HTTPError = serveMux.protoErrorHandler
+ // OtherErrorHandler is no longer used when protoErrorHandler is set.
+ // Overwritten by a special error handler to return Unknown.
+ OtherErrorHandler = func(w http.ResponseWriter, r *http.Request, _ string, _ int) {
+ ctx := context.Background()
+ _, outboundMarshaler := MarshalerForRequest(serveMux, r)
+ sterr := status.Error(codes.Unknown, "unexpected use of OtherErrorHandler")
+ serveMux.protoErrorHandler(ctx, serveMux, outboundMarshaler, w, r, sterr)
+ }
+ }
+
+ if serveMux.incomingHeaderMatcher == nil {
+ serveMux.incomingHeaderMatcher = DefaultHeaderMatcher
+ }
+
+ if serveMux.outgoingHeaderMatcher == nil {
+ serveMux.outgoingHeaderMatcher = func(key string) (string, bool) {
+ return fmt.Sprintf("%s%s", MetadataHeaderPrefix, key), true
+ }
+ }
+
return serveMux
}
@@ -57,9 +146,17 @@ func (s *ServeMux) Handle(meth string, pat Pattern, h HandlerFunc) {
// ServeHTTP dispatches the request to the first handler whose pattern matches to r.Method and r.Path.
func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
+ ctx := r.Context()
+
path := r.URL.Path
if !strings.HasPrefix(path, "/") {
- OtherErrorHandler(w, r, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
+ if s.protoErrorHandler != nil {
+ _, outboundMarshaler := MarshalerForRequest(s, r)
+ sterr := status.Error(codes.InvalidArgument, http.StatusText(http.StatusBadRequest))
+ s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr)
+ } else {
+ OtherErrorHandler(w, r, http.StatusText(http.StatusBadRequest), http.StatusBadRequest)
+ }
return
}
@@ -67,7 +164,13 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
l := len(components)
var verb string
if idx := strings.LastIndex(components[l-1], ":"); idx == 0 {
- OtherErrorHandler(w, r, http.StatusText(http.StatusNotFound), http.StatusNotFound)
+ if s.protoErrorHandler != nil {
+ _, outboundMarshaler := MarshalerForRequest(s, r)
+ sterr := status.Error(codes.Unimplemented, http.StatusText(http.StatusNotImplemented))
+ s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr)
+ } else {
+ OtherErrorHandler(w, r, http.StatusText(http.StatusNotFound), http.StatusNotFound)
+ }
return
} else if idx > 0 {
c := components[l-1]
@@ -77,7 +180,13 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if override := r.Header.Get("X-HTTP-Method-Override"); override != "" && isPathLengthFallback(r) {
r.Method = strings.ToUpper(override)
if err := r.ParseForm(); err != nil {
- OtherErrorHandler(w, r, err.Error(), http.StatusBadRequest)
+ if s.protoErrorHandler != nil {
+ _, outboundMarshaler := MarshalerForRequest(s, r)
+ sterr := status.Error(codes.InvalidArgument, err.Error())
+ s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr)
+ } else {
+ OtherErrorHandler(w, r, err.Error(), http.StatusBadRequest)
+ }
return
}
}
@@ -104,17 +213,36 @@ func (s *ServeMux) ServeHTTP(w http.ResponseWriter, r *http.Request) {
// X-HTTP-Method-Override is optional. Always allow fallback to POST.
if isPathLengthFallback(r) {
if err := r.ParseForm(); err != nil {
- OtherErrorHandler(w, r, err.Error(), http.StatusBadRequest)
+ if s.protoErrorHandler != nil {
+ _, outboundMarshaler := MarshalerForRequest(s, r)
+ sterr := status.Error(codes.InvalidArgument, err.Error())
+ s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr)
+ } else {
+ OtherErrorHandler(w, r, err.Error(), http.StatusBadRequest)
+ }
return
}
h.h(w, r, pathParams)
return
}
- OtherErrorHandler(w, r, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
+ if s.protoErrorHandler != nil {
+ _, outboundMarshaler := MarshalerForRequest(s, r)
+ sterr := status.Error(codes.Unimplemented, http.StatusText(http.StatusMethodNotAllowed))
+ s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr)
+ } else {
+ OtherErrorHandler(w, r, http.StatusText(http.StatusMethodNotAllowed), http.StatusMethodNotAllowed)
+ }
return
}
}
- OtherErrorHandler(w, r, http.StatusText(http.StatusNotFound), http.StatusNotFound)
+
+ if s.protoErrorHandler != nil {
+ _, outboundMarshaler := MarshalerForRequest(s, r)
+ sterr := status.Error(codes.Unimplemented, http.StatusText(http.StatusNotImplemented))
+ s.protoErrorHandler(ctx, s, outboundMarshaler, w, r, sterr)
+ } else {
+ OtherErrorHandler(w, r, http.StatusText(http.StatusNotFound), http.StatusNotFound)
+ }
}
// GetForwardResponseOptions returns the ForwardResponseOptions associated with this ServeMux.
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go
index 3947dbea023a..8a9ec2cdae40 100644
--- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/pattern.go
@@ -21,7 +21,7 @@ type op struct {
operand int
}
-// Pattern is a template pattern of http request paths defined in third_party/googleapis/google/api/http.proto.
+// Pattern is a template pattern of http request paths defined in github.com/googleapis/googleapis/google/api/http.proto.
type Pattern struct {
// ops is a list of operations
ops []op
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go
new file mode 100644
index 000000000000..b1b089273b6d
--- /dev/null
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/proto_errors.go
@@ -0,0 +1,61 @@
+package runtime
+
+import (
+ "io"
+ "net/http"
+
+ "golang.org/x/net/context"
+ "google.golang.org/grpc/codes"
+ "google.golang.org/grpc/grpclog"
+ "google.golang.org/grpc/status"
+)
+
+// ProtoErrorHandlerFunc handles the error as a gRPC error generated via status package and replies to the request.
+type ProtoErrorHandlerFunc func(context.Context, *ServeMux, Marshaler, http.ResponseWriter, *http.Request, error)
+
+var _ ProtoErrorHandlerFunc = DefaultHTTPProtoErrorHandler
+
+// DefaultHTTPProtoErrorHandler is an implementation of HTTPError.
+// If "err" is an error from gRPC system, the function replies with the status code mapped by HTTPStatusFromCode.
+// If otherwise, it replies with http.StatusInternalServerError.
+//
+// The response body returned by this function is a Status message marshaled by a Marshaler.
+//
+// Do not set this function to HTTPError variable directly, use WithProtoErrorHandler option instead.
+func DefaultHTTPProtoErrorHandler(ctx context.Context, mux *ServeMux, marshaler Marshaler, w http.ResponseWriter, _ *http.Request, err error) {
+ // return Internal when Marshal failed
+ const fallback = `{"code": 13, "message": "failed to marshal error message"}`
+
+ w.Header().Del("Trailer")
+ w.Header().Set("Content-Type", marshaler.ContentType())
+
+ s, ok := status.FromError(err)
+ if !ok {
+ s = status.New(codes.Unknown, err.Error())
+ }
+
+ buf, merr := marshaler.Marshal(s.Proto())
+ if merr != nil {
+ grpclog.Printf("Failed to marshal error message %q: %v", s.Proto(), merr)
+ w.WriteHeader(http.StatusInternalServerError)
+ if _, err := io.WriteString(w, fallback); err != nil {
+ grpclog.Printf("Failed to write response: %v", err)
+ }
+ return
+ }
+
+ md, ok := ServerMetadataFromContext(ctx)
+ if !ok {
+ grpclog.Printf("Failed to extract ServerMetadata from context")
+ }
+
+ handleForwardResponseServerMetadata(w, mux, md)
+ handleForwardResponseTrailerHeader(w, md)
+ st := HTTPStatusFromCode(s.Code())
+ w.WriteHeader(st)
+ if _, err := w.Write(buf); err != nil {
+ grpclog.Printf("Failed to write response: %v", err)
+ }
+
+ handleForwardResponseTrailer(w, md)
+}
diff --git a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go
index 56a919a52f1c..c00e0b914e27 100644
--- a/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go
+++ b/vendor/github.com/grpc-ecosystem/grpc-gateway/runtime/query.go
@@ -4,7 +4,9 @@ import (
"fmt"
"net/url"
"reflect"
+ "strconv"
"strings"
+ "time"
"github.com/golang/protobuf/proto"
"github.com/grpc-ecosystem/grpc-gateway/utilities"
@@ -38,31 +40,39 @@ func populateFieldValueFromPath(msg proto.Message, fieldPath []string, values []
if m.Kind() != reflect.Ptr {
return fmt.Errorf("unexpected type %T: %v", msg, msg)
}
+ var props *proto.Properties
m = m.Elem()
for i, fieldName := range fieldPath {
isLast := i == len(fieldPath)-1
if !isLast && m.Kind() != reflect.Struct {
return fmt.Errorf("non-aggregate type in the mid of path: %s", strings.Join(fieldPath, "."))
}
- f := fieldByProtoName(m, fieldName)
- if !f.IsValid() {
+ var f reflect.Value
+ var err error
+ f, props, err = fieldByProtoName(m, fieldName)
+ if err != nil {
+ return err
+ } else if !f.IsValid() {
grpclog.Printf("field not found in %T: %s", msg, strings.Join(fieldPath, "."))
return nil
}
switch f.Kind() {
case reflect.Bool, reflect.Float32, reflect.Float64, reflect.Int32, reflect.Int64, reflect.String, reflect.Uint32, reflect.Uint64:
+ if !isLast {
+ return fmt.Errorf("unexpected nested field %s in %s", fieldPath[i+1], strings.Join(fieldPath[:i+1], "."))
+ }
m = f
case reflect.Slice:
// TODO(yugui) Support []byte
if !isLast {
return fmt.Errorf("unexpected repeated field in %s", strings.Join(fieldPath, "."))
}
- return populateRepeatedField(f, values)
+ return populateRepeatedField(f, values, props)
case reflect.Ptr:
if f.IsNil() {
m = reflect.New(f.Type().Elem())
- f.Set(m)
+ f.Set(m.Convert(f.Type()))
}
m = f.Elem()
continue
@@ -80,39 +90,127 @@ func populateFieldValueFromPath(msg proto.Message, fieldPath []string, values []
default:
grpclog.Printf("too many field values: %s", strings.Join(fieldPath, "."))
}
- return populateField(m, values[0])
+ return populateField(m, values[0], props)
}
// fieldByProtoName looks up a field whose corresponding protobuf field name is "name".
// "m" must be a struct value. It returns zero reflect.Value if no such field found.
-func fieldByProtoName(m reflect.Value, name string) reflect.Value {
+func fieldByProtoName(m reflect.Value, name string) (reflect.Value, *proto.Properties, error) {
props := proto.GetProperties(m.Type())
+
+ // look up field name in oneof map
+ if op, ok := props.OneofTypes[name]; ok {
+ v := reflect.New(op.Type.Elem())
+ field := m.Field(op.Field)
+ if !field.IsNil() {
+ return reflect.Value{}, nil, fmt.Errorf("field already set for %s oneof", props.Prop[op.Field].OrigName)
+ }
+ field.Set(v)
+ return v.Elem().Field(0), op.Prop, nil
+ }
+
for _, p := range props.Prop {
if p.OrigName == name {
- return m.FieldByName(p.Name)
+ return m.FieldByName(p.Name), p, nil
+ }
+ if p.JSONName == name {
+ return m.FieldByName(p.Name), p, nil
}
}
- return reflect.Value{}
+ return reflect.Value{}, nil, nil
}
-func populateRepeatedField(f reflect.Value, values []string) error {
+func populateRepeatedField(f reflect.Value, values []string, props *proto.Properties) error {
elemType := f.Type().Elem()
+
+ // is the destination field a slice of an enumeration type?
+ if enumValMap := proto.EnumValueMap(props.Enum); enumValMap != nil {
+ return populateFieldEnumRepeated(f, values, enumValMap)
+ }
+
conv, ok := convFromType[elemType.Kind()]
if !ok {
return fmt.Errorf("unsupported field type %s", elemType)
}
- f.Set(reflect.MakeSlice(f.Type(), len(values), len(values)))
+ f.Set(reflect.MakeSlice(f.Type(), len(values), len(values)).Convert(f.Type()))
for i, v := range values {
result := conv.Call([]reflect.Value{reflect.ValueOf(v)})
if err := result[1].Interface(); err != nil {
return err.(error)
}
- f.Index(i).Set(result[0])
+ f.Index(i).Set(result[0].Convert(f.Index(i).Type()))
}
return nil
}
-func populateField(f reflect.Value, value string) error {
+func populateField(f reflect.Value, value string, props *proto.Properties) error {
+ // Handle well known type
+ type wkt interface {
+ XXX_WellKnownType() string
+ }
+ if wkt, ok := f.Addr().Interface().(wkt); ok {
+ switch wkt.XXX_WellKnownType() {
+ case "Timestamp":
+ if value == "null" {
+ f.Field(0).SetInt(0)
+ f.Field(1).SetInt(0)
+ return nil
+ }
+
+ t, err := time.Parse(time.RFC3339Nano, value)
+ if err != nil {
+ return fmt.Errorf("bad Timestamp: %v", err)
+ }
+ f.Field(0).SetInt(int64(t.Unix()))
+ f.Field(1).SetInt(int64(t.Nanosecond()))
+ return nil
+ case "DoubleValue":
+ fallthrough
+ case "FloatValue":
+ float64Val, err := strconv.ParseFloat(value, 64)
+ if err != nil {
+ return fmt.Errorf("bad DoubleValue: %s", value)
+ }
+ f.Field(0).SetFloat(float64Val)
+ return nil
+ case "Int64Value":
+ fallthrough
+ case "Int32Value":
+ int64Val, err := strconv.ParseInt(value, 10, 64)
+ if err != nil {
+ return fmt.Errorf("bad DoubleValue: %s", value)
+ }
+ f.Field(0).SetInt(int64Val)
+ return nil
+ case "UInt64Value":
+ fallthrough
+ case "UInt32Value":
+ uint64Val, err := strconv.ParseUint(value, 10, 64)
+ if err != nil {
+ return fmt.Errorf("bad DoubleValue: %s", value)
+ }
+ f.Field(0).SetUint(uint64Val)
+ return nil
+ case "BoolValue":
+ if value == "true" {
+ f.Field(0).SetBool(true)
+ } else if value == "false" {
+ f.Field(0).SetBool(false)
+ } else {
+ return fmt.Errorf("bad BoolValue: %s", value)
+ }
+ return nil
+ case "StringValue":
+ f.Field(0).SetString(value)
+ return nil
+ }
+ }
+
+ // is the destination field an enumeration type?
+ if enumValMap := proto.EnumValueMap(props.Enum); enumValMap != nil {
+ return populateFieldEnum(f, value, enumValMap)
+ }
+
conv, ok := convFromType[f.Kind()]
if !ok {
return fmt.Errorf("unsupported field type %T", f)
@@ -121,7 +219,48 @@ func populateField(f reflect.Value, value string) error {
if err := result[1].Interface(); err != nil {
return err.(error)
}
- f.Set(result[0])
+ f.Set(result[0].Convert(f.Type()))
+ return nil
+}
+
+func convertEnum(value string, t reflect.Type, enumValMap map[string]int32) (reflect.Value, error) {
+ // see if it's an enumeration string
+ if enumVal, ok := enumValMap[value]; ok {
+ return reflect.ValueOf(enumVal).Convert(t), nil
+ }
+
+ // check for an integer that matches an enumeration value
+ eVal, err := strconv.Atoi(value)
+ if err != nil {
+ return reflect.Value{}, fmt.Errorf("%s is not a valid %s", value, t)
+ }
+ for _, v := range enumValMap {
+ if v == int32(eVal) {
+ return reflect.ValueOf(eVal).Convert(t), nil
+ }
+ }
+ return reflect.Value{}, fmt.Errorf("%s is not a valid %s", value, t)
+}
+
+func populateFieldEnum(f reflect.Value, value string, enumValMap map[string]int32) error {
+ cval, err := convertEnum(value, f.Type(), enumValMap)
+ if err != nil {
+ return err
+ }
+ f.Set(cval)
+ return nil
+}
+
+func populateFieldEnumRepeated(f reflect.Value, values []string, enumValMap map[string]int32) error {
+ elemType := f.Type().Elem()
+ f.Set(reflect.MakeSlice(f.Type(), len(values), len(values)).Convert(f.Type()))
+ for i, v := range values {
+ result, err := convertEnum(v, elemType, enumValMap)
+ if err != nil {
+ return err
+ }
+ f.Index(i).Set(result)
+ }
return nil
}
diff --git a/vendor/github.com/json-iterator/go/.gitignore b/vendor/github.com/json-iterator/go/.gitignore
index 501fcdc9a692..15556530a854 100644
--- a/vendor/github.com/json-iterator/go/.gitignore
+++ b/vendor/github.com/json-iterator/go/.gitignore
@@ -1,3 +1,4 @@
-.idea
+/vendor
+/bug_test.go
/coverage.txt
-/profile.out
+/.idea
diff --git a/vendor/github.com/json-iterator/go/.travis.yml b/vendor/github.com/json-iterator/go/.travis.yml
index 945b9c5947c6..449e67cd01ac 100644
--- a/vendor/github.com/json-iterator/go/.travis.yml
+++ b/vendor/github.com/json-iterator/go/.travis.yml
@@ -2,6 +2,7 @@ language: go
go:
- 1.8.x
+ - 1.x
before_install:
- go get -t -v ./...
diff --git a/vendor/github.com/json-iterator/go/Gopkg.lock b/vendor/github.com/json-iterator/go/Gopkg.lock
new file mode 100644
index 000000000000..f34f5b4ad1c8
--- /dev/null
+++ b/vendor/github.com/json-iterator/go/Gopkg.lock
@@ -0,0 +1,33 @@
+# This file is autogenerated, do not edit; changes may be undone by the next 'dep ensure'.
+
+
+[[projects]]
+ name = "github.com/davecgh/go-spew"
+ packages = ["spew"]
+ revision = "346938d642f2ec3594ed81d874461961cd0faa76"
+ version = "v1.1.0"
+
+[[projects]]
+ branch = "master"
+ name = "github.com/google/gofuzz"
+ packages = ["."]
+ revision = "24818f796faf91cd76ec7bddd72458fbced7a6c1"
+
+[[projects]]
+ name = "github.com/pmezard/go-difflib"
+ packages = ["difflib"]
+ revision = "792786c7400a136282c1664665ae0a8db921c6c2"
+ version = "v1.0.0"
+
+[[projects]]
+ name = "github.com/stretchr/testify"
+ packages = ["assert","require"]
+ revision = "69483b4bd14f5845b5a1e55bca19e954e827f1d0"
+ version = "v1.1.4"
+
+[solve-meta]
+ analyzer-name = "dep"
+ analyzer-version = 1
+ inputs-digest = "f8b7cf3941d3792cbbd570bb53c093adaf774334d1162c651565c97a58dc9d09"
+ solver-name = "gps-cdcl"
+ solver-version = 1
diff --git a/vendor/github.com/json-iterator/go/Gopkg.toml b/vendor/github.com/json-iterator/go/Gopkg.toml
new file mode 100644
index 000000000000..0ac55ef876ac
--- /dev/null
+++ b/vendor/github.com/json-iterator/go/Gopkg.toml
@@ -0,0 +1,33 @@
+# Gopkg.toml example
+#
+# Refer to https://github.com/golang/dep/blob/master/docs/Gopkg.toml.md
+# for detailed Gopkg.toml documentation.
+#
+# required = ["github.com/user/thing/cmd/thing"]
+# ignored = ["github.com/user/project/pkgX", "bitbucket.org/user/project/pkgA/pkgY"]
+#
+# [[constraint]]
+# name = "github.com/user/project"
+# version = "1.0.0"
+#
+# [[constraint]]
+# name = "github.com/user/project2"
+# branch = "dev"
+# source = "github.com/myfork/project2"
+#
+# [[override]]
+# name = "github.com/x/y"
+# version = "2.4.0"
+
+
+[[constraint]]
+ name = "github.com/davecgh/go-spew"
+ version = "1.1.0"
+
+[[constraint]]
+ branch = "master"
+ name = "github.com/google/gofuzz"
+
+[[constraint]]
+ name = "github.com/stretchr/testify"
+ version = "1.1.4"
diff --git a/vendor/github.com/json-iterator/go/README.md b/vendor/github.com/json-iterator/go/README.md
index 23a4b57c8e73..3a0d680983b9 100644
--- a/vendor/github.com/json-iterator/go/README.md
+++ b/vendor/github.com/json-iterator/go/README.md
@@ -44,7 +44,9 @@ with
```go
import "github.com/json-iterator/go"
-jsoniter.Marshal(&data)
+
+var json = jsoniter.ConfigCompatibleWithStandardLibrary
+json.Marshal(&data)
```
Replace
@@ -58,7 +60,9 @@ with
```go
import "github.com/json-iterator/go"
-jsoniter.Unmarshal(input, &data)
+
+var json = jsoniter.ConfigCompatibleWithStandardLibrary
+json.Unmarshal(input, &data)
```
[More documentation](http://jsoniter.com/migrate-from-go-std.html)
@@ -76,5 +80,7 @@ Contributors
* [thockin](https://github.com/thockin)
* [mattn](https://github.com/mattn)
* [cch123](https://github.com/cch123)
+* [Oleg Shaldybin](https://github.com/olegshaldybin)
+* [Jason Toffaletti](https://github.com/toffaletti)
Report issue or pull request, or email taowen@gmail.com, or [![Gitter chat](https://badges.gitter.im/gitterHQ/gitter.png)](https://gitter.im/json-iterator/Lobby)
diff --git a/vendor/github.com/json-iterator/go/build.sh b/vendor/github.com/json-iterator/go/build.sh
new file mode 100755
index 000000000000..b45ef688313e
--- /dev/null
+++ b/vendor/github.com/json-iterator/go/build.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+set -e
+set -x
+
+if [ ! -d /tmp/build-golang/src/github.com/json-iterator ]; then
+ mkdir -p /tmp/build-golang/src/github.com/json-iterator
+ ln -s $PWD /tmp/build-golang/src/github.com/json-iterator/go
+fi
+export GOPATH=/tmp/build-golang
+go get -u github.com/golang/dep/cmd/dep
+cd /tmp/build-golang/src/github.com/json-iterator/go
+exec $GOPATH/bin/dep ensure -update
diff --git a/vendor/github.com/json-iterator/go/feature_adapter.go b/vendor/github.com/json-iterator/go/feature_adapter.go
index edb477c4fd1b..0214b711a65a 100644
--- a/vendor/github.com/json-iterator/go/feature_adapter.go
+++ b/vendor/github.com/json-iterator/go/feature_adapter.go
@@ -110,6 +110,7 @@ type Encoder struct {
// Encode encode interface{} as JSON to io.Writer
func (adapter *Encoder) Encode(val interface{}) error {
adapter.stream.WriteVal(val)
+ adapter.stream.WriteRaw("\n")
adapter.stream.Flush()
return adapter.stream.Error
}
@@ -125,3 +126,8 @@ func (adapter *Encoder) SetEscapeHTML(escapeHTML bool) {
config.EscapeHTML = escapeHTML
adapter.stream.cfg = config.Froze().(*frozenConfig)
}
+
+// Valid reports whether data is a valid JSON encoding.
+func Valid(data []byte) bool {
+ return ConfigDefault.Valid(data)
+}
diff --git a/vendor/github.com/json-iterator/go/feature_any.go b/vendor/github.com/json-iterator/go/feature_any.go
index 6733dce4cc5f..87716d1fcf2e 100644
--- a/vendor/github.com/json-iterator/go/feature_any.go
+++ b/vendor/github.com/json-iterator/go/feature_any.go
@@ -1,6 +1,7 @@
package jsoniter
import (
+ "errors"
"fmt"
"io"
"reflect"
@@ -157,6 +158,8 @@ func (iter *Iterator) readAny() Any {
return iter.readArrayAny()
case '-':
return iter.readNumberAny(false)
+ case 0:
+ return &invalidAny{baseAny{}, errors.New("input is empty")}
default:
return iter.readNumberAny(true)
}
diff --git a/vendor/github.com/json-iterator/go/feature_config.go b/vendor/github.com/json-iterator/go/feature_config.go
index fc055d504eb6..78a2ce1a593d 100644
--- a/vendor/github.com/json-iterator/go/feature_config.go
+++ b/vendor/github.com/json-iterator/go/feature_config.go
@@ -12,23 +12,26 @@ import (
// Config customize how the API should behave.
// The API is created from Config by Froze.
type Config struct {
- IndentionStep int
- MarshalFloatWith6Digits bool
- EscapeHTML bool
- SortMapKeys bool
- UseNumber bool
- TagKey string
+ IndentionStep int
+ MarshalFloatWith6Digits bool
+ EscapeHTML bool
+ SortMapKeys bool
+ UseNumber bool
+ TagKey string
+ ValidateJsonRawMessage bool
+ ObjectFieldMustBeSimpleString bool
}
type frozenConfig struct {
- configBeforeFrozen Config
- sortMapKeys bool
- indentionStep int
- decoderCache unsafe.Pointer
- encoderCache unsafe.Pointer
- extensions []Extension
- streamPool chan *Stream
- iteratorPool chan *Iterator
+ configBeforeFrozen Config
+ sortMapKeys bool
+ indentionStep int
+ objectFieldMustBeSimpleString bool
+ decoderCache unsafe.Pointer
+ encoderCache unsafe.Pointer
+ extensions []Extension
+ streamPool chan *Stream
+ iteratorPool chan *Iterator
}
// API the public interface of this package.
@@ -44,6 +47,8 @@ type API interface {
Get(data []byte, path ...interface{}) Any
NewEncoder(writer io.Writer) *Encoder
NewDecoder(reader io.Reader) *Decoder
+ Valid(data []byte) bool
+ RegisterExtension(extension Extension)
}
// ConfigDefault the default API
@@ -53,24 +58,27 @@ var ConfigDefault = Config{
// ConfigCompatibleWithStandardLibrary tries to be 100% compatible with standard library behavior
var ConfigCompatibleWithStandardLibrary = Config{
- EscapeHTML: true,
- SortMapKeys: true,
+ EscapeHTML: true,
+ SortMapKeys: true,
+ ValidateJsonRawMessage: true,
}.Froze()
// ConfigFastest marshals float with only 6 digits precision
var ConfigFastest = Config{
- EscapeHTML: false,
- MarshalFloatWith6Digits: true,
+ EscapeHTML: false,
+ MarshalFloatWith6Digits: true, // will lose precession
+ ObjectFieldMustBeSimpleString: true, // do not unescape object field
}.Froze()
// Froze forge API from config
func (cfg Config) Froze() API {
// TODO: cache frozen config
frozenConfig := &frozenConfig{
- sortMapKeys: cfg.SortMapKeys,
- indentionStep: cfg.IndentionStep,
- streamPool: make(chan *Stream, 16),
- iteratorPool: make(chan *Iterator, 16),
+ sortMapKeys: cfg.SortMapKeys,
+ indentionStep: cfg.IndentionStep,
+ objectFieldMustBeSimpleString: cfg.ObjectFieldMustBeSimpleString,
+ streamPool: make(chan *Stream, 16),
+ iteratorPool: make(chan *Iterator, 16),
}
atomic.StorePointer(&frozenConfig.decoderCache, unsafe.Pointer(&map[string]ValDecoder{}))
atomic.StorePointer(&frozenConfig.encoderCache, unsafe.Pointer(&map[string]ValEncoder{}))
@@ -83,10 +91,31 @@ func (cfg Config) Froze() API {
if cfg.UseNumber {
frozenConfig.useNumber()
}
+ if cfg.ValidateJsonRawMessage {
+ frozenConfig.validateJsonRawMessage()
+ }
frozenConfig.configBeforeFrozen = cfg
return frozenConfig
}
+func (cfg *frozenConfig) validateJsonRawMessage() {
+ encoder := &funcEncoder{func(ptr unsafe.Pointer, stream *Stream) {
+ rawMessage := *(*json.RawMessage)(ptr)
+ iter := cfg.BorrowIterator([]byte(rawMessage))
+ iter.Read()
+ if iter.Error != nil {
+ stream.WriteRaw("null")
+ } else {
+ cfg.ReturnIterator(iter)
+ stream.WriteRaw(string(rawMessage))
+ }
+ }, func(ptr unsafe.Pointer) bool {
+ return false
+ }}
+ cfg.addEncoderToCache(reflect.TypeOf((*json.RawMessage)(nil)).Elem(), encoder)
+ cfg.addEncoderToCache(reflect.TypeOf((*RawMessage)(nil)).Elem(), encoder)
+}
+
func (cfg *frozenConfig) useNumber() {
cfg.addDecoderToCache(reflect.TypeOf((*interface{})(nil)).Elem(), &funcDecoder{func(ptr unsafe.Pointer, iter *Iterator) {
if iter.WhatIsNext() == NumberValue {
@@ -104,7 +133,7 @@ func (cfg *frozenConfig) getTagKey() string {
return tagKey
}
-func (cfg *frozenConfig) registerExtension(extension Extension) {
+func (cfg *frozenConfig) RegisterExtension(extension Extension) {
cfg.extensions = append(cfg.extensions, extension)
}
@@ -310,3 +339,10 @@ func (cfg *frozenConfig) NewDecoder(reader io.Reader) *Decoder {
iter := Parse(cfg, reader, 512)
return &Decoder{iter}
}
+
+func (cfg *frozenConfig) Valid(data []byte) bool {
+ iter := cfg.BorrowIterator(data)
+ defer cfg.ReturnIterator(iter)
+ iter.Skip()
+ return iter.Error == nil
+}
diff --git a/vendor/github.com/json-iterator/go/feature_iter.go b/vendor/github.com/json-iterator/go/feature_iter.go
index 4357d69bac7a..95ae54fbfe4d 100644
--- a/vendor/github.com/json-iterator/go/feature_iter.go
+++ b/vendor/github.com/json-iterator/go/feature_iter.go
@@ -77,6 +77,7 @@ type Iterator struct {
captureStartedAt int
captured []byte
Error error
+ Attachment interface{} // open for customized decoder
}
// NewIterator creates an empty Iterator instance
@@ -167,7 +168,7 @@ func (iter *Iterator) isObjectEnd() bool {
if c == '}' {
return true
}
- iter.ReportError("isObjectEnd", "object ended prematurely")
+ iter.ReportError("isObjectEnd", "object ended prematurely, unexpected char "+string([]byte{c}))
return true
}
@@ -200,8 +201,22 @@ func (iter *Iterator) ReportError(operation string, msg string) {
if peekStart < 0 {
peekStart = 0
}
- iter.Error = fmt.Errorf("%s: %s, parsing %v ...%s... at %s", operation, msg, iter.head,
- string(iter.buf[peekStart:iter.head]), string(iter.buf[0:iter.tail]))
+ peekEnd := iter.head + 10
+ if peekEnd > iter.tail {
+ peekEnd = iter.tail
+ }
+ parsing := string(iter.buf[peekStart:peekEnd])
+ contextStart := iter.head - 50
+ if contextStart < 0 {
+ contextStart = 0
+ }
+ contextEnd := iter.head + 50
+ if contextEnd > iter.tail {
+ contextEnd = iter.tail
+ }
+ context := string(iter.buf[contextStart:contextEnd])
+ iter.Error = fmt.Errorf("%s: %s, error found in #%v byte of ...|%s|..., bigger context ...|%s|...",
+ operation, msg, iter.head-peekStart, parsing, context)
}
// CurrentBuffer gets current buffer as string for debugging purpose
@@ -210,7 +225,7 @@ func (iter *Iterator) CurrentBuffer() string {
if peekStart < 0 {
peekStart = 0
}
- return fmt.Sprintf("parsing %v ...|%s|... at %s", iter.head,
+ return fmt.Sprintf("parsing #%v byte, around ...|%s|..., whole buffer ...|%s|...", iter.head,
string(iter.buf[peekStart:iter.head]), string(iter.buf[0:iter.tail]))
}
diff --git a/vendor/github.com/json-iterator/go/feature_iter_array.go b/vendor/github.com/json-iterator/go/feature_iter_array.go
index cbc3ec8d16a4..6188cb4577ab 100644
--- a/vendor/github.com/json-iterator/go/feature_iter_array.go
+++ b/vendor/github.com/json-iterator/go/feature_iter_array.go
@@ -19,7 +19,7 @@ func (iter *Iterator) ReadArray() (ret bool) {
case ',':
return true
default:
- iter.ReportError("ReadArray", "expect [ or , or ] or n, but found: "+string([]byte{c}))
+ iter.ReportError("ReadArray", "expect [ or , or ] or n, but found "+string([]byte{c}))
return
}
}
@@ -42,7 +42,7 @@ func (iter *Iterator) ReadArrayCB(callback func(*Iterator) bool) (ret bool) {
c = iter.nextToken()
}
if c != ']' {
- iter.ReportError("ReadArrayCB", "expect ] in the end")
+ iter.ReportError("ReadArrayCB", "expect ] in the end, but found "+string([]byte{c}))
return false
}
return true
@@ -53,6 +53,6 @@ func (iter *Iterator) ReadArrayCB(callback func(*Iterator) bool) (ret bool) {
iter.skipThreeBytes('u', 'l', 'l')
return true // null
}
- iter.ReportError("ReadArrayCB", "expect [ or n, but found: "+string([]byte{c}))
+ iter.ReportError("ReadArrayCB", "expect [ or n, but found "+string([]byte{c}))
return false
}
diff --git a/vendor/github.com/json-iterator/go/feature_iter_int.go b/vendor/github.com/json-iterator/go/feature_iter_int.go
index 886879efdbb1..4781c63933cf 100644
--- a/vendor/github.com/json-iterator/go/feature_iter_int.go
+++ b/vendor/github.com/json-iterator/go/feature_iter_int.go
@@ -115,6 +115,7 @@ func (iter *Iterator) ReadUint32() (ret uint32) {
func (iter *Iterator) readUint32(c byte) (ret uint32) {
ind := intDigits[c]
if ind == 0 {
+ iter.assertInteger()
return 0 // single zero
}
if ind == invalidCharForNumber {
@@ -127,12 +128,14 @@ func (iter *Iterator) readUint32(c byte) (ret uint32) {
ind2 := intDigits[iter.buf[i]]
if ind2 == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value
}
i++
ind3 := intDigits[iter.buf[i]]
if ind3 == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value*10 + uint32(ind2)
}
//iter.head = i + 1
@@ -141,30 +144,35 @@ func (iter *Iterator) readUint32(c byte) (ret uint32) {
ind4 := intDigits[iter.buf[i]]
if ind4 == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value*100 + uint32(ind2)*10 + uint32(ind3)
}
i++
ind5 := intDigits[iter.buf[i]]
if ind5 == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value*1000 + uint32(ind2)*100 + uint32(ind3)*10 + uint32(ind4)
}
i++
ind6 := intDigits[iter.buf[i]]
if ind6 == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value*10000 + uint32(ind2)*1000 + uint32(ind3)*100 + uint32(ind4)*10 + uint32(ind5)
}
i++
ind7 := intDigits[iter.buf[i]]
if ind7 == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value*100000 + uint32(ind2)*10000 + uint32(ind3)*1000 + uint32(ind4)*100 + uint32(ind5)*10 + uint32(ind6)
}
i++
ind8 := intDigits[iter.buf[i]]
if ind8 == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value*1000000 + uint32(ind2)*100000 + uint32(ind3)*10000 + uint32(ind4)*1000 + uint32(ind5)*100 + uint32(ind6)*10 + uint32(ind7)
}
i++
@@ -172,6 +180,7 @@ func (iter *Iterator) readUint32(c byte) (ret uint32) {
value = value*10000000 + uint32(ind2)*1000000 + uint32(ind3)*100000 + uint32(ind4)*10000 + uint32(ind5)*1000 + uint32(ind6)*100 + uint32(ind7)*10 + uint32(ind8)
iter.head = i
if ind9 == invalidCharForNumber {
+ iter.assertInteger()
return value
}
}
@@ -180,6 +189,7 @@ func (iter *Iterator) readUint32(c byte) (ret uint32) {
ind = intDigits[iter.buf[i]]
if ind == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value
}
if value > uint32SafeToMultiply10 {
@@ -194,6 +204,7 @@ func (iter *Iterator) readUint32(c byte) (ret uint32) {
value = (value << 3) + (value << 1) + uint32(ind)
}
if !iter.loadMore() {
+ iter.assertInteger()
return value
}
}
@@ -226,6 +237,7 @@ func (iter *Iterator) ReadUint64() uint64 {
func (iter *Iterator) readUint64(c byte) (ret uint64) {
ind := intDigits[c]
if ind == 0 {
+ iter.assertInteger()
return 0 // single zero
}
if ind == invalidCharForNumber {
@@ -233,11 +245,73 @@ func (iter *Iterator) readUint64(c byte) (ret uint64) {
return
}
value := uint64(ind)
+ if iter.tail-iter.head > 10 {
+ i := iter.head
+ ind2 := intDigits[iter.buf[i]]
+ if ind2 == invalidCharForNumber {
+ iter.head = i
+ iter.assertInteger()
+ return value
+ }
+ i++
+ ind3 := intDigits[iter.buf[i]]
+ if ind3 == invalidCharForNumber {
+ iter.head = i
+ iter.assertInteger()
+ return value*10 + uint64(ind2)
+ }
+ //iter.head = i + 1
+ //value = value * 100 + uint32(ind2) * 10 + uint32(ind3)
+ i++
+ ind4 := intDigits[iter.buf[i]]
+ if ind4 == invalidCharForNumber {
+ iter.head = i
+ iter.assertInteger()
+ return value*100 + uint64(ind2)*10 + uint64(ind3)
+ }
+ i++
+ ind5 := intDigits[iter.buf[i]]
+ if ind5 == invalidCharForNumber {
+ iter.head = i
+ iter.assertInteger()
+ return value*1000 + uint64(ind2)*100 + uint64(ind3)*10 + uint64(ind4)
+ }
+ i++
+ ind6 := intDigits[iter.buf[i]]
+ if ind6 == invalidCharForNumber {
+ iter.head = i
+ iter.assertInteger()
+ return value*10000 + uint64(ind2)*1000 + uint64(ind3)*100 + uint64(ind4)*10 + uint64(ind5)
+ }
+ i++
+ ind7 := intDigits[iter.buf[i]]
+ if ind7 == invalidCharForNumber {
+ iter.head = i
+ iter.assertInteger()
+ return value*100000 + uint64(ind2)*10000 + uint64(ind3)*1000 + uint64(ind4)*100 + uint64(ind5)*10 + uint64(ind6)
+ }
+ i++
+ ind8 := intDigits[iter.buf[i]]
+ if ind8 == invalidCharForNumber {
+ iter.head = i
+ iter.assertInteger()
+ return value*1000000 + uint64(ind2)*100000 + uint64(ind3)*10000 + uint64(ind4)*1000 + uint64(ind5)*100 + uint64(ind6)*10 + uint64(ind7)
+ }
+ i++
+ ind9 := intDigits[iter.buf[i]]
+ value = value*10000000 + uint64(ind2)*1000000 + uint64(ind3)*100000 + uint64(ind4)*10000 + uint64(ind5)*1000 + uint64(ind6)*100 + uint64(ind7)*10 + uint64(ind8)
+ iter.head = i
+ if ind9 == invalidCharForNumber {
+ iter.assertInteger()
+ return value
+ }
+ }
for {
for i := iter.head; i < iter.tail; i++ {
ind = intDigits[iter.buf[i]]
if ind == invalidCharForNumber {
iter.head = i
+ iter.assertInteger()
return value
}
if value > uint64SafeToMultiple10 {
@@ -252,7 +326,14 @@ func (iter *Iterator) readUint64(c byte) (ret uint64) {
value = (value << 3) + (value << 1) + uint64(ind)
}
if !iter.loadMore() {
+ iter.assertInteger()
return value
}
}
}
+
+func (iter *Iterator) assertInteger() {
+ if iter.head < len(iter.buf) && iter.buf[iter.head] == '.' {
+ iter.ReportError("assertInteger", "can not decode float as int")
+ }
+}
diff --git a/vendor/github.com/json-iterator/go/feature_iter_object.go b/vendor/github.com/json-iterator/go/feature_iter_object.go
index 3bdb5576eed1..dfd91fa60d95 100644
--- a/vendor/github.com/json-iterator/go/feature_iter_object.go
+++ b/vendor/github.com/json-iterator/go/feature_iter_object.go
@@ -19,15 +19,33 @@ func (iter *Iterator) ReadObject() (ret string) {
c = iter.nextToken()
if c == '"' {
iter.unreadByte()
- return string(iter.readObjectFieldAsBytes())
+ if iter.cfg.objectFieldMustBeSimpleString {
+ return string(iter.readObjectFieldAsBytes())
+ } else {
+ field := iter.ReadString()
+ c = iter.nextToken()
+ if c != ':' {
+ iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
+ }
+ return field
+ }
}
if c == '}' {
return "" // end of object
}
- iter.ReportError("ReadObject", `expect " after {`)
+ iter.ReportError("ReadObject", `expect " after {, but found `+string([]byte{c}))
return
case ',':
- return string(iter.readObjectFieldAsBytes())
+ if iter.cfg.objectFieldMustBeSimpleString {
+ return string(iter.readObjectFieldAsBytes())
+ } else {
+ field := iter.ReadString()
+ c = iter.nextToken()
+ if c != ':' {
+ iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
+ }
+ return field
+ }
case '}':
return "" // end of object
default:
@@ -44,17 +62,34 @@ func (iter *Iterator) readFieldHash() int32 {
for i := iter.head; i < iter.tail; i++ {
// require ascii string and no escape
b := iter.buf[i]
- if 'A' <= b && b <= 'Z' {
- b += 'a' - 'A'
+ if !iter.cfg.objectFieldMustBeSimpleString && b == '\\' {
+ iter.head = i
+ for _, b := range iter.readStringSlowPath() {
+ if 'A' <= b && b <= 'Z' {
+ b += 'a' - 'A'
+ }
+ hash ^= int64(b)
+ hash *= 0x1000193
+ }
+ c = iter.nextToken()
+ if c != ':' {
+ iter.ReportError("readFieldHash", `expect :, but found `+string([]byte{c}))
+ return 0
+ }
+ return int32(hash)
}
if b == '"' {
iter.head = i + 1
c = iter.nextToken()
if c != ':' {
iter.ReportError("readFieldHash", `expect :, but found `+string([]byte{c}))
+ return 0
}
return int32(hash)
}
+ if 'A' <= b && b <= 'Z' {
+ b += 'a' - 'A'
+ }
hash ^= int64(b)
hash *= 0x1000193
}
@@ -80,18 +115,38 @@ func calcHash(str string) int32 {
// ReadObjectCB read object with callback, the key is ascii only and field name not copied
func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool {
c := iter.nextToken()
+ var fieldBytes []byte
+ var field string
if c == '{' {
c = iter.nextToken()
if c == '"' {
iter.unreadByte()
- field := iter.readObjectFieldAsBytes()
- if !callback(iter, *(*string)(unsafe.Pointer(&field))) {
+ if iter.cfg.objectFieldMustBeSimpleString {
+ fieldBytes = iter.readObjectFieldAsBytes()
+ field = *(*string)(unsafe.Pointer(&fieldBytes))
+ } else {
+ field = iter.ReadString()
+ c = iter.nextToken()
+ if c != ':' {
+ iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
+ }
+ }
+ if !callback(iter, field) {
return false
}
c = iter.nextToken()
for c == ',' {
- field = iter.readObjectFieldAsBytes()
- if !callback(iter, *(*string)(unsafe.Pointer(&field))) {
+ if iter.cfg.objectFieldMustBeSimpleString {
+ fieldBytes = iter.readObjectFieldAsBytes()
+ field = *(*string)(unsafe.Pointer(&fieldBytes))
+ } else {
+ field = iter.ReadString()
+ c = iter.nextToken()
+ if c != ':' {
+ iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
+ }
+ }
+ if !callback(iter, field) {
return false
}
c = iter.nextToken()
@@ -105,14 +160,14 @@ func (iter *Iterator) ReadObjectCB(callback func(*Iterator, string) bool) bool {
if c == '}' {
return true
}
- iter.ReportError("ReadObjectCB", `expect " after }`)
+ iter.ReportError("ReadObjectCB", `expect " after }, but found `+string([]byte{c}))
return false
}
if c == 'n' {
iter.skipThreeBytes('u', 'l', 'l')
return true // null
}
- iter.ReportError("ReadObjectCB", `expect { or n`)
+ iter.ReportError("ReadObjectCB", `expect { or n, but found `+string([]byte{c}))
return false
}
@@ -125,7 +180,7 @@ func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool {
iter.unreadByte()
field := iter.ReadString()
if iter.nextToken() != ':' {
- iter.ReportError("ReadMapCB", "expect : after object field")
+ iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c}))
return false
}
if !callback(iter, field) {
@@ -135,7 +190,7 @@ func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool {
for c == ',' {
field = iter.ReadString()
if iter.nextToken() != ':' {
- iter.ReportError("ReadMapCB", "expect : after object field")
+ iter.ReportError("ReadMapCB", "expect : after object field, but found "+string([]byte{c}))
return false
}
if !callback(iter, field) {
@@ -152,14 +207,14 @@ func (iter *Iterator) ReadMapCB(callback func(*Iterator, string) bool) bool {
if c == '}' {
return true
}
- iter.ReportError("ReadMapCB", `expect " after }`)
+ iter.ReportError("ReadMapCB", `expect " after }, but found `+string([]byte{c}))
return false
}
if c == 'n' {
iter.skipThreeBytes('u', 'l', 'l')
return true // null
}
- iter.ReportError("ReadMapCB", `expect { or n`)
+ iter.ReportError("ReadMapCB", `expect { or n, but found `+string([]byte{c}))
return false
}
@@ -176,7 +231,7 @@ func (iter *Iterator) readObjectStart() bool {
iter.skipThreeBytes('u', 'l', 'l')
return false
}
- iter.ReportError("readObjectStart", "expect { or n")
+ iter.ReportError("readObjectStart", "expect { or n, but found "+string([]byte{c}))
return false
}
@@ -192,7 +247,7 @@ func (iter *Iterator) readObjectFieldAsBytes() (ret []byte) {
}
}
if iter.buf[iter.head] != ':' {
- iter.ReportError("readObjectFieldAsBytes", "expect : after object field")
+ iter.ReportError("readObjectFieldAsBytes", "expect : after object field, but found "+string([]byte{iter.buf[iter.head]}))
return
}
iter.head++
diff --git a/vendor/github.com/json-iterator/go/feature_iter_skip.go b/vendor/github.com/json-iterator/go/feature_iter_skip.go
index b008d98c99a3..f58beb9137bf 100644
--- a/vendor/github.com/json-iterator/go/feature_iter_skip.go
+++ b/vendor/github.com/json-iterator/go/feature_iter_skip.go
@@ -25,7 +25,7 @@ func (iter *Iterator) ReadBool() (ret bool) {
iter.skipFourBytes('a', 'l', 's', 'e')
return false
}
- iter.ReportError("ReadBool", "expect t or f")
+ iter.ReportError("ReadBool", "expect t or f, but found "+string([]byte{c}))
return
}
@@ -59,7 +59,9 @@ func (iter *Iterator) stopCapture() []byte {
iter.captureStartedAt = -1
iter.captured = nil
if len(captured) == 0 {
- return remaining
+ copied := make([]byte, len(remaining))
+ copy(copied, remaining)
+ return copied
}
captured = append(captured, remaining...)
return captured
diff --git a/vendor/github.com/json-iterator/go/feature_iter_skip_sloppy.go b/vendor/github.com/json-iterator/go/feature_iter_skip_sloppy.go
index 047d58a4bc9e..8fcdc3b69bdf 100644
--- a/vendor/github.com/json-iterator/go/feature_iter_skip_sloppy.go
+++ b/vendor/github.com/json-iterator/go/feature_iter_skip_sloppy.go
@@ -1,4 +1,4 @@
-//+build jsoniter-sloppy
+//+build jsoniter_sloppy
package jsoniter
diff --git a/vendor/github.com/json-iterator/go/feature_iter_skip_strict.go b/vendor/github.com/json-iterator/go/feature_iter_skip_strict.go
index d26763825408..f67bc2e83151 100644
--- a/vendor/github.com/json-iterator/go/feature_iter_skip_strict.go
+++ b/vendor/github.com/json-iterator/go/feature_iter_skip_strict.go
@@ -1,4 +1,4 @@
-//+build !jsoniter-sloppy
+//+build !jsoniter_sloppy
package jsoniter
@@ -64,7 +64,7 @@ func (iter *Iterator) trySkipString() bool {
} else if c == '\\' {
return false
} else if c < ' ' {
- iter.ReportError("ReadString",
+ iter.ReportError("trySkipString",
fmt.Sprintf(`invalid control character found: %d`, c))
return true // already failed
}
diff --git a/vendor/github.com/json-iterator/go/feature_iter_string.go b/vendor/github.com/json-iterator/go/feature_iter_string.go
index b764600460e6..adc487ea8048 100644
--- a/vendor/github.com/json-iterator/go/feature_iter_string.go
+++ b/vendor/github.com/json-iterator/go/feature_iter_string.go
@@ -28,7 +28,7 @@ func (iter *Iterator) ReadString() (ret string) {
iter.skipThreeBytes('u', 'l', 'l')
return ""
}
- iter.ReportError("ReadString", `expects " or n`)
+ iter.ReportError("ReadString", `expects " or n, but found `+string([]byte{c}))
return
}
@@ -47,7 +47,7 @@ func (iter *Iterator) readStringSlowPath() (ret string) {
str = append(str, c)
}
}
- iter.ReportError("ReadString", "unexpected end of input")
+ iter.ReportError("readStringSlowPath", "unexpected end of input")
return
}
@@ -104,7 +104,7 @@ func (iter *Iterator) readEscapedChar(c byte, str []byte) []byte {
case 't':
str = append(str, '\t')
default:
- iter.ReportError("ReadString",
+ iter.ReportError("readEscapedChar",
`invalid escape char after \`)
return nil
}
@@ -139,7 +139,7 @@ func (iter *Iterator) ReadStringAsSlice() (ret []byte) {
}
return copied
}
- iter.ReportError("ReadString", `expects " or n`)
+ iter.ReportError("ReadStringAsSlice", `expects " or n, but found `+string([]byte{c}))
return
}
@@ -156,7 +156,7 @@ func (iter *Iterator) readU4() (ret rune) {
} else if c >= 'A' && c <= 'F' {
ret = ret*16 + rune(c-'A'+10)
} else {
- iter.ReportError("readU4", "expects 0~9 or a~f")
+ iter.ReportError("readU4", "expects 0~9 or a~f, but found "+string([]byte{c}))
return
}
}
diff --git a/vendor/github.com/json-iterator/go/feature_json_number.go b/vendor/github.com/json-iterator/go/feature_json_number.go
index 0439f6725283..e187b200a9cd 100644
--- a/vendor/github.com/json-iterator/go/feature_json_number.go
+++ b/vendor/github.com/json-iterator/go/feature_json_number.go
@@ -1,9 +1,25 @@
package jsoniter
-import "encoding/json"
+import (
+ "encoding/json"
+ "strconv"
+)
type Number string
+// String returns the literal text of the number.
+func (n Number) String() string { return string(n) }
+
+// Float64 returns the number as a float64.
+func (n Number) Float64() (float64, error) {
+ return strconv.ParseFloat(string(n), 64)
+}
+
+// Int64 returns the number as an int64.
+func (n Number) Int64() (int64, error) {
+ return strconv.ParseInt(string(n), 10, 64)
+}
+
func CastJsonNumber(val interface{}) (string, bool) {
switch typedVal := val.(type) {
case json.Number:
diff --git a/vendor/github.com/json-iterator/go/feature_pool.go b/vendor/github.com/json-iterator/go/feature_pool.go
index 73962bc6f6cc..52d38e685540 100644
--- a/vendor/github.com/json-iterator/go/feature_pool.go
+++ b/vendor/github.com/json-iterator/go/feature_pool.go
@@ -28,6 +28,7 @@ func (cfg *frozenConfig) BorrowStream(writer io.Writer) *Stream {
func (cfg *frozenConfig) ReturnStream(stream *Stream) {
stream.Error = nil
+ stream.Attachment = nil
select {
case cfg.streamPool <- stream:
return
@@ -48,6 +49,7 @@ func (cfg *frozenConfig) BorrowIterator(data []byte) *Iterator {
func (cfg *frozenConfig) ReturnIterator(iter *Iterator) {
iter.Error = nil
+ iter.Attachment = nil
select {
case cfg.iteratorPool <- iter:
return
diff --git a/vendor/github.com/json-iterator/go/feature_reflect.go b/vendor/github.com/json-iterator/go/feature_reflect.go
index 05d91b49c8b9..bed7764ed7d7 100644
--- a/vendor/github.com/json-iterator/go/feature_reflect.go
+++ b/vendor/github.com/json-iterator/go/feature_reflect.go
@@ -72,24 +72,24 @@ func init() {
textUnmarshalerType = reflect.TypeOf((*encoding.TextUnmarshaler)(nil)).Elem()
}
-type optionalDecoder struct {
- valueType reflect.Type
- valueDecoder ValDecoder
+type OptionalDecoder struct {
+ ValueType reflect.Type
+ ValueDecoder ValDecoder
}
-func (decoder *optionalDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) {
+func (decoder *OptionalDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) {
if iter.ReadNil() {
*((*unsafe.Pointer)(ptr)) = nil
} else {
if *((*unsafe.Pointer)(ptr)) == nil {
//pointer to null, we have to allocate memory to hold the value
- value := reflect.New(decoder.valueType)
+ value := reflect.New(decoder.ValueType)
newPtr := extractInterface(value.Interface()).word
- decoder.valueDecoder.Decode(newPtr, iter)
+ decoder.ValueDecoder.Decode(newPtr, iter)
*((*uintptr)(ptr)) = uintptr(newPtr)
} else {
//reuse existing instance
- decoder.valueDecoder.Decode(*((*unsafe.Pointer)(ptr)), iter)
+ decoder.ValueDecoder.Decode(*((*unsafe.Pointer)(ptr)), iter)
}
}
}
@@ -113,27 +113,45 @@ func (decoder *deferenceDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) {
}
}
-type optionalEncoder struct {
- valueEncoder ValEncoder
+type OptionalEncoder struct {
+ ValueEncoder ValEncoder
}
-func (encoder *optionalEncoder) Encode(ptr unsafe.Pointer, stream *Stream) {
+func (encoder *OptionalEncoder) Encode(ptr unsafe.Pointer, stream *Stream) {
if *((*unsafe.Pointer)(ptr)) == nil {
stream.WriteNil()
} else {
- encoder.valueEncoder.Encode(*((*unsafe.Pointer)(ptr)), stream)
+ encoder.ValueEncoder.Encode(*((*unsafe.Pointer)(ptr)), stream)
}
}
-func (encoder *optionalEncoder) EncodeInterface(val interface{}, stream *Stream) {
+func (encoder *OptionalEncoder) EncodeInterface(val interface{}, stream *Stream) {
WriteToStream(val, stream, encoder)
}
-func (encoder *optionalEncoder) IsEmpty(ptr unsafe.Pointer) bool {
+func (encoder *OptionalEncoder) IsEmpty(ptr unsafe.Pointer) bool {
+ return *((*unsafe.Pointer)(ptr)) == nil
+}
+
+type optionalMapEncoder struct {
+ valueEncoder ValEncoder
+}
+
+func (encoder *optionalMapEncoder) Encode(ptr unsafe.Pointer, stream *Stream) {
if *((*unsafe.Pointer)(ptr)) == nil {
- return true
+ stream.WriteNil()
+ } else {
+ encoder.valueEncoder.Encode(*((*unsafe.Pointer)(ptr)), stream)
}
- return false
+}
+
+func (encoder *optionalMapEncoder) EncodeInterface(val interface{}, stream *Stream) {
+ WriteToStream(val, stream, encoder)
+}
+
+func (encoder *optionalMapEncoder) IsEmpty(ptr unsafe.Pointer) bool {
+ p := *((*unsafe.Pointer)(ptr))
+ return p == nil || encoder.valueEncoder.IsEmpty(p)
}
type placeholderEncoder struct {
@@ -146,7 +164,7 @@ func (encoder *placeholderEncoder) Encode(ptr unsafe.Pointer, stream *Stream) {
}
func (encoder *placeholderEncoder) EncodeInterface(val interface{}, stream *Stream) {
- WriteToStream(val, stream, encoder)
+ encoder.getRealEncoder().EncodeInterface(val, stream)
}
func (encoder *placeholderEncoder) IsEmpty(ptr unsafe.Pointer) bool {
@@ -154,11 +172,11 @@ func (encoder *placeholderEncoder) IsEmpty(ptr unsafe.Pointer) bool {
}
func (encoder *placeholderEncoder) getRealEncoder() ValEncoder {
- for i := 0; i < 30; i++ {
+ for i := 0; i < 500; i++ {
realDecoder := encoder.cfg.getEncoderFromCache(encoder.cacheKey)
_, isPlaceholder := realDecoder.(*placeholderEncoder)
if isPlaceholder {
- time.Sleep(time.Second)
+ time.Sleep(10 * time.Millisecond)
} else {
return realDecoder
}
@@ -172,11 +190,11 @@ type placeholderDecoder struct {
}
func (decoder *placeholderDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) {
- for i := 0; i < 30; i++ {
+ for i := 0; i < 500; i++ {
realDecoder := decoder.cfg.getDecoderFromCache(decoder.cacheKey)
_, isPlaceholder := realDecoder.(*placeholderDecoder)
if isPlaceholder {
- time.Sleep(time.Second)
+ time.Sleep(10 * time.Millisecond)
} else {
realDecoder.Decode(ptr, iter)
return
@@ -256,7 +274,7 @@ func decoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) {
if decoder != nil {
return decoder, nil
}
- decoder = getTypeDecoderFromExtension(typ)
+ decoder = getTypeDecoderFromExtension(cfg, typ)
if decoder != nil {
cfg.addDecoderToCache(cacheKey, decoder)
return decoder, nil
@@ -267,6 +285,9 @@ func decoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error) {
for _, extension := range extensions {
decoder = extension.DecorateDecoder(typ, decoder)
}
+ for _, extension := range cfg.extensions {
+ decoder = extension.DecorateDecoder(typ, decoder)
+ }
cfg.addDecoderToCache(cacheKey, decoder)
return decoder, err
}
@@ -289,7 +310,7 @@ func createDecoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error
templateInterface := reflect.New(typ).Elem().Interface()
var decoder ValDecoder = &unmarshalerDecoder{extractInterface(templateInterface)}
if typ.Kind() == reflect.Ptr {
- decoder = &optionalDecoder{typ.Elem(), decoder}
+ decoder = &OptionalDecoder{typ.Elem(), decoder}
}
return decoder, nil
}
@@ -302,7 +323,7 @@ func createDecoderOfType(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error
templateInterface := reflect.New(typ).Elem().Interface()
var decoder ValDecoder = &textUnmarshalerDecoder{extractInterface(templateInterface)}
if typ.Kind() == reflect.Ptr {
- decoder = &optionalDecoder{typ.Elem(), decoder}
+ decoder = &OptionalDecoder{typ.Elem(), decoder}
}
return decoder, nil
}
@@ -423,7 +444,7 @@ func encoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) {
if encoder != nil {
return encoder, nil
}
- encoder = getTypeEncoderFromExtension(typ)
+ encoder = getTypeEncoderFromExtension(cfg, typ)
if encoder != nil {
cfg.addEncoderToCache(cacheKey, encoder)
return encoder, nil
@@ -434,6 +455,9 @@ func encoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) {
for _, extension := range extensions {
encoder = extension.DecorateEncoder(typ, encoder)
}
+ for _, extension := range cfg.extensions {
+ encoder = extension.DecorateEncoder(typ, encoder)
+ }
cfg.addEncoderToCache(cacheKey, encoder)
return encoder, err
}
@@ -452,7 +476,7 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
return &jsoniterNumberCodec{}, nil
}
if typ.Implements(marshalerType) {
- checkIsEmpty, err := createCheckIsEmpty(typ)
+ checkIsEmpty, err := createCheckIsEmpty(cfg, typ)
if err != nil {
return nil, err
}
@@ -462,12 +486,24 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
checkIsEmpty: checkIsEmpty,
}
if typ.Kind() == reflect.Ptr {
- encoder = &optionalEncoder{encoder}
+ encoder = &OptionalEncoder{encoder}
+ }
+ return encoder, nil
+ }
+ if reflect.PtrTo(typ).Implements(marshalerType) {
+ checkIsEmpty, err := createCheckIsEmpty(cfg, reflect.PtrTo(typ))
+ if err != nil {
+ return nil, err
+ }
+ templateInterface := reflect.New(typ).Interface()
+ var encoder ValEncoder = &marshalerEncoder{
+ templateInterface: extractInterface(templateInterface),
+ checkIsEmpty: checkIsEmpty,
}
return encoder, nil
}
if typ.Implements(textMarshalerType) {
- checkIsEmpty, err := createCheckIsEmpty(typ)
+ checkIsEmpty, err := createCheckIsEmpty(cfg, typ)
if err != nil {
return nil, err
}
@@ -477,7 +513,7 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
checkIsEmpty: checkIsEmpty,
}
if typ.Kind() == reflect.Ptr {
- encoder = &optionalEncoder{encoder}
+ encoder = &OptionalEncoder{encoder}
}
return encoder, nil
}
@@ -490,7 +526,7 @@ func createEncoderOfType(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error
return createEncoderOfSimpleType(cfg, typ)
}
-func createCheckIsEmpty(typ reflect.Type) (checkIsEmpty, error) {
+func createCheckIsEmpty(cfg *frozenConfig, typ reflect.Type) (checkIsEmpty, error) {
kind := typ.Kind()
switch kind {
case reflect.String:
@@ -535,9 +571,9 @@ func createCheckIsEmpty(typ reflect.Type) (checkIsEmpty, error) {
case reflect.Slice:
return &sliceEncoder{}, nil
case reflect.Map:
- return &mapEncoder{}, nil
+ return encoderOfMap(cfg, typ)
case reflect.Ptr:
- return &optionalEncoder{}, nil
+ return &OptionalEncoder{}, nil
default:
return nil, fmt.Errorf("unsupported type: %v", typ)
}
@@ -648,7 +684,7 @@ func decoderOfOptional(cfg *frozenConfig, typ reflect.Type) (ValDecoder, error)
if err != nil {
return nil, err
}
- return &optionalDecoder{elemType, decoder}, nil
+ return &OptionalDecoder{elemType, decoder}, nil
}
func encoderOfOptional(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) {
@@ -657,9 +693,9 @@ func encoderOfOptional(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error)
if err != nil {
return nil, err
}
- encoder := &optionalEncoder{elemEncoder}
+ encoder := &OptionalEncoder{elemEncoder}
if elemType.Kind() == reflect.Map {
- encoder = &optionalEncoder{encoder}
+ encoder = &OptionalEncoder{encoder}
}
return encoder, nil
}
diff --git a/vendor/github.com/json-iterator/go/feature_reflect_array.go b/vendor/github.com/json-iterator/go/feature_reflect_array.go
index e23f187b7c83..d661fb6fe561 100644
--- a/vendor/github.com/json-iterator/go/feature_reflect_array.go
+++ b/vendor/github.com/json-iterator/go/feature_reflect_array.go
@@ -21,7 +21,7 @@ func encoderOfArray(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) {
return nil, err
}
if typ.Elem().Kind() == reflect.Map {
- encoder = &optionalEncoder{encoder}
+ encoder = &OptionalEncoder{encoder}
}
return &arrayEncoder{typ, typ.Elem(), encoder}, nil
}
diff --git a/vendor/github.com/json-iterator/go/feature_reflect_extension.go b/vendor/github.com/json-iterator/go/feature_reflect_extension.go
index 3dd38299d49d..c129076bcc08 100644
--- a/vendor/github.com/json-iterator/go/feature_reflect_extension.go
+++ b/vendor/github.com/json-iterator/go/feature_reflect_extension.go
@@ -161,22 +161,31 @@ func RegisterExtension(extension Extension) {
extensions = append(extensions, extension)
}
-func getTypeDecoderFromExtension(typ reflect.Type) ValDecoder {
- decoder := _getTypeDecoderFromExtension(typ)
+func getTypeDecoderFromExtension(cfg *frozenConfig, typ reflect.Type) ValDecoder {
+ decoder := _getTypeDecoderFromExtension(cfg, typ)
if decoder != nil {
for _, extension := range extensions {
decoder = extension.DecorateDecoder(typ, decoder)
}
+ for _, extension := range cfg.extensions {
+ decoder = extension.DecorateDecoder(typ, decoder)
+ }
}
return decoder
}
-func _getTypeDecoderFromExtension(typ reflect.Type) ValDecoder {
+func _getTypeDecoderFromExtension(cfg *frozenConfig, typ reflect.Type) ValDecoder {
for _, extension := range extensions {
decoder := extension.CreateDecoder(typ)
if decoder != nil {
return decoder
}
}
+ for _, extension := range cfg.extensions {
+ decoder := extension.CreateDecoder(typ)
+ if decoder != nil {
+ return decoder
+ }
+ }
typeName := typ.String()
decoder := typeDecoders[typeName]
if decoder != nil {
@@ -185,29 +194,38 @@ func _getTypeDecoderFromExtension(typ reflect.Type) ValDecoder {
if typ.Kind() == reflect.Ptr {
decoder := typeDecoders[typ.Elem().String()]
if decoder != nil {
- return &optionalDecoder{typ.Elem(), decoder}
+ return &OptionalDecoder{typ.Elem(), decoder}
}
}
return nil
}
-func getTypeEncoderFromExtension(typ reflect.Type) ValEncoder {
- encoder := _getTypeEncoderFromExtension(typ)
+func getTypeEncoderFromExtension(cfg *frozenConfig, typ reflect.Type) ValEncoder {
+ encoder := _getTypeEncoderFromExtension(cfg, typ)
if encoder != nil {
for _, extension := range extensions {
encoder = extension.DecorateEncoder(typ, encoder)
}
+ for _, extension := range cfg.extensions {
+ encoder = extension.DecorateEncoder(typ, encoder)
+ }
}
return encoder
}
-func _getTypeEncoderFromExtension(typ reflect.Type) ValEncoder {
+func _getTypeEncoderFromExtension(cfg *frozenConfig, typ reflect.Type) ValEncoder {
for _, extension := range extensions {
encoder := extension.CreateEncoder(typ)
if encoder != nil {
return encoder
}
}
+ for _, extension := range cfg.extensions {
+ encoder := extension.CreateEncoder(typ)
+ if encoder != nil {
+ return encoder
+ }
+ }
typeName := typ.String()
encoder := typeEncoders[typeName]
if encoder != nil {
@@ -216,7 +234,7 @@ func _getTypeEncoderFromExtension(typ reflect.Type) ValEncoder {
if typ.Kind() == reflect.Ptr {
encoder := typeEncoders[typ.Elem().String()]
if encoder != nil {
- return &optionalEncoder{encoder}
+ return &OptionalEncoder{encoder}
}
}
return nil
@@ -254,7 +272,7 @@ func describeStruct(cfg *frozenConfig, typ reflect.Type) (*StructDescriptor, err
for _, binding := range structDescriptor.Fields {
binding.levels = append([]int{i}, binding.levels...)
omitempty := binding.Encoder.(*structFieldEncoder).omitempty
- binding.Encoder = &optionalEncoder{binding.Encoder}
+ binding.Encoder = &OptionalEncoder{binding.Encoder}
binding.Encoder = &structFieldEncoder{&field, binding.Encoder, omitempty}
binding.Decoder = &deferenceDecoder{field.Type.Elem(), binding.Decoder}
binding.Decoder = &structFieldDecoder{&field, binding.Decoder}
@@ -269,7 +287,7 @@ func describeStruct(cfg *frozenConfig, typ reflect.Type) (*StructDescriptor, err
if decoder == nil {
var err error
decoder, err = decoderOfType(cfg, field.Type)
- if err != nil {
+ if len(fieldNames) > 0 && err != nil {
return nil, err
}
}
@@ -277,12 +295,13 @@ func describeStruct(cfg *frozenConfig, typ reflect.Type) (*StructDescriptor, err
if encoder == nil {
var err error
encoder, err = encoderOfType(cfg, field.Type)
- if err != nil {
+ if len(fieldNames) > 0 && err != nil {
return nil, err
}
- // map is stored as pointer in the struct
- if field.Type.Kind() == reflect.Map {
- encoder = &optionalEncoder{encoder}
+ // map is stored as pointer in the struct,
+ // and treat nil or empty map as empty field
+ if encoder != nil && field.Type.Kind() == reflect.Map {
+ encoder = &optionalMapEncoder{encoder}
}
}
binding := &Binding{
@@ -323,6 +342,9 @@ func createStructDescriptor(cfg *frozenConfig, typ reflect.Type, bindings []*Bin
for _, extension := range extensions {
extension.UpdateStructDescriptor(structDescriptor)
}
+ for _, extension := range cfg.extensions {
+ extension.UpdateStructDescriptor(structDescriptor)
+ }
processTags(structDescriptor, cfg)
// merge normal & embedded bindings & sort with original order
allBindings := sortableBindings(append(embeddedBindings, structDescriptor.Fields...))
diff --git a/vendor/github.com/json-iterator/go/feature_reflect_native.go b/vendor/github.com/json-iterator/go/feature_reflect_native.go
index b37dab3d8a1c..95bd1e87cc5a 100644
--- a/vendor/github.com/json-iterator/go/feature_reflect_native.go
+++ b/vendor/github.com/json-iterator/go/feature_reflect_native.go
@@ -4,6 +4,7 @@ import (
"encoding"
"encoding/base64"
"encoding/json"
+ "reflect"
"unsafe"
)
@@ -31,7 +32,9 @@ type intCodec struct {
}
func (codec *intCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*int)(ptr)) = iter.ReadInt()
+ if !iter.ReadNil() {
+ *((*int)(ptr)) = iter.ReadInt()
+ }
}
func (codec *intCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -50,7 +53,9 @@ type uintptrCodec struct {
}
func (codec *uintptrCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*uintptr)(ptr)) = uintptr(iter.ReadUint64())
+ if !iter.ReadNil() {
+ *((*uintptr)(ptr)) = uintptr(iter.ReadUint64())
+ }
}
func (codec *uintptrCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -69,7 +74,9 @@ type int8Codec struct {
}
func (codec *int8Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*int8)(ptr)) = iter.ReadInt8()
+ if !iter.ReadNil() {
+ *((*int8)(ptr)) = iter.ReadInt8()
+ }
}
func (codec *int8Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -88,7 +95,9 @@ type int16Codec struct {
}
func (codec *int16Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*int16)(ptr)) = iter.ReadInt16()
+ if !iter.ReadNil() {
+ *((*int16)(ptr)) = iter.ReadInt16()
+ }
}
func (codec *int16Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -107,7 +116,9 @@ type int32Codec struct {
}
func (codec *int32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*int32)(ptr)) = iter.ReadInt32()
+ if !iter.ReadNil() {
+ *((*int32)(ptr)) = iter.ReadInt32()
+ }
}
func (codec *int32Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -126,7 +137,9 @@ type int64Codec struct {
}
func (codec *int64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*int64)(ptr)) = iter.ReadInt64()
+ if !iter.ReadNil() {
+ *((*int64)(ptr)) = iter.ReadInt64()
+ }
}
func (codec *int64Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -145,7 +158,10 @@ type uintCodec struct {
}
func (codec *uintCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*uint)(ptr)) = iter.ReadUint()
+ if !iter.ReadNil() {
+ *((*uint)(ptr)) = iter.ReadUint()
+ return
+ }
}
func (codec *uintCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -164,7 +180,9 @@ type uint8Codec struct {
}
func (codec *uint8Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*uint8)(ptr)) = iter.ReadUint8()
+ if !iter.ReadNil() {
+ *((*uint8)(ptr)) = iter.ReadUint8()
+ }
}
func (codec *uint8Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -183,7 +201,9 @@ type uint16Codec struct {
}
func (codec *uint16Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*uint16)(ptr)) = iter.ReadUint16()
+ if !iter.ReadNil() {
+ *((*uint16)(ptr)) = iter.ReadUint16()
+ }
}
func (codec *uint16Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -202,7 +222,9 @@ type uint32Codec struct {
}
func (codec *uint32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*uint32)(ptr)) = iter.ReadUint32()
+ if !iter.ReadNil() {
+ *((*uint32)(ptr)) = iter.ReadUint32()
+ }
}
func (codec *uint32Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -221,7 +243,9 @@ type uint64Codec struct {
}
func (codec *uint64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*uint64)(ptr)) = iter.ReadUint64()
+ if !iter.ReadNil() {
+ *((*uint64)(ptr)) = iter.ReadUint64()
+ }
}
func (codec *uint64Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -240,7 +264,9 @@ type float32Codec struct {
}
func (codec *float32Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*float32)(ptr)) = iter.ReadFloat32()
+ if !iter.ReadNil() {
+ *((*float32)(ptr)) = iter.ReadFloat32()
+ }
}
func (codec *float32Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -259,7 +285,9 @@ type float64Codec struct {
}
func (codec *float64Codec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*float64)(ptr)) = iter.ReadFloat64()
+ if !iter.ReadNil() {
+ *((*float64)(ptr)) = iter.ReadFloat64()
+ }
}
func (codec *float64Codec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -278,7 +306,9 @@ type boolCodec struct {
}
func (codec *boolCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*bool)(ptr)) = iter.ReadBool()
+ if !iter.ReadNil() {
+ *((*bool)(ptr)) = iter.ReadBool()
+ }
}
func (codec *boolCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -297,7 +327,42 @@ type emptyInterfaceCodec struct {
}
func (codec *emptyInterfaceCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*interface{})(ptr)) = iter.Read()
+ existing := *((*interface{})(ptr))
+
+ // Checking for both typed and untyped nil pointers.
+ if existing != nil &&
+ reflect.TypeOf(existing).Kind() == reflect.Ptr &&
+ !reflect.ValueOf(existing).IsNil() {
+
+ var ptrToExisting interface{}
+ for {
+ elem := reflect.ValueOf(existing).Elem()
+ if elem.Kind() != reflect.Ptr || elem.IsNil() {
+ break
+ }
+ ptrToExisting = existing
+ existing = elem.Interface()
+ }
+
+ if iter.ReadNil() {
+ if ptrToExisting != nil {
+ nilPtr := reflect.Zero(reflect.TypeOf(ptrToExisting).Elem())
+ reflect.ValueOf(ptrToExisting).Elem().Set(nilPtr)
+ } else {
+ *((*interface{})(ptr)) = nil
+ }
+ } else {
+ iter.ReadVal(existing)
+ }
+
+ return
+ }
+
+ if iter.ReadNil() {
+ *((*interface{})(ptr)) = nil
+ } else {
+ *((*interface{})(ptr)) = iter.Read()
+ }
}
func (codec *emptyInterfaceCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -309,7 +374,8 @@ func (codec *emptyInterfaceCodec) EncodeInterface(val interface{}, stream *Strea
}
func (codec *emptyInterfaceCodec) IsEmpty(ptr unsafe.Pointer) bool {
- return ptr == nil
+ emptyInterface := (*emptyInterface)(ptr)
+ return emptyInterface.typ == nil
}
type nonEmptyInterfaceCodec struct {
@@ -326,15 +392,20 @@ func (codec *nonEmptyInterfaceCodec) Decode(ptr unsafe.Pointer, iter *Iterator)
e.typ = nonEmptyInterface.itab.typ
e.word = nonEmptyInterface.word
iter.ReadVal(&i)
+ if e.word == nil {
+ nonEmptyInterface.itab = nil
+ }
nonEmptyInterface.word = e.word
}
func (codec *nonEmptyInterfaceCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
nonEmptyInterface := (*nonEmptyInterface)(ptr)
var i interface{}
- e := (*emptyInterface)(unsafe.Pointer(&i))
- e.typ = nonEmptyInterface.itab.typ
- e.word = nonEmptyInterface.word
+ if nonEmptyInterface.itab != nil {
+ e := (*emptyInterface)(unsafe.Pointer(&i))
+ e.typ = nonEmptyInterface.itab.typ
+ e.word = nonEmptyInterface.word
+ }
stream.WriteVal(i)
}
@@ -370,7 +441,15 @@ type jsonNumberCodec struct {
}
func (codec *jsonNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*json.Number)(ptr)) = json.Number([]byte(iter.readNumberAsString()))
+ switch iter.WhatIsNext() {
+ case StringValue:
+ *((*json.Number)(ptr)) = json.Number(iter.ReadString())
+ case NilValue:
+ iter.skipFourBytes('n', 'u', 'l', 'l')
+ *((*json.Number)(ptr)) = ""
+ default:
+ *((*json.Number)(ptr)) = json.Number([]byte(iter.readNumberAsString()))
+ }
}
func (codec *jsonNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -389,7 +468,15 @@ type jsoniterNumberCodec struct {
}
func (codec *jsoniterNumberCodec) Decode(ptr unsafe.Pointer, iter *Iterator) {
- *((*Number)(ptr)) = Number([]byte(iter.readNumberAsString()))
+ switch iter.WhatIsNext() {
+ case StringValue:
+ *((*Number)(ptr)) = Number(iter.ReadString())
+ case NilValue:
+ iter.skipFourBytes('n', 'u', 'l', 'l')
+ *((*Number)(ptr)) = ""
+ default:
+ *((*Number)(ptr)) = Number([]byte(iter.readNumberAsString()))
+ }
}
func (codec *jsoniterNumberCodec) Encode(ptr unsafe.Pointer, stream *Stream) {
@@ -521,7 +608,7 @@ type stringModeNumberDecoder struct {
func (decoder *stringModeNumberDecoder) Decode(ptr unsafe.Pointer, iter *Iterator) {
c := iter.nextToken()
if c != '"' {
- iter.ReportError("stringModeNumberDecoder", `expect "`)
+ iter.ReportError("stringModeNumberDecoder", `expect ", but found `+string([]byte{c}))
return
}
decoder.elemDecoder.Decode(ptr, iter)
@@ -530,7 +617,7 @@ func (decoder *stringModeNumberDecoder) Decode(ptr unsafe.Pointer, iter *Iterato
}
c = iter.readByte()
if c != '"' {
- iter.ReportError("stringModeNumberDecoder", `expect "`)
+ iter.ReportError("stringModeNumberDecoder", `expect ", but found `+string([]byte{c}))
return
}
}
@@ -595,7 +682,12 @@ func (encoder *marshalerEncoder) Encode(ptr unsafe.Pointer, stream *Stream) {
templateInterface := encoder.templateInterface
templateInterface.word = ptr
realInterface := (*interface{})(unsafe.Pointer(&templateInterface))
- marshaler := (*realInterface).(json.Marshaler)
+ marshaler, ok := (*realInterface).(json.Marshaler)
+ if !ok {
+ stream.WriteVal(nil)
+ return
+ }
+
bytes, err := marshaler.MarshalJSON()
if err != nil {
stream.Error = err
diff --git a/vendor/github.com/json-iterator/go/feature_reflect_slice.go b/vendor/github.com/json-iterator/go/feature_reflect_slice.go
index 7377eec7b3bd..51a8daecfba2 100644
--- a/vendor/github.com/json-iterator/go/feature_reflect_slice.go
+++ b/vendor/github.com/json-iterator/go/feature_reflect_slice.go
@@ -21,7 +21,7 @@ func encoderOfSlice(cfg *frozenConfig, typ reflect.Type) (ValEncoder, error) {
return nil, err
}
if typ.Elem().Kind() == reflect.Map {
- encoder = &optionalEncoder{encoder}
+ encoder = &OptionalEncoder{encoder}
}
return &sliceEncoder{typ, typ.Elem(), encoder}, nil
}
@@ -127,12 +127,10 @@ func growOne(slice *sliceHeader, sliceType reflect.Type, elementType reflect.Typ
newVal := reflect.MakeSlice(sliceType, newLen, newCap)
dst := unsafe.Pointer(newVal.Pointer())
// copy old array into new array
- originalBytesCount := uintptr(slice.Len) * elementType.Size()
- srcPtr := (*[1 << 30]byte)(slice.Data)
- dstPtr := (*[1 << 30]byte)(dst)
- for i := uintptr(0); i < originalBytesCount; i++ {
- dstPtr[i] = srcPtr[i]
- }
+ originalBytesCount := slice.Len * int(elementType.Size())
+ srcSliceHeader := (unsafe.Pointer)(&sliceHeader{slice.Data, originalBytesCount, originalBytesCount})
+ dstSliceHeader := (unsafe.Pointer)(&sliceHeader{dst, originalBytesCount, originalBytesCount})
+ copy(*(*[]byte)(dstSliceHeader), *(*[]byte)(srcSliceHeader))
slice.Data = dst
slice.Len = newLen
slice.Cap = newCap
diff --git a/vendor/github.com/json-iterator/go/feature_reflect_struct_decoder.go b/vendor/github.com/json-iterator/go/feature_reflect_struct_decoder.go
index b3417fd73a7f..e6ced77c22e8 100644
--- a/vendor/github.com/json-iterator/go/feature_reflect_struct_decoder.go
+++ b/vendor/github.com/json-iterator/go/feature_reflect_struct_decoder.go
@@ -427,8 +427,18 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator)
if !iter.readObjectStart() {
return
}
- fieldBytes := iter.readObjectFieldAsBytes()
- field := *(*string)(unsafe.Pointer(&fieldBytes))
+ var fieldBytes []byte
+ var field string
+ if iter.cfg.objectFieldMustBeSimpleString {
+ fieldBytes = iter.readObjectFieldAsBytes()
+ field = *(*string)(unsafe.Pointer(&fieldBytes))
+ } else {
+ field = iter.ReadString()
+ c := iter.nextToken()
+ if c != ':' {
+ iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
+ }
+ }
fieldDecoder := decoder.fields[strings.ToLower(field)]
if fieldDecoder == nil {
iter.Skip()
@@ -436,8 +446,16 @@ func (decoder *generalStructDecoder) Decode(ptr unsafe.Pointer, iter *Iterator)
fieldDecoder.Decode(ptr, iter)
}
for iter.nextToken() == ',' {
- fieldBytes = iter.readObjectFieldAsBytes()
- field = *(*string)(unsafe.Pointer(&fieldBytes))
+ if iter.cfg.objectFieldMustBeSimpleString {
+ fieldBytes := iter.readObjectFieldAsBytes()
+ field = *(*string)(unsafe.Pointer(&fieldBytes))
+ } else {
+ field = iter.ReadString()
+ c := iter.nextToken()
+ if c != ':' {
+ iter.ReportError("ReadObject", "expect : after object field, but found "+string([]byte{c}))
+ }
+ }
fieldDecoder = decoder.fields[strings.ToLower(field)]
if fieldDecoder == nil {
iter.Skip()
diff --git a/vendor/github.com/json-iterator/go/feature_stream.go b/vendor/github.com/json-iterator/go/feature_stream.go
index 9c8470a03ae3..97355eb5b70c 100644
--- a/vendor/github.com/json-iterator/go/feature_stream.go
+++ b/vendor/github.com/json-iterator/go/feature_stream.go
@@ -4,15 +4,16 @@ import (
"io"
)
-// Stream is a io.Writer like object, with JSON specific write functions.
+// stream is a io.Writer like object, with JSON specific write functions.
// Error is not returned as return value, but stored as Error member on this stream instance.
type Stream struct {
- cfg *frozenConfig
- out io.Writer
- buf []byte
- n int
- Error error
- indention int
+ cfg *frozenConfig
+ out io.Writer
+ buf []byte
+ n int
+ Error error
+ indention int
+ Attachment interface{} // open for customized encoder
}
// NewStream create new stream instance.
@@ -191,6 +192,9 @@ func (stream *Stream) ensure(minimal int) {
func (stream *Stream) growAtLeast(minimal int) {
if stream.out != nil {
stream.Flush()
+ if stream.Available() >= minimal {
+ return
+ }
}
toGrow := len(stream.buf)
if toGrow < minimal {
@@ -280,8 +284,7 @@ func (stream *Stream) WriteArrayStart() {
// WriteEmptyArray write []
func (stream *Stream) WriteEmptyArray() {
- stream.writeByte('[')
- stream.writeByte(']')
+ stream.writeTwoBytes('[', ']')
}
// WriteArrayEnd write ] with possible indention
diff --git a/vendor/github.com/juju/ratelimit/LICENSE b/vendor/github.com/juju/ratelimit/LICENSE
deleted file mode 100644
index ade9307b390c..000000000000
--- a/vendor/github.com/juju/ratelimit/LICENSE
+++ /dev/null
@@ -1,191 +0,0 @@
-All files in this repository are licensed as follows. If you contribute
-to this repository, it is assumed that you license your contribution
-under the same license unless you state otherwise.
-
-All files Copyright (C) 2015 Canonical Ltd. unless otherwise specified in the file.
-
-This software is licensed under the LGPLv3, included below.
-
-As a special exception to the GNU Lesser General Public License version 3
-("LGPL3"), the copyright holders of this Library give you permission to
-convey to a third party a Combined Work that links statically or dynamically
-to this Library without providing any Minimal Corresponding Source or
-Minimal Application Code as set out in 4d or providing the installation
-information set out in section 4e, provided that you comply with the other
-provisions of LGPL3 and provided that you meet, for the Application the
-terms and conditions of the license(s) which apply to the Application.
-
-Except as stated in this special exception, the provisions of LGPL3 will
-continue to comply in full to this Library. If you modify this Library, you
-may apply this exception to your version of this Library, but you are not
-obliged to do so. If you do not wish to do so, delete this exception
-statement from your version. This exception does not (and cannot) modify any
-license terms which apply to the Application, with which you must still
-comply.
-
-
- GNU LESSER GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc.
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-
- This version of the GNU Lesser General Public License incorporates
-the terms and conditions of version 3 of the GNU General Public
-License, supplemented by the additional permissions listed below.
-
- 0. Additional Definitions.
-
- As used herein, "this License" refers to version 3 of the GNU Lesser
-General Public License, and the "GNU GPL" refers to version 3 of the GNU
-General Public License.
-
- "The Library" refers to a covered work governed by this License,
-other than an Application or a Combined Work as defined below.
-
- An "Application" is any work that makes use of an interface provided
-by the Library, but which is not otherwise based on the Library.
-Defining a subclass of a class defined by the Library is deemed a mode
-of using an interface provided by the Library.
-
- A "Combined Work" is a work produced by combining or linking an
-Application with the Library. The particular version of the Library
-with which the Combined Work was made is also called the "Linked
-Version".
-
- The "Minimal Corresponding Source" for a Combined Work means the
-Corresponding Source for the Combined Work, excluding any source code
-for portions of the Combined Work that, considered in isolation, are
-based on the Application, and not on the Linked Version.
-
- The "Corresponding Application Code" for a Combined Work means the
-object code and/or source code for the Application, including any data
-and utility programs needed for reproducing the Combined Work from the
-Application, but excluding the System Libraries of the Combined Work.
-
- 1. Exception to Section 3 of the GNU GPL.
-
- You may convey a covered work under sections 3 and 4 of this License
-without being bound by section 3 of the GNU GPL.
-
- 2. Conveying Modified Versions.
-
- If you modify a copy of the Library, and, in your modifications, a
-facility refers to a function or data to be supplied by an Application
-that uses the facility (other than as an argument passed when the
-facility is invoked), then you may convey a copy of the modified
-version:
-
- a) under this License, provided that you make a good faith effort to
- ensure that, in the event an Application does not supply the
- function or data, the facility still operates, and performs
- whatever part of its purpose remains meaningful, or
-
- b) under the GNU GPL, with none of the additional permissions of
- this License applicable to that copy.
-
- 3. Object Code Incorporating Material from Library Header Files.
-
- The object code form of an Application may incorporate material from
-a header file that is part of the Library. You may convey such object
-code under terms of your choice, provided that, if the incorporated
-material is not limited to numerical parameters, data structure
-layouts and accessors, or small macros, inline functions and templates
-(ten or fewer lines in length), you do both of the following:
-
- a) Give prominent notice with each copy of the object code that the
- Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the object code with a copy of the GNU GPL and this license
- document.
-
- 4. Combined Works.
-
- You may convey a Combined Work under terms of your choice that,
-taken together, effectively do not restrict modification of the
-portions of the Library contained in the Combined Work and reverse
-engineering for debugging such modifications, if you also do each of
-the following:
-
- a) Give prominent notice with each copy of the Combined Work that
- the Library is used in it and that the Library and its use are
- covered by this License.
-
- b) Accompany the Combined Work with a copy of the GNU GPL and this license
- document.
-
- c) For a Combined Work that displays copyright notices during
- execution, include the copyright notice for the Library among
- these notices, as well as a reference directing the user to the
- copies of the GNU GPL and this license document.
-
- d) Do one of the following:
-
- 0) Convey the Minimal Corresponding Source under the terms of this
- License, and the Corresponding Application Code in a form
- suitable for, and under terms that permit, the user to
- recombine or relink the Application with a modified version of
- the Linked Version to produce a modified Combined Work, in the
- manner specified by section 6 of the GNU GPL for conveying
- Corresponding Source.
-
- 1) Use a suitable shared library mechanism for linking with the
- Library. A suitable mechanism is one that (a) uses at run time
- a copy of the Library already present on the user's computer
- system, and (b) will operate properly with a modified version
- of the Library that is interface-compatible with the Linked
- Version.
-
- e) Provide Installation Information, but only if you would otherwise
- be required to provide such information under section 6 of the
- GNU GPL, and only to the extent that such information is
- necessary to install and execute a modified version of the
- Combined Work produced by recombining or relinking the
- Application with a modified version of the Linked Version. (If
- you use option 4d0, the Installation Information must accompany
- the Minimal Corresponding Source and Corresponding Application
- Code. If you use option 4d1, you must provide the Installation
- Information in the manner specified by section 6 of the GNU GPL
- for conveying Corresponding Source.)
-
- 5. Combined Libraries.
-
- You may place library facilities that are a work based on the
-Library side by side in a single library together with other library
-facilities that are not Applications and are not covered by this
-License, and convey such a combined library under terms of your
-choice, if you do both of the following:
-
- a) Accompany the combined library with a copy of the same work based
- on the Library, uncombined with any other library facilities,
- conveyed under the terms of this License.
-
- b) Give prominent notice with the combined library that part of it
- is a work based on the Library, and explaining where to find the
- accompanying uncombined form of the same work.
-
- 6. Revised Versions of the GNU Lesser General Public License.
-
- The Free Software Foundation may publish revised and/or new versions
-of the GNU Lesser General Public License from time to time. Such new
-versions will be similar in spirit to the present version, but may
-differ in detail to address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Library as you received it specifies that a certain numbered version
-of the GNU Lesser General Public License "or any later version"
-applies to it, you have the option of following the terms and
-conditions either of that published version or of any later version
-published by the Free Software Foundation. If the Library as you
-received it does not specify a version number of the GNU Lesser
-General Public License, you may choose any version of the GNU Lesser
-General Public License ever published by the Free Software Foundation.
-
- If the Library as you received it specifies that a proxy can decide
-whether future versions of the GNU Lesser General Public License shall
-apply, that proxy's public statement of acceptance of any version is
-permanent authorization for you to choose that version for the
-Library.
diff --git a/vendor/github.com/juju/ratelimit/README.md b/vendor/github.com/juju/ratelimit/README.md
deleted file mode 100644
index a0fdfe2b128a..000000000000
--- a/vendor/github.com/juju/ratelimit/README.md
+++ /dev/null
@@ -1,117 +0,0 @@
-# ratelimit
---
- import "github.com/juju/ratelimit"
-
-The ratelimit package provides an efficient token bucket implementation. See
-http://en.wikipedia.org/wiki/Token_bucket.
-
-## Usage
-
-#### func Reader
-
-```go
-func Reader(r io.Reader, bucket *Bucket) io.Reader
-```
-Reader returns a reader that is rate limited by the given token bucket. Each
-token in the bucket represents one byte.
-
-#### func Writer
-
-```go
-func Writer(w io.Writer, bucket *Bucket) io.Writer
-```
-Writer returns a writer that is rate limited by the given token bucket. Each
-token in the bucket represents one byte.
-
-#### type Bucket
-
-```go
-type Bucket struct {
-}
-```
-
-Bucket represents a token bucket that fills at a predetermined rate. Methods on
-Bucket may be called concurrently.
-
-#### func NewBucket
-
-```go
-func NewBucket(fillInterval time.Duration, capacity int64) *Bucket
-```
-NewBucket returns a new token bucket that fills at the rate of one token every
-fillInterval, up to the given maximum capacity. Both arguments must be positive.
-The bucket is initially full.
-
-#### func NewBucketWithQuantum
-
-```go
-func NewBucketWithQuantum(fillInterval time.Duration, capacity, quantum int64) *Bucket
-```
-NewBucketWithQuantum is similar to NewBucket, but allows the specification of
-the quantum size - quantum tokens are added every fillInterval.
-
-#### func NewBucketWithRate
-
-```go
-func NewBucketWithRate(rate float64, capacity int64) *Bucket
-```
-NewBucketWithRate returns a token bucket that fills the bucket at the rate of
-rate tokens per second up to the given maximum capacity. Because of limited
-clock resolution, at high rates, the actual rate may be up to 1% different from
-the specified rate.
-
-#### func (*Bucket) Rate
-
-```go
-func (tb *Bucket) Rate() float64
-```
-Rate returns the fill rate of the bucket, in tokens per second.
-
-#### func (*Bucket) Take
-
-```go
-func (tb *Bucket) Take(count int64) time.Duration
-```
-Take takes count tokens from the bucket without blocking. It returns the time
-that the caller should wait until the tokens are actually available.
-
-Note that if the request is irrevocable - there is no way to return tokens to
-the bucket once this method commits us to taking them.
-
-#### func (*Bucket) TakeAvailable
-
-```go
-func (tb *Bucket) TakeAvailable(count int64) int64
-```
-TakeAvailable takes up to count immediately available tokens from the bucket. It
-returns the number of tokens removed, or zero if there are no available tokens.
-It does not block.
-
-#### func (*Bucket) TakeMaxDuration
-
-```go
-func (tb *Bucket) TakeMaxDuration(count int64, maxWait time.Duration) (time.Duration, bool)
-```
-TakeMaxDuration is like Take, except that it will only take tokens from the
-bucket if the wait time for the tokens is no greater than maxWait.
-
-If it would take longer than maxWait for the tokens to become available, it does
-nothing and reports false, otherwise it returns the time that the caller should
-wait until the tokens are actually available, and reports true.
-
-#### func (*Bucket) Wait
-
-```go
-func (tb *Bucket) Wait(count int64)
-```
-Wait takes count tokens from the bucket, waiting until they are available.
-
-#### func (*Bucket) WaitMaxDuration
-
-```go
-func (tb *Bucket) WaitMaxDuration(count int64, maxWait time.Duration) bool
-```
-WaitMaxDuration is like Wait except that it will only take tokens from the
-bucket if it needs to wait for no greater than maxWait. It reports whether any
-tokens have been removed from the bucket If no tokens have been removed, it
-returns immediately.
diff --git a/vendor/github.com/juju/ratelimit/ratelimit.go b/vendor/github.com/juju/ratelimit/ratelimit.go
deleted file mode 100644
index 1c3f25b2ec45..000000000000
--- a/vendor/github.com/juju/ratelimit/ratelimit.go
+++ /dev/null
@@ -1,284 +0,0 @@
-// Copyright 2014 Canonical Ltd.
-// Licensed under the LGPLv3 with static-linking exception.
-// See LICENCE file for details.
-
-// Package ratelimit provides an efficient token bucket implementation
-// that can be used to limit the rate of arbitrary things.
-// See http://en.wikipedia.org/wiki/Token_bucket.
-package ratelimit
-
-import (
- "math"
- "strconv"
- "sync"
- "time"
-)
-
-// Bucket represents a token bucket that fills at a predetermined rate.
-// Methods on Bucket may be called concurrently.
-type Bucket struct {
- startTime time.Time
- capacity int64
- quantum int64
- fillInterval time.Duration
- clock Clock
-
- // The mutex guards the fields following it.
- mu sync.Mutex
-
- // avail holds the number of available tokens
- // in the bucket, as of availTick ticks from startTime.
- // It will be negative when there are consumers
- // waiting for tokens.
- avail int64
- availTick int64
-}
-
-// Clock is used to inject testable fakes.
-type Clock interface {
- Now() time.Time
- Sleep(d time.Duration)
-}
-
-// realClock implements Clock in terms of standard time functions.
-type realClock struct{}
-
-// Now is identical to time.Now.
-func (realClock) Now() time.Time {
- return time.Now()
-}
-
-// Sleep is identical to time.Sleep.
-func (realClock) Sleep(d time.Duration) {
- time.Sleep(d)
-}
-
-// NewBucket returns a new token bucket that fills at the
-// rate of one token every fillInterval, up to the given
-// maximum capacity. Both arguments must be
-// positive. The bucket is initially full.
-func NewBucket(fillInterval time.Duration, capacity int64) *Bucket {
- return NewBucketWithClock(fillInterval, capacity, realClock{})
-}
-
-// NewBucketWithClock is identical to NewBucket but injects a testable clock
-// interface.
-func NewBucketWithClock(fillInterval time.Duration, capacity int64, clock Clock) *Bucket {
- return NewBucketWithQuantumAndClock(fillInterval, capacity, 1, clock)
-}
-
-// rateMargin specifes the allowed variance of actual
-// rate from specified rate. 1% seems reasonable.
-const rateMargin = 0.01
-
-// NewBucketWithRate returns a token bucket that fills the bucket
-// at the rate of rate tokens per second up to the given
-// maximum capacity. Because of limited clock resolution,
-// at high rates, the actual rate may be up to 1% different from the
-// specified rate.
-func NewBucketWithRate(rate float64, capacity int64) *Bucket {
- return NewBucketWithRateAndClock(rate, capacity, realClock{})
-}
-
-// NewBucketWithRateAndClock is identical to NewBucketWithRate but injects a
-// testable clock interface.
-func NewBucketWithRateAndClock(rate float64, capacity int64, clock Clock) *Bucket {
- for quantum := int64(1); quantum < 1<<50; quantum = nextQuantum(quantum) {
- fillInterval := time.Duration(1e9 * float64(quantum) / rate)
- if fillInterval <= 0 {
- continue
- }
- tb := NewBucketWithQuantumAndClock(fillInterval, capacity, quantum, clock)
- if diff := math.Abs(tb.Rate() - rate); diff/rate <= rateMargin {
- return tb
- }
- }
- panic("cannot find suitable quantum for " + strconv.FormatFloat(rate, 'g', -1, 64))
-}
-
-// nextQuantum returns the next quantum to try after q.
-// We grow the quantum exponentially, but slowly, so we
-// get a good fit in the lower numbers.
-func nextQuantum(q int64) int64 {
- q1 := q * 11 / 10
- if q1 == q {
- q1++
- }
- return q1
-}
-
-// NewBucketWithQuantum is similar to NewBucket, but allows
-// the specification of the quantum size - quantum tokens
-// are added every fillInterval.
-func NewBucketWithQuantum(fillInterval time.Duration, capacity, quantum int64) *Bucket {
- return NewBucketWithQuantumAndClock(fillInterval, capacity, quantum, realClock{})
-}
-
-// NewBucketWithQuantumAndClock is identical to NewBucketWithQuantum but injects
-// a testable clock interface.
-func NewBucketWithQuantumAndClock(fillInterval time.Duration, capacity, quantum int64, clock Clock) *Bucket {
- if fillInterval <= 0 {
- panic("token bucket fill interval is not > 0")
- }
- if capacity <= 0 {
- panic("token bucket capacity is not > 0")
- }
- if quantum <= 0 {
- panic("token bucket quantum is not > 0")
- }
- return &Bucket{
- clock: clock,
- startTime: clock.Now(),
- capacity: capacity,
- quantum: quantum,
- avail: capacity,
- fillInterval: fillInterval,
- }
-}
-
-// Wait takes count tokens from the bucket, waiting until they are
-// available.
-func (tb *Bucket) Wait(count int64) {
- if d := tb.Take(count); d > 0 {
- tb.clock.Sleep(d)
- }
-}
-
-// WaitMaxDuration is like Wait except that it will
-// only take tokens from the bucket if it needs to wait
-// for no greater than maxWait. It reports whether
-// any tokens have been removed from the bucket
-// If no tokens have been removed, it returns immediately.
-func (tb *Bucket) WaitMaxDuration(count int64, maxWait time.Duration) bool {
- d, ok := tb.TakeMaxDuration(count, maxWait)
- if d > 0 {
- tb.clock.Sleep(d)
- }
- return ok
-}
-
-const infinityDuration time.Duration = 0x7fffffffffffffff
-
-// Take takes count tokens from the bucket without blocking. It returns
-// the time that the caller should wait until the tokens are actually
-// available.
-//
-// Note that if the request is irrevocable - there is no way to return
-// tokens to the bucket once this method commits us to taking them.
-func (tb *Bucket) Take(count int64) time.Duration {
- d, _ := tb.take(tb.clock.Now(), count, infinityDuration)
- return d
-}
-
-// TakeMaxDuration is like Take, except that
-// it will only take tokens from the bucket if the wait
-// time for the tokens is no greater than maxWait.
-//
-// If it would take longer than maxWait for the tokens
-// to become available, it does nothing and reports false,
-// otherwise it returns the time that the caller should
-// wait until the tokens are actually available, and reports
-// true.
-func (tb *Bucket) TakeMaxDuration(count int64, maxWait time.Duration) (time.Duration, bool) {
- return tb.take(tb.clock.Now(), count, maxWait)
-}
-
-// TakeAvailable takes up to count immediately available tokens from the
-// bucket. It returns the number of tokens removed, or zero if there are
-// no available tokens. It does not block.
-func (tb *Bucket) TakeAvailable(count int64) int64 {
- return tb.takeAvailable(tb.clock.Now(), count)
-}
-
-// takeAvailable is the internal version of TakeAvailable - it takes the
-// current time as an argument to enable easy testing.
-func (tb *Bucket) takeAvailable(now time.Time, count int64) int64 {
- if count <= 0 {
- return 0
- }
- tb.mu.Lock()
- defer tb.mu.Unlock()
-
- tb.adjust(now)
- if tb.avail <= 0 {
- return 0
- }
- if count > tb.avail {
- count = tb.avail
- }
- tb.avail -= count
- return count
-}
-
-// Available returns the number of available tokens. It will be negative
-// when there are consumers waiting for tokens. Note that if this
-// returns greater than zero, it does not guarantee that calls that take
-// tokens from the buffer will succeed, as the number of available
-// tokens could have changed in the meantime. This method is intended
-// primarily for metrics reporting and debugging.
-func (tb *Bucket) Available() int64 {
- return tb.available(tb.clock.Now())
-}
-
-// available is the internal version of available - it takes the current time as
-// an argument to enable easy testing.
-func (tb *Bucket) available(now time.Time) int64 {
- tb.mu.Lock()
- defer tb.mu.Unlock()
- tb.adjust(now)
- return tb.avail
-}
-
-// Capacity returns the capacity that the bucket was created with.
-func (tb *Bucket) Capacity() int64 {
- return tb.capacity
-}
-
-// Rate returns the fill rate of the bucket, in tokens per second.
-func (tb *Bucket) Rate() float64 {
- return 1e9 * float64(tb.quantum) / float64(tb.fillInterval)
-}
-
-// take is the internal version of Take - it takes the current time as
-// an argument to enable easy testing.
-func (tb *Bucket) take(now time.Time, count int64, maxWait time.Duration) (time.Duration, bool) {
- if count <= 0 {
- return 0, true
- }
- tb.mu.Lock()
- defer tb.mu.Unlock()
-
- currentTick := tb.adjust(now)
- avail := tb.avail - count
- if avail >= 0 {
- tb.avail = avail
- return 0, true
- }
- // Round up the missing tokens to the nearest multiple
- // of quantum - the tokens won't be available until
- // that tick.
- endTick := currentTick + (-avail+tb.quantum-1)/tb.quantum
- endTime := tb.startTime.Add(time.Duration(endTick) * tb.fillInterval)
- waitTime := endTime.Sub(now)
- if waitTime > maxWait {
- return 0, false
- }
- tb.avail = avail
- return waitTime, true
-}
-
-// adjust adjusts the current bucket capacity based on the current time.
-// It returns the current tick.
-func (tb *Bucket) adjust(now time.Time) (currentTick int64) {
- currentTick = int64(now.Sub(tb.startTime) / tb.fillInterval)
-
- if tb.avail >= tb.capacity {
- return
- }
- tb.avail += (currentTick - tb.availTick) * tb.quantum
- if tb.avail > tb.capacity {
- tb.avail = tb.capacity
- }
- tb.availTick = currentTick
- return
-}
diff --git a/vendor/github.com/juju/ratelimit/reader.go b/vendor/github.com/juju/ratelimit/reader.go
deleted file mode 100644
index 6403bf78d4a5..000000000000
--- a/vendor/github.com/juju/ratelimit/reader.go
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2014 Canonical Ltd.
-// Licensed under the LGPLv3 with static-linking exception.
-// See LICENCE file for details.
-
-package ratelimit
-
-import "io"
-
-type reader struct {
- r io.Reader
- bucket *Bucket
-}
-
-// Reader returns a reader that is rate limited by
-// the given token bucket. Each token in the bucket
-// represents one byte.
-func Reader(r io.Reader, bucket *Bucket) io.Reader {
- return &reader{
- r: r,
- bucket: bucket,
- }
-}
-
-func (r *reader) Read(buf []byte) (int, error) {
- n, err := r.r.Read(buf)
- if n <= 0 {
- return n, err
- }
- r.bucket.Wait(int64(n))
- return n, err
-}
-
-type writer struct {
- w io.Writer
- bucket *Bucket
-}
-
-// Writer returns a reader that is rate limited by
-// the given token bucket. Each token in the bucket
-// represents one byte.
-func Writer(w io.Writer, bucket *Bucket) io.Writer {
- return &writer{
- w: w,
- bucket: bucket,
- }
-}
-
-func (w *writer) Write(buf []byte) (int, error) {
- w.bucket.Wait(int64(len(buf)))
- return w.w.Write(buf)
-}
diff --git a/vendor/github.com/marstr/guid/.travis.yml b/vendor/github.com/marstr/guid/.travis.yml
new file mode 100644
index 000000000000..35158ec532dd
--- /dev/null
+++ b/vendor/github.com/marstr/guid/.travis.yml
@@ -0,0 +1,18 @@
+sudo: false
+
+language: go
+
+go:
+ - 1.7
+ - 1.8
+
+install:
+ - go get -u github.com/golang/lint/golint
+ - go get -u github.com/HewlettPackard/gas
+
+script:
+ - golint --set_exit_status
+ - go vet
+ - go test -v -cover -race
+ - go test -bench .
+ - gas ./...
\ No newline at end of file
diff --git a/vendor/github.com/marstr/guid/LICENSE.txt b/vendor/github.com/marstr/guid/LICENSE.txt
new file mode 100644
index 000000000000..e18a0841a1c4
--- /dev/null
+++ b/vendor/github.com/marstr/guid/LICENSE.txt
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2016 Martin Strobel
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
\ No newline at end of file
diff --git a/vendor/github.com/marstr/guid/README.md b/vendor/github.com/marstr/guid/README.md
new file mode 100644
index 000000000000..355fad16d273
--- /dev/null
+++ b/vendor/github.com/marstr/guid/README.md
@@ -0,0 +1,27 @@
+[![Build Status](https://travis-ci.org/marstr/guid.svg?branch=master)](https://travis-ci.org/marstr/guid)
+[![GoDoc](https://godoc.org/github.com/marstr/guid?status.svg)](https://godoc.org/github.com/marstr/guid)
+[![Go Report Card](https://goreportcard.com/badge/github.com/marstr/guid)](https://goreportcard.com/report/github.com/marstr/guid)
+
+# Guid
+Globally unique identifiers offer a quick means of generating non-colliding values across a distributed system. For this implemenation, [RFC 4122](http://ietf.org/rfc/rfc4122.txt) governs the desired behavior.
+
+## What's in a name?
+You have likely already noticed that RFC and some implementations refer to these structures as UUIDs (Universally Unique Identifiers), where as this project is annotated as GUIDs (Globally Unique Identifiers). The name Guid was selected to make clear this project's ties to the [.NET struct Guid.](https://msdn.microsoft.com/en-us/library/system.guid(v=vs.110).aspx) The most obvious relationship is the desire to have the same format specifiers available in this library's Format and Parse methods as .NET would have in its ToString and Parse methods.
+
+# Installation
+- Ensure you have the [Go Programming Language](https://golang.org/) installed on your system.
+- Run the command: `go get -u github.com/marstr/guid`
+
+# Contribution
+Contributions are welcome! Feel free to send Pull Requests. Continuous Integration will ensure that you have conformed to Go conventions. Please remember to add tests for your changes.
+
+# Versioning
+This library will adhere to the
+[Semantic Versioning 2.0.0](http://semver.org/spec/v2.0.0.html) specification. It may be worth noting this should allow for tools like [glide](https://glide.readthedocs.io/en/latest/) to pull in this library with ease.
+
+The Release Notes portion of this file will be updated to reflect the most recent major/minor updates, with the option to tag particular bug-fixes as well. Updates to the Release Notes for patches should be addative, where as major/minor updates should replace the previous version. If one desires to see the release notes for an older version, checkout that version of code and open this file.
+
+# Release Notes 1.1.*
+
+## v1.1.0
+Adding support for JSON marshaling and unmarshaling.
diff --git a/vendor/github.com/marstr/guid/guid.go b/vendor/github.com/marstr/guid/guid.go
new file mode 100644
index 000000000000..51b038b75cdc
--- /dev/null
+++ b/vendor/github.com/marstr/guid/guid.go
@@ -0,0 +1,301 @@
+package guid
+
+import (
+ "bytes"
+ "crypto/rand"
+ "errors"
+ "fmt"
+ "net"
+ "strings"
+ "sync"
+ "time"
+)
+
+// GUID is a unique identifier designed to virtually guarantee non-conflict between values generated
+// across a distributed system.
+type GUID struct {
+ timeHighAndVersion uint16
+ timeMid uint16
+ timeLow uint32
+ clockSeqHighAndReserved uint8
+ clockSeqLow uint8
+ node [6]byte
+}
+
+// Format enumerates the values that are supported by Parse and Format
+type Format string
+
+// These constants define the possible string formats available via this implementation of Guid.
+const (
+ FormatB Format = "B" // {00000000-0000-0000-0000-000000000000}
+ FormatD Format = "D" // 00000000-0000-0000-0000-000000000000
+ FormatN Format = "N" // 00000000000000000000000000000000
+ FormatP Format = "P" // (00000000-0000-0000-0000-000000000000)
+ FormatX Format = "X" // {0x00000000,0x0000,0x0000,{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}
+ FormatDefault Format = FormatD
+)
+
+// CreationStrategy enumerates the values that are supported for populating the bits of a new Guid.
+type CreationStrategy string
+
+// These constants define the possible creation strategies available via this implementation of Guid.
+const (
+ CreationStrategyVersion1 CreationStrategy = "version1"
+ CreationStrategyVersion2 CreationStrategy = "version2"
+ CreationStrategyVersion3 CreationStrategy = "version3"
+ CreationStrategyVersion4 CreationStrategy = "version4"
+ CreationStrategyVersion5 CreationStrategy = "version5"
+)
+
+var emptyGUID GUID
+
+// NewGUID generates and returns a new globally unique identifier
+func NewGUID() GUID {
+ result, err := version4()
+ if err != nil {
+ panic(err) //Version 4 (pseudo-random GUID) doesn't use anything that could fail.
+ }
+ return result
+}
+
+var knownStrategies = map[CreationStrategy]func() (GUID, error){
+ CreationStrategyVersion1: version1,
+ CreationStrategyVersion4: version4,
+}
+
+// NewGUIDs generates and returns a new globally unique identifier that conforms to the given strategy.
+func NewGUIDs(strategy CreationStrategy) (GUID, error) {
+ if creator, present := knownStrategies[strategy]; present {
+ result, err := creator()
+ return result, err
+ }
+ return emptyGUID, errors.New("Unsupported CreationStrategy")
+}
+
+// Empty returns a copy of the default and empty GUID.
+func Empty() GUID {
+ return emptyGUID
+}
+
+var knownFormats = map[Format]string{
+ FormatN: "%08x%04x%04x%02x%02x%02x%02x%02x%02x%02x%02x",
+ FormatD: "%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x",
+ FormatB: "{%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x}",
+ FormatP: "(%08x-%04x-%04x-%02x%02x-%02x%02x%02x%02x%02x%02x)",
+ FormatX: "{0x%08x,0x%04x,0x%04x,{0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x,0x%02x}}",
+}
+
+// MarshalJSON writes a GUID as a JSON string.
+func (guid GUID) MarshalJSON() (marshaled []byte, err error) {
+ buf := bytes.Buffer{}
+
+ _, err = buf.WriteRune('"')
+ buf.WriteString(guid.String())
+ buf.WriteRune('"')
+
+ marshaled = buf.Bytes()
+ return
+}
+
+// Parse instantiates a GUID from a text representation of the same GUID.
+// This is the inverse of function family String()
+func Parse(value string) (GUID, error) {
+ var guid GUID
+ for _, fullFormat := range knownFormats {
+ parity, err := fmt.Sscanf(
+ value,
+ fullFormat,
+ &guid.timeLow,
+ &guid.timeMid,
+ &guid.timeHighAndVersion,
+ &guid.clockSeqHighAndReserved,
+ &guid.clockSeqLow,
+ &guid.node[0],
+ &guid.node[1],
+ &guid.node[2],
+ &guid.node[3],
+ &guid.node[4],
+ &guid.node[5])
+ if parity == 11 && err == nil {
+ return guid, err
+ }
+ }
+ return emptyGUID, fmt.Errorf("\"%s\" is not in a recognized format", value)
+}
+
+// String returns a text representation of a GUID in the default format.
+func (guid GUID) String() string {
+ return guid.Stringf(FormatDefault)
+}
+
+// Stringf returns a text representation of a GUID that conforms to the specified format.
+// If an unrecognized format is provided, the empty string is returned.
+func (guid GUID) Stringf(format Format) string {
+ if format == "" {
+ format = FormatDefault
+ }
+ fullFormat, present := knownFormats[format]
+ if !present {
+ return ""
+ }
+ return fmt.Sprintf(
+ fullFormat,
+ guid.timeLow,
+ guid.timeMid,
+ guid.timeHighAndVersion,
+ guid.clockSeqHighAndReserved,
+ guid.clockSeqLow,
+ guid.node[0],
+ guid.node[1],
+ guid.node[2],
+ guid.node[3],
+ guid.node[4],
+ guid.node[5])
+}
+
+// UnmarshalJSON parses a GUID from a JSON string token.
+func (guid *GUID) UnmarshalJSON(marshaled []byte) (err error) {
+ if len(marshaled) < 2 {
+ err = errors.New("JSON GUID must be surrounded by quotes")
+ return
+ }
+ stripped := marshaled[1 : len(marshaled)-1]
+ *guid, err = Parse(string(stripped))
+ return
+}
+
+// Version reads a GUID to parse which mechanism of generating GUIDS was employed.
+// Values returned here are documented in rfc4122.txt.
+func (guid GUID) Version() uint {
+ return uint(guid.timeHighAndVersion >> 12)
+}
+
+var unixToGregorianOffset = time.Date(1970, 01, 01, 0, 0, 00, 0, time.UTC).Sub(time.Date(1582, 10, 15, 0, 0, 0, 0, time.UTC))
+
+// getRFC4122Time returns a 60-bit count of 100-nanosecond intervals since 00:00:00.00 October 15th, 1582
+func getRFC4122Time() int64 {
+ currentTime := time.Now().UTC().Add(unixToGregorianOffset).UnixNano()
+ currentTime /= 100
+ return currentTime & 0x0FFFFFFFFFFFFFFF
+}
+
+var clockSeqVal uint16
+var clockSeqKey sync.Mutex
+
+func getClockSequence() (uint16, error) {
+ clockSeqKey.Lock()
+ defer clockSeqKey.Unlock()
+
+ if 0 == clockSeqVal {
+ var temp [2]byte
+ if parity, err := rand.Read(temp[:]); !(2 == parity && nil == err) {
+ return 0, err
+ }
+ clockSeqVal = uint16(temp[0])<<8 | uint16(temp[1])
+ }
+ clockSeqVal++
+ return clockSeqVal, nil
+}
+
+func getMACAddress() (mac [6]byte, err error) {
+ var hostNICs []net.Interface
+
+ hostNICs, err = net.Interfaces()
+ if err != nil {
+ return
+ }
+
+ for _, nic := range hostNICs {
+ var parity int
+
+ parity, err = fmt.Sscanf(
+ strings.ToLower(nic.HardwareAddr.String()),
+ "%02x:%02x:%02x:%02x:%02x:%02x",
+ &mac[0],
+ &mac[1],
+ &mac[2],
+ &mac[3],
+ &mac[4],
+ &mac[5])
+
+ if parity == len(mac) {
+ return
+ }
+ }
+
+ err = fmt.Errorf("No suitable address found")
+
+ return
+}
+
+func version1() (result GUID, err error) {
+ var localMAC [6]byte
+ var clockSeq uint16
+
+ currentTime := getRFC4122Time()
+
+ result.timeLow = uint32(currentTime)
+ result.timeMid = uint16(currentTime >> 32)
+ result.timeHighAndVersion = uint16(currentTime >> 48)
+ if err = result.setVersion(1); err != nil {
+ return emptyGUID, err
+ }
+
+ if localMAC, err = getMACAddress(); nil != err {
+ if parity, err := rand.Read(localMAC[:]); !(len(localMAC) != parity && err == nil) {
+ return emptyGUID, err
+ }
+ localMAC[0] |= 0x1
+ }
+ copy(result.node[:], localMAC[:])
+
+ if clockSeq, err = getClockSequence(); nil != err {
+ return emptyGUID, err
+ }
+
+ result.clockSeqLow = uint8(clockSeq)
+ result.clockSeqHighAndReserved = uint8(clockSeq >> 8)
+
+ result.setReservedBits()
+
+ return
+}
+
+func version4() (GUID, error) {
+ var retval GUID
+ var bits [10]byte
+
+ if parity, err := rand.Read(bits[:]); !(len(bits) == parity && err == nil) {
+ return emptyGUID, err
+ }
+ retval.timeHighAndVersion |= uint16(bits[0]) | uint16(bits[1])<<8
+ retval.timeMid |= uint16(bits[2]) | uint16(bits[3])<<8
+ retval.timeLow |= uint32(bits[4]) | uint32(bits[5])<<8 | uint32(bits[6])<<16 | uint32(bits[7])<<24
+ retval.clockSeqHighAndReserved = uint8(bits[8])
+ retval.clockSeqLow = uint8(bits[9])
+
+ //Randomly set clock-sequence, reserved, and node
+ if written, err := rand.Read(retval.node[:]); !(nil == err && written == len(retval.node)) {
+ retval = emptyGUID
+ return retval, err
+ }
+
+ if err := retval.setVersion(4); nil != err {
+ return emptyGUID, err
+ }
+ retval.setReservedBits()
+
+ return retval, nil
+}
+
+func (guid *GUID) setVersion(version uint16) error {
+ if version > 5 || version == 0 {
+ return fmt.Errorf("While setting GUID version, unsupported version: %d", version)
+ }
+ guid.timeHighAndVersion = (guid.timeHighAndVersion & 0x0fff) | version<<12
+ return nil
+}
+
+func (guid *GUID) setReservedBits() {
+ guid.clockSeqHighAndReserved = (guid.clockSeqHighAndReserved & 0x3f) | 0x80
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/SPEC.md b/vendor/github.com/opencontainers/runc/libcontainer/SPEC.md
index e5894c6429da..4363b6f9f4eb 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/SPEC.md
+++ b/vendor/github.com/opencontainers/runc/libcontainer/SPEC.md
@@ -154,6 +154,90 @@ that no processes or threads escape the cgroups. This sync is
done via a pipe ( specified in the runtime section below ) that the container's
init process will block waiting for the parent to finish setup.
+### IntelRdt
+
+Intel platforms with new Xeon CPU support Intel Resource Director Technology
+(RDT). Cache Allocation Technology (CAT) is a sub-feature of RDT, which
+currently supports L3 cache resource allocation.
+
+This feature provides a way for the software to restrict cache allocation to a
+defined 'subset' of L3 cache which may be overlapping with other 'subsets'.
+The different subsets are identified by class of service (CLOS) and each CLOS
+has a capacity bitmask (CBM).
+
+It can be used to handle L3 cache resource allocation for containers if
+hardware and kernel support Intel RDT/CAT.
+
+In Linux 4.10 kernel or newer, the interface is defined and exposed via
+"resource control" filesystem, which is a "cgroup-like" interface.
+
+Comparing with cgroups, it has similar process management lifecycle and
+interfaces in a container. But unlike cgroups' hierarchy, it has single level
+filesystem layout.
+
+Intel RDT "resource control" filesystem hierarchy:
+```
+mount -t resctrl resctrl /sys/fs/resctrl
+tree /sys/fs/resctrl
+/sys/fs/resctrl/
+|-- info
+| |-- L3
+| |-- cbm_mask
+| |-- min_cbm_bits
+| |-- num_closids
+|-- cpus
+|-- schemata
+|-- tasks
+|--
+ |-- cpus
+ |-- schemata
+ |-- tasks
+
+```
+
+For runc, we can make use of `tasks` and `schemata` configuration for L3 cache
+resource constraints.
+
+The file `tasks` has a list of tasks that belongs to this group (e.g.,
+" group). Tasks can be added to a group by writing the task ID
+to the "tasks" file (which will automatically remove them from the previous
+group to which they belonged). New tasks created by fork(2) and clone(2) are
+added to the same group as their parent. If a pid is not in any sub group, it
+is in root group.
+
+The file `schemata` has allocation masks/values for L3 cache on each socket,
+which contains L3 cache id and capacity bitmask (CBM).
+```
+ Format: "L3:=;=;..."
+```
+For example, on a two-socket machine, L3's schema line could be `L3:0=ff;1=c0`
+Which means L3 cache id 0's CBM is 0xff, and L3 cache id 1's CBM is 0xc0.
+
+The valid L3 cache CBM is a *contiguous bits set* and number of bits that can
+be set is less than the max bit. The max bits in the CBM is varied among
+supported Intel Xeon platforms. In Intel RDT "resource control" filesystem
+layout, the CBM in a group should be a subset of the CBM in root. Kernel will
+check if it is valid when writing. e.g., 0xfffff in root indicates the max bits
+of CBM is 20 bits, which mapping to entire L3 cache capacity. Some valid CBM
+values to set in a group: 0xf, 0xf0, 0x3ff, 0x1f00 and etc.
+
+For more information about Intel RDT/CAT kernel interface:
+https://www.kernel.org/doc/Documentation/x86/intel_rdt_ui.txt
+
+An example for runc:
+```
+Consider a two-socket machine with two L3 caches where the default CBM is
+0xfffff and the max CBM length is 20 bits. With this configuration, tasks
+inside the container only have access to the "upper" 80% of L3 cache id 0 and
+the "lower" 50% L3 cache id 1:
+
+"linux": {
+ "intelRdt": {
+ "l3CacheSchema": "L3:0=ffff0;1=3ff"
+ }
+}
+```
+
### Security
The standard set of Linux capabilities that are set in a container
@@ -306,7 +390,7 @@ a container.
| Exec | Execute a new process inside of the container ( requires setns ) |
| Set | Setup configs of the container after it's created |
-### Execute a new process inside of a running container.
+### Execute a new process inside of a running container
User can execute a new process inside of a running container. Any binaries to be
executed must be accessible within the container's rootfs.
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor.go b/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor.go
index 82ed1a68a698..7fff0627fa1b 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/apparmor/apparmor.go
@@ -2,15 +2,10 @@
package apparmor
-// #cgo LDFLAGS: -lapparmor
-// #include
-// #include
-import "C"
import (
"fmt"
"io/ioutil"
"os"
- "unsafe"
)
// IsEnabled returns true if apparmor is enabled for the host.
@@ -24,16 +19,36 @@ func IsEnabled() bool {
return false
}
+func setprocattr(attr, value string) error {
+ // Under AppArmor you can only change your own attr, so use /proc/self/
+ // instead of /proc// like libapparmor does
+ path := fmt.Sprintf("/proc/self/attr/%s", attr)
+
+ f, err := os.OpenFile(path, os.O_WRONLY, 0)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+
+ _, err = fmt.Fprintf(f, "%s", value)
+ return err
+}
+
+// changeOnExec reimplements aa_change_onexec from libapparmor in Go
+func changeOnExec(name string) error {
+ value := "exec " + name
+ if err := setprocattr("exec", value); err != nil {
+ return fmt.Errorf("apparmor failed to apply profile: %s", err)
+ }
+ return nil
+}
+
// ApplyProfile will apply the profile with the specified name to the process after
// the next exec.
func ApplyProfile(name string) error {
if name == "" {
return nil
}
- cName := C.CString(name)
- defer C.free(unsafe.Pointer(cName))
- if _, err := C.aa_change_onexec(cName); err != nil {
- return fmt.Errorf("apparmor failed to apply profile: %s", err)
- }
- return nil
+
+ return changeOnExec(name)
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/capabilities_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/capabilities_linux.go
index 8981b2a2f523..7c66f5725803 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/capabilities_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/capabilities_linux.go
@@ -4,7 +4,6 @@ package libcontainer
import (
"fmt"
- "os"
"strings"
"github.com/opencontainers/runc/libcontainer/configs"
@@ -72,7 +71,7 @@ func newContainerCapList(capConfig *configs.Capabilities) (*containerCapabilitie
}
ambient = append(ambient, v)
}
- pid, err := capability.NewPid(os.Getpid())
+ pid, err := capability.NewPid(0)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/apply_raw.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/apply_raw.go
index 22d82acb4e23..43bdccf3e9dc 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/apply_raw.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/apply_raw.go
@@ -145,8 +145,17 @@ func (m *Manager) Apply(pid int) (err error) {
m.Paths[sys.Name()] = p
if err := sys.Apply(d); err != nil {
+ if os.IsPermission(err) && m.Cgroups.Path == "" {
+ // If we didn't set a cgroup path, then let's defer the error here
+ // until we know whether we have set limits or not.
+ // If we hadn't set limits, then it's ok that we couldn't join this cgroup, because
+ // it will have the same limits as its parent.
+ delete(m.Paths, sys.Name())
+ continue
+ }
return err
}
+
}
return nil
}
@@ -198,6 +207,10 @@ func (m *Manager) Set(container *configs.Config) error {
for _, sys := range subsystems {
path := paths[sys.Name()]
if err := sys.Set(path, container.Cgroups); err != nil {
+ if path == "" {
+ // cgroup never applied
+ return fmt.Errorf("cannot set limits on the %s cgroup, as the container has not joined it", sys.Name())
+ }
return err
}
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/freezer.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/freezer.go
index e70dfe3b950f..4b19f8a970d7 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/freezer.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/freezer.go
@@ -29,11 +29,15 @@ func (s *FreezerGroup) Apply(d *cgroupData) error {
func (s *FreezerGroup) Set(path string, cgroup *configs.Cgroup) error {
switch cgroup.Resources.Freezer {
case configs.Frozen, configs.Thawed:
- if err := writeFile(path, "freezer.state", string(cgroup.Resources.Freezer)); err != nil {
- return err
- }
-
for {
+ // In case this loop does not exit because it doesn't get the expected
+ // state, let's write again this state, hoping it's going to be properly
+ // set this time. Otherwise, this loop could run infinitely, waiting for
+ // a state change that would never happen.
+ if err := writeFile(path, "freezer.state", string(cgroup.Resources.Freezer)); err != nil {
+ return err
+ }
+
state, err := readFile(path, "freezer.state")
if err != nil {
return err
@@ -41,6 +45,7 @@ func (s *FreezerGroup) Set(path string, cgroup *configs.Cgroup) error {
if strings.TrimSpace(state) == string(cgroup.Resources.Freezer) {
break
}
+
time.Sleep(1 * time.Millisecond)
}
case configs.Undefined:
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/rootless/rootless.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/rootless/rootless.go
deleted file mode 100644
index b1efbfd99977..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/rootless/rootless.go
+++ /dev/null
@@ -1,128 +0,0 @@
-// +build linux
-
-package rootless
-
-import (
- "fmt"
-
- "github.com/opencontainers/runc/libcontainer/cgroups"
- "github.com/opencontainers/runc/libcontainer/cgroups/fs"
- "github.com/opencontainers/runc/libcontainer/configs"
- "github.com/opencontainers/runc/libcontainer/configs/validate"
-)
-
-// TODO: This is copied from libcontainer/cgroups/fs, which duplicates this code
-// needlessly. We should probably export this list.
-
-var subsystems = []subsystem{
- &fs.CpusetGroup{},
- &fs.DevicesGroup{},
- &fs.MemoryGroup{},
- &fs.CpuGroup{},
- &fs.CpuacctGroup{},
- &fs.PidsGroup{},
- &fs.BlkioGroup{},
- &fs.HugetlbGroup{},
- &fs.NetClsGroup{},
- &fs.NetPrioGroup{},
- &fs.PerfEventGroup{},
- &fs.FreezerGroup{},
- &fs.NameGroup{GroupName: "name=systemd"},
-}
-
-type subsystem interface {
- // Name returns the name of the subsystem.
- Name() string
-
- // Returns the stats, as 'stats', corresponding to the cgroup under 'path'.
- GetStats(path string, stats *cgroups.Stats) error
-}
-
-// The noop cgroup manager is used for rootless containers, because we currently
-// cannot manage cgroups if we are in a rootless setup. This manager is chosen
-// by factory if we are in rootless mode. We error out if any cgroup options are
-// set in the config -- this may change in the future with upcoming kernel features
-// like the cgroup namespace.
-
-type Manager struct {
- Cgroups *configs.Cgroup
- Paths map[string]string
-}
-
-func (m *Manager) Apply(pid int) error {
- // If there are no cgroup settings, there's nothing to do.
- if m.Cgroups == nil {
- return nil
- }
-
- // We can't set paths.
- // TODO(cyphar): Implement the case where the runner of a rootless container
- // owns their own cgroup, which would allow us to set up a
- // cgroup for each path.
- if m.Cgroups.Paths != nil {
- return fmt.Errorf("cannot change cgroup path in rootless container")
- }
-
- // We load the paths into the manager.
- paths := make(map[string]string)
- for _, sys := range subsystems {
- name := sys.Name()
-
- path, err := cgroups.GetOwnCgroupPath(name)
- if err != nil {
- // Ignore paths we couldn't resolve.
- continue
- }
-
- paths[name] = path
- }
-
- m.Paths = paths
- return nil
-}
-
-func (m *Manager) GetPaths() map[string]string {
- return m.Paths
-}
-
-func (m *Manager) Set(container *configs.Config) error {
- // We have to re-do the validation here, since someone might decide to
- // update a rootless container.
- return validate.New().Validate(container)
-}
-
-func (m *Manager) GetPids() ([]int, error) {
- dir, err := cgroups.GetOwnCgroupPath("devices")
- if err != nil {
- return nil, err
- }
- return cgroups.GetPids(dir)
-}
-
-func (m *Manager) GetAllPids() ([]int, error) {
- dir, err := cgroups.GetOwnCgroupPath("devices")
- if err != nil {
- return nil, err
- }
- return cgroups.GetAllPids(dir)
-}
-
-func (m *Manager) GetStats() (*cgroups.Stats, error) {
- // TODO(cyphar): We can make this work if we figure out a way to allow usage
- // of cgroups with a rootless container. While this doesn't
- // actually require write access to a cgroup directory, the
- // statistics are not useful if they can be affected by
- // non-container processes.
- return nil, fmt.Errorf("cannot get cgroup stats in rootless container")
-}
-
-func (m *Manager) Freeze(state configs.FreezerState) error {
- // TODO(cyphar): We can make this work if we figure out a way to allow usage
- // of cgroups with a rootless container.
- return fmt.Errorf("cannot use freezer cgroup in rootless container")
-}
-
-func (m *Manager) Destroy() error {
- // We don't have to do anything here because we didn't do any setup.
- return nil
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_nosystemd.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_nosystemd.go
index 7de9ae6050bd..a65d8e4432da 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_nosystemd.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_nosystemd.go
@@ -1,4 +1,4 @@
-// +build !linux
+// +build !linux static_build
package systemd
@@ -43,7 +43,7 @@ func (m *Manager) GetStats() (*cgroups.Stats, error) {
}
func (m *Manager) Set(container *configs.Config) error {
- return nil, fmt.Errorf("Systemd not supported")
+ return fmt.Errorf("Systemd not supported")
}
func (m *Manager) Freeze(state configs.FreezerState) error {
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_systemd.go b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_systemd.go
index de89ccbedaae..b5cf33aa8af0 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_systemd.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/cgroups/systemd/apply_systemd.go
@@ -1,4 +1,4 @@
-// +build linux
+// +build linux,!static_build
package systemd
@@ -271,6 +271,13 @@ func (m *Manager) Apply(pid int) error {
// cpu.cfs_quota_us and cpu.cfs_period_us are controlled by systemd.
if c.Resources.CpuQuota != 0 && c.Resources.CpuPeriod != 0 {
cpuQuotaPerSecUSec := uint64(c.Resources.CpuQuota*1000000) / c.Resources.CpuPeriod
+ // systemd converts CPUQuotaPerSecUSec (microseconds per CPU second) to CPUQuota
+ // (integer percentage of CPU) internally. This means that if a fractional percent of
+ // CPU is indicated by Resources.CpuQuota, we need to round up to the nearest
+ // 10ms (1% of a second) such that child cgroups can set the cpu.cfs_quota_us they expect.
+ if cpuQuotaPerSecUSec%10000 != 0 {
+ cpuQuotaPerSecUSec = ((cpuQuotaPerSecUSec / 10000) + 1) * 10000
+ }
properties = append(properties,
newProp("CPUQuotaPerSecUSec", cpuQuotaPerSecUSec))
}
@@ -288,10 +295,13 @@ func (m *Manager) Apply(pid int) error {
}
}
- if _, err := theConn.StartTransientUnit(unitName, "replace", properties, nil); err != nil && !isUnitExists(err) {
+ statusChan := make(chan string)
+ if _, err := theConn.StartTransientUnit(unitName, "replace", properties, statusChan); err != nil && !isUnitExists(err) {
return err
}
+ <-statusChan
+
if err := joinCgroups(c, pid); err != nil {
return err
}
@@ -385,7 +395,7 @@ func joinCgroups(c *configs.Cgroup, pid int) error {
// systemd represents slice hierarchy using `-`, so we need to follow suit when
// generating the path of slice. Essentially, test-a-b.slice becomes
-// test.slice/test-a.slice/test-a-b.slice.
+// /test.slice/test-a.slice/test-a-b.slice.
func ExpandSlice(slice string) (string, error) {
suffix := ".slice"
// Name has to end with ".slice", but can't be just ".slice".
@@ -411,10 +421,9 @@ func ExpandSlice(slice string) (string, error) {
}
// Append the component to the path and to the prefix.
- path += prefix + component + suffix + "/"
+ path += "/" + prefix + component + suffix
prefix += component + "-"
}
-
return path, nil
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/compat_1.5_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/compat_1.5_linux.go
deleted file mode 100644
index c7bdf1f60a01..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/compat_1.5_linux.go
+++ /dev/null
@@ -1,10 +0,0 @@
-// +build linux,!go1.5
-
-package libcontainer
-
-import "syscall"
-
-// GidMappingsEnableSetgroups was added in Go 1.5, so do nothing when building
-// with earlier versions
-func enableSetgroups(sys *syscall.SysProcAttr) {
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_unsupported.go
deleted file mode 100644
index 95e2830a4360..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/configs/cgroup_unsupported.go
+++ /dev/null
@@ -1,6 +0,0 @@
-// +build !windows,!linux,!freebsd
-
-package configs
-
-type Cgroup struct {
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go
index 269fffff3577..3cae4fd8d96c 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/config.go
@@ -187,6 +187,10 @@ type Config struct {
// Rootless specifies whether the container is a rootless container.
Rootless bool `json:"rootless"`
+
+ // IntelRdt specifies settings for Intel RDT/CAT group that the container is placed into
+ // to limit the resources (e.g., L3 cache) the container has available
+ IntelRdt *IntelRdt `json:"intel_rdt,omitempty"`
}
type Hooks struct {
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/device_defaults.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/device_defaults.go
index 4d348d217ec9..e4f423c523ff 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/configs/device_defaults.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/device_defaults.go
@@ -1,4 +1,4 @@
-// +build linux freebsd
+// +build linux
package configs
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go
new file mode 100644
index 000000000000..36bd5f96a112
--- /dev/null
+++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/intelrdt.go
@@ -0,0 +1,7 @@
+package configs
+
+type IntelRdt struct {
+ // The schema for L3 cache id and capacity bitmask (CBM)
+ // Format: "L3:=;=;..."
+ L3CacheSchema string `json:"l3_cache_schema,omitempty"`
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/rootless.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/rootless.go
index 0cebfaf801a2..7a9f33b7114b 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/rootless.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/rootless.go
@@ -21,13 +21,6 @@ func (v *ConfigValidator) rootless(config *configs.Config) error {
if err := rootlessMount(config); err != nil {
return err
}
- // Currently, cgroups cannot effectively be used in rootless containers.
- // The new cgroup namespace doesn't really help us either because it doesn't
- // have nice interactions with the user namespace (we're working with upstream
- // to fix this).
- if err := rootlessCgroup(config); err != nil {
- return err
- }
// XXX: We currently can't verify the user config at all, because
// configs.Config doesn't store the user-related configs. So this
@@ -36,37 +29,27 @@ func (v *ConfigValidator) rootless(config *configs.Config) error {
return nil
}
-func rootlessMappings(config *configs.Config) error {
- rootuid, err := config.HostRootUID()
- if err != nil {
- return fmt.Errorf("failed to get root uid from uidMappings: %v", err)
+func hasIDMapping(id int, mappings []configs.IDMap) bool {
+ for _, m := range mappings {
+ if id >= m.ContainerID && id < m.ContainerID+m.Size {
+ return true
+ }
}
+ return false
+}
+
+func rootlessMappings(config *configs.Config) error {
if euid := geteuid(); euid != 0 {
if !config.Namespaces.Contains(configs.NEWUSER) {
return fmt.Errorf("rootless containers require user namespaces")
}
- if rootuid != euid {
- return fmt.Errorf("rootless containers cannot map container root to a different host user")
- }
- }
-
- rootgid, err := config.HostRootGID()
- if err != nil {
- return fmt.Errorf("failed to get root gid from gidMappings: %v", err)
}
- // Similar to the above test, we need to make sure that we aren't trying to
- // map to a group ID that we don't have the right to be.
- if rootgid != getegid() {
- return fmt.Errorf("rootless containers cannot map container root to a different host group")
+ if len(config.UidMappings) == 0 {
+ return fmt.Errorf("rootless containers requires at least one UID mapping")
}
-
- // We can only map one user and group inside a container (our own).
- if len(config.UidMappings) != 1 || config.UidMappings[0].Size != 1 {
- return fmt.Errorf("rootless containers cannot map more than one user")
- }
- if len(config.GidMappings) != 1 || config.GidMappings[0].Size != 1 {
- return fmt.Errorf("rootless containers cannot map more than one group")
+ if len(config.GidMappings) == 0 {
+ return fmt.Errorf("rootless containers requires at least one UID mapping")
}
return nil
@@ -104,11 +87,28 @@ func rootlessMount(config *configs.Config) error {
// Check that the options list doesn't contain any uid= or gid= entries
// that don't resolve to root.
for _, opt := range strings.Split(mount.Data, ",") {
- if strings.HasPrefix(opt, "uid=") && opt != "uid=0" {
- return fmt.Errorf("cannot specify uid= mount options in rootless containers where argument isn't 0")
+ if strings.HasPrefix(opt, "uid=") {
+ var uid int
+ n, err := fmt.Sscanf(opt, "uid=%d", &uid)
+ if n != 1 || err != nil {
+ // Ignore unknown mount options.
+ continue
+ }
+ if !hasIDMapping(uid, config.UidMappings) {
+ return fmt.Errorf("cannot specify uid= mount options for unmapped uid in rootless containers")
+ }
}
- if strings.HasPrefix(opt, "gid=") && opt != "gid=0" {
- return fmt.Errorf("cannot specify gid= mount options in rootless containers where argument isn't 0")
+
+ if strings.HasPrefix(opt, "gid=") {
+ var gid int
+ n, err := fmt.Sscanf(opt, "gid=%d", &gid)
+ if n != 1 || err != nil {
+ // Ignore unknown mount options.
+ continue
+ }
+ if !hasIDMapping(gid, config.GidMappings) {
+ return fmt.Errorf("cannot specify gid= mount options for unmapped gid in rootless containers")
+ }
}
}
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/validator.go b/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/validator.go
index 8284345442cd..cbbba9a03a20 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/validator.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/configs/validate/validator.go
@@ -7,6 +7,7 @@ import (
"strings"
"github.com/opencontainers/runc/libcontainer/configs"
+ "github.com/opencontainers/runc/libcontainer/intelrdt"
selinux "github.com/opencontainers/selinux/go-selinux"
)
@@ -40,6 +41,9 @@ func (v *ConfigValidator) Validate(config *configs.Config) error {
if err := v.sysctl(config); err != nil {
return err
}
+ if err := v.intelrdt(config); err != nil {
+ return err
+ }
if config.Rootless {
if err := v.rootless(config); err != nil {
return err
@@ -153,6 +157,19 @@ func (v *ConfigValidator) sysctl(config *configs.Config) error {
return nil
}
+func (v *ConfigValidator) intelrdt(config *configs.Config) error {
+ if config.IntelRdt != nil {
+ if !intelrdt.IsEnabled() {
+ return fmt.Errorf("intelRdt is specified in config, but Intel RDT feature is not supported or enabled")
+ }
+ if config.IntelRdt.L3CacheSchema == "" {
+ return fmt.Errorf("intelRdt is specified in config, but intelRdt.l3CacheSchema is empty")
+ }
+ }
+
+ return nil
+}
+
func isSymbolicLink(path string) (bool, error) {
fi, err := os.Lstat(path)
if err != nil {
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/console.go b/vendor/github.com/opencontainers/runc/libcontainer/console.go
deleted file mode 100644
index 917acc702f36..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/console.go
+++ /dev/null
@@ -1,17 +0,0 @@
-package libcontainer
-
-import (
- "io"
- "os"
-)
-
-// Console represents a pseudo TTY.
-type Console interface {
- io.ReadWriteCloser
-
- // Path returns the filesystem path to the slave side of the pty.
- Path() string
-
- // Fd returns the fd for the master of the pty.
- File() *os.File
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/console_freebsd.go b/vendor/github.com/opencontainers/runc/libcontainer/console_freebsd.go
deleted file mode 100644
index b7166a31f066..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/console_freebsd.go
+++ /dev/null
@@ -1,13 +0,0 @@
-// +build freebsd
-
-package libcontainer
-
-import (
- "errors"
-)
-
-// newConsole returns an initialized console that can be used within a container by copying bytes
-// from the master side to the slave that is attached as the tty for the container's init process.
-func newConsole() (Console, error) {
- return nil, errors.New("libcontainer console is not supported on FreeBSD")
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/console_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/console_linux.go
index f70de384812b..9997e93ed4f3 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/console_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/console_linux.go
@@ -1,71 +1,14 @@
package libcontainer
import (
- "fmt"
"os"
- "unsafe"
"golang.org/x/sys/unix"
)
-func ConsoleFromFile(f *os.File) Console {
- return &linuxConsole{
- master: f,
- }
-}
-
-// newConsole returns an initialized console that can be used within a container by copying bytes
-// from the master side to the slave that is attached as the tty for the container's init process.
-func newConsole() (Console, error) {
- master, err := os.OpenFile("/dev/ptmx", unix.O_RDWR|unix.O_NOCTTY|unix.O_CLOEXEC, 0)
- if err != nil {
- return nil, err
- }
- console, err := ptsname(master)
- if err != nil {
- return nil, err
- }
- if err := unlockpt(master); err != nil {
- return nil, err
- }
- return &linuxConsole{
- slavePath: console,
- master: master,
- }, nil
-}
-
-// linuxConsole is a linux pseudo TTY for use within a container.
-type linuxConsole struct {
- master *os.File
- slavePath string
-}
-
-func (c *linuxConsole) File() *os.File {
- return c.master
-}
-
-func (c *linuxConsole) Path() string {
- return c.slavePath
-}
-
-func (c *linuxConsole) Read(b []byte) (int, error) {
- return c.master.Read(b)
-}
-
-func (c *linuxConsole) Write(b []byte) (int, error) {
- return c.master.Write(b)
-}
-
-func (c *linuxConsole) Close() error {
- if m := c.master; m != nil {
- return m.Close()
- }
- return nil
-}
-
// mount initializes the console inside the rootfs mounting with the specified mount label
// and applying the correct ownership of the console.
-func (c *linuxConsole) mount() error {
+func mountConsole(slavePath string) error {
oldMask := unix.Umask(0000)
defer unix.Umask(oldMask)
f, err := os.Create("/dev/console")
@@ -75,17 +18,20 @@ func (c *linuxConsole) mount() error {
if f != nil {
f.Close()
}
- return unix.Mount(c.slavePath, "/dev/console", "bind", unix.MS_BIND, "")
+ return unix.Mount(slavePath, "/dev/console", "bind", unix.MS_BIND, "")
}
// dupStdio opens the slavePath for the console and dups the fds to the current
// processes stdio, fd 0,1,2.
-func (c *linuxConsole) dupStdio() error {
- slave, err := c.open(unix.O_RDWR)
+func dupStdio(slavePath string) error {
+ fd, err := unix.Open(slavePath, unix.O_RDWR, 0)
if err != nil {
- return err
+ return &os.PathError{
+ Op: "open",
+ Path: slavePath,
+ Err: err,
+ }
}
- fd := int(slave.Fd())
for _, i := range []int{0, 1, 2} {
if err := unix.Dup3(fd, i, 0); err != nil {
return err
@@ -93,60 +39,3 @@ func (c *linuxConsole) dupStdio() error {
}
return nil
}
-
-// open is a clone of os.OpenFile without the O_CLOEXEC used to open the pty slave.
-func (c *linuxConsole) open(flag int) (*os.File, error) {
- r, e := unix.Open(c.slavePath, flag, 0)
- if e != nil {
- return nil, &os.PathError{
- Op: "open",
- Path: c.slavePath,
- Err: e,
- }
- }
- return os.NewFile(uintptr(r), c.slavePath), nil
-}
-
-func ioctl(fd uintptr, flag, data uintptr) error {
- if _, _, err := unix.Syscall(unix.SYS_IOCTL, fd, flag, data); err != 0 {
- return err
- }
- return nil
-}
-
-// unlockpt unlocks the slave pseudoterminal device corresponding to the master pseudoterminal referred to by f.
-// unlockpt should be called before opening the slave side of a pty.
-func unlockpt(f *os.File) error {
- var u int32
- return ioctl(f.Fd(), unix.TIOCSPTLCK, uintptr(unsafe.Pointer(&u)))
-}
-
-// ptsname retrieves the name of the first available pts for the given master.
-func ptsname(f *os.File) (string, error) {
- n, err := unix.IoctlGetInt(int(f.Fd()), unix.TIOCGPTN)
- if err != nil {
- return "", err
- }
- return fmt.Sprintf("/dev/pts/%d", n), nil
-}
-
-// SaneTerminal sets the necessary tty_ioctl(4)s to ensure that a pty pair
-// created by us acts normally. In particular, a not-very-well-known default of
-// Linux unix98 ptys is that they have +onlcr by default. While this isn't a
-// problem for terminal emulators, because we relay data from the terminal we
-// also relay that funky line discipline.
-func SaneTerminal(terminal *os.File) error {
- termios, err := unix.IoctlGetTermios(int(terminal.Fd()), unix.TCGETS)
- if err != nil {
- return fmt.Errorf("ioctl(tty, tcgets): %s", err.Error())
- }
-
- // Set -onlcr so we don't have to deal with \r.
- termios.Oflag &^= unix.ONLCR
-
- if err := unix.IoctlSetTermios(int(terminal.Fd()), unix.TCSETS, termios); err != nil {
- return fmt.Errorf("ioctl(tty, tcsets): %s", err.Error())
- }
-
- return nil
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/console_solaris.go b/vendor/github.com/opencontainers/runc/libcontainer/console_solaris.go
deleted file mode 100644
index e5ca54599c2c..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/console_solaris.go
+++ /dev/null
@@ -1,11 +0,0 @@
-package libcontainer
-
-import (
- "errors"
-)
-
-// newConsole returns an initialized console that can be used within a container by copying bytes
-// from the master side to the slave that is attached as the tty for the container's init process.
-func newConsole() (Console, error) {
- return nil, errors.New("libcontainer console is not supported on Solaris")
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/console_windows.go b/vendor/github.com/opencontainers/runc/libcontainer/console_windows.go
deleted file mode 100644
index c61e866a5d5d..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/console_windows.go
+++ /dev/null
@@ -1,30 +0,0 @@
-package libcontainer
-
-// newConsole returns an initialized console that can be used within a container
-func newConsole() (Console, error) {
- return &windowsConsole{}, nil
-}
-
-// windowsConsole is a Windows pseudo TTY for use within a container.
-type windowsConsole struct {
-}
-
-func (c *windowsConsole) Fd() uintptr {
- return 0
-}
-
-func (c *windowsConsole) Path() string {
- return ""
-}
-
-func (c *windowsConsole) Read(b []byte) (int, error) {
- return 0, nil
-}
-
-func (c *windowsConsole) Write(b []byte) (int, error) {
- return 0, nil
-}
-
-func (c *windowsConsole) Close() error {
- return nil
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/container_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/container_linux.go
index 9e1b74d77af7..db2242e26969 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/container_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/container_linux.go
@@ -5,6 +5,7 @@ package libcontainer
import (
"bytes"
"encoding/json"
+ "errors"
"fmt"
"io"
"io/ioutil"
@@ -21,6 +22,7 @@ import (
"github.com/opencontainers/runc/libcontainer/cgroups"
"github.com/opencontainers/runc/libcontainer/configs"
"github.com/opencontainers/runc/libcontainer/criurpc"
+ "github.com/opencontainers/runc/libcontainer/intelrdt"
"github.com/opencontainers/runc/libcontainer/system"
"github.com/opencontainers/runc/libcontainer/utils"
@@ -38,10 +40,14 @@ type linuxContainer struct {
root string
config *configs.Config
cgroupManager cgroups.Manager
+ intelRdtManager intelrdt.Manager
+ initPath string
initArgs []string
initProcess parentProcess
initProcessStartTime uint64
criuPath string
+ newuidmapPath string
+ newgidmapPath string
m sync.Mutex
criuVersion int
state containerState
@@ -67,6 +73,9 @@ type State struct {
// Container's standard descriptors (std{in,out,err}), needed for checkpoint and restore
ExternalDescriptors []string `json:"external_descriptors,omitempty"`
+
+ // Intel RDT "resource control" filesystem path
+ IntelRdtPath string `json:"intel_rdt_path"`
}
// Container is a libcontainer container object.
@@ -163,6 +172,11 @@ func (c *linuxContainer) Stats() (*Stats, error) {
if stats.CgroupStats, err = c.cgroupManager.GetStats(); err != nil {
return stats, newSystemErrorWithCause(err, "getting container stats from cgroups")
}
+ if c.intelRdtManager != nil {
+ if stats.IntelRdtStats, err = c.intelRdtManager.GetStats(); err != nil {
+ return stats, newSystemErrorWithCause(err, "getting container's Intel RDT stats")
+ }
+ }
for _, iface := range c.config.Networks {
switch iface.Type {
case "veth":
@@ -193,6 +207,15 @@ func (c *linuxContainer) Set(config configs.Config) error {
}
return err
}
+ if c.intelRdtManager != nil {
+ if err := c.intelRdtManager.Set(&config); err != nil {
+ // Set configs back
+ if err2 := c.intelRdtManager.Set(c.config); err2 != nil {
+ logrus.Warnf("Setting back intelrdt configs failed due to error: %v, your state.json and actual configs might be inconsistent.", err2)
+ }
+ return err
+ }
+ }
// After config setting succeed, update config and states
c.config = &config
_, err = c.updateState(nil)
@@ -245,20 +268,71 @@ func (c *linuxContainer) Exec() error {
func (c *linuxContainer) exec() error {
path := filepath.Join(c.root, execFifoFilename)
- f, err := os.OpenFile(path, os.O_RDONLY, 0)
- if err != nil {
- return newSystemErrorWithCause(err, "open exec fifo for reading")
+
+ fifoOpen := make(chan struct{})
+ select {
+ case <-awaitProcessExit(c.initProcess.pid(), fifoOpen):
+ return errors.New("container process is already dead")
+ case result := <-awaitFifoOpen(path):
+ close(fifoOpen)
+ if result.err != nil {
+ return result.err
+ }
+ f := result.file
+ defer f.Close()
+ if err := readFromExecFifo(f); err != nil {
+ return err
+ }
+ return os.Remove(path)
}
- defer f.Close()
- data, err := ioutil.ReadAll(f)
+}
+
+func readFromExecFifo(execFifo io.Reader) error {
+ data, err := ioutil.ReadAll(execFifo)
if err != nil {
return err
}
- if len(data) > 0 {
- os.Remove(path)
- return nil
+ if len(data) <= 0 {
+ return fmt.Errorf("cannot start an already running container")
}
- return fmt.Errorf("cannot start an already running container")
+ return nil
+}
+
+func awaitProcessExit(pid int, exit <-chan struct{}) <-chan struct{} {
+ isDead := make(chan struct{})
+ go func() {
+ for {
+ select {
+ case <-exit:
+ return
+ case <-time.After(time.Millisecond * 100):
+ stat, err := system.Stat(pid)
+ if err != nil || stat.State == system.Zombie {
+ close(isDead)
+ return
+ }
+ }
+ }
+ }()
+ return isDead
+}
+
+func awaitFifoOpen(path string) <-chan openResult {
+ fifoOpened := make(chan openResult)
+ go func() {
+ f, err := os.OpenFile(path, os.O_RDONLY, 0)
+ if err != nil {
+ fifoOpened <- openResult{err: newSystemErrorWithCause(err, "open exec fifo for reading")}
+ return
+ }
+ fifoOpened <- openResult{file: f}
+ }()
+ return fifoOpened
+}
+
+type openResult struct {
+ file *os.File
+ err error
}
func (c *linuxContainer) start(process *Process, isInit bool) error {
@@ -268,7 +342,7 @@ func (c *linuxContainer) start(process *Process, isInit bool) error {
}
if err := parent.start(); err != nil {
// terminate the process to ensure that it properly is reaped.
- if err := parent.terminate(); err != nil {
+ if err := ignoreTerminateErrors(parent.terminate()); err != nil {
logrus.Warn(err)
}
return newSystemErrorWithCause(err, "starting container process")
@@ -286,15 +360,17 @@ func (c *linuxContainer) start(process *Process, isInit bool) error {
c.initProcessStartTime = state.InitProcessStartTime
if c.config.Hooks != nil {
+ bundle, annotations := utils.Annotations(c.config.Labels)
s := configs.HookState{
- Version: c.config.Version,
- ID: c.id,
- Pid: parent.pid(),
- Bundle: utils.SearchLabels(c.config.Labels, "bundle"),
+ Version: c.config.Version,
+ ID: c.id,
+ Pid: parent.pid(),
+ Bundle: bundle,
+ Annotations: annotations,
}
for i, hook := range c.config.Hooks.Poststart {
if err := hook.Run(s); err != nil {
- if err := parent.terminate(); err != nil {
+ if err := ignoreTerminateErrors(parent.terminate()); err != nil {
logrus.Warn(err)
}
return newSystemErrorWithCausef(err, "running poststart hook %d", i)
@@ -392,7 +468,8 @@ func (c *linuxContainer) newParentProcess(p *Process, doInit bool) (parentProces
}
func (c *linuxContainer) commandTemplate(p *Process, childPipe *os.File) (*exec.Cmd, error) {
- cmd := exec.Command(c.initArgs[0], c.initArgs[1:]...)
+ cmd := exec.Command(c.initPath, c.initArgs[1:]...)
+ cmd.Args[0] = c.initArgs[0]
cmd.Stdin = p.Stdin
cmd.Stdout = p.Stdout
cmd.Stderr = p.Stderr
@@ -434,15 +511,16 @@ func (c *linuxContainer) newInitProcess(p *Process, cmd *exec.Cmd, parentPipe, c
return nil, err
}
return &initProcess{
- cmd: cmd,
- childPipe: childPipe,
- parentPipe: parentPipe,
- manager: c.cgroupManager,
- config: c.newInitConfig(p),
- container: c,
- process: p,
- bootstrapData: data,
- sharePidns: sharePidns,
+ cmd: cmd,
+ childPipe: childPipe,
+ parentPipe: parentPipe,
+ manager: c.cgroupManager,
+ intelRdtManager: c.intelRdtManager,
+ config: c.newInitConfig(p),
+ container: c,
+ process: p,
+ bootstrapData: data,
+ sharePidns: sharePidns,
}, nil
}
@@ -461,6 +539,7 @@ func (c *linuxContainer) newSetnsProcess(p *Process, cmd *exec.Cmd, parentPipe,
return &setnsProcess{
cmd: cmd,
cgroupPaths: c.cgroupManager.GetPaths(),
+ intelRdtPath: state.IntelRdtPath,
childPipe: childPipe,
parentPipe: parentPipe,
config: c.newInitConfig(p),
@@ -499,6 +578,8 @@ func (c *linuxContainer) newInitConfig(process *Process) *initConfig {
cfg.Rlimits = process.Rlimits
}
cfg.CreateConsole = process.ConsoleSocket != nil
+ cfg.ConsoleWidth = process.ConsoleWidth
+ cfg.ConsoleHeight = process.ConsoleHeight
return cfg
}
@@ -600,9 +681,24 @@ func (c *linuxContainer) checkCriuFeatures(criuOpts *CriuOpts, rpcOpts *criurpc.
logrus.Debugf("Feature check says: %s", criuFeatures)
missingFeatures := false
- if *criuFeat.MemTrack && !*criuFeatures.MemTrack {
- missingFeatures = true
- logrus.Debugf("CRIU does not support MemTrack")
+ // The outer if checks if the fields actually exist
+ if (criuFeat.MemTrack != nil) &&
+ (criuFeatures.MemTrack != nil) {
+ // The inner if checks if they are set to true
+ if *criuFeat.MemTrack && !*criuFeatures.MemTrack {
+ missingFeatures = true
+ logrus.Debugf("CRIU does not support MemTrack")
+ }
+ }
+
+ // This needs to be repeated for every new feature check.
+ // Is there a way to put this in a function. Reflection?
+ if (criuFeat.LazyPages != nil) &&
+ (criuFeatures.LazyPages != nil) {
+ if *criuFeat.LazyPages && !*criuFeatures.LazyPages {
+ missingFeatures = true
+ logrus.Debugf("CRIU does not support LazyPages")
+ }
}
if missingFeatures {
@@ -632,9 +728,9 @@ func parseCriuVersion(path string) (int, error) {
return 0, fmt.Errorf("Unable to parse the CRIU version: %s", path)
}
- n, err := fmt.Sscanf(string(version), "GitID: v%d.%d.%d", &x, &y, &z) // 1.5.2
+ n, err := fmt.Sscanf(version, "GitID: v%d.%d.%d", &x, &y, &z) // 1.5.2
if err != nil {
- n, err = fmt.Sscanf(string(version), "GitID: v%d.%d", &x, &y) // 1.6
+ n, err = fmt.Sscanf(version, "GitID: v%d.%d", &x, &y) // 1.6
y++
} else {
z++
@@ -758,6 +854,25 @@ func (c *linuxContainer) addMaskPaths(req *criurpc.CriuReq) error {
}
req.Opts.ExtMnt = append(req.Opts.ExtMnt, extMnt)
}
+ return nil
+}
+
+func waitForCriuLazyServer(r *os.File, status string) error {
+
+ data := make([]byte, 1)
+ _, err := r.Read(data)
+ if err != nil {
+ return err
+ }
+ fd, err := os.OpenFile(status, os.O_TRUNC|os.O_WRONLY, os.ModeAppend)
+ if err != nil {
+ return err
+ }
+ _, err = fd.Write(data)
+ if err != nil {
+ return err
+ }
+ fd.Close()
return nil
}
@@ -825,6 +940,7 @@ func (c *linuxContainer) Checkpoint(criuOpts *CriuOpts) error {
EmptyNs: proto.Uint32(criuOpts.EmptyNs),
OrphanPtsMaster: proto.Bool(true),
AutoDedup: proto.Bool(criuOpts.AutoDedup),
+ LazyPages: proto.Bool(criuOpts.LazyPages),
}
fcg := c.cgroupManager.GetPaths()["freezer"]
@@ -875,6 +991,24 @@ func (c *linuxContainer) Checkpoint(criuOpts *CriuOpts) error {
Opts: &rpcOpts,
}
+ if criuOpts.LazyPages {
+ // lazy migration requested; check if criu supports it
+ feat := criurpc.CriuFeatures{
+ LazyPages: proto.Bool(true),
+ }
+
+ if err := c.checkCriuFeatures(criuOpts, &rpcOpts, &feat); err != nil {
+ return err
+ }
+
+ statusRead, statusWrite, err := os.Pipe()
+ if err != nil {
+ return err
+ }
+ rpcOpts.StatusFd = proto.Int32(int32(statusWrite.Fd()))
+ go waitForCriuLazyServer(statusRead, criuOpts.StatusFd)
+ }
+
//no need to dump these information in pre-dump
if !criuOpts.PreDump {
for _, m := range c.config.Mounts {
@@ -1027,6 +1161,7 @@ func (c *linuxContainer) Restore(process *Process, criuOpts *CriuOpts) error {
EmptyNs: proto.Uint32(criuOpts.EmptyNs),
OrphanPtsMaster: proto.Bool(true),
AutoDedup: proto.Bool(criuOpts.AutoDedup),
+ LazyPages: proto.Bool(criuOpts.LazyPages),
},
}
@@ -1355,11 +1490,13 @@ func (c *linuxContainer) criuNotifications(resp *criurpc.CriuResp, process *Proc
}
case notify.GetScript() == "setup-namespaces":
if c.config.Hooks != nil {
+ bundle, annotations := utils.Annotations(c.config.Labels)
s := configs.HookState{
- Version: c.config.Version,
- ID: c.id,
- Pid: int(notify.GetPid()),
- Bundle: utils.SearchLabels(c.config.Labels, "bundle"),
+ Version: c.config.Version,
+ ID: c.id,
+ Pid: int(notify.GetPid()),
+ Bundle: bundle,
+ Annotations: annotations,
}
for i, hook := range c.config.Hooks.Prestart {
if err := hook.Run(s); err != nil {
@@ -1404,7 +1541,7 @@ func (c *linuxContainer) criuNotifications(resp *criurpc.CriuResp, process *Proc
defer master.Close()
// While we can access console.master, using the API is a good idea.
- if err := utils.SendFd(process.ConsoleSocket, master); err != nil {
+ if err := utils.SendFd(process.ConsoleSocket, master.Name(), master.Fd()); err != nil {
return err
}
}
@@ -1519,6 +1656,10 @@ func (c *linuxContainer) currentState() (*State, error) {
startTime, _ = c.initProcess.startTime()
externalDescriptors = c.initProcess.externalDescriptors()
}
+ intelRdtPath, err := intelrdt.GetIntelRdtPath(c.ID())
+ if err != nil {
+ intelRdtPath = ""
+ }
state := &State{
BaseState: BaseState{
ID: c.ID(),
@@ -1529,6 +1670,7 @@ func (c *linuxContainer) currentState() (*State, error) {
},
Rootless: c.config.Rootless,
CgroupPaths: c.cgroupManager.GetPaths(),
+ IntelRdtPath: intelRdtPath,
NamespacePaths: make(map[configs.NamespaceType]string),
ExternalDescriptors: externalDescriptors,
}
@@ -1627,6 +1769,12 @@ func (c *linuxContainer) bootstrapData(cloneFlags uintptr, nsMaps map[configs.Na
if !joinExistingUser {
// write uid mappings
if len(c.config.UidMappings) > 0 {
+ if c.config.Rootless && c.newuidmapPath != "" {
+ r.AddData(&Bytemsg{
+ Type: UidmapPathAttr,
+ Value: []byte(c.newuidmapPath),
+ })
+ }
b, err := encodeIDMapping(c.config.UidMappings)
if err != nil {
return nil, err
@@ -1647,10 +1795,16 @@ func (c *linuxContainer) bootstrapData(cloneFlags uintptr, nsMaps map[configs.Na
Type: GidmapAttr,
Value: b,
})
+ if c.config.Rootless && c.newgidmapPath != "" {
+ r.AddData(&Bytemsg{
+ Type: GidmapPathAttr,
+ Value: []byte(c.newgidmapPath),
+ })
+ }
// The following only applies if we are root.
if !c.config.Rootless {
// check if we have CAP_SETGID to setgroup properly
- pid, err := capability.NewPid(os.Getpid())
+ pid, err := capability.NewPid(0)
if err != nil {
return nil, err
}
@@ -1678,3 +1832,18 @@ func (c *linuxContainer) bootstrapData(cloneFlags uintptr, nsMaps map[configs.Na
return bytes.NewReader(r.Serialize()), nil
}
+
+// ignoreTerminateErrors returns nil if the given err matches an error known
+// to indicate that the terminate occurred successfully or err was nil, otherwise
+// err is returned unaltered.
+func ignoreTerminateErrors(err error) error {
+ if err == nil {
+ return nil
+ }
+ s := err.Error()
+ switch {
+ case strings.Contains(s, "process already finished"), strings.Contains(s, "Wait was already called"):
+ return nil
+ }
+ return err
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/container_solaris.go b/vendor/github.com/opencontainers/runc/libcontainer/container_solaris.go
deleted file mode 100644
index bb84ff7402b9..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/container_solaris.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package libcontainer
-
-// State represents a running container's state
-type State struct {
- BaseState
-
- // Platform specific fields below here
-}
-
-// A libcontainer container object.
-//
-// Each container is thread-safe within the same process. Since a container can
-// be destroyed by a separate process, any function may return that the container
-// was not found.
-type Container interface {
- BaseContainer
-
- // Methods below here are platform specific
-
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/container_windows.go b/vendor/github.com/opencontainers/runc/libcontainer/container_windows.go
deleted file mode 100644
index bb84ff7402b9..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/container_windows.go
+++ /dev/null
@@ -1,20 +0,0 @@
-package libcontainer
-
-// State represents a running container's state
-type State struct {
- BaseState
-
- // Platform specific fields below here
-}
-
-// A libcontainer container object.
-//
-// Each container is thread-safe within the same process. Since a container can
-// be destroyed by a separate process, any function may return that the container
-// was not found.
-type Container interface {
- BaseContainer
-
- // Methods below here are platform specific
-
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_linux.go
index 8f142c9fa5ca..a2e344fc4b67 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_linux.go
@@ -23,7 +23,7 @@ type VethPairName struct {
type CriuOpts struct {
ImagesDirectory string // directory for storing image files
WorkDirectory string // directory to cd and write logs/pidfiles/stats to
- ParentImage string // direcotry for storing parent image files in pre-dump and dump
+ ParentImage string // directory for storing parent image files in pre-dump and dump
LeaveRunning bool // leave container in running state after checkpoint
TcpEstablished bool // checkpoint/restore established TCP connections
ExternalUnixConnections bool // allow external unix connections
@@ -35,4 +35,6 @@ type CriuOpts struct {
ManageCgroupsMode cgMode // dump or restore cgroup mode
EmptyNs uint32 // don't c/r properties for namespace from this mask
AutoDedup bool // auto deduplication for incremental dumps
+ LazyPages bool // restore memory pages lazily using userfaultfd
+ StatusFd string // fd for feedback when lazy server is ready
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_windows.go b/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_windows.go
deleted file mode 100644
index bc9207703a1d..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/criu_opts_windows.go
+++ /dev/null
@@ -1,6 +0,0 @@
-package libcontainer
-
-// TODO Windows: This can ultimately be entirely factored out as criu is
-// a Unix concept not relevant on Windows.
-type CriuOpts struct {
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go
index 947bdea1cebb..7d53d5e04d8a 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/factory_linux.go
@@ -11,13 +11,13 @@ import (
"runtime/debug"
"strconv"
- "github.com/docker/docker/pkg/mount"
"github.com/opencontainers/runc/libcontainer/cgroups"
"github.com/opencontainers/runc/libcontainer/cgroups/fs"
- "github.com/opencontainers/runc/libcontainer/cgroups/rootless"
"github.com/opencontainers/runc/libcontainer/cgroups/systemd"
"github.com/opencontainers/runc/libcontainer/configs"
"github.com/opencontainers/runc/libcontainer/configs/validate"
+ "github.com/opencontainers/runc/libcontainer/intelrdt"
+ "github.com/opencontainers/runc/libcontainer/mount"
"github.com/opencontainers/runc/libcontainer/utils"
"golang.org/x/sys/unix"
@@ -72,15 +72,15 @@ func Cgroupfs(l *LinuxFactory) error {
return nil
}
-// RootlessCgroups is an options func to configure a LinuxFactory to
-// return containers that use the "rootless" cgroup manager, which will
-// fail to do any operations not possible to do with an unprivileged user.
-// It should only be used in conjunction with rootless containers.
-func RootlessCgroups(l *LinuxFactory) error {
- l.NewCgroupsManager = func(config *configs.Cgroup, paths map[string]string) cgroups.Manager {
- return &rootless.Manager{
- Cgroups: config,
- Paths: paths,
+// IntelRdtfs is an options func to configure a LinuxFactory to return
+// containers that use the Intel RDT "resource control" filesystem to
+// create and manage Intel Xeon platform shared resources (e.g., L3 cache).
+func IntelRdtFs(l *LinuxFactory) error {
+ l.NewIntelRdtManager = func(config *configs.Config, id string, path string) intelrdt.Manager {
+ return &intelrdt.IntelRdtManager{
+ Config: config,
+ Id: id,
+ Path: path,
}
}
return nil
@@ -119,12 +119,16 @@ func New(root string, options ...func(*LinuxFactory) error) (Factory, error) {
}
l := &LinuxFactory{
Root: root,
- InitArgs: []string{"/proc/self/exe", "init"},
+ InitPath: "/proc/self/exe",
+ InitArgs: []string{os.Args[0], "init"},
Validator: validate.New(),
CriuPath: "criu",
}
Cgroupfs(l)
for _, opt := range options {
+ if opt == nil {
+ continue
+ }
if err := opt(l); err != nil {
return nil, err
}
@@ -137,6 +141,10 @@ type LinuxFactory struct {
// Root directory for the factory to store state.
Root string
+ // InitPath is the path for calling the init responsibilities for spawning
+ // a container.
+ InitPath string
+
// InitArgs are arguments for calling the init responsibilities for spawning
// a container.
InitArgs []string
@@ -145,11 +153,19 @@ type LinuxFactory struct {
// containers.
CriuPath string
+ // New{u,g}uidmapPath is the path to the binaries used for mapping with
+ // rootless containers.
+ NewuidmapPath string
+ NewgidmapPath string
+
// Validator provides validation to container configurations.
Validator validate.Validator
// NewCgroupsManager returns an initialized cgroups manager for a single container.
NewCgroupsManager func(config *configs.Cgroup, paths map[string]string) cgroups.Manager
+
+ // NewIntelRdtManager returns an initialized Intel RDT manager for a single container.
+ NewIntelRdtManager func(config *configs.Config, id string, path string) intelrdt.Manager
}
func (l *LinuxFactory) Create(id string, config *configs.Config) (Container, error) {
@@ -174,17 +190,20 @@ func (l *LinuxFactory) Create(id string, config *configs.Config) (Container, err
if err := os.Chown(containerRoot, unix.Geteuid(), unix.Getegid()); err != nil {
return nil, newGenericError(err, SystemError)
}
- if config.Rootless {
- RootlessCgroups(l)
- }
c := &linuxContainer{
id: id,
root: containerRoot,
config: config,
+ initPath: l.InitPath,
initArgs: l.InitArgs,
criuPath: l.CriuPath,
+ newuidmapPath: l.NewuidmapPath,
+ newgidmapPath: l.NewgidmapPath,
cgroupManager: l.NewCgroupsManager(config.Cgroups, nil),
}
+ if intelrdt.IsEnabled() {
+ c.intelRdtManager = l.NewIntelRdtManager(config, id, "")
+ }
c.state = &stoppedState{c: c}
return c, nil
}
@@ -203,17 +222,16 @@ func (l *LinuxFactory) Load(id string) (Container, error) {
processStartTime: state.InitProcessStartTime,
fds: state.ExternalDescriptors,
}
- // We have to use the RootlessManager.
- if state.Rootless {
- RootlessCgroups(l)
- }
c := &linuxContainer{
initProcess: r,
initProcessStartTime: state.InitProcessStartTime,
id: id,
config: &state.Config,
+ initPath: l.InitPath,
initArgs: l.InitArgs,
criuPath: l.CriuPath,
+ newuidmapPath: l.NewuidmapPath,
+ newgidmapPath: l.NewgidmapPath,
cgroupManager: l.NewCgroupsManager(state.Config.Cgroups, state.CgroupPaths),
root: containerRoot,
created: state.Created,
@@ -222,6 +240,9 @@ func (l *LinuxFactory) Load(id string) (Container, error) {
if err := c.refreshState(); err != nil {
return nil, err
}
+ if intelrdt.IsEnabled() {
+ c.intelRdtManager = l.NewIntelRdtManager(&state.Config, id, state.IntelRdtPath)
+ }
return c, nil
}
@@ -323,3 +344,21 @@ func (l *LinuxFactory) validateID(id string) error {
return nil
}
+
+// NewuidmapPath returns an option func to configure a LinuxFactory with the
+// provided ..
+func NewuidmapPath(newuidmapPath string) func(*LinuxFactory) error {
+ return func(l *LinuxFactory) error {
+ l.NewuidmapPath = newuidmapPath
+ return nil
+ }
+}
+
+// NewgidmapPath returns an option func to configure a LinuxFactory with the
+// provided ..
+func NewgidmapPath(newgidmapPath string) func(*LinuxFactory) error {
+ return func(l *LinuxFactory) error {
+ l.NewgidmapPath = newgidmapPath
+ return nil
+ }
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/init_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/init_linux.go
index 2020bb7a5aa5..2770be307185 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/init_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/init_linux.go
@@ -12,15 +12,16 @@ import (
"syscall" // only for Errno
"unsafe"
+ "golang.org/x/sys/unix"
+
+ "github.com/containerd/console"
"github.com/opencontainers/runc/libcontainer/cgroups"
"github.com/opencontainers/runc/libcontainer/configs"
"github.com/opencontainers/runc/libcontainer/system"
"github.com/opencontainers/runc/libcontainer/user"
"github.com/opencontainers/runc/libcontainer/utils"
-
"github.com/sirupsen/logrus"
"github.com/vishvananda/netlink"
- "golang.org/x/sys/unix"
)
type initType string
@@ -61,6 +62,8 @@ type initConfig struct {
ContainerId string `json:"containerid"`
Rlimits []configs.Rlimit `json:"rlimits"`
CreateConsole bool `json:"create_console"`
+ ConsoleWidth uint16 `json:"console_width"`
+ ConsoleHeight uint16 `json:"console_height"`
Rootless bool `json:"rootless"`
}
@@ -170,29 +173,38 @@ func setupConsole(socket *os.File, config *initConfig, mount bool) error {
// however, that setupUser (specifically fixStdioPermissions) *will* change
// the UID owner of the console to be the user the process will run as (so
// they can actually control their console).
- console, err := newConsole()
+
+ pty, slavePath, err := console.NewPty()
if err != nil {
return err
}
- // After we return from here, we don't need the console anymore.
- defer console.Close()
- linuxConsole, ok := console.(*linuxConsole)
- if !ok {
- return fmt.Errorf("failed to cast console to *linuxConsole")
+ if config.ConsoleHeight != 0 && config.ConsoleWidth != 0 {
+ err = pty.Resize(console.WinSize{
+ Height: config.ConsoleHeight,
+ Width: config.ConsoleWidth,
+ })
+
+ if err != nil {
+ return err
+ }
}
+
+ // After we return from here, we don't need the console anymore.
+ defer pty.Close()
+
// Mount the console inside our rootfs.
if mount {
- if err := linuxConsole.mount(); err != nil {
+ if err := mountConsole(slavePath); err != nil {
return err
}
}
// While we can access console.master, using the API is a good idea.
- if err := utils.SendFd(socket, linuxConsole.File()); err != nil {
+ if err := utils.SendFd(socket, pty.Name(), pty.Fd()); err != nil {
return err
}
// Now, dup over all the things.
- return linuxConsole.dupStdio()
+ return dupStdio(slavePath)
}
// syncParentReady sends to the given pipe a JSON payload which indicates that
@@ -261,25 +273,27 @@ func setupUser(config *initConfig) error {
}
}
- if config.Rootless {
- if execUser.Uid != 0 {
- return fmt.Errorf("cannot run as a non-root user in a rootless container")
- }
-
- if execUser.Gid != 0 {
- return fmt.Errorf("cannot run as a non-root group in a rootless container")
- }
+ // Rather than just erroring out later in setuid(2) and setgid(2), check
+ // that the user is mapped here.
+ if _, err := config.Config.HostUID(execUser.Uid); err != nil {
+ return fmt.Errorf("cannot set uid to unmapped user in user namespace")
+ }
+ if _, err := config.Config.HostGID(execUser.Gid); err != nil {
+ return fmt.Errorf("cannot set gid to unmapped user in user namespace")
+ }
- // We cannot set any additional groups in a rootless container and thus we
- // bail if the user asked us to do so. TODO: We currently can't do this
- // earlier, but if libcontainer.Process.User was typesafe this might work.
+ if config.Rootless {
+ // We cannot set any additional groups in a rootless container and thus
+ // we bail if the user asked us to do so. TODO: We currently can't do
+ // this check earlier, but if libcontainer.Process.User was typesafe
+ // this might work.
if len(addGroups) > 0 {
return fmt.Errorf("cannot set any additional groups in a rootless container")
}
}
- // before we change to the container's user make sure that the processes STDIO
- // is correctly owned by the user that we are switching to.
+ // Before we change to the container's user make sure that the processes
+ // STDIO is correctly owned by the user that we are switching to.
if err := fixStdioPermissions(config, execUser); err != nil {
return err
}
@@ -298,7 +312,6 @@ func setupUser(config *initConfig) error {
if err := system.Setgid(execUser.Gid); err != nil {
return err
}
-
if err := system.Setuid(execUser.Uid); err != nil {
return err
}
@@ -335,14 +348,6 @@ func fixStdioPermissions(config *initConfig, u *user.ExecUser) error {
continue
}
- // Skip chown if s.Gid is actually an unmapped gid in the host. While
- // this is a bit dodgy if it just so happens that the console _is_
- // owned by overflow_gid, there's no way for us to disambiguate this as
- // a userspace program.
- if _, err := config.Config.HostGID(int(s.Gid)); err != nil {
- continue
- }
-
// We only change the uid owner (as it is possible for the mount to
// prefer a different gid, and there's no reason for us to change it).
// The reason why we don't just leave the default uid=X mount setup is
@@ -350,6 +355,15 @@ func fixStdioPermissions(config *initConfig, u *user.ExecUser) error {
// this code, you couldn't effectively run as a non-root user inside a
// container and also have a console set up.
if err := unix.Fchown(int(fd), u.Uid, int(s.Gid)); err != nil {
+ // If we've hit an EINVAL then s.Gid isn't mapped in the user
+ // namespace. If we've hit an EPERM then the inode's current owner
+ // is not mapped in our user namespace (in particular,
+ // privileged_wrt_inode_uidgid() has failed). In either case, we
+ // are in a configuration where it's better for us to just not
+ // touch the stdio rather than bail at this point.
+ if err == unix.EINVAL || err == unix.EPERM {
+ continue
+ }
return err
}
}
@@ -480,6 +494,16 @@ func signalAllProcesses(m cgroups.Manager, s os.Signal) error {
logrus.Warn(err)
}
+ subreaper, err := system.GetSubreaper()
+ if err != nil {
+ // The error here means that PR_GET_CHILD_SUBREAPER is not
+ // supported because this code might run on a kernel older
+ // than 3.4. We don't want to throw an error in that case,
+ // and we simplify things, considering there is no subreaper
+ // set.
+ subreaper = 0
+ }
+
for _, p := range procs {
if s != unix.SIGKILL {
if ok, err := isWaitable(p.Pid); err != nil {
@@ -493,9 +517,16 @@ func signalAllProcesses(m cgroups.Manager, s os.Signal) error {
}
}
- if _, err := p.Wait(); err != nil {
- if !isNoChildren(err) {
- logrus.Warn("wait: ", err)
+ // In case a subreaper has been setup, this code must not
+ // wait for the process. Otherwise, we cannot be sure the
+ // current process will be reaped by the subreaper, while
+ // the subreaper might be waiting for this process in order
+ // to retrieve its exit code.
+ if subreaper == 0 {
+ if _, err := p.Wait(); err != nil {
+ if !isNoChildren(err) {
+ logrus.Warn("wait: ", err)
+ }
}
}
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/intelrdt.go b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/intelrdt.go
new file mode 100644
index 000000000000..487c630af61c
--- /dev/null
+++ b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/intelrdt.go
@@ -0,0 +1,553 @@
+// +build linux
+
+package intelrdt
+
+import (
+ "bufio"
+ "fmt"
+ "io/ioutil"
+ "os"
+ "path/filepath"
+ "strconv"
+ "strings"
+ "sync"
+
+ "github.com/opencontainers/runc/libcontainer/configs"
+)
+
+/*
+ * About Intel RDT/CAT feature:
+ * Intel platforms with new Xeon CPU support Resource Director Technology (RDT).
+ * Intel Cache Allocation Technology (CAT) is a sub-feature of RDT. Currently L3
+ * Cache is the only resource that is supported in RDT.
+ *
+ * This feature provides a way for the software to restrict cache allocation to a
+ * defined 'subset' of L3 cache which may be overlapping with other 'subsets'.
+ * The different subsets are identified by class of service (CLOS) and each CLOS
+ * has a capacity bitmask (CBM).
+ *
+ * For more information about Intel RDT/CAT can be found in the section 17.17
+ * of Intel Software Developer Manual.
+ *
+ * About Intel RDT/CAT kernel interface:
+ * In Linux 4.10 kernel or newer, the interface is defined and exposed via
+ * "resource control" filesystem, which is a "cgroup-like" interface.
+ *
+ * Comparing with cgroups, it has similar process management lifecycle and
+ * interfaces in a container. But unlike cgroups' hierarchy, it has single level
+ * filesystem layout.
+ *
+ * Intel RDT "resource control" filesystem hierarchy:
+ * mount -t resctrl resctrl /sys/fs/resctrl
+ * tree /sys/fs/resctrl
+ * /sys/fs/resctrl/
+ * |-- info
+ * | |-- L3
+ * | |-- cbm_mask
+ * | |-- min_cbm_bits
+ * | |-- num_closids
+ * |-- cpus
+ * |-- schemata
+ * |-- tasks
+ * |--
+ * |-- cpus
+ * |-- schemata
+ * |-- tasks
+ *
+ * For runc, we can make use of `tasks` and `schemata` configuration for L3 cache
+ * resource constraints.
+ *
+ * The file `tasks` has a list of tasks that belongs to this group (e.g.,
+ * " group). Tasks can be added to a group by writing the task ID
+ * to the "tasks" file (which will automatically remove them from the previous
+ * group to which they belonged). New tasks created by fork(2) and clone(2) are
+ * added to the same group as their parent. If a pid is not in any sub group, it is
+ * in root group.
+ *
+ * The file `schemata` has allocation bitmasks/values for L3 cache on each socket,
+ * which contains L3 cache id and capacity bitmask (CBM).
+ * Format: "L3:=;=;..."
+ * For example, on a two-socket machine, L3's schema line could be `L3:0=ff;1=c0`
+ * which means L3 cache id 0's CBM is 0xff, and L3 cache id 1's CBM is 0xc0.
+ *
+ * The valid L3 cache CBM is a *contiguous bits set* and number of bits that can
+ * be set is less than the max bit. The max bits in the CBM is varied among
+ * supported Intel Xeon platforms. In Intel RDT "resource control" filesystem
+ * layout, the CBM in a group should be a subset of the CBM in root. Kernel will
+ * check if it is valid when writing. e.g., 0xfffff in root indicates the max bits
+ * of CBM is 20 bits, which mapping to entire L3 cache capacity. Some valid CBM
+ * values to set in a group: 0xf, 0xf0, 0x3ff, 0x1f00 and etc.
+ *
+ * For more information about Intel RDT/CAT kernel interface:
+ * https://www.kernel.org/doc/Documentation/x86/intel_rdt_ui.txt
+ *
+ * An example for runc:
+ * Consider a two-socket machine with two L3 caches where the default CBM is
+ * 0xfffff and the max CBM length is 20 bits. With this configuration, tasks
+ * inside the container only have access to the "upper" 80% of L3 cache id 0 and
+ * the "lower" 50% L3 cache id 1:
+ *
+ * "linux": {
+ * "intelRdt": {
+ * "l3CacheSchema": "L3:0=ffff0;1=3ff"
+ * }
+ * }
+ */
+
+type Manager interface {
+ // Applies Intel RDT configuration to the process with the specified pid
+ Apply(pid int) error
+
+ // Returns statistics for Intel RDT
+ GetStats() (*Stats, error)
+
+ // Destroys the Intel RDT 'container_id' group
+ Destroy() error
+
+ // Returns Intel RDT path to save in a state file and to be able to
+ // restore the object later
+ GetPath() string
+
+ // Set Intel RDT "resource control" filesystem as configured.
+ Set(container *configs.Config) error
+}
+
+// This implements interface Manager
+type IntelRdtManager struct {
+ mu sync.Mutex
+ Config *configs.Config
+ Id string
+ Path string
+}
+
+const (
+ IntelRdtTasks = "tasks"
+)
+
+var (
+ // The absolute root path of the Intel RDT "resource control" filesystem
+ intelRdtRoot string
+ intelRdtRootLock sync.Mutex
+
+ // The flag to indicate if Intel RDT is supported
+ isEnabled bool
+)
+
+type intelRdtData struct {
+ root string
+ config *configs.Config
+ pid int
+}
+
+// Check if Intel RDT is enabled in init()
+func init() {
+ // 1. Check if hardware and kernel support Intel RDT/CAT feature
+ // "cat_l3" flag is set if supported
+ isFlagSet, err := parseCpuInfoFile("/proc/cpuinfo")
+ if !isFlagSet || err != nil {
+ isEnabled = false
+ return
+ }
+
+ // 2. Check if Intel RDT "resource control" filesystem is mounted
+ // The user guarantees to mount the filesystem
+ isEnabled = isIntelRdtMounted()
+}
+
+// Return the mount point path of Intel RDT "resource control" filesysem
+func findIntelRdtMountpointDir() (string, error) {
+ f, err := os.Open("/proc/self/mountinfo")
+ if err != nil {
+ return "", err
+ }
+ defer f.Close()
+
+ s := bufio.NewScanner(f)
+ for s.Scan() {
+ text := s.Text()
+ fields := strings.Split(text, " ")
+ // Safe as mountinfo encodes mountpoints with spaces as \040.
+ index := strings.Index(text, " - ")
+ postSeparatorFields := strings.Fields(text[index+3:])
+ numPostFields := len(postSeparatorFields)
+
+ // This is an error as we can't detect if the mount is for "Intel RDT"
+ if numPostFields == 0 {
+ return "", fmt.Errorf("Found no fields post '-' in %q", text)
+ }
+
+ if postSeparatorFields[0] == "resctrl" {
+ // Check that the mount is properly formated.
+ if numPostFields < 3 {
+ return "", fmt.Errorf("Error found less than 3 fields post '-' in %q", text)
+ }
+
+ return fields[4], nil
+ }
+ }
+ if err := s.Err(); err != nil {
+ return "", err
+ }
+
+ return "", NewNotFoundError("Intel RDT")
+}
+
+// Gets the root path of Intel RDT "resource control" filesystem
+func getIntelRdtRoot() (string, error) {
+ intelRdtRootLock.Lock()
+ defer intelRdtRootLock.Unlock()
+
+ if intelRdtRoot != "" {
+ return intelRdtRoot, nil
+ }
+
+ root, err := findIntelRdtMountpointDir()
+ if err != nil {
+ return "", err
+ }
+
+ if _, err := os.Stat(root); err != nil {
+ return "", err
+ }
+
+ intelRdtRoot = root
+ return intelRdtRoot, nil
+}
+
+func isIntelRdtMounted() bool {
+ _, err := getIntelRdtRoot()
+ if err != nil {
+ return false
+ }
+
+ return true
+}
+
+func parseCpuInfoFile(path string) (bool, error) {
+ f, err := os.Open(path)
+ if err != nil {
+ return false, err
+ }
+ defer f.Close()
+
+ s := bufio.NewScanner(f)
+ for s.Scan() {
+ if err := s.Err(); err != nil {
+ return false, err
+ }
+
+ text := s.Text()
+ flags := strings.Split(text, " ")
+
+ // "cat_l3" flag is set if Intel RDT/CAT is supported
+ for _, flag := range flags {
+ if flag == "cat_l3" {
+ return true, nil
+ }
+ }
+ }
+ return false, nil
+}
+
+func parseUint(s string, base, bitSize int) (uint64, error) {
+ value, err := strconv.ParseUint(s, base, bitSize)
+ if err != nil {
+ intValue, intErr := strconv.ParseInt(s, base, bitSize)
+ // 1. Handle negative values greater than MinInt64 (and)
+ // 2. Handle negative values lesser than MinInt64
+ if intErr == nil && intValue < 0 {
+ return 0, nil
+ } else if intErr != nil && intErr.(*strconv.NumError).Err == strconv.ErrRange && intValue < 0 {
+ return 0, nil
+ }
+
+ return value, err
+ }
+
+ return value, nil
+}
+
+// Gets a single uint64 value from the specified file.
+func getIntelRdtParamUint(path, file string) (uint64, error) {
+ fileName := filepath.Join(path, file)
+ contents, err := ioutil.ReadFile(fileName)
+ if err != nil {
+ return 0, err
+ }
+
+ res, err := parseUint(strings.TrimSpace(string(contents)), 10, 64)
+ if err != nil {
+ return res, fmt.Errorf("unable to parse %q as a uint from file %q", string(contents), fileName)
+ }
+ return res, nil
+}
+
+// Gets a string value from the specified file
+func getIntelRdtParamString(path, file string) (string, error) {
+ contents, err := ioutil.ReadFile(filepath.Join(path, file))
+ if err != nil {
+ return "", err
+ }
+
+ return strings.TrimSpace(string(contents)), nil
+}
+
+func readTasksFile(dir string) ([]int, error) {
+ f, err := os.Open(filepath.Join(dir, IntelRdtTasks))
+ if err != nil {
+ return nil, err
+ }
+ defer f.Close()
+
+ var (
+ s = bufio.NewScanner(f)
+ out = []int{}
+ )
+
+ for s.Scan() {
+ if t := s.Text(); t != "" {
+ pid, err := strconv.Atoi(t)
+ if err != nil {
+ return nil, err
+ }
+ out = append(out, pid)
+ }
+ }
+ return out, nil
+}
+
+func writeFile(dir, file, data string) error {
+ if dir == "" {
+ return fmt.Errorf("no such directory for %s", file)
+ }
+ if err := ioutil.WriteFile(filepath.Join(dir, file), []byte(data+"\n"), 0700); err != nil {
+ return fmt.Errorf("failed to write %v to %v: %v", data, file, err)
+ }
+ return nil
+}
+
+func getIntelRdtData(c *configs.Config, pid int) (*intelRdtData, error) {
+ rootPath, err := getIntelRdtRoot()
+ if err != nil {
+ return nil, err
+ }
+ return &intelRdtData{
+ root: rootPath,
+ config: c,
+ pid: pid,
+ }, nil
+}
+
+// Get the read-only L3 cache information
+func getL3CacheInfo() (*L3CacheInfo, error) {
+ l3CacheInfo := &L3CacheInfo{}
+
+ rootPath, err := getIntelRdtRoot()
+ if err != nil {
+ return l3CacheInfo, err
+ }
+
+ path := filepath.Join(rootPath, "info", "L3")
+ cbmMask, err := getIntelRdtParamString(path, "cbm_mask")
+ if err != nil {
+ return l3CacheInfo, err
+ }
+ minCbmBits, err := getIntelRdtParamUint(path, "min_cbm_bits")
+ if err != nil {
+ return l3CacheInfo, err
+ }
+ numClosids, err := getIntelRdtParamUint(path, "num_closids")
+ if err != nil {
+ return l3CacheInfo, err
+ }
+
+ l3CacheInfo.CbmMask = cbmMask
+ l3CacheInfo.MinCbmBits = minCbmBits
+ l3CacheInfo.NumClosids = numClosids
+
+ return l3CacheInfo, nil
+}
+
+// WriteIntelRdtTasks writes the specified pid into the "tasks" file
+func WriteIntelRdtTasks(dir string, pid int) error {
+ if dir == "" {
+ return fmt.Errorf("no such directory for %s", IntelRdtTasks)
+ }
+
+ // Dont attach any pid if -1 is specified as a pid
+ if pid != -1 {
+ if err := ioutil.WriteFile(filepath.Join(dir, IntelRdtTasks), []byte(strconv.Itoa(pid)), 0700); err != nil {
+ return fmt.Errorf("failed to write %v to %v: %v", pid, IntelRdtTasks, err)
+ }
+ }
+ return nil
+}
+
+// Check if Intel RDT is enabled
+func IsEnabled() bool {
+ return isEnabled
+}
+
+// Get the 'container_id' path in Intel RDT "resource control" filesystem
+func GetIntelRdtPath(id string) (string, error) {
+ rootPath, err := getIntelRdtRoot()
+ if err != nil {
+ return "", err
+ }
+
+ path := filepath.Join(rootPath, id)
+ return path, nil
+}
+
+// Applies Intel RDT configuration to the process with the specified pid
+func (m *IntelRdtManager) Apply(pid int) (err error) {
+ // If intelRdt is not specified in config, we do nothing
+ if m.Config.IntelRdt == nil {
+ return nil
+ }
+ d, err := getIntelRdtData(m.Config, pid)
+ if err != nil && !IsNotFound(err) {
+ return err
+ }
+
+ m.mu.Lock()
+ defer m.mu.Unlock()
+ path, err := d.join(m.Id)
+ if err != nil {
+ return err
+ }
+
+ m.Path = path
+ return nil
+}
+
+// Destroys the Intel RDT 'container_id' group
+func (m *IntelRdtManager) Destroy() error {
+ m.mu.Lock()
+ defer m.mu.Unlock()
+ if err := os.RemoveAll(m.Path); err != nil {
+ return err
+ }
+ m.Path = ""
+ return nil
+}
+
+// Returns Intel RDT path to save in a state file and to be able to
+// restore the object later
+func (m *IntelRdtManager) GetPath() string {
+ if m.Path == "" {
+ m.Path, _ = GetIntelRdtPath(m.Id)
+ }
+ return m.Path
+}
+
+// Returns statistics for Intel RDT
+func (m *IntelRdtManager) GetStats() (*Stats, error) {
+ // If intelRdt is not specified in config
+ if m.Config.IntelRdt == nil {
+ return nil, nil
+ }
+
+ m.mu.Lock()
+ defer m.mu.Unlock()
+ stats := NewStats()
+
+ // The read-only L3 cache information
+ l3CacheInfo, err := getL3CacheInfo()
+ if err != nil {
+ return nil, err
+ }
+ stats.L3CacheInfo = l3CacheInfo
+
+ // The read-only L3 cache schema in root
+ rootPath, err := getIntelRdtRoot()
+ if err != nil {
+ return nil, err
+ }
+ tmpRootStrings, err := getIntelRdtParamString(rootPath, "schemata")
+ if err != nil {
+ return nil, err
+ }
+ // L3 cache schema is in the first line
+ schemaRootStrings := strings.Split(tmpRootStrings, "\n")
+ stats.L3CacheSchemaRoot = schemaRootStrings[0]
+
+ // The L3 cache schema in 'container_id' group
+ tmpStrings, err := getIntelRdtParamString(m.GetPath(), "schemata")
+ if err != nil {
+ return nil, err
+ }
+ // L3 cache schema is in the first line
+ schemaStrings := strings.Split(tmpStrings, "\n")
+ stats.L3CacheSchema = schemaStrings[0]
+
+ return stats, nil
+}
+
+// Set Intel RDT "resource control" filesystem as configured.
+func (m *IntelRdtManager) Set(container *configs.Config) error {
+ path := m.GetPath()
+
+ // About L3 cache schema file:
+ // The schema has allocation masks/values for L3 cache on each socket,
+ // which contains L3 cache id and capacity bitmask (CBM).
+ // Format: "L3:=;=;..."
+ // For example, on a two-socket machine, L3's schema line could be:
+ // L3:0=ff;1=c0
+ // Which means L3 cache id 0's CBM is 0xff, and L3 cache id 1's CBM is 0xc0.
+ //
+ // About L3 cache CBM validity:
+ // The valid L3 cache CBM is a *contiguous bits set* and number of
+ // bits that can be set is less than the max bit. The max bits in the
+ // CBM is varied among supported Intel Xeon platforms. In Intel RDT
+ // "resource control" filesystem layout, the CBM in a group should
+ // be a subset of the CBM in root. Kernel will check if it is valid
+ // when writing.
+ // e.g., 0xfffff in root indicates the max bits of CBM is 20 bits,
+ // which mapping to entire L3 cache capacity. Some valid CBM values
+ // to set in a group: 0xf, 0xf0, 0x3ff, 0x1f00 and etc.
+ if container.IntelRdt != nil {
+ l3CacheSchema := container.IntelRdt.L3CacheSchema
+ if l3CacheSchema != "" {
+ if err := writeFile(path, "schemata", l3CacheSchema); err != nil {
+ return err
+ }
+ }
+ }
+
+ return nil
+}
+
+func (raw *intelRdtData) join(id string) (string, error) {
+ path := filepath.Join(raw.root, id)
+ if err := os.MkdirAll(path, 0755); err != nil {
+ return "", err
+ }
+
+ if err := WriteIntelRdtTasks(path, raw.pid); err != nil {
+ return "", err
+ }
+ return path, nil
+}
+
+type NotFoundError struct {
+ ResourceControl string
+}
+
+func (e *NotFoundError) Error() string {
+ return fmt.Sprintf("mountpoint for %s not found", e.ResourceControl)
+}
+
+func NewNotFoundError(res string) error {
+ return &NotFoundError{
+ ResourceControl: res,
+ }
+}
+
+func IsNotFound(err error) bool {
+ if err == nil {
+ return false
+ }
+ _, ok := err.(*NotFoundError)
+ return ok
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/stats.go b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/stats.go
new file mode 100644
index 000000000000..095c0a380cd0
--- /dev/null
+++ b/vendor/github.com/opencontainers/runc/libcontainer/intelrdt/stats.go
@@ -0,0 +1,24 @@
+// +build linux
+
+package intelrdt
+
+type L3CacheInfo struct {
+ CbmMask string `json:"cbm_mask,omitempty"`
+ MinCbmBits uint64 `json:"min_cbm_bits,omitempty"`
+ NumClosids uint64 `json:"num_closids,omitempty"`
+}
+
+type Stats struct {
+ // The read-only L3 cache information
+ L3CacheInfo *L3CacheInfo `json:"l3_cache_info,omitempty"`
+
+ // The read-only L3 cache schema in root
+ L3CacheSchemaRoot string `json:"l3_cache_schema_root,omitempty"`
+
+ // The L3 cache schema in 'container_id' group
+ L3CacheSchema string `json:"l3_cache_schema,omitempty"`
+}
+
+func NewStats() *Stats {
+ return &Stats{}
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/keys/keyctl.go b/vendor/github.com/opencontainers/runc/libcontainer/keys/keyctl.go
index 82ffa7a88499..ce8b4e6b040e 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/keys/keyctl.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/keys/keyctl.go
@@ -29,7 +29,7 @@ func ModKeyringPerm(ringId KeySerial, mask, setbits uint32) error {
return err
}
- res := strings.Split(string(dest), ";")
+ res := strings.Split(dest, ";")
if len(res) < 5 {
return fmt.Errorf("Destination buffer for key description is too small")
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/message_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/message_linux.go
index 8829b71ad85d..ab453cde9120 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/message_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/message_linux.go
@@ -18,6 +18,8 @@ const (
SetgroupAttr uint16 = 27285
OomScoreAdjAttr uint16 = 27286
RootlessAttr uint16 = 27287
+ UidmapPathAttr uint16 = 27288
+ GidmapPathAttr uint16 = 27289
)
type Int32msg struct {
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/mount/mount.go b/vendor/github.com/opencontainers/runc/libcontainer/mount/mount.go
new file mode 100644
index 000000000000..e8965e081bb1
--- /dev/null
+++ b/vendor/github.com/opencontainers/runc/libcontainer/mount/mount.go
@@ -0,0 +1,23 @@
+package mount
+
+// GetMounts retrieves a list of mounts for the current running process.
+func GetMounts() ([]*Info, error) {
+ return parseMountTable()
+}
+
+// Mounted looks at /proc/self/mountinfo to determine of the specified
+// mountpoint has been mounted
+func Mounted(mountpoint string) (bool, error) {
+ entries, err := parseMountTable()
+ if err != nil {
+ return false, err
+ }
+
+ // Search the table for the mountpoint
+ for _, e := range entries {
+ if e.Mountpoint == mountpoint {
+ return true, nil
+ }
+ }
+ return false, nil
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/mount/mount_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/mount/mount_linux.go
new file mode 100644
index 000000000000..1e5191928dec
--- /dev/null
+++ b/vendor/github.com/opencontainers/runc/libcontainer/mount/mount_linux.go
@@ -0,0 +1,82 @@
+// +build linux
+
+package mount
+
+import (
+ "bufio"
+ "fmt"
+ "io"
+ "os"
+ "strings"
+)
+
+const (
+ /* 36 35 98:0 /mnt1 /mnt2 rw,noatime master:1 - ext3 /dev/root rw,errors=continue
+ (1)(2)(3) (4) (5) (6) (7) (8) (9) (10) (11)
+
+ (1) mount ID: unique identifier of the mount (may be reused after umount)
+ (2) parent ID: ID of parent (or of self for the top of the mount tree)
+ (3) major:minor: value of st_dev for files on filesystem
+ (4) root: root of the mount within the filesystem
+ (5) mount point: mount point relative to the process's root
+ (6) mount options: per mount options
+ (7) optional fields: zero or more fields of the form "tag[:value]"
+ (8) separator: marks the end of the optional fields
+ (9) filesystem type: name of filesystem of the form "type[.subtype]"
+ (10) mount source: filesystem specific information or "none"
+ (11) super options: per super block options*/
+ mountinfoFormat = "%d %d %d:%d %s %s %s %s"
+)
+
+// Parse /proc/self/mountinfo because comparing Dev and ino does not work from
+// bind mounts
+func parseMountTable() ([]*Info, error) {
+ f, err := os.Open("/proc/self/mountinfo")
+ if err != nil {
+ return nil, err
+ }
+ defer f.Close()
+
+ return parseInfoFile(f)
+}
+
+func parseInfoFile(r io.Reader) ([]*Info, error) {
+ var (
+ s = bufio.NewScanner(r)
+ out = []*Info{}
+ )
+
+ for s.Scan() {
+ if err := s.Err(); err != nil {
+ return nil, err
+ }
+
+ var (
+ p = &Info{}
+ text = s.Text()
+ optionalFields string
+ )
+
+ if _, err := fmt.Sscanf(text, mountinfoFormat,
+ &p.ID, &p.Parent, &p.Major, &p.Minor,
+ &p.Root, &p.Mountpoint, &p.Opts, &optionalFields); err != nil {
+ return nil, fmt.Errorf("Scanning '%s' failed: %s", text, err)
+ }
+ // Safe as mountinfo encodes mountpoints with spaces as \040.
+ index := strings.Index(text, " - ")
+ postSeparatorFields := strings.Fields(text[index+3:])
+ if len(postSeparatorFields) < 3 {
+ return nil, fmt.Errorf("Error found less than 3 fields post '-' in %q", text)
+ }
+
+ if optionalFields != "-" {
+ p.Optional = optionalFields
+ }
+
+ p.Fstype = postSeparatorFields[0]
+ p.Source = postSeparatorFields[1]
+ p.VfsOpts = strings.Join(postSeparatorFields[2:], " ")
+ out = append(out, p)
+ }
+ return out, nil
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/mount/mountinfo.go b/vendor/github.com/opencontainers/runc/libcontainer/mount/mountinfo.go
new file mode 100644
index 000000000000..e3fc3535e934
--- /dev/null
+++ b/vendor/github.com/opencontainers/runc/libcontainer/mount/mountinfo.go
@@ -0,0 +1,40 @@
+package mount
+
+// Info reveals information about a particular mounted filesystem. This
+// struct is populated from the content in the /proc//mountinfo file.
+type Info struct {
+ // ID is a unique identifier of the mount (may be reused after umount).
+ ID int
+
+ // Parent indicates the ID of the mount parent (or of self for the top of the
+ // mount tree).
+ Parent int
+
+ // Major indicates one half of the device ID which identifies the device class.
+ Major int
+
+ // Minor indicates one half of the device ID which identifies a specific
+ // instance of device.
+ Minor int
+
+ // Root of the mount within the filesystem.
+ Root string
+
+ // Mountpoint indicates the mount point relative to the process's root.
+ Mountpoint string
+
+ // Opts represents mount-specific options.
+ Opts string
+
+ // Optional represents optional fields.
+ Optional string
+
+ // Fstype indicates the type of filesystem, such as EXT3.
+ Fstype string
+
+ // Source indicates filesystem specific information or "none".
+ Source string
+
+ // VfsOpts represents per super block options.
+ VfsOpts string
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/process.go b/vendor/github.com/opencontainers/runc/libcontainer/process.go
index f1ad0814912f..86bf7387f8c4 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/process.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/process.go
@@ -47,6 +47,10 @@ type Process struct {
// ExtraFiles specifies additional open files to be inherited by the container
ExtraFiles []*os.File
+ // Initial sizings for the console
+ ConsoleWidth uint16
+ ConsoleHeight uint16
+
// Capabilities specify the capabilities to keep when executing the process inside the container
// All capabilities not specified will be dropped from the processes capability mask
Capabilities *configs.Capabilities
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/process_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/process_linux.go
index 50f9af574c4d..58980b0594e7 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/process_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/process_linux.go
@@ -15,6 +15,7 @@ import (
"github.com/opencontainers/runc/libcontainer/cgroups"
"github.com/opencontainers/runc/libcontainer/configs"
+ "github.com/opencontainers/runc/libcontainer/intelrdt"
"github.com/opencontainers/runc/libcontainer/system"
"github.com/opencontainers/runc/libcontainer/utils"
@@ -49,6 +50,7 @@ type setnsProcess struct {
parentPipe *os.File
childPipe *os.File
cgroupPaths map[string]string
+ intelRdtPath string
config *initConfig
fds []string
process *Process
@@ -83,12 +85,20 @@ func (p *setnsProcess) start() (err error) {
if err = p.execSetns(); err != nil {
return newSystemErrorWithCause(err, "executing setns process")
}
- // We can't join cgroups if we're in a rootless container.
- if !p.config.Rootless && len(p.cgroupPaths) > 0 {
+ if len(p.cgroupPaths) > 0 {
if err := cgroups.EnterPid(p.cgroupPaths, p.pid()); err != nil {
return newSystemErrorWithCausef(err, "adding pid %d to cgroups", p.pid())
}
}
+ if p.intelRdtPath != "" {
+ // if Intel RDT "resource control" filesystem path exists
+ _, err := os.Stat(p.intelRdtPath)
+ if err == nil {
+ if err := intelrdt.WriteIntelRdtTasks(p.intelRdtPath, p.pid()); err != nil {
+ return newSystemErrorWithCausef(err, "adding pid %d to Intel RDT resource control filesystem", p.pid())
+ }
+ }
+ }
// set rlimits, this has to be done here because we lose permissions
// to raise the limits once we enter a user-namespace
if err := setupRlimits(p.config.Rlimits, p.pid()); err != nil {
@@ -193,16 +203,17 @@ func (p *setnsProcess) setExternalDescriptors(newFds []string) {
}
type initProcess struct {
- cmd *exec.Cmd
- parentPipe *os.File
- childPipe *os.File
- config *initConfig
- manager cgroups.Manager
- container *linuxContainer
- fds []string
- process *Process
- bootstrapData io.Reader
- sharePidns bool
+ cmd *exec.Cmd
+ parentPipe *os.File
+ childPipe *os.File
+ config *initConfig
+ manager cgroups.Manager
+ intelRdtManager intelrdt.Manager
+ container *linuxContainer
+ fds []string
+ process *Process
+ bootstrapData io.Reader
+ sharePidns bool
}
func (p *initProcess) pid() int {
@@ -261,12 +272,35 @@ func (p *initProcess) start() error {
p.process.ops = nil
return newSystemErrorWithCause(err, "starting init process command")
}
+ // Do this before syncing with child so that no children can escape the
+ // cgroup. We don't need to worry about not doing this and not being root
+ // because we'd be using the rootless cgroup manager in that case.
+ if err := p.manager.Apply(p.pid()); err != nil {
+ return newSystemErrorWithCause(err, "applying cgroup configuration for process")
+ }
+ if p.intelRdtManager != nil {
+ if err := p.intelRdtManager.Apply(p.pid()); err != nil {
+ return newSystemErrorWithCause(err, "applying Intel RDT configuration for process")
+ }
+ }
+ defer func() {
+ if err != nil {
+ // TODO: should not be the responsibility to call here
+ p.manager.Destroy()
+ if p.intelRdtManager != nil {
+ p.intelRdtManager.Destroy()
+ }
+ }
+ }()
+
if _, err := io.Copy(p.parentPipe, p.bootstrapData); err != nil {
return newSystemErrorWithCause(err, "copying bootstrap data to pipe")
}
+
if err := p.execSetns(); err != nil {
return newSystemErrorWithCause(err, "running exec setns process for init")
}
+
// Save the standard descriptor names before the container process
// can potentially move them (e.g., via dup2()). If we don't do this now,
// we won't know at checkpoint time which file descriptor to look up.
@@ -275,18 +309,6 @@ func (p *initProcess) start() error {
return newSystemErrorWithCausef(err, "getting pipe fds for pid %d", p.pid())
}
p.setExternalDescriptors(fds)
- // Do this before syncing with child so that no children can escape the
- // cgroup. We don't need to worry about not doing this and not being root
- // because we'd be using the rootless cgroup manager in that case.
- if err := p.manager.Apply(p.pid()); err != nil {
- return newSystemErrorWithCause(err, "applying cgroup configuration for process")
- }
- defer func() {
- if err != nil {
- // TODO: should not be the responsibility to call here
- p.manager.Destroy()
- }
- }()
if err := p.createNetworkInterfaces(); err != nil {
return newSystemErrorWithCause(err, "creating network interfaces")
}
@@ -312,13 +334,20 @@ func (p *initProcess) start() error {
if err := p.manager.Set(p.config.Config); err != nil {
return newSystemErrorWithCause(err, "setting cgroup config for ready process")
}
+ if p.intelRdtManager != nil {
+ if err := p.intelRdtManager.Set(p.config.Config); err != nil {
+ return newSystemErrorWithCause(err, "setting Intel RDT config for ready process")
+ }
+ }
if p.config.Config.Hooks != nil {
+ bundle, annotations := utils.Annotations(p.container.config.Labels)
s := configs.HookState{
- Version: p.container.config.Version,
- ID: p.container.id,
- Pid: p.pid(),
- Bundle: utils.SearchLabels(p.config.Config.Labels, "bundle"),
+ Version: p.container.config.Version,
+ ID: p.container.id,
+ Pid: p.pid(),
+ Bundle: bundle,
+ Annotations: annotations,
}
for i, hook := range p.config.Config.Hooks.Prestart {
if err := hook.Run(s); err != nil {
@@ -337,12 +366,19 @@ func (p *initProcess) start() error {
if err := p.manager.Set(p.config.Config); err != nil {
return newSystemErrorWithCause(err, "setting cgroup config for procHooks process")
}
+ if p.intelRdtManager != nil {
+ if err := p.intelRdtManager.Set(p.config.Config); err != nil {
+ return newSystemErrorWithCause(err, "setting Intel RDT config for procHooks process")
+ }
+ }
if p.config.Config.Hooks != nil {
+ bundle, annotations := utils.Annotations(p.container.config.Labels)
s := configs.HookState{
- Version: p.container.config.Version,
- ID: p.container.id,
- Pid: p.pid(),
- Bundle: utils.SearchLabels(p.config.Config.Labels, "bundle"),
+ Version: p.container.config.Version,
+ ID: p.container.id,
+ Pid: p.pid(),
+ Bundle: bundle,
+ Annotations: annotations,
}
for i, hook := range p.config.Config.Hooks.Prestart {
if err := hook.Run(s); err != nil {
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
index e2e734a85660..73ee2bd691ac 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
@@ -13,11 +13,11 @@ import (
"strings"
"time"
- "github.com/docker/docker/pkg/mount"
- "github.com/docker/docker/pkg/symlink"
+ "github.com/cyphar/filepath-securejoin"
"github.com/mrunalp/fileutils"
"github.com/opencontainers/runc/libcontainer/cgroups"
"github.com/opencontainers/runc/libcontainer/configs"
+ "github.com/opencontainers/runc/libcontainer/mount"
"github.com/opencontainers/runc/libcontainer/system"
libcontainerUtils "github.com/opencontainers/runc/libcontainer/utils"
"github.com/opencontainers/selinux/go-selinux/label"
@@ -40,7 +40,8 @@ func needsSetupDev(config *configs.Config) bool {
// prepareRootfs sets up the devices, mount points, and filesystems for use
// inside a new mount namespace. It doesn't set anything as ro. You must call
// finalizeRootfs after this function to finish setting up the rootfs.
-func prepareRootfs(pipe io.ReadWriter, config *configs.Config) (err error) {
+func prepareRootfs(pipe io.ReadWriter, iConfig *initConfig) (err error) {
+ config := iConfig.Config
if err := prepareRoot(config); err != nil {
return newSystemErrorWithCause(err, "preparing rootfs")
}
@@ -80,6 +81,7 @@ func prepareRootfs(pipe io.ReadWriter, config *configs.Config) (err error) {
// The hooks are run after the mounts are setup, but before we switch to the new
// root, so that the old root is still available in the hooks for any mount
// manipulations.
+ // Note that iConfig.Cwd is not guaranteed to exist here.
if err := syncParentHooks(pipe); err != nil {
return err
}
@@ -98,8 +100,10 @@ func prepareRootfs(pipe io.ReadWriter, config *configs.Config) (err error) {
if config.NoPivotRoot {
err = msMoveRoot(config.Rootfs)
- } else {
+ } else if config.Namespaces.Contains(configs.NEWNS) {
err = pivotRoot(config.Rootfs)
+ } else {
+ err = chroot(config.Rootfs)
}
if err != nil {
return newSystemErrorWithCause(err, "jailing process inside rootfs")
@@ -111,6 +115,14 @@ func prepareRootfs(pipe io.ReadWriter, config *configs.Config) (err error) {
}
}
+ if cwd := iConfig.Cwd; cwd != "" {
+ // Note that spec.Process.Cwd can contain unclean value like "../../../../foo/bar...".
+ // However, we are safe to call MkDirAll directly because we are in the jail here.
+ if err := os.MkdirAll(cwd, 0755); err != nil {
+ return err
+ }
+ }
+
return nil
}
@@ -230,7 +242,7 @@ func mountToRootfs(m *configs.Mount, rootfs, mountLabel string) error {
// any previous mounts can invalidate the next mount's destination.
// this can happen when a user specifies mounts within other mounts to cause breakouts or other
// evil stuff to try to escape the container's rootfs.
- if dest, err = symlink.FollowSymlinkInScope(dest, rootfs); err != nil {
+ if dest, err = securejoin.SecureJoin(rootfs, m.Destination); err != nil {
return err
}
if err := checkMountDestination(rootfs, dest); err != nil {
@@ -318,7 +330,7 @@ func mountToRootfs(m *configs.Mount, rootfs, mountLabel string) error {
// this can happen when a user specifies mounts within other mounts to cause breakouts or other
// evil stuff to try to escape the container's rootfs.
var err error
- if dest, err = symlink.FollowSymlinkInScope(dest, rootfs); err != nil {
+ if dest, err = securejoin.SecureJoin(rootfs, m.Destination); err != nil {
return err
}
if err := checkMountDestination(rootfs, dest); err != nil {
@@ -668,9 +680,12 @@ func pivotRoot(rootfs string) error {
return err
}
- // Make oldroot rprivate to make sure our unmounts don't propagate to the
- // host (and thus bork the machine).
- if err := unix.Mount("", ".", "", unix.MS_PRIVATE|unix.MS_REC, ""); err != nil {
+ // Make oldroot rslave to make sure our unmounts don't propagate to the
+ // host (and thus bork the machine). We don't use rprivate because this is
+ // known to cause issues due to races where we still have a reference to a
+ // mount while a process in the host namespace are trying to operate on
+ // something they think has no mounts (devicemapper in particular).
+ if err := unix.Mount("", ".", "", unix.MS_SLAVE|unix.MS_REC, ""); err != nil {
return err
}
// Preform the unmount. MNT_DETACH allows us to unmount /proc/self/cwd.
@@ -689,6 +704,10 @@ func msMoveRoot(rootfs string) error {
if err := unix.Mount(rootfs, "/", "", unix.MS_MOVE, ""); err != nil {
return err
}
+ return chroot(rootfs)
+}
+
+func chroot(rootfs string) error {
if err := unix.Chroot("."); err != nil {
return err
}
@@ -733,7 +752,14 @@ func remountReadonly(m *configs.Mount) error {
flags = m.Flags
)
for i := 0; i < 5; i++ {
- if err := unix.Mount("", dest, "", uintptr(flags|unix.MS_REMOUNT|unix.MS_RDONLY), ""); err != nil {
+ // There is a special case in the kernel for
+ // MS_REMOUNT | MS_BIND, which allows us to change only the
+ // flags even as an unprivileged user (i.e. user namespace)
+ // assuming we don't drop any security related flags (nodev,
+ // nosuid, etc.). So, let's use that case so that we can do
+ // this re-mount without failing in a userns.
+ flags |= unix.MS_REMOUNT | unix.MS_BIND | unix.MS_RDONLY
+ if err := unix.Mount("", dest, "", uintptr(flags), ""); err != nil {
switch err {
case unix.EBUSY:
time.Sleep(100 * time.Millisecond)
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_linux.go
index 2523cbf9901b..d99f3fe640c6 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/seccomp/seccomp_linux.go
@@ -22,6 +22,11 @@ var (
actErrno = libseccomp.ActErrno.SetReturnCode(int16(unix.EPERM))
)
+const (
+ // Linux system calls can have at most 6 arguments
+ syscallMaxArguments int = 6
+)
+
// Filters given syscalls in a container, preventing them from being used
// Started in the container init process, and carried over to all child processes
// Setns calls, however, require a separate invocation, as they are not children
@@ -45,11 +50,11 @@ func InitSeccomp(config *configs.Seccomp) error {
for _, arch := range config.Architectures {
scmpArch, err := libseccomp.GetArchFromString(arch)
if err != nil {
- return err
+ return fmt.Errorf("error validating Seccomp architecture: %s", err)
}
if err := filter.AddArch(scmpArch); err != nil {
- return err
+ return fmt.Errorf("error adding architecture to seccomp filter: %s", err)
}
}
@@ -170,29 +175,55 @@ func matchCall(filter *libseccomp.ScmpFilter, call *configs.Syscall) error {
// Convert the call's action to the libseccomp equivalent
callAct, err := getAction(call.Action)
if err != nil {
- return err
+ return fmt.Errorf("action in seccomp profile is invalid: %s", err)
}
// Unconditional match - just add the rule
if len(call.Args) == 0 {
if err = filter.AddRule(callNum, callAct); err != nil {
- return err
+ return fmt.Errorf("error adding seccomp filter rule for syscall %s: %s", call.Name, err)
}
} else {
- // Conditional match - convert the per-arg rules into library format
+ // If two or more arguments have the same condition,
+ // Revert to old behavior, adding each condition as a separate rule
+ argCounts := make([]uint, syscallMaxArguments)
conditions := []libseccomp.ScmpCondition{}
for _, cond := range call.Args {
newCond, err := getCondition(cond)
if err != nil {
- return err
+ return fmt.Errorf("error creating seccomp syscall condition for syscall %s: %s", call.Name, err)
}
+ argCounts[cond.Index] += 1
+
conditions = append(conditions, newCond)
}
- if err = filter.AddRuleConditional(callNum, callAct, conditions); err != nil {
- return err
+ hasMultipleArgs := false
+ for _, count := range argCounts {
+ if count > 1 {
+ hasMultipleArgs = true
+ break
+ }
+ }
+
+ if hasMultipleArgs {
+ // Revert to old behavior
+ // Add each condition attached to a separate rule
+ for _, cond := range conditions {
+ condArr := []libseccomp.ScmpCondition{cond}
+
+ if err = filter.AddRuleConditional(callNum, callAct, condArr); err != nil {
+ return fmt.Errorf("error adding seccomp rule for syscall %s: %s", call.Name, err)
+ }
+ }
+ } else {
+ // No conditions share same argument
+ // Use new, proper behavior
+ if err = filter.AddRuleConditional(callNum, callAct, conditions); err != nil {
+ return fmt.Errorf("error adding seccomp rule for syscall %s: %s", call.Name, err)
+ }
}
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/setgroups_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/setgroups_linux.go
deleted file mode 100644
index c7bdb605aa88..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/setgroups_linux.go
+++ /dev/null
@@ -1,11 +0,0 @@
-// +build linux,go1.5
-
-package libcontainer
-
-import "syscall"
-
-// Set the GidMappingsEnableSetgroups member to true, so the process's
-// setgroups proc entry wont be set to 'deny' if GidMappings are set
-func enableSetgroups(sys *syscall.SysProcAttr) {
- sys.GidMappingsEnableSetgroups = true
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go
index 35b84219c5df..096c601e7675 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go
@@ -47,7 +47,10 @@ func (l *linuxSetnsInit) Init() error {
return err
}
}
- if l.config.Config.Seccomp != nil {
+ // Without NoNewPrivileges seccomp is a privileged operation, so we need to
+ // do this before dropping capabilities; otherwise do it as late as possible
+ // just before execve so as few syscalls take place after it as possible.
+ if l.config.Config.Seccomp != nil && !l.config.NoNewPrivileges {
if err := seccomp.InitSeccomp(l.config.Config.Seccomp); err != nil {
return err
}
@@ -61,5 +64,13 @@ func (l *linuxSetnsInit) Init() error {
if err := label.SetProcessLabel(l.config.ProcessLabel); err != nil {
return err
}
+ // Set seccomp as close to execve as possible, so as few syscalls take
+ // place afterward (reducing the amount of syscalls that users need to
+ // enable in their seccomp profiles).
+ if l.config.Config.Seccomp != nil && l.config.NoNewPrivileges {
+ if err := seccomp.InitSeccomp(l.config.Config.Seccomp); err != nil {
+ return newSystemErrorWithCause(err, "init seccomp")
+ }
+ }
return system.Execv(l.config.Args[0], l.config.Args[0:], os.Environ())
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go
index fbcf3a6ac024..02ea753eda3c 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go
@@ -30,15 +30,15 @@ func (l *linuxStandardInit) getSessionRingParams() (string, uint32, uint32) {
var newperms uint32
if l.config.Config.Namespaces.Contains(configs.NEWUSER) {
- // with user ns we need 'other' search permissions
+ // With user ns we need 'other' search permissions.
newperms = 0x8
} else {
- // without user ns we need 'UID' search permissions
+ // Without user ns we need 'UID' search permissions.
newperms = 0x80000
}
- // create a unique per session container name that we can
- // join in setns; however, other containers can also join it
+ // Create a unique per session container name that we can join in setns;
+ // However, other containers can also join it.
return fmt.Sprintf("_ses.%s", l.config.ContainerId), 0xffffffff, newperms
}
@@ -46,12 +46,12 @@ func (l *linuxStandardInit) Init() error {
if !l.config.Config.NoNewKeyring {
ringname, keepperms, newperms := l.getSessionRingParams()
- // do not inherit the parent's session keyring
+ // Do not inherit the parent's session keyring.
sessKeyId, err := keys.JoinSessionKeyring(ringname)
if err != nil {
return err
}
- // make session keyring searcheable
+ // Make session keyring searcheable.
if err := keys.ModKeyringPerm(sessKeyId, keepperms, newperms); err != nil {
return err
}
@@ -65,14 +65,9 @@ func (l *linuxStandardInit) Init() error {
}
label.Init()
-
- // prepareRootfs() can be executed only for a new mount namespace.
- if l.config.Config.Namespaces.Contains(configs.NEWNS) {
- if err := prepareRootfs(l.pipe, l.config.Config); err != nil {
- return err
- }
+ if err := prepareRootfs(l.pipe, l.config); err != nil {
+ return err
}
-
// Set up the console. This has to be done *before* we finalize the rootfs,
// but *after* we've given the user the chance to set up all of the mounts
// they wanted.
@@ -150,19 +145,20 @@ func (l *linuxStandardInit) Init() error {
if err := pdeath.Restore(); err != nil {
return err
}
- // compare the parent from the initial start of the init process and make sure that it did not change.
- // if the parent changes that means it died and we were reparented to something else so we should
- // just kill ourself and not cause problems for someone else.
+ // Compare the parent from the initial start of the init process and make
+ // sure that it did not change. if the parent changes that means it died
+ // and we were reparented to something else so we should just kill ourself
+ // and not cause problems for someone else.
if unix.Getppid() != l.parentPid {
return unix.Kill(unix.Getpid(), unix.SIGKILL)
}
- // check for the arg before waiting to make sure it exists and it is returned
- // as a create time error.
+ // Check for the arg before waiting to make sure it exists and it is
+ // returned as a create time error.
name, err := exec.LookPath(l.config.Args[0])
if err != nil {
return err
}
- // close the pipe to signal that we have completed our init.
+ // Close the pipe to signal that we have completed our init.
l.pipe.Close()
// Wait for the FIFO to be opened on the other side before exec-ing the
// user process. We open it through /proc/self/fd/$fd, because the fd that
@@ -170,19 +166,26 @@ func (l *linuxStandardInit) Init() error {
// re-open an O_PATH fd through /proc.
fd, err := unix.Open(fmt.Sprintf("/proc/self/fd/%d", l.fifoFd), unix.O_WRONLY|unix.O_CLOEXEC, 0)
if err != nil {
- return newSystemErrorWithCause(err, "openat exec fifo")
+ return newSystemErrorWithCause(err, "open exec fifo")
}
if _, err := unix.Write(fd, []byte("0")); err != nil {
return newSystemErrorWithCause(err, "write 0 exec fifo")
}
+ // Close the O_PATH fifofd fd before exec because the kernel resets
+ // dumpable in the wrong order. This has been fixed in newer kernels, but
+ // we keep this to ensure CVE-2016-9962 doesn't re-emerge on older kernels.
+ // N.B. the core issue itself (passing dirfds to the host filesystem) has
+ // since been resolved.
+ // https://github.com/torvalds/linux/blob/v4.9/fs/exec.c#L1290-L1318
+ unix.Close(l.fifoFd)
+ // Set seccomp as close to execve as possible, so as few syscalls take
+ // place afterward (reducing the amount of syscalls that users need to
+ // enable in their seccomp profiles).
if l.config.Config.Seccomp != nil && l.config.NoNewPrivileges {
if err := seccomp.InitSeccomp(l.config.Config.Seccomp); err != nil {
return newSystemErrorWithCause(err, "init seccomp")
}
}
- // close the statedir fd before exec because the kernel resets dumpable in the wrong order
- // https://github.com/torvalds/linux/blob/v4.9/fs/exec.c#L1290-L1318
- unix.Close(l.fifoFd)
if err := syscall.Exec(name, l.config.Args[0:], os.Environ()); err != nil {
return newSystemErrorWithCause(err, "exec user process")
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/state_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/state_linux.go
index 44fa6b43a8db..b45ce23e4a5b 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/state_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/state_linux.go
@@ -45,6 +45,11 @@ func destroy(c *linuxContainer) error {
}
}
err := c.cgroupManager.Destroy()
+ if c.intelRdtManager != nil {
+ if ierr := c.intelRdtManager.Destroy(); err == nil {
+ err = ierr
+ }
+ }
if rerr := os.RemoveAll(c.root); err == nil {
err = rerr
}
@@ -58,10 +63,12 @@ func destroy(c *linuxContainer) error {
func runPoststopHooks(c *linuxContainer) error {
if c.config.Hooks != nil {
+ bundle, annotations := utils.Annotations(c.config.Labels)
s := configs.HookState{
- Version: c.config.Version,
- ID: c.id,
- Bundle: utils.SearchLabels(c.config.Labels, "bundle"),
+ Version: c.config.Version,
+ ID: c.id,
+ Bundle: bundle,
+ Annotations: annotations,
}
for _, hook := range c.config.Hooks.Poststop {
if err := hook.Run(s); err != nil {
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/stats_freebsd.go b/vendor/github.com/opencontainers/runc/libcontainer/stats_freebsd.go
deleted file mode 100644
index f8d1d689ceea..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/stats_freebsd.go
+++ /dev/null
@@ -1,5 +0,0 @@
-package libcontainer
-
-type Stats struct {
- Interfaces []*NetworkInterface
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/stats_linux.go b/vendor/github.com/opencontainers/runc/libcontainer/stats_linux.go
index c629dc67de96..29fd641e9dd1 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/stats_linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/stats_linux.go
@@ -1,8 +1,10 @@
package libcontainer
import "github.com/opencontainers/runc/libcontainer/cgroups"
+import "github.com/opencontainers/runc/libcontainer/intelrdt"
type Stats struct {
- Interfaces []*NetworkInterface
- CgroupStats *cgroups.Stats
+ Interfaces []*NetworkInterface
+ CgroupStats *cgroups.Stats
+ IntelRdtStats *intelrdt.Stats
}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/stats_solaris.go b/vendor/github.com/opencontainers/runc/libcontainer/stats_solaris.go
deleted file mode 100644
index da78c1c2e155..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/stats_solaris.go
+++ /dev/null
@@ -1,7 +0,0 @@
-package libcontainer
-
-// Solaris - TODO
-
-type Stats struct {
- Interfaces []*NetworkInterface
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/stats_windows.go b/vendor/github.com/opencontainers/runc/libcontainer/stats_windows.go
deleted file mode 100644
index f8d1d689ceea..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/stats_windows.go
+++ /dev/null
@@ -1,5 +0,0 @@
-package libcontainer
-
-type Stats struct {
- Interfaces []*NetworkInterface
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go b/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go
index 4837085a7fd4..5f124cd8bbc7 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/system/linux.go
@@ -134,3 +134,14 @@ func RunningInUserNS() bool {
func SetSubreaper(i int) error {
return unix.Prctl(PR_SET_CHILD_SUBREAPER, uintptr(i), 0, 0, 0)
}
+
+// GetSubreaper returns the subreaper setting for the calling process
+func GetSubreaper() (int, error) {
+ var i uintptr
+
+ if err := unix.Prctl(unix.PR_GET_CHILD_SUBREAPER, uintptr(unsafe.Pointer(&i)), 0, 0, 0); err != nil {
+ return -1, err
+ }
+
+ return int(i), nil
+}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_386.go b/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_32.go
similarity index 93%
rename from vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_386.go
rename to vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_32.go
index 3f7235ed1544..c5ca5d86235b 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_386.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_32.go
@@ -1,4 +1,5 @@
-// +build linux,386
+// +build linux
+// +build 386 arm
package system
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_64.go b/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_64.go
index d7891a2ffa0d..11c3faafbf0b 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_64.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_64.go
@@ -1,4 +1,5 @@
-// +build linux,arm64 linux,amd64 linux,ppc linux,ppc64 linux,ppc64le linux,s390x
+// +build linux
+// +build arm64 amd64 mips mipsle mips64 mips64le ppc ppc64 ppc64le s390x
package system
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_arm.go b/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_arm.go
deleted file mode 100644
index 31ff3deb1351..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/system/syscall_linux_arm.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// +build linux,arm
-
-package system
-
-import (
- "golang.org/x/sys/unix"
-)
-
-// Setuid sets the uid of the calling thread to the specified uid.
-func Setuid(uid int) (err error) {
- _, _, e1 := unix.RawSyscall(unix.SYS_SETUID32, uintptr(uid), 0, 0)
- if e1 != 0 {
- err = e1
- }
- return
-}
-
-// Setgid sets the gid of the calling thread to the specified gid.
-func Setgid(gid int) (err error) {
- _, _, e1 := unix.RawSyscall(unix.SYS_SETGID32, uintptr(gid), 0, 0)
- if e1 != 0 {
- err = e1
- }
- return
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/system/sysconfig.go b/vendor/github.com/opencontainers/runc/libcontainer/system/sysconfig.go
index b3a07cba3efa..b8434f10500b 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/system/sysconfig.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/system/sysconfig.go
@@ -1,4 +1,4 @@
-// +build cgo,linux cgo,freebsd
+// +build cgo,linux
package system
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unsupported.go b/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unsupported.go
deleted file mode 100644
index 4a8d00acbd57..000000000000
--- a/vendor/github.com/opencontainers/runc/libcontainer/user/lookup_unsupported.go
+++ /dev/null
@@ -1,38 +0,0 @@
-// +build !darwin,!dragonfly,!freebsd,!linux,!netbsd,!openbsd,!solaris
-
-package user
-
-import (
- "io"
- "syscall"
-)
-
-func GetPasswdPath() (string, error) {
- return "", ErrUnsupported
-}
-
-func GetPasswd() (io.ReadCloser, error) {
- return nil, ErrUnsupported
-}
-
-func GetGroupPath() (string, error) {
- return "", ErrUnsupported
-}
-
-func GetGroup() (io.ReadCloser, error) {
- return nil, ErrUnsupported
-}
-
-// CurrentUser looks up the current user by their user id in /etc/passwd. If the
-// user cannot be found (or there is no /etc/passwd file on the filesystem),
-// then CurrentUser returns an error.
-func CurrentUser() (User, error) {
- return LookupUid(syscall.Getuid())
-}
-
-// CurrentGroup looks up the current user's group by their primary group id's
-// entry in /etc/passwd. If the group cannot be found (or there is no
-// /etc/group file on the filesystem), then CurrentGroup returns an error.
-func CurrentGroup() (Group, error) {
- return LookupGid(syscall.Getgid())
-}
diff --git a/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go b/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go
index 2cbb6491a707..c8a9364d54d7 100644
--- a/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go
+++ b/vendor/github.com/opencontainers/runc/libcontainer/utils/cmsg.go
@@ -84,12 +84,10 @@ func RecvFd(socket *os.File) (*os.File, error) {
// addition, the file.Name() of the given file will also be sent as
// non-auxiliary data in the same payload (allowing to send contextual
// information for a file descriptor).
-func SendFd(socket, file *os.File) error {
- name := []byte(file.Name())
+func SendFd(socket *os.File, name string, fd uintptr) error {
if len(name) >= MaxNameLen {
- return fmt.Errorf("sendfd: filename too long: %s", file.Name())
+ return fmt.Errorf("sendfd: filename too long: %s", name)
}
- oob := unix.UnixRights(int(file.Fd()))
-
- return unix.Sendmsg(int(socket.Fd()), name, oob, nil, 0)
+ oob := unix.UnixRights(int(fd))
+ return unix.Sendmsg(int(socket.Fd()), []byte(name), oob, nil, 0)
}
diff --git a/vendor/github.com/pquerna/cachecontrol/.travis.yml b/vendor/github.com/pquerna/cachecontrol/.travis.yml
new file mode 100644
index 000000000000..f140b4971bf0
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/.travis.yml
@@ -0,0 +1,10 @@
+language: go
+
+install:
+ - go get -d -v ./...
+ - go get -u github.com/stretchr/testify/require
+
+go:
+ - 1.7
+ - 1.8
+ - tip
diff --git a/vendor/github.com/square/go-jose/LICENSE b/vendor/github.com/pquerna/cachecontrol/LICENSE
similarity index 100%
rename from vendor/github.com/square/go-jose/LICENSE
rename to vendor/github.com/pquerna/cachecontrol/LICENSE
diff --git a/vendor/github.com/pquerna/cachecontrol/README.md b/vendor/github.com/pquerna/cachecontrol/README.md
new file mode 100644
index 000000000000..da0b428f307b
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/README.md
@@ -0,0 +1,107 @@
+# cachecontrol: HTTP Caching Parser and Interpretation
+
+[![GoDoc](https://godoc.org/github.com/pquerna/cachecontrol?status.svg)](https://godoc.org/github.com/pquerna/cachecontrol)[![Build Status](https://travis-ci.org/pquerna/cachecontrol.svg?branch=master)](https://travis-ci.org/pquerna/cachecontrol)
+
+
+
+`cachecontrol` implements [RFC 7234](http://tools.ietf.org/html/rfc7234) __Hypertext Transfer Protocol (HTTP/1.1): Caching__. It does this by parsing the `Cache-Control` and other headers, providing information about requests and responses -- but `cachecontrol` does not implement an actual cache backend, just the control plane to make decisions about if a particular response is cachable.
+
+# Usage
+
+`cachecontrol.CachableResponse` returns an array of [reasons](https://godoc.org/github.com/pquerna/cachecontrol/cacheobject#Reason) why a response should not be cached and when it expires. In the case that `len(reasons) == 0`, the response is cachable according to the RFC. However, some people want non-compliant caches for various business use cases, so each reason is specifically named, so if your cache wants to cache `POST` requests, it can easily do that, but still be RFC compliant in other situations.
+
+# Examples
+
+## Can you cache Example.com?
+
+```go
+package main
+
+import (
+ "github.com/pquerna/cachecontrol"
+
+ "fmt"
+ "io/ioutil"
+ "net/http"
+)
+
+func main() {
+ req, _ := http.NewRequest("GET", "http://www.example.com/", nil)
+
+ res, _ := http.DefaultClient.Do(req)
+ _, _ = ioutil.ReadAll(res.Body)
+
+ reasons, expires, _ := cachecontrol.CachableResponse(req, res, cachecontrol.Options{})
+
+ fmt.Println("Reasons to not cache: ", reasons)
+ fmt.Println("Expiration: ", expires.String())
+}
+```
+
+## Can I use this in a high performance caching server?
+
+`cachecontrol` is divided into two packages: `cachecontrol` with a high level API, and a lower level `cacheobject` package. Use [Object](https://godoc.org/github.com/pquerna/cachecontrol/cacheobject#Object) in a high performance use case where you have previously parsed headers containing dates or would like to avoid memory allocations.
+
+```go
+package main
+
+import (
+ "github.com/pquerna/cachecontrol/cacheobject"
+
+ "fmt"
+ "io/ioutil"
+ "net/http"
+)
+
+func main() {
+ req, _ := http.NewRequest("GET", "http://www.example.com/", nil)
+
+ res, _ := http.DefaultClient.Do(req)
+ _, _ = ioutil.ReadAll(res.Body)
+
+ reqDir, _ := cacheobject.ParseRequestCacheControl(req.Header.Get("Cache-Control"))
+
+ resDir, _ := cacheobject.ParseResponseCacheControl(res.Header.Get("Cache-Control"))
+ expiresHeader, _ := http.ParseTime(res.Header.Get("Expires"))
+ dateHeader, _ := http.ParseTime(res.Header.Get("Date"))
+ lastModifiedHeader, _ := http.ParseTime(res.Header.Get("Last-Modified"))
+
+ obj := cacheobject.Object{
+ RespDirectives: resDir,
+ RespHeaders: res.Header,
+ RespStatusCode: res.StatusCode,
+ RespExpiresHeader: expiresHeader,
+ RespDateHeader: dateHeader,
+ RespLastModifiedHeader: lastModifiedHeader,
+
+ ReqDirectives: reqDir,
+ ReqHeaders: req.Header,
+ ReqMethod: req.Method,
+
+ NowUTC: time.Now().UTC(),
+ }
+ rv := cacheobject.ObjectResults{}
+
+ cacheobject.CachableObject(&obj, &rv)
+ cacheobject.ExpirationObject(&obj, &rv)
+
+ fmt.Println("Errors: ", rv.OutErr)
+ fmt.Println("Reasons to not cache: ", rv.OutReasons)
+ fmt.Println("Warning headers to add: ", rv.OutWarnings)
+ fmt.Println("Expiration: ", rv.OutExpirationTime.String())
+}
+```
+
+## Improvements, bugs, adding features, and taking cachecontrol new directions!
+
+Please [open issues in Github](https://github.com/pquerna/cachecontrol/issues) for ideas, bugs, and general thoughts. Pull requests are of course preferred :)
+
+# Credits
+
+`cachecontrol` has recieved significant contributions from:
+
+* [Paul Querna](https://github.com/pquerna)
+
+## License
+
+`cachecontrol` is licensed under the [Apache License, Version 2.0](./LICENSE)
diff --git a/vendor/github.com/pquerna/cachecontrol/api.go b/vendor/github.com/pquerna/cachecontrol/api.go
new file mode 100644
index 000000000000..f6f28585d16c
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/api.go
@@ -0,0 +1,48 @@
+/**
+ * Copyright 2015 Paul Querna
+ *
+ * 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 cachecontrol
+
+import (
+ "github.com/pquerna/cachecontrol/cacheobject"
+
+ "net/http"
+ "time"
+)
+
+type Options struct {
+ // Set to True for a prviate cache, which is not shared amoung users (eg, in a browser)
+ // Set to False for a "shared" cache, which is more common in a server context.
+ PrivateCache bool
+}
+
+// Given an HTTP Request, the future Status Code, and an ResponseWriter,
+// determine the possible reasons a response SHOULD NOT be cached.
+func CachableResponseWriter(req *http.Request,
+ statusCode int,
+ resp http.ResponseWriter,
+ opts Options) ([]cacheobject.Reason, time.Time, error) {
+ return cacheobject.UsingRequestResponse(req, statusCode, resp.Header(), opts.PrivateCache)
+}
+
+// Given an HTTP Request and Response, determine the possible reasons a response SHOULD NOT
+// be cached.
+func CachableResponse(req *http.Request,
+ resp *http.Response,
+ opts Options) ([]cacheobject.Reason, time.Time, error) {
+ return cacheobject.UsingRequestResponse(req, resp.StatusCode, resp.Header, opts.PrivateCache)
+}
diff --git a/vendor/github.com/pquerna/cachecontrol/cacheobject/directive.go b/vendor/github.com/pquerna/cachecontrol/cacheobject/directive.go
new file mode 100644
index 000000000000..1e2a6c2e4196
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/cacheobject/directive.go
@@ -0,0 +1,510 @@
+/**
+ * Copyright 2015 Paul Querna
+ *
+ * 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 cacheobject
+
+import (
+ "errors"
+ "math"
+ "net/http"
+ "net/textproto"
+ "strconv"
+ "strings"
+)
+
+// TODO(pquerna): add extensions from here: http://www.iana.org/assignments/http-cache-directives/http-cache-directives.xhtml
+
+var (
+ ErrQuoteMismatch = errors.New("Missing closing quote")
+ ErrMaxAgeDeltaSeconds = errors.New("Failed to parse delta-seconds in `max-age`")
+ ErrSMaxAgeDeltaSeconds = errors.New("Failed to parse delta-seconds in `s-maxage`")
+ ErrMaxStaleDeltaSeconds = errors.New("Failed to parse delta-seconds in `min-fresh`")
+ ErrMinFreshDeltaSeconds = errors.New("Failed to parse delta-seconds in `min-fresh`")
+ ErrNoCacheNoArgs = errors.New("Unexpected argument to `no-cache`")
+ ErrNoStoreNoArgs = errors.New("Unexpected argument to `no-store`")
+ ErrNoTransformNoArgs = errors.New("Unexpected argument to `no-transform`")
+ ErrOnlyIfCachedNoArgs = errors.New("Unexpected argument to `only-if-cached`")
+ ErrMustRevalidateNoArgs = errors.New("Unexpected argument to `must-revalidate`")
+ ErrPublicNoArgs = errors.New("Unexpected argument to `public`")
+ ErrProxyRevalidateNoArgs = errors.New("Unexpected argument to `proxy-revalidate`")
+)
+
+func whitespace(b byte) bool {
+ if b == '\t' || b == ' ' {
+ return true
+ }
+ return false
+}
+
+func parse(value string, cd cacheDirective) error {
+ var err error = nil
+ i := 0
+
+ for i < len(value) && err == nil {
+ // eat leading whitespace or commas
+ if whitespace(value[i]) || value[i] == ',' {
+ i++
+ continue
+ }
+
+ j := i + 1
+
+ for j < len(value) {
+ if !isToken(value[j]) {
+ break
+ }
+ j++
+ }
+
+ token := strings.ToLower(value[i:j])
+ tokenHasFields := hasFieldNames(token)
+ /*
+ println("GOT TOKEN:")
+ println(" i -> ", i)
+ println(" j -> ", j)
+ println(" token -> ", token)
+ */
+
+ if j+1 < len(value) && value[j] == '=' {
+ k := j + 1
+ // minimum size two bytes of "", but we let httpUnquote handle it.
+ if k < len(value) && value[k] == '"' {
+ eaten, result := httpUnquote(value[k:])
+ if eaten == -1 {
+ return ErrQuoteMismatch
+ }
+ i = k + eaten
+
+ err = cd.addPair(token, result)
+ } else {
+ z := k
+ for z < len(value) {
+ if tokenHasFields {
+ if whitespace(value[z]) {
+ break
+ }
+ } else {
+ if whitespace(value[z]) || value[z] == ',' {
+ break
+ }
+ }
+ z++
+ }
+ i = z
+
+ result := value[k:z]
+ if result != "" && result[len(result)-1] == ',' {
+ result = result[:len(result)-1]
+ }
+
+ err = cd.addPair(token, result)
+ }
+ } else {
+ if token != "," {
+ err = cd.addToken(token)
+ }
+ i = j
+ }
+ }
+
+ return err
+}
+
+// DeltaSeconds specifies a non-negative integer, representing
+// time in seconds: http://tools.ietf.org/html/rfc7234#section-1.2.1
+//
+// When set to -1, this means unset.
+//
+type DeltaSeconds int32
+
+// Parser for delta-seconds, a uint31, more or less:
+// http://tools.ietf.org/html/rfc7234#section-1.2.1
+func parseDeltaSeconds(v string) (DeltaSeconds, error) {
+ n, err := strconv.ParseUint(v, 10, 32)
+ if err != nil {
+ if numError, ok := err.(*strconv.NumError); ok {
+ if numError.Err == strconv.ErrRange {
+ return DeltaSeconds(math.MaxInt32), nil
+ }
+ }
+ return DeltaSeconds(-1), err
+ } else {
+ if n > math.MaxInt32 {
+ return DeltaSeconds(math.MaxInt32), nil
+ } else {
+ return DeltaSeconds(n), nil
+ }
+ }
+}
+
+// Fields present in a header.
+type FieldNames map[string]bool
+
+// internal interface for shared methods of RequestCacheDirectives and ResponseCacheDirectives
+type cacheDirective interface {
+ addToken(s string) error
+ addPair(s string, v string) error
+}
+
+// LOW LEVEL API: Repersentation of possible request directives in a `Cache-Control` header: http://tools.ietf.org/html/rfc7234#section-5.2.1
+//
+// Note: Many fields will be `nil` in practice.
+//
+type RequestCacheDirectives struct {
+
+ // max-age(delta seconds): http://tools.ietf.org/html/rfc7234#section-5.2.1.1
+ //
+ // The "max-age" request directive indicates that the client is
+ // unwilling to accept a response whose age is greater than the
+ // specified number of seconds. Unless the max-stale request directive
+ // is also present, the client is not willing to accept a stale
+ // response.
+ MaxAge DeltaSeconds
+
+ // max-stale(delta seconds): http://tools.ietf.org/html/rfc7234#section-5.2.1.2
+ //
+ // The "max-stale" request directive indicates that the client is
+ // willing to accept a response that has exceeded its freshness
+ // lifetime. If max-stale is assigned a value, then the client is
+ // willing to accept a response that has exceeded its freshness lifetime
+ // by no more than the specified number of seconds. If no value is
+ // assigned to max-stale, then the client is willing to accept a stale
+ // response of any age.
+ MaxStale DeltaSeconds
+
+ // min-fresh(delta seconds): http://tools.ietf.org/html/rfc7234#section-5.2.1.3
+ //
+ // The "min-fresh" request directive indicates that the client is
+ // willing to accept a response whose freshness lifetime is no less than
+ // its current age plus the specified time in seconds. That is, the
+ // client wants a response that will still be fresh for at least the
+ // specified number of seconds.
+ MinFresh DeltaSeconds
+
+ // no-cache(bool): http://tools.ietf.org/html/rfc7234#section-5.2.1.4
+ //
+ // The "no-cache" request directive indicates that a cache MUST NOT use
+ // a stored response to satisfy the request without successful
+ // validation on the origin server.
+ NoCache bool
+
+ // no-store(bool): http://tools.ietf.org/html/rfc7234#section-5.2.1.5
+ //
+ // The "no-store" request directive indicates that a cache MUST NOT
+ // store any part of either this request or any response to it. This
+ // directive applies to both private and shared caches.
+ NoStore bool
+
+ // no-transform(bool): http://tools.ietf.org/html/rfc7234#section-5.2.1.6
+ //
+ // The "no-transform" request directive indicates that an intermediary
+ // (whether or not it implements a cache) MUST NOT transform the
+ // payload, as defined in Section 5.7.2 of RFC7230.
+ NoTransform bool
+
+ // only-if-cached(bool): http://tools.ietf.org/html/rfc7234#section-5.2.1.7
+ //
+ // The "only-if-cached" request directive indicates that the client only
+ // wishes to obtain a stored response.
+ OnlyIfCached bool
+
+ // Extensions: http://tools.ietf.org/html/rfc7234#section-5.2.3
+ //
+ // The Cache-Control header field can be extended through the use of one
+ // or more cache-extension tokens, each with an optional value. A cache
+ // MUST ignore unrecognized cache directives.
+ Extensions []string
+}
+
+func (cd *RequestCacheDirectives) addToken(token string) error {
+ var err error = nil
+
+ switch token {
+ case "max-age":
+ err = ErrMaxAgeDeltaSeconds
+ case "max-stale":
+ err = ErrMaxStaleDeltaSeconds
+ case "min-fresh":
+ err = ErrMinFreshDeltaSeconds
+ case "no-cache":
+ cd.NoCache = true
+ case "no-store":
+ cd.NoStore = true
+ case "no-transform":
+ cd.NoTransform = true
+ case "only-if-cached":
+ cd.OnlyIfCached = true
+ default:
+ cd.Extensions = append(cd.Extensions, token)
+ }
+ return err
+}
+
+func (cd *RequestCacheDirectives) addPair(token string, v string) error {
+ var err error = nil
+
+ switch token {
+ case "max-age":
+ cd.MaxAge, err = parseDeltaSeconds(v)
+ if err != nil {
+ err = ErrMaxAgeDeltaSeconds
+ }
+ case "max-stale":
+ cd.MaxStale, err = parseDeltaSeconds(v)
+ if err != nil {
+ err = ErrMaxStaleDeltaSeconds
+ }
+ case "min-fresh":
+ cd.MinFresh, err = parseDeltaSeconds(v)
+ if err != nil {
+ err = ErrMinFreshDeltaSeconds
+ }
+ case "no-cache":
+ err = ErrNoCacheNoArgs
+ case "no-store":
+ err = ErrNoStoreNoArgs
+ case "no-transform":
+ err = ErrNoTransformNoArgs
+ case "only-if-cached":
+ err = ErrOnlyIfCachedNoArgs
+ default:
+ // TODO(pquerna): this sucks, making user re-parse
+ cd.Extensions = append(cd.Extensions, token+"="+v)
+ }
+
+ return err
+}
+
+// LOW LEVEL API: Parses a Cache Control Header from a Request into a set of directives.
+func ParseRequestCacheControl(value string) (*RequestCacheDirectives, error) {
+ cd := &RequestCacheDirectives{
+ MaxAge: -1,
+ MaxStale: -1,
+ MinFresh: -1,
+ }
+
+ err := parse(value, cd)
+ if err != nil {
+ return nil, err
+ }
+ return cd, nil
+}
+
+// LOW LEVEL API: Repersentation of possible response directives in a `Cache-Control` header: http://tools.ietf.org/html/rfc7234#section-5.2.2
+//
+// Note: Many fields will be `nil` in practice.
+//
+type ResponseCacheDirectives struct {
+
+ // must-revalidate(bool): http://tools.ietf.org/html/rfc7234#section-5.2.2.1
+ //
+ // The "must-revalidate" response directive indicates that once it has
+ // become stale, a cache MUST NOT use the response to satisfy subsequent
+ // requests without successful validation on the origin server.
+ MustRevalidate bool
+
+ // no-cache(FieldName): http://tools.ietf.org/html/rfc7234#section-5.2.2.2
+ //
+ // The "no-cache" response directive indicates that the response MUST
+ // NOT be used to satisfy a subsequent request without successful
+ // validation on the origin server.
+ //
+ // If the no-cache response directive specifies one or more field-names,
+ // then a cache MAY use the response to satisfy a subsequent request,
+ // subject to any other restrictions on caching. However, any header
+ // fields in the response that have the field-name(s) listed MUST NOT be
+ // sent in the response to a subsequent request without successful
+ // revalidation with the origin server.
+ NoCache FieldNames
+
+ // no-cache(cast-to-bool): http://tools.ietf.org/html/rfc7234#section-5.2.2.2
+ //
+ // While the RFC defines optional field-names on a no-cache directive,
+ // many applications only want to know if any no-cache directives were
+ // present at all.
+ NoCachePresent bool
+
+ // no-store(bool): http://tools.ietf.org/html/rfc7234#section-5.2.2.3
+ //
+ // The "no-store" request directive indicates that a cache MUST NOT
+ // store any part of either this request or any response to it. This
+ // directive applies to both private and shared caches.
+ NoStore bool
+
+ // no-transform(bool): http://tools.ietf.org/html/rfc7234#section-5.2.2.4
+ //
+ // The "no-transform" response directive indicates that an intermediary
+ // (regardless of whether it implements a cache) MUST NOT transform the
+ // payload, as defined in Section 5.7.2 of RFC7230.
+ NoTransform bool
+
+ // public(bool): http://tools.ietf.org/html/rfc7234#section-5.2.2.5
+ //
+ // The "public" response directive indicates that any cache MAY store
+ // the response, even if the response would normally be non-cacheable or
+ // cacheable only within a private cache.
+ Public bool
+
+ // private(FieldName): http://tools.ietf.org/html/rfc7234#section-5.2.2.6
+ //
+ // The "private" response directive indicates that the response message
+ // is intended for a single user and MUST NOT be stored by a shared
+ // cache. A private cache MAY store the response and reuse it for later
+ // requests, even if the response would normally be non-cacheable.
+ //
+ // If the private response directive specifies one or more field-names,
+ // this requirement is limited to the field-values associated with the
+ // listed response header fields. That is, a shared cache MUST NOT
+ // store the specified field-names(s), whereas it MAY store the
+ // remainder of the response message.
+ Private FieldNames
+
+ // private(cast-to-bool): http://tools.ietf.org/html/rfc7234#section-5.2.2.6
+ //
+ // While the RFC defines optional field-names on a private directive,
+ // many applications only want to know if any private directives were
+ // present at all.
+ PrivatePresent bool
+
+ // proxy-revalidate(bool): http://tools.ietf.org/html/rfc7234#section-5.2.2.7
+ //
+ // The "proxy-revalidate" response directive has the same meaning as the
+ // must-revalidate response directive, except that it does not apply to
+ // private caches.
+ ProxyRevalidate bool
+
+ // max-age(delta seconds): http://tools.ietf.org/html/rfc7234#section-5.2.2.8
+ //
+ // The "max-age" response directive indicates that the response is to be
+ // considered stale after its age is greater than the specified number
+ // of seconds.
+ MaxAge DeltaSeconds
+
+ // s-maxage(delta seconds): http://tools.ietf.org/html/rfc7234#section-5.2.2.9
+ //
+ // The "s-maxage" response directive indicates that, in shared caches,
+ // the maximum age specified by this directive overrides the maximum age
+ // specified by either the max-age directive or the Expires header
+ // field. The s-maxage directive also implies the semantics of the
+ // proxy-revalidate response directive.
+ SMaxAge DeltaSeconds
+
+ // Extensions: http://tools.ietf.org/html/rfc7234#section-5.2.3
+ //
+ // The Cache-Control header field can be extended through the use of one
+ // or more cache-extension tokens, each with an optional value. A cache
+ // MUST ignore unrecognized cache directives.
+ Extensions []string
+}
+
+// LOW LEVEL API: Parses a Cache Control Header from a Response into a set of directives.
+func ParseResponseCacheControl(value string) (*ResponseCacheDirectives, error) {
+ cd := &ResponseCacheDirectives{
+ MaxAge: -1,
+ SMaxAge: -1,
+ }
+
+ err := parse(value, cd)
+ if err != nil {
+ return nil, err
+ }
+ return cd, nil
+}
+
+func (cd *ResponseCacheDirectives) addToken(token string) error {
+ var err error = nil
+ switch token {
+ case "must-revalidate":
+ cd.MustRevalidate = true
+ case "no-cache":
+ cd.NoCachePresent = true
+ case "no-store":
+ cd.NoStore = true
+ case "no-transform":
+ cd.NoTransform = true
+ case "public":
+ cd.Public = true
+ case "private":
+ cd.PrivatePresent = true
+ case "proxy-revalidate":
+ cd.ProxyRevalidate = true
+ case "max-age":
+ err = ErrMaxAgeDeltaSeconds
+ case "s-maxage":
+ err = ErrSMaxAgeDeltaSeconds
+ default:
+ cd.Extensions = append(cd.Extensions, token)
+ }
+ return err
+}
+
+func hasFieldNames(token string) bool {
+ switch token {
+ case "no-cache":
+ return true
+ case "private":
+ return true
+ }
+ return false
+}
+
+func (cd *ResponseCacheDirectives) addPair(token string, v string) error {
+ var err error = nil
+
+ switch token {
+ case "must-revalidate":
+ err = ErrMustRevalidateNoArgs
+ case "no-cache":
+ cd.NoCachePresent = true
+ tokens := strings.Split(v, ",")
+ if cd.NoCache == nil {
+ cd.NoCache = make(FieldNames)
+ }
+ for _, t := range tokens {
+ k := http.CanonicalHeaderKey(textproto.TrimString(t))
+ cd.NoCache[k] = true
+ }
+ case "no-store":
+ err = ErrNoStoreNoArgs
+ case "no-transform":
+ err = ErrNoTransformNoArgs
+ case "public":
+ err = ErrPublicNoArgs
+ case "private":
+ cd.PrivatePresent = true
+ tokens := strings.Split(v, ",")
+ if cd.Private == nil {
+ cd.Private = make(FieldNames)
+ }
+ for _, t := range tokens {
+ k := http.CanonicalHeaderKey(textproto.TrimString(t))
+ cd.Private[k] = true
+ }
+ case "proxy-revalidate":
+ err = ErrProxyRevalidateNoArgs
+ case "max-age":
+ cd.MaxAge, err = parseDeltaSeconds(v)
+ case "s-maxage":
+ cd.SMaxAge, err = parseDeltaSeconds(v)
+ default:
+ // TODO(pquerna): this sucks, making user re-parse, and its technically not 'quoted' like the original,
+ // but this is still easier, just a SplitN on "="
+ cd.Extensions = append(cd.Extensions, token+"="+v)
+ }
+
+ return err
+}
diff --git a/vendor/github.com/pquerna/cachecontrol/cacheobject/lex.go b/vendor/github.com/pquerna/cachecontrol/cacheobject/lex.go
new file mode 100644
index 000000000000..c658e09b1512
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/cacheobject/lex.go
@@ -0,0 +1,93 @@
+// Copyright 2009 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+package cacheobject
+
+// This file deals with lexical matters of HTTP
+
+func isSeparator(c byte) bool {
+ switch c {
+ case '(', ')', '<', '>', '@', ',', ';', ':', '\\', '"', '/', '[', ']', '?', '=', '{', '}', ' ', '\t':
+ return true
+ }
+ return false
+}
+
+func isCtl(c byte) bool { return (0 <= c && c <= 31) || c == 127 }
+
+func isChar(c byte) bool { return 0 <= c && c <= 127 }
+
+func isAnyText(c byte) bool { return !isCtl(c) }
+
+func isQdText(c byte) bool { return isAnyText(c) && c != '"' }
+
+func isToken(c byte) bool { return isChar(c) && !isCtl(c) && !isSeparator(c) }
+
+// Valid escaped sequences are not specified in RFC 2616, so for now, we assume
+// that they coincide with the common sense ones used by GO. Malformed
+// characters should probably not be treated as errors by a robust (forgiving)
+// parser, so we replace them with the '?' character.
+func httpUnquotePair(b byte) byte {
+ // skip the first byte, which should always be '\'
+ switch b {
+ case 'a':
+ return '\a'
+ case 'b':
+ return '\b'
+ case 'f':
+ return '\f'
+ case 'n':
+ return '\n'
+ case 'r':
+ return '\r'
+ case 't':
+ return '\t'
+ case 'v':
+ return '\v'
+ case '\\':
+ return '\\'
+ case '\'':
+ return '\''
+ case '"':
+ return '"'
+ }
+ return '?'
+}
+
+// raw must begin with a valid quoted string. Only the first quoted string is
+// parsed and is unquoted in result. eaten is the number of bytes parsed, or -1
+// upon failure.
+func httpUnquote(raw string) (eaten int, result string) {
+ buf := make([]byte, len(raw))
+ if raw[0] != '"' {
+ return -1, ""
+ }
+ eaten = 1
+ j := 0 // # of bytes written in buf
+ for i := 1; i < len(raw); i++ {
+ switch b := raw[i]; b {
+ case '"':
+ eaten++
+ buf = buf[0:j]
+ return i + 1, string(buf)
+ case '\\':
+ if len(raw) < i+2 {
+ return -1, ""
+ }
+ buf[j] = httpUnquotePair(raw[i+1])
+ eaten += 2
+ j++
+ i++
+ default:
+ if isQdText(b) {
+ buf[j] = b
+ } else {
+ buf[j] = '?'
+ }
+ eaten++
+ j++
+ }
+ }
+ return -1, ""
+}
diff --git a/vendor/github.com/pquerna/cachecontrol/cacheobject/object.go b/vendor/github.com/pquerna/cachecontrol/cacheobject/object.go
new file mode 100644
index 000000000000..35f88b9247d7
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/cacheobject/object.go
@@ -0,0 +1,378 @@
+/**
+ * Copyright 2015 Paul Querna
+ *
+ * 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 cacheobject
+
+import (
+ "net/http"
+ "time"
+)
+
+// LOW LEVEL API: Repersents a potentially cachable HTTP object.
+//
+// This struct is designed to be serialized efficiently, so in a high
+// performance caching server, things like Date-Strings don't need to be
+// parsed for every use of a cached object.
+type Object struct {
+ CacheIsPrivate bool
+
+ RespDirectives *ResponseCacheDirectives
+ RespHeaders http.Header
+ RespStatusCode int
+ RespExpiresHeader time.Time
+ RespDateHeader time.Time
+ RespLastModifiedHeader time.Time
+
+ ReqDirectives *RequestCacheDirectives
+ ReqHeaders http.Header
+ ReqMethod string
+
+ NowUTC time.Time
+}
+
+// LOW LEVEL API: Repersents the results of examinig an Object with
+// CachableObject and ExpirationObject.
+//
+// TODO(pquerna): decide if this is a good idea or bad
+type ObjectResults struct {
+ OutReasons []Reason
+ OutWarnings []Warning
+ OutExpirationTime time.Time
+ OutErr error
+}
+
+// LOW LEVEL API: Check if a object is cachable.
+func CachableObject(obj *Object, rv *ObjectResults) {
+ rv.OutReasons = nil
+ rv.OutWarnings = nil
+ rv.OutErr = nil
+
+ switch obj.ReqMethod {
+ case "GET":
+ break
+ case "HEAD":
+ break
+ case "POST":
+ /**
+ POST: http://tools.ietf.org/html/rfc7231#section-4.3.3
+
+ Responses to POST requests are only cacheable when they include
+ explicit freshness information (see Section 4.2.1 of [RFC7234]).
+ However, POST caching is not widely implemented. For cases where an
+ origin server wishes the client to be able to cache the result of a
+ POST in a way that can be reused by a later GET, the origin server
+ MAY send a 200 (OK) response containing the result and a
+ Content-Location header field that has the same value as the POST's
+ effective request URI (Section 3.1.4.2).
+ */
+ if !hasFreshness(obj.ReqDirectives, obj.RespDirectives, obj.RespHeaders, obj.RespExpiresHeader, obj.CacheIsPrivate) {
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestMethodPOST)
+ }
+
+ case "PUT":
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestMethodPUT)
+
+ case "DELETE":
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestMethodDELETE)
+
+ case "CONNECT":
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestMethodCONNECT)
+
+ case "OPTIONS":
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestMethodOPTIONS)
+
+ case "TRACE":
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestMethodTRACE)
+
+ // HTTP Extension Methods: http://www.iana.org/assignments/http-methods/http-methods.xhtml
+ //
+ // To my knowledge, none of them are cachable. Please open a ticket if this is not the case!
+ //
+ default:
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestMethodUnkown)
+ }
+
+ if obj.ReqDirectives.NoStore {
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestNoStore)
+ }
+
+ // Storing Responses to Authenticated Requests: http://tools.ietf.org/html/rfc7234#section-3.2
+ authz := obj.ReqHeaders.Get("Authorization")
+ if authz != "" {
+ if obj.RespDirectives.MustRevalidate ||
+ obj.RespDirectives.Public ||
+ obj.RespDirectives.SMaxAge != -1 {
+ // Expires of some kind present, this is potentially OK.
+ } else {
+ rv.OutReasons = append(rv.OutReasons, ReasonRequestAuthorizationHeader)
+ }
+ }
+
+ if obj.RespDirectives.PrivatePresent && !obj.CacheIsPrivate {
+ rv.OutReasons = append(rv.OutReasons, ReasonResponsePrivate)
+ }
+
+ if obj.RespDirectives.NoStore {
+ rv.OutReasons = append(rv.OutReasons, ReasonResponseNoStore)
+ }
+
+ /*
+ the response either:
+
+ * contains an Expires header field (see Section 5.3), or
+
+ * contains a max-age response directive (see Section 5.2.2.8), or
+
+ * contains a s-maxage response directive (see Section 5.2.2.9)
+ and the cache is shared, or
+
+ * contains a Cache Control Extension (see Section 5.2.3) that
+ allows it to be cached, or
+
+ * has a status code that is defined as cacheable by default (see
+ Section 4.2.2), or
+
+ * contains a public response directive (see Section 5.2.2.5).
+ */
+
+ expires := obj.RespHeaders.Get("Expires") != ""
+ statusCachable := cachableStatusCode(obj.RespStatusCode)
+
+ if expires ||
+ obj.RespDirectives.MaxAge != -1 ||
+ (obj.RespDirectives.SMaxAge != -1 && !obj.CacheIsPrivate) ||
+ statusCachable ||
+ obj.RespDirectives.Public {
+ /* cachable by default, at least one of the above conditions was true */
+ } else {
+ rv.OutReasons = append(rv.OutReasons, ReasonResponseUncachableByDefault)
+ }
+}
+
+var twentyFourHours = time.Duration(24 * time.Hour)
+
+const debug = false
+
+// LOW LEVEL API: Update an objects expiration time.
+func ExpirationObject(obj *Object, rv *ObjectResults) {
+ /**
+ * Okay, lets calculate Freshness/Expiration now. woo:
+ * http://tools.ietf.org/html/rfc7234#section-4.2
+ */
+
+ /*
+ o If the cache is shared and the s-maxage response directive
+ (Section 5.2.2.9) is present, use its value, or
+
+ o If the max-age response directive (Section 5.2.2.8) is present,
+ use its value, or
+
+ o If the Expires response header field (Section 5.3) is present, use
+ its value minus the value of the Date response header field, or
+
+ o Otherwise, no explicit expiration time is present in the response.
+ A heuristic freshness lifetime might be applicable; see
+ Section 4.2.2.
+ */
+
+ var expiresTime time.Time
+
+ if obj.RespDirectives.SMaxAge != -1 && !obj.CacheIsPrivate {
+ expiresTime = obj.NowUTC.Add(time.Second * time.Duration(obj.RespDirectives.SMaxAge))
+ } else if obj.RespDirectives.MaxAge != -1 {
+ expiresTime = obj.NowUTC.UTC().Add(time.Second * time.Duration(obj.RespDirectives.MaxAge))
+ } else if !obj.RespExpiresHeader.IsZero() {
+ serverDate := obj.RespDateHeader
+ if serverDate.IsZero() {
+ // common enough case when a Date: header has not yet been added to an
+ // active response.
+ serverDate = obj.NowUTC
+ }
+ expiresTime = obj.NowUTC.Add(obj.RespExpiresHeader.Sub(serverDate))
+ } else if !obj.RespLastModifiedHeader.IsZero() {
+ // heuristic freshness lifetime
+ rv.OutWarnings = append(rv.OutWarnings, WarningHeuristicExpiration)
+
+ // http://httpd.apache.org/docs/2.4/mod/mod_cache.html#cachelastmodifiedfactor
+ // CacheMaxExpire defaults to 24 hours
+ // CacheLastModifiedFactor: is 0.1
+ //
+ // expiry-period = MIN(time-since-last-modified-date * factor, 24 hours)
+ //
+ // obj.NowUTC
+
+ since := obj.RespLastModifiedHeader.Sub(obj.NowUTC)
+ since = time.Duration(float64(since) * -0.1)
+
+ if since > twentyFourHours {
+ expiresTime = obj.NowUTC.Add(twentyFourHours)
+ } else {
+ expiresTime = obj.NowUTC.Add(since)
+ }
+
+ if debug {
+ println("Now UTC: ", obj.NowUTC.String())
+ println("Last-Modified: ", obj.RespLastModifiedHeader.String())
+ println("Since: ", since.String())
+ println("TwentyFourHours: ", twentyFourHours.String())
+ println("Expiration: ", expiresTime.String())
+ }
+ } else {
+ // TODO(pquerna): what should the default behavoir be for expiration time?
+ }
+
+ rv.OutExpirationTime = expiresTime
+}
+
+// Evaluate cachability based on an HTTP request, and parts of the response.
+func UsingRequestResponse(req *http.Request,
+ statusCode int,
+ respHeaders http.Header,
+ privateCache bool) ([]Reason, time.Time, error) {
+
+ var reqHeaders http.Header
+ var reqMethod string
+
+ var reqDir *RequestCacheDirectives = nil
+ respDir, err := ParseResponseCacheControl(respHeaders.Get("Cache-Control"))
+ if err != nil {
+ return nil, time.Time{}, err
+ }
+
+ if req != nil {
+ reqDir, err = ParseRequestCacheControl(req.Header.Get("Cache-Control"))
+ if err != nil {
+ return nil, time.Time{}, err
+ }
+ reqHeaders = req.Header
+ reqMethod = req.Method
+ }
+
+ var expiresHeader time.Time
+ var dateHeader time.Time
+ var lastModifiedHeader time.Time
+
+ if respHeaders.Get("Expires") != "" {
+ expiresHeader, err = http.ParseTime(respHeaders.Get("Expires"))
+ if err != nil {
+ // sometimes servers will return `Expires: 0` or `Expires: -1` to
+ // indicate expired content
+ expiresHeader = time.Time{}
+ }
+ expiresHeader = expiresHeader.UTC()
+ }
+
+ if respHeaders.Get("Date") != "" {
+ dateHeader, err = http.ParseTime(respHeaders.Get("Date"))
+ if err != nil {
+ return nil, time.Time{}, err
+ }
+ dateHeader = dateHeader.UTC()
+ }
+
+ if respHeaders.Get("Last-Modified") != "" {
+ lastModifiedHeader, err = http.ParseTime(respHeaders.Get("Last-Modified"))
+ if err != nil {
+ return nil, time.Time{}, err
+ }
+ lastModifiedHeader = lastModifiedHeader.UTC()
+ }
+
+ obj := Object{
+ CacheIsPrivate: privateCache,
+
+ RespDirectives: respDir,
+ RespHeaders: respHeaders,
+ RespStatusCode: statusCode,
+ RespExpiresHeader: expiresHeader,
+ RespDateHeader: dateHeader,
+ RespLastModifiedHeader: lastModifiedHeader,
+
+ ReqDirectives: reqDir,
+ ReqHeaders: reqHeaders,
+ ReqMethod: reqMethod,
+
+ NowUTC: time.Now().UTC(),
+ }
+ rv := ObjectResults{}
+
+ CachableObject(&obj, &rv)
+ if rv.OutErr != nil {
+ return nil, time.Time{}, rv.OutErr
+ }
+
+ ExpirationObject(&obj, &rv)
+ if rv.OutErr != nil {
+ return nil, time.Time{}, rv.OutErr
+ }
+
+ return rv.OutReasons, rv.OutExpirationTime, nil
+}
+
+// calculate if a freshness directive is present: http://tools.ietf.org/html/rfc7234#section-4.2.1
+func hasFreshness(reqDir *RequestCacheDirectives, respDir *ResponseCacheDirectives, respHeaders http.Header, respExpires time.Time, privateCache bool) bool {
+ if !privateCache && respDir.SMaxAge != -1 {
+ return true
+ }
+
+ if respDir.MaxAge != -1 {
+ return true
+ }
+
+ if !respExpires.IsZero() || respHeaders.Get("Expires") != "" {
+ return true
+ }
+
+ return false
+}
+
+func cachableStatusCode(statusCode int) bool {
+ /*
+ Responses with status codes that are defined as cacheable by default
+ (e.g., 200, 203, 204, 206, 300, 301, 404, 405, 410, 414, and 501 in
+ this specification) can be reused by a cache with heuristic
+ expiration unless otherwise indicated by the method definition or
+ explicit cache controls [RFC7234]; all other status codes are not
+ cacheable by default.
+ */
+ switch statusCode {
+ case 200:
+ return true
+ case 203:
+ return true
+ case 204:
+ return true
+ case 206:
+ return true
+ case 300:
+ return true
+ case 301:
+ return true
+ case 404:
+ return true
+ case 405:
+ return true
+ case 410:
+ return true
+ case 414:
+ return true
+ case 501:
+ return true
+ default:
+ return false
+ }
+}
diff --git a/vendor/github.com/pquerna/cachecontrol/cacheobject/reasons.go b/vendor/github.com/pquerna/cachecontrol/cacheobject/reasons.go
new file mode 100644
index 000000000000..f53d1ad593df
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/cacheobject/reasons.go
@@ -0,0 +1,95 @@
+/**
+ * Copyright 2015 Paul Querna
+ *
+ * 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 cacheobject
+
+// Repersents a potential Reason to not cache an object.
+//
+// Applications may wish to ignore specific reasons, which will make them non-RFC
+// compliant, but this type gives them specific cases they can choose to ignore,
+// making them compliant in as many cases as they can.
+type Reason int
+
+const (
+
+ // The request method was POST and an Expiration header was not supplied.
+ ReasonRequestMethodPOST Reason = iota
+
+ // The request method was PUT and PUTs are not cachable.
+ ReasonRequestMethodPUT
+
+ // The request method was DELETE and DELETEs are not cachable.
+ ReasonRequestMethodDELETE
+
+ // The request method was CONNECT and CONNECTs are not cachable.
+ ReasonRequestMethodCONNECT
+
+ // The request method was OPTIONS and OPTIONS are not cachable.
+ ReasonRequestMethodOPTIONS
+
+ // The request method was TRACE and TRACEs are not cachable.
+ ReasonRequestMethodTRACE
+
+ // The request method was not recognized by cachecontrol, and should not be cached.
+ ReasonRequestMethodUnkown
+
+ // The request included an Cache-Control: no-store header
+ ReasonRequestNoStore
+
+ // The request included an Authorization header without an explicit Public or Expiration time: http://tools.ietf.org/html/rfc7234#section-3.2
+ ReasonRequestAuthorizationHeader
+
+ // The response included an Cache-Control: no-store header
+ ReasonResponseNoStore
+
+ // The response included an Cache-Control: private header and this is not a Private cache
+ ReasonResponsePrivate
+
+ // The response failed to meet at least one of the conditions specified in RFC 7234 section 3: http://tools.ietf.org/html/rfc7234#section-3
+ ReasonResponseUncachableByDefault
+)
+
+func (r Reason) String() string {
+ switch r {
+ case ReasonRequestMethodPOST:
+ return "ReasonRequestMethodPOST"
+ case ReasonRequestMethodPUT:
+ return "ReasonRequestMethodPUT"
+ case ReasonRequestMethodDELETE:
+ return "ReasonRequestMethodDELETE"
+ case ReasonRequestMethodCONNECT:
+ return "ReasonRequestMethodCONNECT"
+ case ReasonRequestMethodOPTIONS:
+ return "ReasonRequestMethodOPTIONS"
+ case ReasonRequestMethodTRACE:
+ return "ReasonRequestMethodTRACE"
+ case ReasonRequestMethodUnkown:
+ return "ReasonRequestMethodUnkown"
+ case ReasonRequestNoStore:
+ return "ReasonRequestNoStore"
+ case ReasonRequestAuthorizationHeader:
+ return "ReasonRequestAuthorizationHeader"
+ case ReasonResponseNoStore:
+ return "ReasonResponseNoStore"
+ case ReasonResponsePrivate:
+ return "ReasonResponsePrivate"
+ case ReasonResponseUncachableByDefault:
+ return "ReasonResponseUncachableByDefault"
+ }
+
+ panic(r)
+}
diff --git a/vendor/github.com/pquerna/cachecontrol/cacheobject/warning.go b/vendor/github.com/pquerna/cachecontrol/cacheobject/warning.go
new file mode 100644
index 000000000000..82f894130341
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/cacheobject/warning.go
@@ -0,0 +1,107 @@
+/**
+ * Copyright 2015 Paul Querna
+ *
+ * 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 cacheobject
+
+import (
+ "fmt"
+ "net/http"
+ "time"
+)
+
+// Repersents an HTTP Warning: http://tools.ietf.org/html/rfc7234#section-5.5
+type Warning int
+
+const (
+ // Response is Stale
+ // A cache SHOULD generate this whenever the sent response is stale.
+ WarningResponseIsStale Warning = 110
+
+ // Revalidation Failed
+ // A cache SHOULD generate this when sending a stale
+ // response because an attempt to validate the response failed, due to an
+ // inability to reach the server.
+ WarningRevalidationFailed Warning = 111
+
+ // Disconnected Operation
+ // A cache SHOULD generate this if it is intentionally disconnected from
+ // the rest of the network for a period of time.
+ WarningDisconnectedOperation Warning = 112
+
+ // Heuristic Expiration
+ //
+ // A cache SHOULD generate this if it heuristically chose a freshness
+ // lifetime greater than 24 hours and the response's age is greater than
+ // 24 hours.
+ WarningHeuristicExpiration Warning = 113
+
+ // Miscellaneous Warning
+ //
+ // The warning text can include arbitrary information to be presented to
+ // a human user or logged. A system receiving this warning MUST NOT
+ // take any automated action, besides presenting the warning to the
+ // user.
+ WarningMiscellaneousWarning Warning = 199
+
+ // Transformation Applied
+ //
+ // This Warning code MUST be added by a proxy if it applies any
+ // transformation to the representation, such as changing the
+ // content-coding, media-type, or modifying the representation data,
+ // unless this Warning code already appears in the response.
+ WarningTransformationApplied Warning = 214
+
+ // Miscellaneous Persistent Warning
+ //
+ // The warning text can include arbitrary information to be presented to
+ // a human user or logged. A system receiving this warning MUST NOT
+ // take any automated action.
+ WarningMiscellaneousPersistentWarning Warning = 299
+)
+
+func (w Warning) HeaderString(agent string, date time.Time) string {
+ if agent == "" {
+ agent = "-"
+ } else {
+ // TODO(pquerna): this doesn't escape agent if it contains bad things.
+ agent = `"` + agent + `"`
+ }
+ return fmt.Sprintf(`%d %s "%s" %s`, w, agent, w.String(), date.Format(http.TimeFormat))
+}
+
+func (w Warning) String() string {
+ switch w {
+ case WarningResponseIsStale:
+ return "Response is Stale"
+ case WarningRevalidationFailed:
+ return "Revalidation Failed"
+ case WarningDisconnectedOperation:
+ return "Disconnected Operation"
+ case WarningHeuristicExpiration:
+ return "Heuristic Expiration"
+ case WarningMiscellaneousWarning:
+ // TODO(pquerna): ideally had a better way to override this one code.
+ return "Miscellaneous Warning"
+ case WarningTransformationApplied:
+ return "Transformation Applied"
+ case WarningMiscellaneousPersistentWarning:
+ // TODO(pquerna): same as WarningMiscellaneousWarning
+ return "Miscellaneous Persistent Warning"
+ }
+
+ panic(w)
+}
diff --git a/vendor/github.com/pquerna/cachecontrol/doc.go b/vendor/github.com/pquerna/cachecontrol/doc.go
new file mode 100644
index 000000000000..3fe7ed0d689c
--- /dev/null
+++ b/vendor/github.com/pquerna/cachecontrol/doc.go
@@ -0,0 +1,25 @@
+/**
+ * Copyright 2015 Paul Querna
+ *
+ * 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 cachecontrol implements the logic for HTTP Caching
+//
+// Deciding if an HTTP Response can be cached is often harder
+// and more bug prone than an actual cache storage backend.
+// cachecontrol provides a simple interface to determine if
+// request and response pairs are cachable as defined under
+// RFC 7234 http://tools.ietf.org/html/rfc7234
+package cachecontrol
diff --git a/vendor/github.com/quobyte/api/README.md b/vendor/github.com/quobyte/api/README.md
index 072033b7bdec..642468aedbc0 100644
--- a/vendor/github.com/quobyte/api/README.md
+++ b/vendor/github.com/quobyte/api/README.md
@@ -1,6 +1,6 @@
# Quobyte API Clients
-Get the quoybte api client
+Get the quobyte api client
```bash
go get github.com/quobyte/api
@@ -18,6 +18,7 @@ import (
func main() {
client := quobyte_api.NewQuobyteClient("http://apiserver:7860", "user", "password")
+ client.SetAPIRetryPolicy(quobyte_api.RetryInfinitely) // Default quobyte_api.RetryInteractive
req := &quobyte_api.CreateVolumeRequest{
Name: "MyVolume",
RootUserID: "root",
diff --git a/vendor/github.com/quobyte/api/quobyte.go b/vendor/github.com/quobyte/api/quobyte.go
index 3a2a5fd17a2b..66e51fd8132b 100644
--- a/vendor/github.com/quobyte/api/quobyte.go
+++ b/vendor/github.com/quobyte/api/quobyte.go
@@ -5,20 +5,38 @@ import (
"net/http"
)
+// retry policy codes
+const (
+ RetryNever string = "NEVER"
+ RetryInteractive string = "INTERACTIVE"
+ RetryInfinitely string = "INFINITELY"
+ RetryOncePerTarget string = "ONCE_PER_TARGET"
+)
+
type QuobyteClient struct {
- client *http.Client
- url string
- username string
- password string
+ client *http.Client
+ url string
+ username string
+ password string
+ apiRetryPolicy string
+}
+
+func (client *QuobyteClient) SetAPIRetryPolicy(retry string) {
+ client.apiRetryPolicy = retry
+}
+
+func (client *QuobyteClient) GetAPIRetryPolicy() string {
+ return client.apiRetryPolicy
}
// NewQuobyteClient creates a new Quobyte API client
func NewQuobyteClient(url string, username string, password string) *QuobyteClient {
return &QuobyteClient{
- client: &http.Client{},
- url: url,
- username: username,
- password: password,
+ client: &http.Client{},
+ url: url,
+ username: username,
+ password: password,
+ apiRetryPolicy: RetryInteractive,
}
}
@@ -80,6 +98,7 @@ func (client *QuobyteClient) GetClientList(tenant string) (GetClientListResponse
return response, nil
}
+// SetVolumeQuota sets a Quota to the specified Volume
func (client *QuobyteClient) SetVolumeQuota(volumeUUID string, quotaSize uint64) error {
request := &setQuotaRequest{
Quotas: []*quota{
@@ -102,3 +121,50 @@ func (client *QuobyteClient) SetVolumeQuota(volumeUUID string, quotaSize uint64)
return client.sendRequest("setQuota", request, nil)
}
+
+// GetTenant returns the Tenant configuration for all specified tenants
+func (client *QuobyteClient) GetTenant(tenantIDs []string) (GetTenantResponse, error) {
+ request := &getTenantRequest{TenantIDs: tenantIDs}
+
+ var response GetTenantResponse
+ err := client.sendRequest("getTenant", request, &response)
+ if err != nil {
+ return response, err
+ }
+
+ return response, nil
+}
+
+// GetTenantMap returns a map that contains all tenant names and there ID's
+func (client *QuobyteClient) GetTenantMap() (map[string]string, error) {
+ result := map[string]string{}
+ response, err := client.GetTenant([]string{})
+
+ if err != nil {
+ return result, err
+ }
+
+ for _, tenant := range response.Tenants {
+ result[tenant.Name] = tenant.TenantID
+ }
+
+ return result, nil
+}
+
+// SetTenant creates a Tenant with the specified name
+func (client *QuobyteClient) SetTenant(tenantName string) (string, error) {
+ request := &setTenantRequest{
+ &TenantDomainConfiguration{
+ Name: tenantName,
+ },
+ retryPolicy{client.GetAPIRetryPolicy()},
+ }
+
+ var response setTenantResponse
+ err := client.sendRequest("setTenant", request, &response)
+ if err != nil {
+ return "", err
+ }
+
+ return response.TenantID, nil
+}
diff --git a/vendor/github.com/quobyte/api/rpc_client.go b/vendor/github.com/quobyte/api/rpc_client.go
index 7c7326c57fac..77e929e766be 100644
--- a/vendor/github.com/quobyte/api/rpc_client.go
+++ b/vendor/github.com/quobyte/api/rpc_client.go
@@ -7,6 +7,7 @@ import (
"io"
"math/rand"
"net/http"
+ "reflect"
"strconv"
)
@@ -88,6 +89,11 @@ func decodeResponse(ioReader io.Reader, reply interface{}) error {
}
func (client QuobyteClient) sendRequest(method string, request interface{}, response interface{}) error {
+ etype := reflect.ValueOf(request).Elem()
+ field := etype.FieldByName("RetryPolicy")
+ if field.IsValid() {
+ field.SetString(client.GetAPIRetryPolicy())
+ }
message, err := encodeRequest(method, request)
if err != nil {
return err
diff --git a/vendor/github.com/quobyte/api/types.go b/vendor/github.com/quobyte/api/types.go
index c1a87d337147..2e18bd7278ec 100644
--- a/vendor/github.com/quobyte/api/types.go
+++ b/vendor/github.com/quobyte/api/types.go
@@ -1,19 +1,25 @@
package quobyte
+type retryPolicy struct {
+ RetryPolicy string `json:"retry,omitempty"`
+}
+
// CreateVolumeRequest represents a CreateVolumeRequest
type CreateVolumeRequest struct {
- Name string `json:"name,omitempty"`
- RootUserID string `json:"root_user_id,omitempty"`
- RootGroupID string `json:"root_group_id,omitempty"`
- ReplicaDeviceIDS []uint64 `json:"replica_device_ids,string,omitempty"`
- ConfigurationName string `json:"configuration_name,omitempty"`
- AccessMode uint32 `json:"access_mode,string,omitempty"`
- TenantID string `json:"tenant_id,omitempty"`
+ Name string `json:"name,omitempty"`
+ RootUserID string `json:"root_user_id,omitempty"`
+ RootGroupID string `json:"root_group_id,omitempty"`
+ ReplicaDeviceIDS []uint64 `json:"replica_device_ids,string,omitempty"`
+ ConfigurationName string `json:"configuration_name,omitempty"`
+ AccessMode uint32 `json:"access_mode,string,omitempty"`
+ TenantID string `json:"tenant_id,omitempty"`
+ retryPolicy
}
type resolveVolumeNameRequest struct {
- VolumeName string `json:"volume_name,omitempty"`
- TenantDomain string `json:"tenant_domain,omitempty"`
+ VolumeName string `json:"volume_name,omitempty"`
+ TenantDomain string `json:"tenant_domain,omitempty"`
+ retryPolicy
}
type volumeUUID struct {
@@ -21,7 +27,8 @@ type volumeUUID struct {
}
type getClientListRequest struct {
- TenantDomain string `json:"tenant_domain,omitempty"`
+ TenantDomain string `json:"tenant_domain,omitempty"`
+ retryPolicy
}
type GetClientListResponse struct {
@@ -52,5 +59,37 @@ type quota struct {
}
type setQuotaRequest struct {
- Quotas []*quota `json:"quotas,omitempty"`
+ Quotas []*quota `json:"quotas,omitempty"`
+ retryPolicy
+}
+
+type getTenantRequest struct {
+ TenantIDs []string `json:"tenant_id,omitempty"`
+ retryPolicy
+}
+
+type GetTenantResponse struct {
+ Tenants []*TenantDomainConfiguration `json:"tenant,omitempty"`
+}
+
+type TenantDomainConfiguration struct {
+ TenantID string `json:"tenant_id,omitempty"`
+ Name string `json:"name,omitempty"`
+ RestrictToNetwork []string `json:"restrict_to_network,omitempty"`
+ VolumeAccess []*TenantDomainConfigurationVolumeAccess `json:"volume_access,omitempty"`
+}
+
+type TenantDomainConfigurationVolumeAccess struct {
+ VolumeUUID string `json:"volume_uuid,omitempty"`
+ RestrictToNetwork string `json:"restrict_to_network,omitempty"`
+ ReadOnly bool `json:"read_only,omitempty"`
+}
+
+type setTenantRequest struct {
+ Tenants *TenantDomainConfiguration `json:"tenant,omitempty"`
+ retryPolicy
+}
+
+type setTenantResponse struct {
+ TenantID string `json:"tenant_id,omitempty"`
}
diff --git a/vendor/github.com/satori/uuid/.travis.yml b/vendor/github.com/satori/go.uuid/.travis.yml
similarity index 73%
rename from vendor/github.com/satori/uuid/.travis.yml
rename to vendor/github.com/satori/go.uuid/.travis.yml
index fdf960e86b55..38517e2ed906 100644
--- a/vendor/github.com/satori/uuid/.travis.yml
+++ b/vendor/github.com/satori/go.uuid/.travis.yml
@@ -6,13 +6,6 @@ go:
- 1.4
- 1.5
- 1.6
- - 1.7
- - 1.8
- - tip
-matrix:
- allow_failures:
- - go: tip
- fast_finish: true
before_install:
- go get github.com/mattn/goveralls
- go get golang.org/x/tools/cmd/cover
diff --git a/vendor/github.com/satori/uuid/LICENSE b/vendor/github.com/satori/go.uuid/LICENSE
similarity index 100%
rename from vendor/github.com/satori/uuid/LICENSE
rename to vendor/github.com/satori/go.uuid/LICENSE
diff --git a/vendor/github.com/satori/uuid/README.md b/vendor/github.com/satori/go.uuid/README.md
similarity index 100%
rename from vendor/github.com/satori/uuid/README.md
rename to vendor/github.com/satori/go.uuid/README.md
diff --git a/vendor/github.com/satori/uuid/uuid.go b/vendor/github.com/satori/go.uuid/uuid.go
similarity index 97%
rename from vendor/github.com/satori/uuid/uuid.go
rename to vendor/github.com/satori/go.uuid/uuid.go
index 295f3fc2c57f..9c7fbaa54e67 100644
--- a/vendor/github.com/satori/uuid/uuid.go
+++ b/vendor/github.com/satori/go.uuid/uuid.go
@@ -251,12 +251,18 @@ func (u *UUID) UnmarshalText(text []byte) (err error) {
b := u[:]
for i, byteGroup := range byteGroups {
- if i > 0 {
- if t[0] != '-' {
- err = fmt.Errorf("uuid: invalid string format")
+ if i > 0 && t[0] == '-' {
+ t = t[1:]
+ } else if i > 0 && t[0] != '-' {
+ err = fmt.Errorf("uuid: invalid string format")
+ return
+ }
+
+ if i == 2 {
+ if !bytes.Contains([]byte("012345"), []byte{t[0]}) {
+ err = fmt.Errorf("uuid: invalid version number: %s", t[0])
return
}
- t = t[1:]
}
if len(t) < byteGroup {
@@ -266,11 +272,12 @@ func (u *UUID) UnmarshalText(text []byte) (err error) {
if i == 4 && len(t) > byteGroup &&
((braced && t[byteGroup] != '}') || len(t[byteGroup:]) > 1 || !braced) {
- err = fmt.Errorf("uuid: UUID string too long: %s", text)
+ err = fmt.Errorf("uuid: UUID string too long: %s", t)
return
}
_, err = hex.Decode(b[:byteGroup/2], t[:byteGroup])
+
if err != nil {
return
}
diff --git a/vendor/github.com/spf13/cobra/.travis.yml b/vendor/github.com/spf13/cobra/.travis.yml
index 6e84be54d16d..68efa136331d 100644
--- a/vendor/github.com/spf13/cobra/.travis.yml
+++ b/vendor/github.com/spf13/cobra/.travis.yml
@@ -1,11 +1,10 @@
language: go
-go:
- - 1.4.3
- - 1.5.4
- - 1.6.3
- - tip
matrix:
+ include:
+ - go: 1.7.6
+ - go: 1.8.3
+ - go: tip
allow_failures:
- go: tip
@@ -16,3 +15,7 @@ before_install:
script:
- PATH=$PATH:$PWD/bin go test -v ./...
- go build
+ - diff -u <(echo -n) <(gofmt -d -s .)
+ - if [ -z $NOVET ]; then
+ diff -u <(echo -n) <(go tool vet . 2>&1 | grep -vE 'ExampleCommand|bash_completions.*Fprint');
+ fi
diff --git a/vendor/github.com/spf13/cobra/README.md b/vendor/github.com/spf13/cobra/README.md
index b338a0e4424a..851fcc087cae 100644
--- a/vendor/github.com/spf13/cobra/README.md
+++ b/vendor/github.com/spf13/cobra/README.md
@@ -8,6 +8,7 @@ Many of the most widely used Go projects are built using Cobra including:
* [Hugo](http://gohugo.io)
* [rkt](https://github.com/coreos/rkt)
* [etcd](https://github.com/coreos/etcd)
+* [Moby (former Docker)](https://github.com/moby/moby)
* [Docker (distribution)](https://github.com/docker/distribution)
* [OpenShift](https://www.openshift.com/)
* [Delve](https://github.com/derekparker/delve)
@@ -15,16 +16,37 @@ Many of the most widely used Go projects are built using Cobra including:
* [CockroachDB](http://www.cockroachlabs.com/)
* [Bleve](http://www.blevesearch.com/)
* [ProjectAtomic (enterprise)](http://www.projectatomic.io/)
-* [Parse (CLI)](https://parse.com/)
* [GiantSwarm's swarm](https://github.com/giantswarm/cli)
* [Nanobox](https://github.com/nanobox-io/nanobox)/[Nanopack](https://github.com/nanopack)
-
+* [rclone](http://rclone.org/)
+* [nehm](https://github.com/bogem/nehm)
+* [Pouch](https://github.com/alibaba/pouch)
[![Build Status](https://travis-ci.org/spf13/cobra.svg "Travis CI status")](https://travis-ci.org/spf13/cobra)
[![CircleCI status](https://circleci.com/gh/spf13/cobra.png?circle-token=:circle-token "CircleCI status")](https://circleci.com/gh/spf13/cobra)
-[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra)
-
-![cobra](https://cloud.githubusercontent.com/assets/173412/10911369/84832a8e-8212-11e5-9f82-cc96660a4794.gif)
+[![GoDoc](https://godoc.org/github.com/spf13/cobra?status.svg)](https://godoc.org/github.com/spf13/cobra)
+
+# Table of Contents
+
+- [Overview](#overview)
+- [Concepts](#concepts)
+ * [Commands](#commands)
+ * [Flags](#flags)
+- [Installing](#installing)
+- [Getting Started](#getting-started)
+ * [Using the Cobra Generator](#using-the-cobra-generator)
+ * [Using the Cobra Library](#using-the-cobra-library)
+ * [Working with Flags](#working-with-flags)
+ * [Positional and Custom Arguments](#positional-and-custom-arguments)
+ * [Example](#example)
+ * [Help Command](#help-command)
+ * [Usage Message](#usage-message)
+ * [PreRun and PostRun Hooks](#prerun-and-postrun-hooks)
+ * [Suggestions when "unknown command" happens](#suggestions-when-unknown-command-happens)
+ * [Generating documentation for your command](#generating-documentation-for-your-command)
+ * [Generating bash completions](#generating-bash-completions)
+- [Contributing](#contributing)
+- [License](#license)
# Overview
@@ -39,27 +61,16 @@ Cobra provides:
* Fully POSIX-compliant flags (including short & long versions)
* Nested subcommands
* Global, local and cascading flags
-* Easy generation of applications & commands with `cobra create appname` & `cobra add cmdname`
+* Easy generation of applications & commands with `cobra init appname` & `cobra add cmdname`
* Intelligent suggestions (`app srver`... did you mean `app server`?)
* Automatic help generation for commands and flags
-* Automatic detailed help for `app help [command]`
* Automatic help flag recognition of `-h`, `--help`, etc.
* Automatically generated bash autocomplete for your application
* Automatically generated man pages for your application
* Command aliases so you can change things without breaking them
-* The flexibilty to define your own help, usage, etc.
+* The flexibility to define your own help, usage, etc.
* Optional tight integration with [viper](http://github.com/spf13/viper) for 12-factor apps
-Cobra has an exceptionally clean interface and simple design without needless
-constructors or initialization methods.
-
-Applications built with Cobra commands are designed to be as user-friendly as
-possible. Flags can be placed before or after the command (as long as a
-confusing space isn’t provided). Both short and long flags can be used. A
-command need not even be fully typed. Help is automatically generated and
-available for the application or for a specific command using either the help
-command or the `--help` flag.
-
# Concepts
Cobra is built on a structure of commands, arguments & flags.
@@ -78,11 +89,11 @@ A few good real world examples may better illustrate this point.
In the following example, 'server' is a command, and 'port' is a flag:
- > hugo server --port=1313
+ hugo server --port=1313
In this command we are telling Git to clone the url bare.
- > git clone URL --bare
+ git clone URL --bare
## Commands
@@ -92,20 +103,11 @@ have children commands and optionally run an action.
In the example above, 'server' is the command.
-A Command has the following structure:
-
-```go
-type Command struct {
- Use string // The one-line usage message.
- Short string // The short description shown in the 'help' output.
- Long string // The long message shown in the 'help ' output.
- Run func(cmd *Command, args []string) // Run runs the command.
-}
-```
+[More about cobra.Command](https://godoc.org/github.com/spf13/cobra#Command)
## Flags
-A Flag is a way to modify the behavior of a command. Cobra supports
+A flag is a way to modify the behavior of a command. Cobra supports
fully POSIX-compliant flags as well as the Go [flag package](https://golang.org/pkg/flag/).
A Cobra command can define flags that persist through to children commands
and flags that are only available to that command.
@@ -113,23 +115,15 @@ and flags that are only available to that command.
In the example above, 'port' is the flag.
Flag functionality is provided by the [pflag
-library](https://github.com/ogier/pflag), a fork of the flag standard library
+library](https://github.com/spf13/pflag), a fork of the flag standard library
which maintains the same interface while adding POSIX compliance.
-## Usage
-
-Cobra works by creating a set of commands and then organizing them into a tree.
-The tree defines the structure of the application.
-
-Once each command is defined with its corresponding flags, then the
-tree is assigned to the commander which is finally executed.
-
# Installing
Using Cobra is easy. First, use `go get` to install the latest version
-of the library. This command will install the `cobra` generator executible
-along with the library:
+of the library. This command will install the `cobra` generator executable
+along with the library and its dependencies:
- > go get -v github.com/spf13/cobra/cobra
+ go get -u github.com/spf13/cobra/cobra
Next, include Cobra in your application:
@@ -139,8 +133,8 @@ import "github.com/spf13/cobra"
# Getting Started
-While you are welcome to provide your own organization, typically a Cobra based
-application will follow the following organizational structure.
+While you are welcome to provide your own organization, typically a Cobra-based
+application will follow the following organizational structure:
```
▾ appName/
@@ -152,18 +146,20 @@ application will follow the following organizational structure.
main.go
```
-In a Cobra app, typically the main.go file is very bare. It serves, one purpose, to initialize Cobra.
+In a Cobra app, typically the main.go file is very bare. It serves one purpose: initializing Cobra.
```go
package main
-import "{pathToYourApp}/cmd"
+import (
+ "fmt"
+ "os"
+
+ "{pathToYourApp}/cmd"
+)
func main() {
- if err := cmd.RootCmd.Execute(); err != nil {
- fmt.Println(err)
- os.Exit(-1)
- }
+ cmd.Execute()
}
```
@@ -172,134 +168,89 @@ func main() {
Cobra provides its own program that will create your application and add any
commands you want. It's the easiest way to incorporate Cobra into your application.
-In order to use the cobra command, compile it using the following command:
-
- > go install github.com/spf13/cobra/cobra
-
-This will create the cobra executable under your go path bin directory!
-
-### cobra init
-
-The `cobra init [yourApp]` command will create your initial application code
-for you. It is a very powerful application that will populate your program with
-the right structure so you can immediately enjoy all the benefits of Cobra. It
-will also automatically apply the license you specify to your application.
-
-Cobra init is pretty smart. You can provide it a full path, or simply a path
-similar to what is expected in the import.
-
-```
-cobra init github.com/spf13/newAppName
-```
-
-### cobra add
-
-Once an application is initialized Cobra can create additional commands for you.
-Let's say you created an app and you wanted the following commands for it:
-
-* app serve
-* app config
-* app config create
-
-In your project directory (where your main.go file is) you would run the following:
-
-```
-cobra add serve
-cobra add config
-cobra add create -p 'configCmd'
-```
-
-Once you have run these three commands you would have an app structure that would look like:
-
-```
- ▾ app/
- ▾ cmd/
- serve.go
- config.go
- create.go
- main.go
-```
-
-at this point you can run `go run main.go` and it would run your app. `go run
-main.go serve`, `go run main.go config`, `go run main.go config create` along
-with `go run main.go help serve`, etc would all work.
-
-Obviously you haven't added your own code to these yet, the commands are ready
-for you to give them their tasks. Have fun.
+[Here](https://github.com/spf13/cobra/blob/master/cobra/README.md) you can find more information about it.
-### Configuring the cobra generator
+## Using the Cobra Library
-The cobra generator will be easier to use if you provide a simple configuration
-file which will help you eliminate providing a bunch of repeated information in
-flags over and over.
-
-An example ~/.cobra.yaml file:
-
-```yaml
-author: Steve Francia
-license: MIT
-```
-
-You can specify no license by setting `license` to `none` or you can specify
-a custom license:
-
-```yaml
-license:
- header: This file is part of {{ .appName }}.
- text: |
- {{ .copyright }}
-
- This is my license. There are many like it, but this one is mine.
- My license is my best friend. It is my life. I must master it as I must
- master my life.
-```
-
-## Manually implementing Cobra
-
-To manually implement cobra you need to create a bare main.go file and a RootCmd file.
+To manually implement Cobra you need to create a bare main.go file and a rootCmd file.
You will optionally provide additional commands as you see fit.
-### Create the root command
-
-The root command represents your binary itself.
-
-
-#### Manually create rootCmd
+### Create rootCmd
Cobra doesn't require any special constructors. Simply create your commands.
Ideally you place this in app/cmd/root.go:
```go
-var RootCmd = &cobra.Command{
- Use: "hugo",
- Short: "Hugo is a very fast static site generator",
- Long: `A Fast and Flexible Static Site Generator built with
+var rootCmd = &cobra.Command{
+ Use: "hugo",
+ Short: "Hugo is a very fast static site generator",
+ Long: `A Fast and Flexible Static Site Generator built with
love by spf13 and friends in Go.
Complete documentation is available at http://hugo.spf13.com`,
- Run: func(cmd *cobra.Command, args []string) {
- // Do Stuff Here
- },
+ Run: func(cmd *cobra.Command, args []string) {
+ // Do Stuff Here
+ },
+}
+
+func Execute() {
+ if err := rootCmd.Execute(); err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
}
```
You will additionally define flags and handle configuration in your init() function.
-for example cmd/root.go:
+For example cmd/root.go:
```go
+import (
+ "fmt"
+ "os"
+
+ homedir "github.com/mitchellh/go-homedir"
+ "github.com/spf13/cobra"
+ "github.com/spf13/viper"
+)
+
func init() {
- cobra.OnInitialize(initConfig)
- RootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)")
- RootCmd.PersistentFlags().StringVarP(&projectBase, "projectbase", "b", "", "base project directory eg. github.com/spf13/")
- RootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "Author name for copyright attribution")
- RootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "Name of license for the project (can provide `licensetext` in config)")
- RootCmd.PersistentFlags().Bool("viper", true, "Use Viper for configuration")
- viper.BindPFlag("author", RootCmd.PersistentFlags().Lookup("author"))
- viper.BindPFlag("projectbase", RootCmd.PersistentFlags().Lookup("projectbase"))
- viper.BindPFlag("useViper", RootCmd.PersistentFlags().Lookup("viper"))
- viper.SetDefault("author", "NAME HERE ")
- viper.SetDefault("license", "apache")
+ cobra.OnInitialize(initConfig)
+ rootCmd.PersistentFlags().StringVar(&cfgFile, "config", "", "config file (default is $HOME/.cobra.yaml)")
+ rootCmd.PersistentFlags().StringVarP(&projectBase, "projectbase", "b", "", "base project directory eg. github.com/spf13/")
+ rootCmd.PersistentFlags().StringP("author", "a", "YOUR NAME", "Author name for copyright attribution")
+ rootCmd.PersistentFlags().StringVarP(&userLicense, "license", "l", "", "Name of license for the project (can provide `licensetext` in config)")
+ rootCmd.PersistentFlags().Bool("viper", true, "Use Viper for configuration")
+ viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author"))
+ viper.BindPFlag("projectbase", rootCmd.PersistentFlags().Lookup("projectbase"))
+ viper.BindPFlag("useViper", rootCmd.PersistentFlags().Lookup("viper"))
+ viper.SetDefault("author", "NAME HERE ")
+ viper.SetDefault("license", "apache")
+}
+
+func initConfig() {
+ // Don't forget to read config either from cfgFile or from home directory!
+ if cfgFile != "" {
+ // Use config file from the flag.
+ viper.SetConfigFile(cfgFile)
+ } else {
+ // Find home directory.
+ home, err := homedir.Dir()
+ if err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+
+ // Search config in home directory with name ".cobra" (without extension).
+ viper.AddConfigPath(home)
+ viper.SetConfigName(".cobra")
+ }
+
+ if err := viper.ReadInConfig(); err != nil {
+ fmt.Println("Can't read config:", err)
+ os.Exit(1)
+ }
}
```
@@ -313,17 +264,18 @@ In a Cobra app, typically the main.go file is very bare. It serves, one purpose,
```go
package main
-import "{pathToYourApp}/cmd"
+import (
+ "fmt"
+ "os"
+
+ "{pathToYourApp}/cmd"
+)
func main() {
- if err := cmd.RootCmd.Execute(); err != nil {
- fmt.Println(err)
- os.Exit(-1)
- }
+ cmd.Execute()
}
```
-
### Create additional commands
Additional commands can be defined and typically are each given their own file
@@ -336,47 +288,25 @@ populate it with the following:
package cmd
import (
- "github.com/spf13/cobra"
+ "fmt"
+
+ "github.com/spf13/cobra"
)
func init() {
- RootCmd.AddCommand(versionCmd)
+ rootCmd.AddCommand(versionCmd)
}
var versionCmd = &cobra.Command{
- Use: "version",
- Short: "Print the version number of Hugo",
- Long: `All software has versions. This is Hugo's`,
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Println("Hugo Static Site Generator v0.9 -- HEAD")
- },
+ Use: "version",
+ Short: "Print the version number of Hugo",
+ Long: `All software has versions. This is Hugo's`,
+ Run: func(cmd *cobra.Command, args []string) {
+ fmt.Println("Hugo Static Site Generator v0.9 -- HEAD")
+ },
}
```
-### Attach command to its parent
-
-
-If you notice in the above example we attach the command to its parent. In
-this case the parent is the rootCmd. In this example we are attaching it to the
-root, but commands can be attached at any level.
-
-```go
-RootCmd.AddCommand(versionCmd)
-```
-
-### Remove a command from its parent
-
-Removing a command is not a common action in simple programs, but it allows 3rd
-parties to customize an existing command tree.
-
-In this example, we remove the existing `VersionCmd` command of an existing
-root command, and we replace it with our own version:
-
-```go
-mainlib.RootCmd.RemoveCommand(mainlib.VersionCmd)
-mainlib.RootCmd.AddCommand(versionCmd)
-```
-
## Working with Flags
Flags provide modifiers to control how the action command operates.
@@ -401,7 +331,7 @@ command it's assigned to as well as every command under that command. For
global flags, assign a flag as a persistent flag on the root.
```go
-RootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output")
+rootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose output")
```
### Local Flags
@@ -409,9 +339,83 @@ RootCmd.PersistentFlags().BoolVarP(&Verbose, "verbose", "v", false, "verbose out
A flag can also be assigned locally which will only apply to that specific command.
```go
-RootCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from")
+rootCmd.Flags().StringVarP(&Source, "source", "s", "", "Source directory to read from")
+```
+
+### Local Flag on Parent Commands
+
+By default Cobra only parses local flags on the target command, any local flags on
+parent commands are ignored. By enabling `Command.TraverseChildren` Cobra will
+parse local flags on each command before executing the target command.
+
+```go
+command := cobra.Command{
+ Use: "print [OPTIONS] [COMMANDS]",
+ TraverseChildren: true,
+}
```
+### Bind Flags with Config
+
+You can also bind your flags with [viper](https://github.com/spf13/viper):
+```go
+var author string
+
+func init() {
+ rootCmd.PersistentFlags().StringVar(&author, "author", "YOUR NAME", "Author name for copyright attribution")
+ viper.BindPFlag("author", rootCmd.PersistentFlags().Lookup("author"))
+}
+```
+
+In this example the persistent flag `author` is bound with `viper`.
+**Note**, that the variable `author` will not be set to the value from config,
+when the `--author` flag is not provided by user.
+
+More in [viper documentation](https://github.com/spf13/viper#working-with-flags).
+
+### Required flags
+
+Flags are optional by default. If instead you wish your command to report an error
+when a flag has not been set, mark it as required:
+```go
+rootCmd.Flags().StringVarP(&Region, "region", "r", "", "AWS region (required)")
+rootCmd.MarkFlagRequired("region")
+```
+
+## Positional and Custom Arguments
+
+Validation of positional arguments can be specified using the `Args` field
+of `Command`.
+
+The following validators are built in:
+
+- `NoArgs` - the command will report an error if there are any positional args.
+- `ArbitraryArgs` - the command will accept any args.
+- `OnlyValidArgs` - the command will report an error if there are any positional args that are not in the `ValidArgs` field of `Command`.
+- `MinimumNArgs(int)` - the command will report an error if there are not at least N positional args.
+- `MaximumNArgs(int)` - the command will report an error if there are more than N positional args.
+- `ExactArgs(int)` - the command will report an error if there are not exactly N positional args.
+- `RangeArgs(min, max)` - the command will report an error if the number of args is not between the minimum and maximum number of expected args.
+
+An example of setting the custom validator:
+
+```go
+var cmd = &cobra.Command{
+ Short: "hello",
+ Args: func(cmd *cobra.Command, args []string) error {
+ if len(args) < 1 {
+ return errors.New("requires at least one arg")
+ }
+ if myapp.IsValidColor(args[0]) {
+ return nil
+ }
+ return fmt.Errorf("invalid color specified: %s", args[0])
+ },
+ Run: func(cmd *cobra.Command, args []string) {
+ fmt.Println("Hello, World!")
+ },
+}
+```
## Example
@@ -428,62 +432,62 @@ More documentation about flags is available at https://github.com/spf13/pflag
package main
import (
- "fmt"
- "strings"
+ "fmt"
+ "strings"
- "github.com/spf13/cobra"
+ "github.com/spf13/cobra"
)
func main() {
-
- var echoTimes int
-
- var cmdPrint = &cobra.Command{
- Use: "print [string to print]",
- Short: "Print anything to the screen",
- Long: `print is for printing anything back to the screen.
- For many years people have printed back to the screen.
- `,
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Println("Print: " + strings.Join(args, " "))
- },
- }
-
- var cmdEcho = &cobra.Command{
- Use: "echo [string to echo]",
- Short: "Echo anything to the screen",
- Long: `echo is for echoing anything back.
- Echo works a lot like print, except it has a child command.
- `,
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Println("Print: " + strings.Join(args, " "))
- },
- }
-
- var cmdTimes = &cobra.Command{
- Use: "times [# times] [string to echo]",
- Short: "Echo anything to the screen more times",
- Long: `echo things multiple times back to the user by providing
- a count and a string.`,
- Run: func(cmd *cobra.Command, args []string) {
- for i := 0; i < echoTimes; i++ {
- fmt.Println("Echo: " + strings.Join(args, " "))
- }
- },
- }
-
- cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input")
-
- var rootCmd = &cobra.Command{Use: "app"}
- rootCmd.AddCommand(cmdPrint, cmdEcho)
- cmdEcho.AddCommand(cmdTimes)
- rootCmd.Execute()
+ var echoTimes int
+
+ var cmdPrint = &cobra.Command{
+ Use: "print [string to print]",
+ Short: "Print anything to the screen",
+ Long: `print is for printing anything back to the screen.
+For many years people have printed back to the screen.`,
+ Args: cobra.MinimumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ fmt.Println("Print: " + strings.Join(args, " "))
+ },
+ }
+
+ var cmdEcho = &cobra.Command{
+ Use: "echo [string to echo]",
+ Short: "Echo anything to the screen",
+ Long: `echo is for echoing anything back.
+Echo works a lot like print, except it has a child command.`,
+ Args: cobra.MinimumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ fmt.Println("Print: " + strings.Join(args, " "))
+ },
+ }
+
+ var cmdTimes = &cobra.Command{
+ Use: "times [# times] [string to echo]",
+ Short: "Echo anything to the screen more times",
+ Long: `echo things multiple times back to the user by providing
+a count and a string.`,
+ Args: cobra.MinimumNArgs(1),
+ Run: func(cmd *cobra.Command, args []string) {
+ for i := 0; i < echoTimes; i++ {
+ fmt.Println("Echo: " + strings.Join(args, " "))
+ }
+ },
+ }
+
+ cmdTimes.Flags().IntVarP(&echoTimes, "times", "t", 1, "times to echo the input")
+
+ var rootCmd = &cobra.Command{Use: "app"}
+ rootCmd.AddCommand(cmdPrint, cmdEcho)
+ cmdEcho.AddCommand(cmdTimes)
+ rootCmd.Execute()
}
```
For a more complete example of a larger application, please checkout [Hugo](http://gohugo.io/).
-## The Help Command
+## Help Command
Cobra automatically adds a help command to your application when you have subcommands.
This will be called when a user runs 'app help'. Additionally, help will also
@@ -496,60 +500,28 @@ create' is called. Every command will automatically have the '--help' flag adde
The following output is automatically generated by Cobra. Nothing beyond the
command and flag definitions are needed.
- > hugo help
-
- hugo is the main command, used to build your Hugo site.
-
- Hugo is a Fast and Flexible Static Site Generator
- built with love by spf13 and friends in Go.
+ $ cobra help
- Complete documentation is available at http://gohugo.io/.
+ Cobra is a CLI library for Go that empowers applications.
+ This application is a tool to generate the needed files
+ to quickly create a Cobra application.
Usage:
- hugo [flags]
- hugo [command]
+ cobra [command]
Available Commands:
- server Hugo runs its own webserver to render the files
- version Print the version number of Hugo
- config Print the site configuration
- check Check content in the source directory
- benchmark Benchmark hugo by building a site a number of times.
- convert Convert your content to different formats
- new Create new content for your site
- list Listing out various types of content
- undraft Undraft changes the content's draft status from 'True' to 'False'
- genautocomplete Generate shell autocompletion script for Hugo
- gendoc Generate Markdown documentation for the Hugo CLI.
- genman Generate man page for Hugo
- import Import your site from others.
+ add Add a command to a Cobra Application
+ help Help about any command
+ init Initialize a Cobra Application
Flags:
- -b, --baseURL="": hostname (and path) to the root, e.g. http://spf13.com/
- -D, --buildDrafts[=false]: include content marked as draft
- -F, --buildFuture[=false]: include content with publishdate in the future
- --cacheDir="": filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
- --canonifyURLs[=false]: if true, all relative URLs will be canonicalized using baseURL
- --config="": config file (default is path/config.yaml|json|toml)
- -d, --destination="": filesystem path to write files to
- --disableRSS[=false]: Do not build RSS files
- --disableSitemap[=false]: Do not build Sitemap file
- --editor="": edit new content with this editor, if provided
- --ignoreCache[=false]: Ignores the cache directory for reading but still writes to it
- --log[=false]: Enable Logging
- --logFile="": Log File path (if set, logging enabled automatically)
- --noTimes[=false]: Don't sync modification time of files
- --pluralizeListTitles[=true]: Pluralize titles in lists using inflect
- --preserveTaxonomyNames[=false]: Preserve taxonomy names as written ("Gérard Depardieu" vs "gerard-depardieu")
- -s, --source="": filesystem path to read files relative from
- --stepAnalysis[=false]: display memory and timing of different steps of the program
- -t, --theme="": theme to use (located in /themes/THEMENAME/)
- --uglyURLs[=false]: if true, use /filename.html instead of /filename/
- -v, --verbose[=false]: verbose output
- --verboseLog[=false]: verbose logging
- -w, --watch[=false]: watch filesystem for changes and recreate as needed
-
- Use "hugo [command] --help" for more information about a command.
+ -a, --author string author name for copyright attribution (default "YOUR NAME")
+ --config string config file (default is $HOME/.cobra.yaml)
+ -h, --help help for cobra
+ -l, --license string name of license for the project
+ --viper use Viper for configuration (default true)
+
+ Use "cobra [command] --help" for more information about a command.
Help is just a command like any other. There is no special logic or behavior
@@ -557,38 +529,18 @@ around it. In fact, you can provide your own if you want.
### Defining your own help
-You can provide your own Help command or your own template for the default command to use.
-
-The default help command is
+You can provide your own Help command or your own template for the default command to use
+with following functions:
```go
-func (c *Command) initHelp() {
- if c.helpCommand == nil {
- c.helpCommand = &Command{
- Use: "help [command]",
- Short: "Help about any command",
- Long: `Help provides help for any command in the application.
- Simply type ` + c.Name() + ` help [path to command] for full details.`,
- Run: c.HelpFunc(),
- }
- }
- c.AddCommand(c.helpCommand)
-}
-```
-
-You can provide your own command, function or template through the following methods:
-
-```go
-command.SetHelpCommand(cmd *Command)
-
-command.SetHelpFunc(f func(*Command, []string))
-
-command.SetHelpTemplate(s string)
+cmd.SetHelpCommand(cmd *Command)
+cmd.SetHelpFunc(f func(*Command, []string))
+cmd.SetHelpTemplate(s string)
```
The latter two will also apply to any children commands.
-## Usage
+## Usage Message
When the user provides an invalid flag or invalid command, Cobra responds by
showing the user the 'usage'.
@@ -597,73 +549,44 @@ showing the user the 'usage'.
You may recognize this from the help above. That's because the default help
embeds the usage as part of its output.
+ $ cobra --invalid
+ Error: unknown flag: --invalid
Usage:
- hugo [flags]
- hugo [command]
+ cobra [command]
Available Commands:
- server Hugo runs its own webserver to render the files
- version Print the version number of Hugo
- config Print the site configuration
- check Check content in the source directory
- benchmark Benchmark hugo by building a site a number of times.
- convert Convert your content to different formats
- new Create new content for your site
- list Listing out various types of content
- undraft Undraft changes the content's draft status from 'True' to 'False'
- genautocomplete Generate shell autocompletion script for Hugo
- gendoc Generate Markdown documentation for the Hugo CLI.
- genman Generate man page for Hugo
- import Import your site from others.
+ add Add a command to a Cobra Application
+ help Help about any command
+ init Initialize a Cobra Application
Flags:
- -b, --baseURL="": hostname (and path) to the root, e.g. http://spf13.com/
- -D, --buildDrafts[=false]: include content marked as draft
- -F, --buildFuture[=false]: include content with publishdate in the future
- --cacheDir="": filesystem path to cache directory. Defaults: $TMPDIR/hugo_cache/
- --canonifyURLs[=false]: if true, all relative URLs will be canonicalized using baseURL
- --config="": config file (default is path/config.yaml|json|toml)
- -d, --destination="": filesystem path to write files to
- --disableRSS[=false]: Do not build RSS files
- --disableSitemap[=false]: Do not build Sitemap file
- --editor="": edit new content with this editor, if provided
- --ignoreCache[=false]: Ignores the cache directory for reading but still writes to it
- --log[=false]: Enable Logging
- --logFile="": Log File path (if set, logging enabled automatically)
- --noTimes[=false]: Don't sync modification time of files
- --pluralizeListTitles[=true]: Pluralize titles in lists using inflect
- --preserveTaxonomyNames[=false]: Preserve taxonomy names as written ("Gérard Depardieu" vs "gerard-depardieu")
- -s, --source="": filesystem path to read files relative from
- --stepAnalysis[=false]: display memory and timing of different steps of the program
- -t, --theme="": theme to use (located in /themes/THEMENAME/)
- --uglyURLs[=false]: if true, use /filename.html instead of /filename/
- -v, --verbose[=false]: verbose output
- --verboseLog[=false]: verbose logging
- -w, --watch[=false]: watch filesystem for changes and recreate as needed
+ -a, --author string author name for copyright attribution (default "YOUR NAME")
+ --config string config file (default is $HOME/.cobra.yaml)
+ -h, --help help for cobra
+ -l, --license string name of license for the project
+ --viper use Viper for configuration (default true)
+
+ Use "cobra [command] --help" for more information about a command.
### Defining your own usage
You can provide your own usage function or template for Cobra to use.
-
-The default usage function is:
+Like help, the function and template are overridable through public methods:
```go
-return func(c *Command) error {
- err := tmpl(c.Out(), c.UsageTemplate(), c)
- return err
-}
+cmd.SetUsageFunc(f func(*Command) error)
+cmd.SetUsageTemplate(s string)
```
-Like help, the function and template are overridable through public methods:
-
-```go
-command.SetUsageFunc(f func(*Command) error)
+## Version Flag
-command.SetUsageTemplate(s string)
-```
+Cobra adds a top-level '--version' flag if the Version field is set on the root command.
+Running an application with the '--version' flag will print the version to stdout using
+the version template. The template can be customized using the
+`cmd.SetVersionTemplate(s string)` function.
-## PreRun or PostRun Hooks
+## PreRun and PostRun Hooks
-It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherrited by children if they do not declare their own. These function are run in the following order:
+It is possible to run functions before or after the main `Run` function of your command. The `PersistentPreRun` and `PreRun` functions will be executed before `Run`. `PersistentPostRun` and `PostRun` will be executed after `Run`. The `Persistent*Run` functions will be inherited by children if they do not declare their own. These functions are run in the following order:
- `PersistentPreRun`
- `PreRun`
@@ -677,105 +600,73 @@ An example of two commands which use all of these features is below. When the s
package main
import (
- "fmt"
+ "fmt"
- "github.com/spf13/cobra"
+ "github.com/spf13/cobra"
)
func main() {
- var rootCmd = &cobra.Command{
- Use: "root [sub]",
- Short: "My root command",
- PersistentPreRun: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args)
- },
- PreRun: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside rootCmd PreRun with args: %v\n", args)
- },
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside rootCmd Run with args: %v\n", args)
- },
- PostRun: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside rootCmd PostRun with args: %v\n", args)
- },
- PersistentPostRun: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args)
- },
- }
-
- var subCmd = &cobra.Command{
- Use: "sub [no options!]",
- Short: "My subcommand",
- PreRun: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside subCmd PreRun with args: %v\n", args)
- },
- Run: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside subCmd Run with args: %v\n", args)
- },
- PostRun: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside subCmd PostRun with args: %v\n", args)
- },
- PersistentPostRun: func(cmd *cobra.Command, args []string) {
- fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args)
- },
- }
-
- rootCmd.AddCommand(subCmd)
-
- rootCmd.SetArgs([]string{""})
- _ = rootCmd.Execute()
- fmt.Print("\n")
- rootCmd.SetArgs([]string{"sub", "arg1", "arg2"})
- _ = rootCmd.Execute()
+ var rootCmd = &cobra.Command{
+ Use: "root [sub]",
+ Short: "My root command",
+ PersistentPreRun: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside rootCmd PersistentPreRun with args: %v\n", args)
+ },
+ PreRun: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside rootCmd PreRun with args: %v\n", args)
+ },
+ Run: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside rootCmd Run with args: %v\n", args)
+ },
+ PostRun: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside rootCmd PostRun with args: %v\n", args)
+ },
+ PersistentPostRun: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside rootCmd PersistentPostRun with args: %v\n", args)
+ },
+ }
+
+ var subCmd = &cobra.Command{
+ Use: "sub [no options!]",
+ Short: "My subcommand",
+ PreRun: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside subCmd PreRun with args: %v\n", args)
+ },
+ Run: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside subCmd Run with args: %v\n", args)
+ },
+ PostRun: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside subCmd PostRun with args: %v\n", args)
+ },
+ PersistentPostRun: func(cmd *cobra.Command, args []string) {
+ fmt.Printf("Inside subCmd PersistentPostRun with args: %v\n", args)
+ },
+ }
+
+ rootCmd.AddCommand(subCmd)
+
+ rootCmd.SetArgs([]string{""})
+ rootCmd.Execute()
+ fmt.Println()
+ rootCmd.SetArgs([]string{"sub", "arg1", "arg2"})
+ rootCmd.Execute()
}
```
+Output:
+```
+Inside rootCmd PersistentPreRun with args: []
+Inside rootCmd PreRun with args: []
+Inside rootCmd Run with args: []
+Inside rootCmd PostRun with args: []
+Inside rootCmd PersistentPostRun with args: []
-## Alternative Error Handling
-
-Cobra also has functions where the return signature is an error. This allows for errors to bubble up to the top,
-providing a way to handle the errors in one location. The current list of functions that return an error is:
-
-* PersistentPreRunE
-* PreRunE
-* RunE
-* PostRunE
-* PersistentPostRunE
-
-If you would like to silence the default `error` and `usage` output in favor of your own, you can set `SilenceUsage`
-and `SilenceErrors` to `false` on the command. A child command respects these flags if they are set on the parent
-command.
-
-**Example Usage using RunE:**
-
-```go
-package main
-
-import (
- "errors"
- "log"
-
- "github.com/spf13/cobra"
-)
-
-func main() {
- var rootCmd = &cobra.Command{
- Use: "hugo",
- Short: "Hugo is a very fast static site generator",
- Long: `A Fast and Flexible Static Site Generator built with
- love by spf13 and friends in Go.
- Complete documentation is available at http://hugo.spf13.com`,
- RunE: func(cmd *cobra.Command, args []string) error {
- // Do Stuff Here
- return errors.New("some random error")
- },
- }
-
- if err := rootCmd.Execute(); err != nil {
- log.Fatal(err)
- }
-}
+Inside rootCmd PersistentPreRun with args: [arg1 arg2]
+Inside subCmd PreRun with args: [arg1 arg2]
+Inside subCmd Run with args: [arg1 arg2]
+Inside subCmd PostRun with args: [arg1 arg2]
+Inside subCmd PersistentPostRun with args: [arg1 arg2]
```
## Suggestions when "unknown command" happens
@@ -818,81 +709,28 @@ Did you mean this?
Run 'kubectl help' for usage.
```
-## Generating Markdown-formatted documentation for your command
-
-Cobra can generate a Markdown-formatted document based on the subcommands, flags, etc. A simple example of how to do this for your command can be found in [Markdown Docs](doc/md_docs.md).
+## Generating documentation for your command
-## Generating man pages for your command
+Cobra can generate documentation based on subcommands, flags, etc. in the following formats:
-Cobra can generate a man page based on the subcommands, flags, etc. A simple example of how to do this for your command can be found in [Man Docs](doc/man_docs.md).
+- [Markdown](doc/md_docs.md)
+- [ReStructured Text](doc/rest_docs.md)
+- [Man Page](doc/man_docs.md)
-## Generating bash completions for your command
+## Generating bash completions
Cobra can generate a bash-completion file. If you add more information to your command, these completions can be amazingly powerful and flexible. Read more about it in [Bash Completions](bash_completions.md).
-## Debugging
-
-Cobra provides a ‘DebugFlags’ method on a command which, when called, will print
-out everything Cobra knows about the flags for each command.
-
-### Example
-
-```go
-command.DebugFlags()
-```
-
-## Release Notes
-* **0.9.0** June 17, 2014
- * flags can appears anywhere in the args (provided they are unambiguous)
- * --help prints usage screen for app or command
- * Prefix matching for commands
- * Cleaner looking help and usage output
- * Extensive test suite
-* **0.8.0** Nov 5, 2013
- * Reworked interface to remove commander completely
- * Command now primary structure
- * No initialization needed
- * Usage & Help templates & functions definable at any level
- * Updated Readme
-* **0.7.0** Sept 24, 2013
- * Needs more eyes
- * Test suite
- * Support for automatic error messages
- * Support for help command
- * Support for printing to any io.Writer instead of os.Stderr
- * Support for persistent flags which cascade down tree
- * Ready for integration into Hugo
-* **0.1.0** Sept 3, 2013
- * Implement first draft
-
-## Extensions
-
-Libraries for extending Cobra:
-
-* [cmdns](https://github.com/gosuri/cmdns): Enables name spacing a command's immediate children. It provides an alternative way to structure subcommands, similar to `heroku apps:create` and `ovrclk clusters:launch`.
-
-## ToDo
-* Launch proper documentation site
-
-## Contributing
+# Contributing
1. Fork it
-2. Create your feature branch (`git checkout -b my-new-feature`)
-3. Commit your changes (`git commit -am 'Add some feature'`)
-4. Push to the branch (`git push origin my-new-feature`)
-5. Create new Pull Request
-
-## Contributors
+2. Download your fork to your PC (`git clone https://github.com/your_username/cobra && cd cobra`)
+3. Create your feature branch (`git checkout -b my-new-feature`)
+4. Make changes and add them (`git add .`)
+5. Commit your changes (`git commit -m 'Add some feature'`)
+6. Push to the branch (`git push origin my-new-feature`)
+7. Create new pull request
-Names in no particular order:
-
-* [spf13](https://github.com/spf13),
-[eparis](https://github.com/eparis),
-[bep](https://github.com/bep), and many more!
-
-## License
+# License
Cobra is released under the Apache 2.0 license. See [LICENSE.txt](https://github.com/spf13/cobra/blob/master/LICENSE.txt)
-
-
-[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/spf13/cobra/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
diff --git a/vendor/github.com/spf13/cobra/args.go b/vendor/github.com/spf13/cobra/args.go
new file mode 100644
index 000000000000..a5d8a9273eab
--- /dev/null
+++ b/vendor/github.com/spf13/cobra/args.go
@@ -0,0 +1,89 @@
+package cobra
+
+import (
+ "fmt"
+)
+
+type PositionalArgs func(cmd *Command, args []string) error
+
+// Legacy arg validation has the following behaviour:
+// - root commands with no subcommands can take arbitrary arguments
+// - root commands with subcommands will do subcommand validity checking
+// - subcommands will always accept arbitrary arguments
+func legacyArgs(cmd *Command, args []string) error {
+ // no subcommand, always take args
+ if !cmd.HasSubCommands() {
+ return nil
+ }
+
+ // root command with subcommands, do subcommand checking.
+ if !cmd.HasParent() && len(args) > 0 {
+ return fmt.Errorf("unknown command %q for %q%s", args[0], cmd.CommandPath(), cmd.findSuggestions(args[0]))
+ }
+ return nil
+}
+
+// NoArgs returns an error if any args are included.
+func NoArgs(cmd *Command, args []string) error {
+ if len(args) > 0 {
+ return fmt.Errorf("unknown command %q for %q", args[0], cmd.CommandPath())
+ }
+ return nil
+}
+
+// OnlyValidArgs returns an error if any args are not in the list of ValidArgs.
+func OnlyValidArgs(cmd *Command, args []string) error {
+ if len(cmd.ValidArgs) > 0 {
+ for _, v := range args {
+ if !stringInSlice(v, cmd.ValidArgs) {
+ return fmt.Errorf("invalid argument %q for %q%s", v, cmd.CommandPath(), cmd.findSuggestions(args[0]))
+ }
+ }
+ }
+ return nil
+}
+
+// ArbitraryArgs never returns an error.
+func ArbitraryArgs(cmd *Command, args []string) error {
+ return nil
+}
+
+// MinimumNArgs returns an error if there is not at least N args.
+func MinimumNArgs(n int) PositionalArgs {
+ return func(cmd *Command, args []string) error {
+ if len(args) < n {
+ return fmt.Errorf("requires at least %d arg(s), only received %d", n, len(args))
+ }
+ return nil
+ }
+}
+
+// MaximumNArgs returns an error if there are more than N args.
+func MaximumNArgs(n int) PositionalArgs {
+ return func(cmd *Command, args []string) error {
+ if len(args) > n {
+ return fmt.Errorf("accepts at most %d arg(s), received %d", n, len(args))
+ }
+ return nil
+ }
+}
+
+// ExactArgs returns an error if there are not exactly n args.
+func ExactArgs(n int) PositionalArgs {
+ return func(cmd *Command, args []string) error {
+ if len(args) != n {
+ return fmt.Errorf("accepts %d arg(s), received %d", n, len(args))
+ }
+ return nil
+ }
+}
+
+// RangeArgs returns an error if the number of args is not within the expected range.
+func RangeArgs(min int, max int) PositionalArgs {
+ return func(cmd *Command, args []string) error {
+ if len(args) < min || len(args) > max {
+ return fmt.Errorf("accepts between %d and %d arg(s), received %d", min, max, len(args))
+ }
+ return nil
+ }
+}
diff --git a/vendor/github.com/spf13/cobra/bash_completions.go b/vendor/github.com/spf13/cobra/bash_completions.go
index 236dee67f211..291eae7d8e5b 100644
--- a/vendor/github.com/spf13/cobra/bash_completions.go
+++ b/vendor/github.com/spf13/cobra/bash_completions.go
@@ -1,6 +1,7 @@
package cobra
import (
+ "bytes"
"fmt"
"io"
"os"
@@ -10,20 +11,18 @@ import (
"github.com/spf13/pflag"
)
+// Annotations for Bash completion.
const (
- BashCompFilenameExt = "cobra_annotation_bash_completion_filename_extentions"
+ BashCompFilenameExt = "cobra_annotation_bash_completion_filename_extensions"
BashCompCustom = "cobra_annotation_bash_completion_custom"
BashCompOneRequiredFlag = "cobra_annotation_bash_completion_one_required_flag"
BashCompSubdirsInDir = "cobra_annotation_bash_completion_subdirs_in_dir"
)
-func preamble(out io.Writer, name string) error {
- _, err := fmt.Fprintf(out, "# bash completion for %-36s -*- shell-script -*-\n", name)
- if err != nil {
- return err
- }
- _, err = fmt.Fprint(out, `
-__debug()
+func writePreamble(buf *bytes.Buffer, name string) {
+ buf.WriteString(fmt.Sprintf("# bash completion for %-36s -*- shell-script -*-\n", name))
+ buf.WriteString(fmt.Sprintf(`
+__%[1]s_debug()
{
if [[ -n ${BASH_COMP_DEBUG_FILE} ]]; then
echo "$*" >> "${BASH_COMP_DEBUG_FILE}"
@@ -32,13 +31,13 @@ __debug()
# Homebrew on Macs have version 1.3 of bash-completion which doesn't include
# _init_completion. This is a very minimal version of that function.
-__my_init_completion()
+__%[1]s_init_completion()
{
COMPREPLY=()
_get_comp_words_by_ref "$@" cur prev words cword
}
-__index_of_word()
+__%[1]s_index_of_word()
{
local w word=$1
shift
@@ -50,7 +49,7 @@ __index_of_word()
index=-1
}
-__contains_word()
+__%[1]s_contains_word()
{
local w word=$1; shift
for w in "$@"; do
@@ -59,9 +58,9 @@ __contains_word()
return 1
}
-__handle_reply()
+__%[1]s_handle_reply()
{
- __debug "${FUNCNAME[0]}"
+ __%[1]s_debug "${FUNCNAME[0]}"
case $cur in
-*)
if [[ $(type -t compopt) = "builtin" ]]; then
@@ -86,14 +85,14 @@ __handle_reply()
local index flag
flag="${cur%%=*}"
- __index_of_word "${flag}" "${flags_with_completion[@]}"
+ __%[1]s_index_of_word "${flag}" "${flags_with_completion[@]}"
+ COMPREPLY=()
if [[ ${index} -ge 0 ]]; then
- COMPREPLY=()
PREFIX=""
cur="${cur#*=}"
${flags_completion[${index}]}
if [ -n "${ZSH_VERSION}" ]; then
- # zfs completion needs --flag= prefix
+ # zsh completion needs --flag= prefix
eval "COMPREPLY=( \"\${COMPREPLY[@]/#/${flag}=}\" )"
fi
fi
@@ -104,7 +103,7 @@ __handle_reply()
# check if we are handling a flag with special work handling
local index
- __index_of_word "${prev}" "${flags_with_completion[@]}"
+ __%[1]s_index_of_word "${prev}" "${flags_with_completion[@]}"
if [[ ${index} -ge 0 ]]; then
${flags_completion[${index}]}
return
@@ -133,25 +132,34 @@ __handle_reply()
declare -F __custom_func >/dev/null && __custom_func
fi
- __ltrim_colon_completions "$cur"
+ # available in bash-completion >= 2, not always present on macOS
+ if declare -F __ltrim_colon_completions >/dev/null; then
+ __ltrim_colon_completions "$cur"
+ fi
+
+ # If there is only 1 completion and it is a flag with an = it will be completed
+ # but we don't want a space after the =
+ if [[ "${#COMPREPLY[@]}" -eq "1" ]] && [[ $(type -t compopt) = "builtin" ]] && [[ "${COMPREPLY[0]}" == --*= ]]; then
+ compopt -o nospace
+ fi
}
# The arguments should be in the form "ext1|ext2|extn"
-__handle_filename_extension_flag()
+__%[1]s_handle_filename_extension_flag()
{
local ext="$1"
_filedir "@(${ext})"
}
-__handle_subdirs_in_dir_flag()
+__%[1]s_handle_subdirs_in_dir_flag()
{
local dir="$1"
pushd "${dir}" >/dev/null 2>&1 && _filedir -d && popd >/dev/null 2>&1
}
-__handle_flag()
+__%[1]s_handle_flag()
{
- __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
+ __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
# if a command required a flag, and we found it, unset must_have_one_flag()
local flagname=${words[c]}
@@ -162,27 +170,30 @@ __handle_flag()
flagname=${flagname%%=*} # strip everything after the =
flagname="${flagname}=" # but put the = back
fi
- __debug "${FUNCNAME[0]}: looking for ${flagname}"
- if __contains_word "${flagname}" "${must_have_one_flag[@]}"; then
+ __%[1]s_debug "${FUNCNAME[0]}: looking for ${flagname}"
+ if __%[1]s_contains_word "${flagname}" "${must_have_one_flag[@]}"; then
must_have_one_flag=()
fi
# if you set a flag which only applies to this command, don't show subcommands
- if __contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then
+ if __%[1]s_contains_word "${flagname}" "${local_nonpersistent_flags[@]}"; then
commands=()
fi
# keep flag value with flagname as flaghash
- if [ -n "${flagvalue}" ] ; then
- flaghash[${flagname}]=${flagvalue}
- elif [ -n "${words[ $((c+1)) ]}" ] ; then
- flaghash[${flagname}]=${words[ $((c+1)) ]}
- else
- flaghash[${flagname}]="true" # pad "true" for bool flag
+ # flaghash variable is an associative array which is only supported in bash > 3.
+ if [[ -z "${BASH_VERSION}" || "${BASH_VERSINFO[0]}" -gt 3 ]]; then
+ if [ -n "${flagvalue}" ] ; then
+ flaghash[${flagname}]=${flagvalue}
+ elif [ -n "${words[ $((c+1)) ]}" ] ; then
+ flaghash[${flagname}]=${words[ $((c+1)) ]}
+ else
+ flaghash[${flagname}]="true" # pad "true" for bool flag
+ fi
fi
# skip the argument to a two word flag
- if __contains_word "${words[c]}" "${two_word_flags[@]}"; then
+ if __%[1]s_contains_word "${words[c]}" "${two_word_flags[@]}"; then
c=$((c+1))
# if we are looking for a flags value, don't show commands
if [[ $c -eq $cword ]]; then
@@ -194,13 +205,13 @@ __handle_flag()
}
-__handle_noun()
+__%[1]s_handle_noun()
{
- __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
+ __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
- if __contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
+ if __%[1]s_contains_word "${words[c]}" "${must_have_one_noun[@]}"; then
must_have_one_noun=()
- elif __contains_word "${words[c]}" "${noun_aliases[@]}"; then
+ elif __%[1]s_contains_word "${words[c]}" "${noun_aliases[@]}"; then
must_have_one_noun=()
fi
@@ -208,61 +219,57 @@ __handle_noun()
c=$((c+1))
}
-__handle_command()
+__%[1]s_handle_command()
{
- __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
+ __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
local next_command
if [[ -n ${last_command} ]]; then
next_command="_${last_command}_${words[c]//:/__}"
else
if [[ $c -eq 0 ]]; then
- next_command="_$(basename "${words[c]//:/__}")"
+ next_command="_%[1]s_root_command"
else
next_command="_${words[c]//:/__}"
fi
fi
c=$((c+1))
- __debug "${FUNCNAME[0]}: looking for ${next_command}"
- declare -F $next_command >/dev/null && $next_command
+ __%[1]s_debug "${FUNCNAME[0]}: looking for ${next_command}"
+ declare -F "$next_command" >/dev/null && $next_command
}
-__handle_word()
+__%[1]s_handle_word()
{
if [[ $c -ge $cword ]]; then
- __handle_reply
+ __%[1]s_handle_reply
return
fi
- __debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
+ __%[1]s_debug "${FUNCNAME[0]}: c is $c words[c] is ${words[c]}"
if [[ "${words[c]}" == -* ]]; then
- __handle_flag
- elif __contains_word "${words[c]}" "${commands[@]}"; then
- __handle_command
- elif [[ $c -eq 0 ]] && __contains_word "$(basename "${words[c]}")" "${commands[@]}"; then
- __handle_command
+ __%[1]s_handle_flag
+ elif __%[1]s_contains_word "${words[c]}" "${commands[@]}"; then
+ __%[1]s_handle_command
+ elif [[ $c -eq 0 ]]; then
+ __%[1]s_handle_command
else
- __handle_noun
+ __%[1]s_handle_noun
fi
- __handle_word
+ __%[1]s_handle_word
}
-`)
- return err
+`, name))
}
-func postscript(w io.Writer, name string) error {
+func writePostscript(buf *bytes.Buffer, name string) {
name = strings.Replace(name, ":", "__", -1)
- _, err := fmt.Fprintf(w, "__start_%s()\n", name)
- if err != nil {
- return err
- }
- _, err = fmt.Fprintf(w, `{
+ buf.WriteString(fmt.Sprintf("__start_%s()\n", name))
+ buf.WriteString(fmt.Sprintf(`{
local cur prev words cword
declare -A flaghash 2>/dev/null || :
if declare -F _init_completion >/dev/null 2>&1; then
_init_completion -s || return
else
- __my_init_completion -n "=" || return
+ __%[1]s_init_completion -n "=" || return
fi
local c=0
@@ -271,350 +278,268 @@ func postscript(w io.Writer, name string) error {
local local_nonpersistent_flags=()
local flags_with_completion=()
local flags_completion=()
- local commands=("%s")
+ local commands=("%[1]s")
local must_have_one_flag=()
local must_have_one_noun=()
local last_command
local nouns=()
- __handle_word
+ __%[1]s_handle_word
}
-`, name)
- if err != nil {
- return err
- }
- _, err = fmt.Fprintf(w, `if [[ $(type -t compopt) = "builtin" ]]; then
+`, name))
+ buf.WriteString(fmt.Sprintf(`if [[ $(type -t compopt) = "builtin" ]]; then
complete -o default -F __start_%s %s
else
complete -o default -o nospace -F __start_%s %s
fi
-`, name, name, name, name)
- if err != nil {
- return err
- }
- _, err = fmt.Fprintf(w, "# ex: ts=4 sw=4 et filetype=sh\n")
- return err
+`, name, name, name, name))
+ buf.WriteString("# ex: ts=4 sw=4 et filetype=sh\n")
}
-func writeCommands(cmd *Command, w io.Writer) error {
- if _, err := fmt.Fprintf(w, " commands=()\n"); err != nil {
- return err
- }
+func writeCommands(buf *bytes.Buffer, cmd *Command) {
+ buf.WriteString(" commands=()\n")
for _, c := range cmd.Commands() {
if !c.IsAvailableCommand() || c == cmd.helpCommand {
continue
}
- if _, err := fmt.Fprintf(w, " commands+=(%q)\n", c.Name()); err != nil {
- return err
- }
+ buf.WriteString(fmt.Sprintf(" commands+=(%q)\n", c.Name()))
}
- _, err := fmt.Fprintf(w, "\n")
- return err
+ buf.WriteString("\n")
}
-func writeFlagHandler(name string, annotations map[string][]string, w io.Writer) error {
+func writeFlagHandler(buf *bytes.Buffer, name string, annotations map[string][]string, cmd *Command) {
for key, value := range annotations {
switch key {
case BashCompFilenameExt:
- _, err := fmt.Fprintf(w, " flags_with_completion+=(%q)\n", name)
- if err != nil {
- return err
- }
+ buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name))
+ var ext string
if len(value) > 0 {
- ext := "__handle_filename_extension_flag " + strings.Join(value, "|")
- _, err = fmt.Fprintf(w, " flags_completion+=(%q)\n", ext)
+ ext = fmt.Sprintf("__%s_handle_filename_extension_flag ", cmd.Root().Name()) + strings.Join(value, "|")
} else {
- ext := "_filedir"
- _, err = fmt.Fprintf(w, " flags_completion+=(%q)\n", ext)
- }
- if err != nil {
- return err
+ ext = "_filedir"
}
+ buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", ext))
case BashCompCustom:
- _, err := fmt.Fprintf(w, " flags_with_completion+=(%q)\n", name)
- if err != nil {
- return err
- }
+ buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name))
if len(value) > 0 {
handlers := strings.Join(value, "; ")
- _, err = fmt.Fprintf(w, " flags_completion+=(%q)\n", handlers)
+ buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", handlers))
} else {
- _, err = fmt.Fprintf(w, " flags_completion+=(:)\n")
- }
- if err != nil {
- return err
+ buf.WriteString(" flags_completion+=(:)\n")
}
case BashCompSubdirsInDir:
- _, err := fmt.Fprintf(w, " flags_with_completion+=(%q)\n", name)
+ buf.WriteString(fmt.Sprintf(" flags_with_completion+=(%q)\n", name))
+ var ext string
if len(value) == 1 {
- ext := "__handle_subdirs_in_dir_flag " + value[0]
- _, err = fmt.Fprintf(w, " flags_completion+=(%q)\n", ext)
+ ext = fmt.Sprintf("__%s_handle_subdirs_in_dir_flag ", cmd.Root().Name()) + value[0]
} else {
- ext := "_filedir -d"
- _, err = fmt.Fprintf(w, " flags_completion+=(%q)\n", ext)
- }
- if err != nil {
- return err
+ ext = "_filedir -d"
}
+ buf.WriteString(fmt.Sprintf(" flags_completion+=(%q)\n", ext))
}
}
- return nil
}
-func writeShortFlag(flag *pflag.Flag, w io.Writer) error {
- b := (len(flag.NoOptDefVal) > 0)
+func writeShortFlag(buf *bytes.Buffer, flag *pflag.Flag, cmd *Command) {
name := flag.Shorthand
format := " "
- if !b {
+ if len(flag.NoOptDefVal) == 0 {
format += "two_word_"
}
format += "flags+=(\"-%s\")\n"
- if _, err := fmt.Fprintf(w, format, name); err != nil {
- return err
- }
- return writeFlagHandler("-"+name, flag.Annotations, w)
+ buf.WriteString(fmt.Sprintf(format, name))
+ writeFlagHandler(buf, "-"+name, flag.Annotations, cmd)
}
-func writeFlag(flag *pflag.Flag, w io.Writer) error {
- b := (len(flag.NoOptDefVal) > 0)
+func writeFlag(buf *bytes.Buffer, flag *pflag.Flag, cmd *Command) {
name := flag.Name
format := " flags+=(\"--%s"
- if !b {
+ if len(flag.NoOptDefVal) == 0 {
format += "="
}
format += "\")\n"
- if _, err := fmt.Fprintf(w, format, name); err != nil {
- return err
- }
- return writeFlagHandler("--"+name, flag.Annotations, w)
+ buf.WriteString(fmt.Sprintf(format, name))
+ writeFlagHandler(buf, "--"+name, flag.Annotations, cmd)
}
-func writeLocalNonPersistentFlag(flag *pflag.Flag, w io.Writer) error {
- b := (len(flag.NoOptDefVal) > 0)
+func writeLocalNonPersistentFlag(buf *bytes.Buffer, flag *pflag.Flag) {
name := flag.Name
format := " local_nonpersistent_flags+=(\"--%s"
- if !b {
+ if len(flag.NoOptDefVal) == 0 {
format += "="
}
format += "\")\n"
- if _, err := fmt.Fprintf(w, format, name); err != nil {
- return err
- }
- return nil
+ buf.WriteString(fmt.Sprintf(format, name))
}
-func writeFlags(cmd *Command, w io.Writer) error {
- _, err := fmt.Fprintf(w, ` flags=()
+func writeFlags(buf *bytes.Buffer, cmd *Command) {
+ buf.WriteString(` flags=()
two_word_flags=()
local_nonpersistent_flags=()
flags_with_completion=()
flags_completion=()
`)
- if err != nil {
- return err
- }
localNonPersistentFlags := cmd.LocalNonPersistentFlags()
- var visitErr error
cmd.NonInheritedFlags().VisitAll(func(flag *pflag.Flag) {
- if err := writeFlag(flag, w); err != nil {
- visitErr = err
+ if nonCompletableFlag(flag) {
return
}
+ writeFlag(buf, flag, cmd)
if len(flag.Shorthand) > 0 {
- if err := writeShortFlag(flag, w); err != nil {
- visitErr = err
- return
- }
+ writeShortFlag(buf, flag, cmd)
}
if localNonPersistentFlags.Lookup(flag.Name) != nil {
- if err := writeLocalNonPersistentFlag(flag, w); err != nil {
- visitErr = err
- return
- }
+ writeLocalNonPersistentFlag(buf, flag)
}
})
- if visitErr != nil {
- return visitErr
- }
cmd.InheritedFlags().VisitAll(func(flag *pflag.Flag) {
- if err := writeFlag(flag, w); err != nil {
- visitErr = err
+ if nonCompletableFlag(flag) {
return
}
+ writeFlag(buf, flag, cmd)
if len(flag.Shorthand) > 0 {
- if err := writeShortFlag(flag, w); err != nil {
- visitErr = err
- return
- }
+ writeShortFlag(buf, flag, cmd)
}
})
- if visitErr != nil {
- return visitErr
- }
- _, err = fmt.Fprintf(w, "\n")
- return err
+ buf.WriteString("\n")
}
-func writeRequiredFlag(cmd *Command, w io.Writer) error {
- if _, err := fmt.Fprintf(w, " must_have_one_flag=()\n"); err != nil {
- return err
- }
+func writeRequiredFlag(buf *bytes.Buffer, cmd *Command) {
+ buf.WriteString(" must_have_one_flag=()\n")
flags := cmd.NonInheritedFlags()
- var visitErr error
flags.VisitAll(func(flag *pflag.Flag) {
+ if nonCompletableFlag(flag) {
+ return
+ }
for key := range flag.Annotations {
switch key {
case BashCompOneRequiredFlag:
format := " must_have_one_flag+=(\"--%s"
- b := (flag.Value.Type() == "bool")
- if !b {
+ if flag.Value.Type() != "bool" {
format += "="
}
format += "\")\n"
- if _, err := fmt.Fprintf(w, format, flag.Name); err != nil {
- visitErr = err
- return
- }
+ buf.WriteString(fmt.Sprintf(format, flag.Name))
if len(flag.Shorthand) > 0 {
- if _, err := fmt.Fprintf(w, " must_have_one_flag+=(\"-%s\")\n", flag.Shorthand); err != nil {
- visitErr = err
- return
- }
+ buf.WriteString(fmt.Sprintf(" must_have_one_flag+=(\"-%s\")\n", flag.Shorthand))
}
}
}
})
- return visitErr
}
-func writeRequiredNouns(cmd *Command, w io.Writer) error {
- if _, err := fmt.Fprintf(w, " must_have_one_noun=()\n"); err != nil {
- return err
- }
+func writeRequiredNouns(buf *bytes.Buffer, cmd *Command) {
+ buf.WriteString(" must_have_one_noun=()\n")
sort.Sort(sort.StringSlice(cmd.ValidArgs))
for _, value := range cmd.ValidArgs {
- if _, err := fmt.Fprintf(w, " must_have_one_noun+=(%q)\n", value); err != nil {
- return err
- }
+ buf.WriteString(fmt.Sprintf(" must_have_one_noun+=(%q)\n", value))
}
- return nil
}
-func writeArgAliases(cmd *Command, w io.Writer) error {
- if _, err := fmt.Fprintf(w, " noun_aliases=()\n"); err != nil {
- return err
- }
+func writeArgAliases(buf *bytes.Buffer, cmd *Command) {
+ buf.WriteString(" noun_aliases=()\n")
sort.Sort(sort.StringSlice(cmd.ArgAliases))
for _, value := range cmd.ArgAliases {
- if _, err := fmt.Fprintf(w, " noun_aliases+=(%q)\n", value); err != nil {
- return err
- }
+ buf.WriteString(fmt.Sprintf(" noun_aliases+=(%q)\n", value))
}
- return nil
}
-func gen(cmd *Command, w io.Writer) error {
+func gen(buf *bytes.Buffer, cmd *Command) {
for _, c := range cmd.Commands() {
if !c.IsAvailableCommand() || c == cmd.helpCommand {
continue
}
- if err := gen(c, w); err != nil {
- return err
- }
+ gen(buf, c)
}
commandName := cmd.CommandPath()
commandName = strings.Replace(commandName, " ", "_", -1)
commandName = strings.Replace(commandName, ":", "__", -1)
- if _, err := fmt.Fprintf(w, "_%s()\n{\n", commandName); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, " last_command=%q\n", commandName); err != nil {
- return err
- }
- if err := writeCommands(cmd, w); err != nil {
- return err
- }
- if err := writeFlags(cmd, w); err != nil {
- return err
- }
- if err := writeRequiredFlag(cmd, w); err != nil {
- return err
- }
- if err := writeRequiredNouns(cmd, w); err != nil {
- return err
- }
- if err := writeArgAliases(cmd, w); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, "}\n\n"); err != nil {
- return err
+
+ if cmd.Root() == cmd {
+ buf.WriteString(fmt.Sprintf("_%s_root_command()\n{\n", commandName))
+ } else {
+ buf.WriteString(fmt.Sprintf("_%s()\n{\n", commandName))
}
- return nil
+
+ buf.WriteString(fmt.Sprintf(" last_command=%q\n", commandName))
+ writeCommands(buf, cmd)
+ writeFlags(buf, cmd)
+ writeRequiredFlag(buf, cmd)
+ writeRequiredNouns(buf, cmd)
+ writeArgAliases(buf, cmd)
+ buf.WriteString("}\n\n")
}
-func (cmd *Command) GenBashCompletion(w io.Writer) error {
- if err := preamble(w, cmd.Name()); err != nil {
- return err
- }
- if len(cmd.BashCompletionFunction) > 0 {
- if _, err := fmt.Fprintf(w, "%s\n", cmd.BashCompletionFunction); err != nil {
- return err
- }
- }
- if err := gen(cmd, w); err != nil {
- return err
+// GenBashCompletion generates bash completion file and writes to the passed writer.
+func (c *Command) GenBashCompletion(w io.Writer) error {
+ buf := new(bytes.Buffer)
+ writePreamble(buf, c.Name())
+ if len(c.BashCompletionFunction) > 0 {
+ buf.WriteString(c.BashCompletionFunction + "\n")
}
- return postscript(w, cmd.Name())
+ gen(buf, c)
+ writePostscript(buf, c.Name())
+
+ _, err := buf.WriteTo(w)
+ return err
+}
+
+func nonCompletableFlag(flag *pflag.Flag) bool {
+ return flag.Hidden || len(flag.Deprecated) > 0
}
-func (cmd *Command) GenBashCompletionFile(filename string) error {
+// GenBashCompletionFile generates bash completion file.
+func (c *Command) GenBashCompletionFile(filename string) error {
outFile, err := os.Create(filename)
if err != nil {
return err
}
defer outFile.Close()
- return cmd.GenBashCompletion(outFile)
+ return c.GenBashCompletion(outFile)
}
-// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag, if it exists.
-func (cmd *Command) MarkFlagRequired(name string) error {
- return MarkFlagRequired(cmd.Flags(), name)
+// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists,
+// and causes your command to report an error if invoked without the flag.
+func (c *Command) MarkFlagRequired(name string) error {
+ return MarkFlagRequired(c.Flags(), name)
}
-// MarkPersistentFlagRequired adds the BashCompOneRequiredFlag annotation to the named persistent flag, if it exists.
-func (cmd *Command) MarkPersistentFlagRequired(name string) error {
- return MarkFlagRequired(cmd.PersistentFlags(), name)
+// MarkPersistentFlagRequired adds the BashCompOneRequiredFlag annotation to the named persistent flag if it exists,
+// and causes your command to report an error if invoked without the flag.
+func (c *Command) MarkPersistentFlagRequired(name string) error {
+ return MarkFlagRequired(c.PersistentFlags(), name)
}
-// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag in the flag set, if it exists.
+// MarkFlagRequired adds the BashCompOneRequiredFlag annotation to the named flag if it exists,
+// and causes your command to report an error if invoked without the flag.
func MarkFlagRequired(flags *pflag.FlagSet, name string) error {
return flags.SetAnnotation(name, BashCompOneRequiredFlag, []string{"true"})
}
// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag, if it exists.
// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided.
-func (cmd *Command) MarkFlagFilename(name string, extensions ...string) error {
- return MarkFlagFilename(cmd.Flags(), name, extensions...)
+func (c *Command) MarkFlagFilename(name string, extensions ...string) error {
+ return MarkFlagFilename(c.Flags(), name, extensions...)
}
// MarkFlagCustom adds the BashCompCustom annotation to the named flag, if it exists.
// Generated bash autocompletion will call the bash function f for the flag.
-func (cmd *Command) MarkFlagCustom(name string, f string) error {
- return MarkFlagCustom(cmd.Flags(), name, f)
+func (c *Command) MarkFlagCustom(name string, f string) error {
+ return MarkFlagCustom(c.Flags(), name, f)
}
// MarkPersistentFlagFilename adds the BashCompFilenameExt annotation to the named persistent flag, if it exists.
// Generated bash autocompletion will select filenames for the flag, limiting to named extensions if provided.
-func (cmd *Command) MarkPersistentFlagFilename(name string, extensions ...string) error {
- return MarkFlagFilename(cmd.PersistentFlags(), name, extensions...)
+func (c *Command) MarkPersistentFlagFilename(name string, extensions ...string) error {
+ return MarkFlagFilename(c.PersistentFlags(), name, extensions...)
}
// MarkFlagFilename adds the BashCompFilenameExt annotation to the named flag in the flag set, if it exists.
diff --git a/vendor/github.com/spf13/cobra/bash_completions.md b/vendor/github.com/spf13/cobra/bash_completions.md
index 6e3b71f13d51..691a04e190b2 100644
--- a/vendor/github.com/spf13/cobra/bash_completions.md
+++ b/vendor/github.com/spf13/cobra/bash_completions.md
@@ -18,7 +18,7 @@ func main() {
}
```
-That will get you completions of subcommands and flags. If you make additional annotations to your code, you can get even more intelligent and flexible behavior.
+`out.sh` will get you completions of subcommands and flags. Copy it to `/etc/bash_completion.d/` as described [here](https://debian-administration.org/article/316/An_introduction_to_bash_completion_part_1) and reset your terminal to use autocompletion. If you make additional annotations to your code, you can get even more intelligent and flexible behavior.
## Creating your own custom functions
@@ -106,7 +106,7 @@ node pod replicationcontroller service
If your nouns have a number of aliases, you can define them alongside `ValidArgs` using `ArgAliases`:
-```go`
+```go
argAliases []string = { "pods", "nodes", "services", "svc", "replicationcontrollers", "rc" }
cmd := &cobra.Command{
@@ -173,9 +173,9 @@ hello.yml test.json
So while there are many other files in the CWD it only shows me subdirs and those with valid extensions.
-# Specifiy custom flag completion
+# Specify custom flag completion
-Similar to the filename completion and filtering using cobra.BashCompFilenameExt, you can specifiy
+Similar to the filename completion and filtering using cobra.BashCompFilenameExt, you can specify
a custom flag completion function with cobra.BashCompCustom:
```go
@@ -204,3 +204,17 @@ __kubectl_get_namespaces()
fi
}
```
+# Using bash aliases for commands
+
+You can also configure the `bash aliases` for the commands and they will also support completions.
+
+```bash
+alias aliasname=origcommand
+complete -o default -F __start_origcommand aliasname
+
+# and now when you run `aliasname` completion will make
+# suggestions as it did for `origcommand`.
+
+$) aliasname
+completion firstcommand secondcommand
+```
diff --git a/vendor/github.com/spf13/cobra/cobra.go b/vendor/github.com/spf13/cobra/cobra.go
index 93a2c0f3a77d..7010fd15b723 100644
--- a/vendor/github.com/spf13/cobra/cobra.go
+++ b/vendor/github.com/spf13/cobra/cobra.go
@@ -27,48 +27,60 @@ import (
)
var templateFuncs = template.FuncMap{
- "trim": strings.TrimSpace,
- "trimRightSpace": trimRightSpace,
- "appendIfNotPresent": appendIfNotPresent,
- "rpad": rpad,
- "gt": Gt,
- "eq": Eq,
+ "trim": strings.TrimSpace,
+ "trimRightSpace": trimRightSpace,
+ "trimTrailingWhitespaces": trimRightSpace,
+ "appendIfNotPresent": appendIfNotPresent,
+ "rpad": rpad,
+ "gt": Gt,
+ "eq": Eq,
}
var initializers []func()
-// automatic prefix matching can be a dangerous thing to automatically enable in CLI tools.
-// Set this to true to enable it
+// EnablePrefixMatching allows to set automatic prefix matching. Automatic prefix matching can be a dangerous thing
+// to automatically enable in CLI tools.
+// Set this to true to enable it.
var EnablePrefixMatching = false
-//EnableCommandSorting controls sorting of the slice of commands, which is turned on by default.
-//To disable sorting, set it to false.
+// EnableCommandSorting controls sorting of the slice of commands, which is turned on by default.
+// To disable sorting, set it to false.
var EnableCommandSorting = true
-//AddTemplateFunc adds a template function that's available to Usage and Help
-//template generation.
+// MousetrapHelpText enables an information splash screen on Windows
+// if the CLI is started from explorer.exe.
+// To disable the mousetrap, just set this variable to blank string ("").
+// Works only on Microsoft Windows.
+var MousetrapHelpText string = `This is a command line tool.
+
+You need to open cmd.exe and run it from there.
+`
+
+// AddTemplateFunc adds a template function that's available to Usage and Help
+// template generation.
func AddTemplateFunc(name string, tmplFunc interface{}) {
templateFuncs[name] = tmplFunc
}
-//AddTemplateFuncs adds multiple template functions availalble to Usage and
-//Help template generation.
+// AddTemplateFuncs adds multiple template functions that are available to Usage and
+// Help template generation.
func AddTemplateFuncs(tmplFuncs template.FuncMap) {
for k, v := range tmplFuncs {
templateFuncs[k] = v
}
}
-//OnInitialize takes a series of func() arguments and appends them to a slice of func().
+// OnInitialize sets the passed functions to be run when each command's
+// Execute method is called.
func OnInitialize(y ...func()) {
- for _, x := range y {
- initializers = append(initializers, x)
- }
+ initializers = append(initializers, y...)
}
-//Gt takes two types and checks whether the first type is greater than the second. In case of types Arrays, Chans,
-//Maps and Slices, Gt will compare their lengths. Ints are compared directly while strings are first parsed as
-//ints and then compared.
+// FIXME Gt is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra.
+
+// Gt takes two types and checks whether the first type is greater than the second. In case of types Arrays, Chans,
+// Maps and Slices, Gt will compare their lengths. Ints are compared directly while strings are first parsed as
+// ints and then compared.
func Gt(a interface{}, b interface{}) bool {
var left, right int64
av := reflect.ValueOf(a)
@@ -96,7 +108,9 @@ func Gt(a interface{}, b interface{}) bool {
return left > right
}
-//Eq takes two types and checks whether they are equal. Supported types are int and string. Unsupported types will panic.
+// FIXME Eq is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra.
+
+// Eq takes two types and checks whether they are equal. Supported types are int and string. Unsupported types will panic.
func Eq(a interface{}, b interface{}) bool {
av := reflect.ValueOf(a)
bv := reflect.ValueOf(b)
@@ -116,7 +130,9 @@ func trimRightSpace(s string) string {
return strings.TrimRightFunc(s, unicode.IsSpace)
}
-// appendIfNotPresent will append stringToAppend to the end of s, but only if it's not yet present in s
+// FIXME appendIfNotPresent is unused by cobra and should be removed in a version 2. It exists only for compatibility with users of cobra.
+
+// appendIfNotPresent will append stringToAppend to the end of s, but only if it's not yet present in s.
func appendIfNotPresent(s, stringToAppend string) string {
if strings.Contains(s, stringToAppend) {
return s
@@ -124,7 +140,7 @@ func appendIfNotPresent(s, stringToAppend string) string {
return s + " " + stringToAppend
}
-//rpad adds padding to the right of a string
+// rpad adds padding to the right of a string.
func rpad(s string, padding int) string {
template := fmt.Sprintf("%%-%ds", padding)
return fmt.Sprintf(template, s)
@@ -138,7 +154,7 @@ func tmpl(w io.Writer, text string, data interface{}) error {
return t.Execute(w, data)
}
-// ld compares two strings and returns the levenshtein distance between them
+// ld compares two strings and returns the levenshtein distance between them.
func ld(s, t string, ignoreCase bool) int {
if ignoreCase {
s = strings.ToLower(s)
@@ -173,3 +189,12 @@ func ld(s, t string, ignoreCase bool) int {
}
return d[len(s)][len(t)]
}
+
+func stringInSlice(a string, list []string) bool {
+ for _, b := range list {
+ if b == a {
+ return true
+ }
+ }
+ return false
+}
diff --git a/vendor/github.com/spf13/cobra/command.go b/vendor/github.com/spf13/cobra/command.go
index 083e4ea7f47b..29675b336322 100644
--- a/vendor/github.com/spf13/cobra/command.go
+++ b/vendor/github.com/spf13/cobra/command.go
@@ -11,8 +11,8 @@
// See the License for the specific language governing permissions and
// limitations under the License.
-//Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces.
-//In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code.
+// Package cobra is a commander providing a simple interface to create powerful modern CLI interfaces.
+// In addition to providing an interface, Cobra simultaneously provides a controller to organize your application code.
package cobra
import (
@@ -28,107 +28,170 @@ import (
)
// Command is just that, a command for your application.
-// eg. 'go run' ... 'run' is the command. Cobra requires
+// E.g. 'go run ...' - 'run' is the command. Cobra requires
// you to define the usage and description as part of your command
// definition to ensure usability.
type Command struct {
- // Name is the command name, usually the executable's name.
- name string
- // The one-line usage message.
+ // Use is the one-line usage message.
Use string
- // An array of aliases that can be used instead of the first word in Use.
+
+ // Aliases is an array of aliases that can be used instead of the first word in Use.
Aliases []string
- // An array of command names for which this command will be suggested - similar to aliases but only suggests.
+
+ // SuggestFor is an array of command names for which this command will be suggested -
+ // similar to aliases but only suggests.
SuggestFor []string
- // The short description shown in the 'help' output.
+
+ // Short is the short description shown in the 'help' output.
Short string
- // The long message shown in the 'help ' output.
+
+ // Long is the long message shown in the 'help ' output.
Long string
- // Examples of how to use the command
+
+ // Example is examples of how to use the command.
Example string
- // List of all valid non-flag arguments that are accepted in bash completions
+
+ // ValidArgs is list of all valid non-flag arguments that are accepted in bash completions
ValidArgs []string
- // List of aliases for ValidArgs. These are not suggested to the user in the bash
- // completion, but accepted if entered manually.
+
+ // Expected arguments
+ Args PositionalArgs
+
+ // ArgAliases is List of aliases for ValidArgs.
+ // These are not suggested to the user in the bash completion,
+ // but accepted if entered manually.
ArgAliases []string
- // Custom functions used by the bash autocompletion generator
+
+ // BashCompletionFunction is custom functions used by the bash autocompletion generator.
BashCompletionFunction string
- // Is this command deprecated and should print this string when used?
+
+ // Deprecated defines, if this command is deprecated and should print this string when used.
Deprecated string
- // Is this command hidden and should NOT show up in the list of available commands?
+
+ // Hidden defines, if this command is hidden and should NOT show up in the list of available commands.
Hidden bool
- // Full set of flags
- flags *flag.FlagSet
- // Set of flags childrens of this command will inherit
- pflags *flag.FlagSet
- // Flags that are declared specifically by this command (not inherited).
- lflags *flag.FlagSet
- // SilenceErrors is an option to quiet errors down stream
- SilenceErrors bool
- // Silence Usage is an option to silence usage when an error occurs.
- SilenceUsage bool
+
+ // Annotations are key/value pairs that can be used by applications to identify or
+ // group commands.
+ Annotations map[string]string
+
+ // Version defines the version for this command. If this value is non-empty and the command does not
+ // define a "version" flag, a "version" boolean flag will be added to the command and, if specified,
+ // will print content of the "Version" variable.
+ Version string
+
// The *Run functions are executed in the following order:
// * PersistentPreRun()
// * PreRun()
// * Run()
// * PostRun()
// * PersistentPostRun()
- // All functions get the same args, the arguments after the command name
- // PersistentPreRun: children of this command will inherit and execute
+ // All functions get the same args, the arguments after the command name.
+ //
+ // PersistentPreRun: children of this command will inherit and execute.
PersistentPreRun func(cmd *Command, args []string)
- // PersistentPreRunE: PersistentPreRun but returns an error
+ // PersistentPreRunE: PersistentPreRun but returns an error.
PersistentPreRunE func(cmd *Command, args []string) error
// PreRun: children of this command will not inherit.
PreRun func(cmd *Command, args []string)
- // PreRunE: PreRun but returns an error
+ // PreRunE: PreRun but returns an error.
PreRunE func(cmd *Command, args []string) error
- // Run: Typically the actual work function. Most commands will only implement this
+ // Run: Typically the actual work function. Most commands will only implement this.
Run func(cmd *Command, args []string)
- // RunE: Run but returns an error
+ // RunE: Run but returns an error.
RunE func(cmd *Command, args []string) error
// PostRun: run after the Run command.
PostRun func(cmd *Command, args []string)
- // PostRunE: PostRun but returns an error
+ // PostRunE: PostRun but returns an error.
PostRunE func(cmd *Command, args []string) error
- // PersistentPostRun: children of this command will inherit and execute after PostRun
+ // PersistentPostRun: children of this command will inherit and execute after PostRun.
PersistentPostRun func(cmd *Command, args []string)
- // PersistentPostRunE: PersistentPostRun but returns an error
+ // PersistentPostRunE: PersistentPostRun but returns an error.
PersistentPostRunE func(cmd *Command, args []string) error
- // DisableAutoGenTag remove
+
+ // SilenceErrors is an option to quiet errors down stream.
+ SilenceErrors bool
+
+ // SilenceUsage is an option to silence usage when an error occurs.
+ SilenceUsage bool
+
+ // DisableFlagParsing disables the flag parsing.
+ // If this is true all flags will be passed to the command as arguments.
+ DisableFlagParsing bool
+
+ // DisableAutoGenTag defines, if gen tag ("Auto generated by spf13/cobra...")
+ // will be printed by generating docs for this command.
DisableAutoGenTag bool
- // Commands is the list of commands supported by this program.
+
+ // DisableFlagsInUseLine will disable the addition of [flags] to the usage
+ // line of a command when printing help or generating docs
+ DisableFlagsInUseLine bool
+
+ // DisableSuggestions disables the suggestions based on Levenshtein distance
+ // that go along with 'unknown command' messages.
+ DisableSuggestions bool
+ // SuggestionsMinimumDistance defines minimum levenshtein distance to display suggestions.
+ // Must be > 0.
+ SuggestionsMinimumDistance int
+
+ // TraverseChildren parses flags on all parents before executing child command.
+ TraverseChildren bool
+
+ // commands is the list of commands supported by this program.
commands []*Command
- // Parent Command for this command
+ // parent is a parent command for this command.
parent *Command
- // max lengths of commands' string lengths for use in padding
+ // Max lengths of commands' string lengths for use in padding.
commandsMaxUseLen int
commandsMaxCommandPathLen int
commandsMaxNameLen int
- // is commands slice are sorted or not
+ // commandsAreSorted defines, if command slice are sorted or not.
commandsAreSorted bool
+ // commandCalledAs is the name or alias value used to call this command.
+ commandCalledAs struct {
+ name string
+ called bool
+ }
+ // args is actual args parsed from flags.
+ args []string
+ // flagErrorBuf contains all error messages from pflag.
flagErrorBuf *bytes.Buffer
-
- args []string // actual args parsed from flags
- output *io.Writer // out writer if set in SetOutput(w)
- usageFunc func(*Command) error // Usage can be defined by application
- usageTemplate string // Can be defined by Application
- helpTemplate string // Can be defined by Application
- helpFunc func(*Command, []string) // Help can be defined by application
- helpCommand *Command // The help command
- // The global normalization function that we can use on every pFlag set and children commands
+ // flags is full set of flags.
+ flags *flag.FlagSet
+ // pflags contains persistent flags.
+ pflags *flag.FlagSet
+ // lflags contains local flags.
+ lflags *flag.FlagSet
+ // iflags contains inherited flags.
+ iflags *flag.FlagSet
+ // parentsPflags is all persistent flags of cmd's parents.
+ parentsPflags *flag.FlagSet
+ // globNormFunc is the global normalization function
+ // that we can use on every pflag set and children commands
globNormFunc func(f *flag.FlagSet, name string) flag.NormalizedName
- // Disable the suggestions based on Levenshtein distance that go along with 'unknown command' messages
- DisableSuggestions bool
- // If displaying suggestions, allows to set the minimum levenshtein distance to display, must be > 0
- SuggestionsMinimumDistance int
-
- // Disable the flag parsing. If this is true all flags will be passed to the command as arguments.
- DisableFlagParsing bool
-}
-
-// os.Args[1:] by default, if desired, can be overridden
+ // output is an output writer defined by user.
+ output io.Writer
+ // usageFunc is usage func defined by user.
+ usageFunc func(*Command) error
+ // usageTemplate is usage template defined by user.
+ usageTemplate string
+ // flagErrorFunc is func defined by user and it's called when the parsing of
+ // flags returns an error.
+ flagErrorFunc func(*Command, error) error
+ // helpTemplate is help template defined by user.
+ helpTemplate string
+ // helpFunc is help func defined by user.
+ helpFunc func(*Command, []string)
+ // helpCommand is command with usage 'help'. If it's not defined by user,
+ // cobra uses default help command.
+ helpCommand *Command
+ // versionTemplate is the version template defined by user.
+ versionTemplate string
+}
+
+// SetArgs sets arguments for the command. It is set to os.Args[1:] by default, if desired, can be overridden
// particularly useful when testing.
func (c *Command) SetArgs(a []string) {
c.args = a
@@ -137,33 +200,45 @@ func (c *Command) SetArgs(a []string) {
// SetOutput sets the destination for usage and error messages.
// If output is nil, os.Stderr is used.
func (c *Command) SetOutput(output io.Writer) {
- c.output = &output
+ c.output = output
}
-// Usage can be defined by application
+// SetUsageFunc sets usage function. Usage can be defined by application.
func (c *Command) SetUsageFunc(f func(*Command) error) {
c.usageFunc = f
}
-// Can be defined by Application
+// SetUsageTemplate sets usage template. Can be defined by Application.
func (c *Command) SetUsageTemplate(s string) {
c.usageTemplate = s
}
-// Can be defined by Application
+// SetFlagErrorFunc sets a function to generate an error when flag parsing
+// fails.
+func (c *Command) SetFlagErrorFunc(f func(*Command, error) error) {
+ c.flagErrorFunc = f
+}
+
+// SetHelpFunc sets help function. Can be defined by Application.
func (c *Command) SetHelpFunc(f func(*Command, []string)) {
c.helpFunc = f
}
+// SetHelpCommand sets help command.
func (c *Command) SetHelpCommand(cmd *Command) {
c.helpCommand = cmd
}
-// Can be defined by Application
+// SetHelpTemplate sets help template to be used. Application can use it to set custom template.
func (c *Command) SetHelpTemplate(s string) {
c.helpTemplate = s
}
+// SetVersionTemplate sets version template to be used. Application can use it to set custom template.
+func (c *Command) SetVersionTemplate(s string) {
+ c.versionTemplate = s
+}
+
// SetGlobalNormalizationFunc sets a normalization function to all flag sets and also to child commands.
// The user should not have a cyclic dependency on commands.
func (c *Command) SetGlobalNormalizationFunc(n func(f *flag.FlagSet, name string) flag.NormalizedName) {
@@ -176,17 +251,19 @@ func (c *Command) SetGlobalNormalizationFunc(n func(f *flag.FlagSet, name string
}
}
+// OutOrStdout returns output to stdout.
func (c *Command) OutOrStdout() io.Writer {
return c.getOut(os.Stdout)
}
+// OutOrStderr returns output to stderr
func (c *Command) OutOrStderr() io.Writer {
return c.getOut(os.Stderr)
}
func (c *Command) getOut(def io.Writer) io.Writer {
if c.output != nil {
- return *c.output
+ return c.output
}
if c.HasParent() {
return c.parent.getOut(def)
@@ -195,14 +272,13 @@ func (c *Command) getOut(def io.Writer) io.Writer {
}
// UsageFunc returns either the function set by SetUsageFunc for this command
-// or a parent, or it returns a default usage function
+// or a parent, or it returns a default usage function.
func (c *Command) UsageFunc() (f func(*Command) error) {
if c.usageFunc != nil {
return c.usageFunc
}
-
if c.HasParent() {
- return c.parent.UsageFunc()
+ return c.Parent().UsageFunc()
}
return func(c *Command) error {
c.mergePersistentFlags()
@@ -214,24 +290,23 @@ func (c *Command) UsageFunc() (f func(*Command) error) {
}
}
-// Output the usage for the command
-// Used when a user provides invalid input
-// Can be defined by user by overriding UsageFunc
+// Usage puts out the usage for the command.
+// Used when a user provides invalid input.
+// Can be defined by user by overriding UsageFunc.
func (c *Command) Usage() error {
return c.UsageFunc()(c)
}
// HelpFunc returns either the function set by SetHelpFunc for this command
-// or a parent, or it returns a function with default help behavior
+// or a parent, or it returns a function with default help behavior.
func (c *Command) HelpFunc() func(*Command, []string) {
- cmd := c
- for cmd != nil {
- if cmd.helpFunc != nil {
- return cmd.helpFunc
- }
- cmd = cmd.parent
+ if c.helpFunc != nil {
+ return c.helpFunc
+ }
+ if c.HasParent() {
+ return c.Parent().HelpFunc()
}
- return func(*Command, []string) {
+ return func(c *Command, a []string) {
c.mergePersistentFlags()
err := tmpl(c.OutOrStdout(), c.HelpTemplate(), c)
if err != nil {
@@ -240,14 +315,15 @@ func (c *Command) HelpFunc() func(*Command, []string) {
}
}
-// Output the help for the command
-// Used when a user calls help [command]
-// Can be defined by user by overriding HelpFunc
+// Help puts out the help for the command.
+// Used when a user calls help [command].
+// Can be defined by user by overriding HelpFunc.
func (c *Command) Help() error {
c.HelpFunc()(c, []string{})
return nil
}
+// UsageString return usage string.
func (c *Command) UsageString() string {
tmpOutput := c.output
bb := new(bytes.Buffer)
@@ -257,8 +333,25 @@ func (c *Command) UsageString() string {
return bb.String()
}
+// FlagErrorFunc returns either the function set by SetFlagErrorFunc for this
+// command or a parent, or it returns a function which returns the original
+// error.
+func (c *Command) FlagErrorFunc() (f func(*Command, error) error) {
+ if c.flagErrorFunc != nil {
+ return c.flagErrorFunc
+ }
+
+ if c.HasParent() {
+ return c.parent.FlagErrorFunc()
+ }
+ return func(c *Command, err error) error {
+ return err
+ }
+}
+
var minUsagePadding = 25
+// UsagePadding return padding for the usage.
func (c *Command) UsagePadding() int {
if c.parent == nil || minUsagePadding > c.parent.commandsMaxUseLen {
return minUsagePadding
@@ -268,7 +361,7 @@ func (c *Command) UsagePadding() int {
var minCommandPathPadding = 11
-//
+// CommandPathPadding return padding for the command path.
func (c *Command) CommandPathPadding() int {
if c.parent == nil || minCommandPathPadding > c.parent.commandsMaxCommandPathLen {
return minCommandPathPadding
@@ -278,6 +371,7 @@ func (c *Command) CommandPathPadding() int {
var minNamePadding = 11
+// NamePadding returns padding for the name.
func (c *Command) NamePadding() int {
if c.parent == nil || minNamePadding > c.parent.commandsMaxNameLen {
return minNamePadding
@@ -285,6 +379,7 @@ func (c *Command) NamePadding() int {
return c.parent.commandsMaxNameLen
}
+// UsageTemplate returns usage template for the command.
func (c *Command) UsageTemplate() string {
if c.usageTemplate != "" {
return c.usageTemplate
@@ -294,32 +389,32 @@ func (c *Command) UsageTemplate() string {
return c.parent.UsageTemplate()
}
return `Usage:{{if .Runnable}}
- {{if .HasAvailableFlags}}{{appendIfNotPresent .UseLine "[flags]"}}{{else}}{{.UseLine}}{{end}}{{end}}{{if .HasAvailableSubCommands}}
- {{ .CommandPath}} [command]{{end}}{{if gt .Aliases 0}}
+ {{.UseLine}}{{end}}{{if .HasAvailableSubCommands}}
+ {{.CommandPath}} [command]{{end}}{{if gt (len .Aliases) 0}}
Aliases:
- {{.NameAndAliases}}
-{{end}}{{if .HasExample}}
+ {{.NameAndAliases}}{{end}}{{if .HasExample}}
Examples:
-{{ .Example }}{{end}}{{ if .HasAvailableSubCommands}}
+{{.Example}}{{end}}{{if .HasAvailableSubCommands}}
-Available Commands:{{range .Commands}}{{if .IsAvailableCommand}}
- {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{ if .HasAvailableLocalFlags}}
+Available Commands:{{range .Commands}}{{if (or .IsAvailableCommand (eq .Name "help"))}}
+ {{rpad .Name .NamePadding }} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableLocalFlags}}
Flags:
-{{.LocalFlags.FlagUsages | trimRightSpace}}{{end}}{{ if .HasAvailableInheritedFlags}}
+{{.LocalFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasAvailableInheritedFlags}}
Global Flags:
-{{.InheritedFlags.FlagUsages | trimRightSpace}}{{end}}{{if .HasHelpSubCommands}}
+{{.InheritedFlags.FlagUsages | trimTrailingWhitespaces}}{{end}}{{if .HasHelpSubCommands}}
-Additional help topics:{{range .Commands}}{{if .IsHelpCommand}}
- {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{ if .HasAvailableSubCommands }}
+Additional help topics:{{range .Commands}}{{if .IsAdditionalHelpTopicCommand}}
+ {{rpad .CommandPath .CommandPathPadding}} {{.Short}}{{end}}{{end}}{{end}}{{if .HasAvailableSubCommands}}
Use "{{.CommandPath}} [command] --help" for more information about a command.{{end}}
`
}
+// HelpTemplate return help template for the command.
func (c *Command) HelpTemplate() string {
if c.helpTemplate != "" {
return c.helpTemplate
@@ -328,72 +423,73 @@ func (c *Command) HelpTemplate() string {
if c.HasParent() {
return c.parent.HelpTemplate()
}
- return `{{with or .Long .Short }}{{. | trim}}
+ return `{{with (or .Long .Short)}}{{. | trimTrailingWhitespaces}}
{{end}}{{if or .Runnable .HasSubCommands}}{{.UsageString}}{{end}}`
}
-// Really only used when casting a command to a commander
-func (c *Command) resetChildrensParents() {
- for _, x := range c.commands {
- x.parent = c
+// VersionTemplate return version template for the command.
+func (c *Command) VersionTemplate() string {
+ if c.versionTemplate != "" {
+ return c.versionTemplate
}
+
+ if c.HasParent() {
+ return c.parent.VersionTemplate()
+ }
+ return `{{with .Name}}{{printf "%s " .}}{{end}}{{printf "version %s" .Version}}
+`
}
-// Test if the named flag is a boolean flag.
-func isBooleanFlag(name string, f *flag.FlagSet) bool {
- flag := f.Lookup(name)
+func hasNoOptDefVal(name string, fs *flag.FlagSet) bool {
+ flag := fs.Lookup(name)
if flag == nil {
return false
}
- return flag.Value.Type() == "bool"
+ return flag.NoOptDefVal != ""
}
-// Test if the named flag is a boolean flag.
-func isBooleanShortFlag(name string, f *flag.FlagSet) bool {
- result := false
- f.VisitAll(func(f *flag.Flag) {
- if f.Shorthand == name && f.Value.Type() == "bool" {
- result = true
- }
- })
- return result
+func shortHasNoOptDefVal(name string, fs *flag.FlagSet) bool {
+ if len(name) == 0 {
+ return false
+ }
+
+ flag := fs.ShorthandLookup(name[:1])
+ if flag == nil {
+ return false
+ }
+ return flag.NoOptDefVal != ""
}
func stripFlags(args []string, c *Command) []string {
- if len(args) < 1 {
+ if len(args) == 0 {
return args
}
c.mergePersistentFlags()
commands := []string{}
-
- inQuote := false
- inFlag := false
- for _, y := range args {
- if !inQuote {
- switch {
- case strings.HasPrefix(y, "\""):
- inQuote = true
- case strings.Contains(y, "=\""):
- inQuote = true
- case strings.HasPrefix(y, "--") && !strings.Contains(y, "="):
- // TODO: this isn't quite right, we should really check ahead for 'true' or 'false'
- inFlag = !isBooleanFlag(y[2:], c.Flags())
- case strings.HasPrefix(y, "-") && !strings.Contains(y, "=") && len(y) == 2 && !isBooleanShortFlag(y[1:], c.Flags()):
- inFlag = true
- case inFlag:
- inFlag = false
- case y == "":
- // strip empty commands, as the go tests expect this to be ok....
- case !strings.HasPrefix(y, "-"):
- commands = append(commands, y)
- inFlag = false
+ flags := c.Flags()
+
+Loop:
+ for len(args) > 0 {
+ s := args[0]
+ args = args[1:]
+ switch {
+ case strings.HasPrefix(s, "--") && !strings.Contains(s, "=") && !hasNoOptDefVal(s[2:], flags):
+ // If '--flag arg' then
+ // delete arg from args.
+ fallthrough // (do the same as below)
+ case strings.HasPrefix(s, "-") && !strings.Contains(s, "=") && len(s) == 2 && !shortHasNoOptDefVal(s[1:], flags):
+ // If '-f arg' then
+ // delete 'arg' from args or break the loop if len(args) <= 1.
+ if len(args) <= 1 {
+ break Loop
+ } else {
+ args = args[1:]
+ continue
}
- }
-
- if strings.HasSuffix(y, "\"") && !strings.HasSuffix(y, "\\\"") {
- inQuote = false
+ case s != "" && !strings.HasPrefix(s, "-"):
+ commands = append(commands, s)
}
}
@@ -414,13 +510,14 @@ func argsMinusFirstX(args []string, x string) []string {
return args
}
-// find the target command given the args and command tree
+func isFlagArg(arg string) bool {
+ return ((len(arg) >= 3 && arg[1] == '-') ||
+ (len(arg) >= 2 && arg[0] == '-' && arg[1] != '-'))
+}
+
+// Find the target command given the args and command tree
// Meant to be run on the highest node. Only searches down.
func (c *Command) Find(args []string) (*Command, []string, error) {
- if c == nil {
- return nil, nil, fmt.Errorf("Called find() on a nil Command")
- }
-
var innerfind func(*Command, []string) (*Command, []string)
innerfind = func(c *Command, innerArgs []string) (*Command, []string) {
@@ -429,59 +526,101 @@ func (c *Command) Find(args []string) (*Command, []string, error) {
return c, innerArgs
}
nextSubCmd := argsWOflags[0]
- matches := make([]*Command, 0)
- for _, cmd := range c.commands {
- if cmd.Name() == nextSubCmd || cmd.HasAlias(nextSubCmd) { // exact name or alias match
- return innerfind(cmd, argsMinusFirstX(innerArgs, nextSubCmd))
- }
- if EnablePrefixMatching {
- if strings.HasPrefix(cmd.Name(), nextSubCmd) { // prefix match
- matches = append(matches, cmd)
- }
- for _, x := range cmd.Aliases {
- if strings.HasPrefix(x, nextSubCmd) {
- matches = append(matches, cmd)
- }
- }
- }
- }
- // only accept a single prefix match - multiple matches would be ambiguous
- if len(matches) == 1 {
- return innerfind(matches[0], argsMinusFirstX(innerArgs, argsWOflags[0]))
+ cmd := c.findNext(nextSubCmd)
+ if cmd != nil {
+ return innerfind(cmd, argsMinusFirstX(innerArgs, nextSubCmd))
}
-
return c, innerArgs
}
commandFound, a := innerfind(c, args)
- argsWOflags := stripFlags(a, commandFound)
+ if commandFound.Args == nil {
+ return commandFound, a, legacyArgs(commandFound, stripFlags(a, commandFound))
+ }
+ return commandFound, a, nil
+}
- // no subcommand, always take args
- if !commandFound.HasSubCommands() {
- return commandFound, a, nil
+func (c *Command) findSuggestions(arg string) string {
+ if c.DisableSuggestions {
+ return ""
}
+ if c.SuggestionsMinimumDistance <= 0 {
+ c.SuggestionsMinimumDistance = 2
+ }
+ suggestionsString := ""
+ if suggestions := c.SuggestionsFor(arg); len(suggestions) > 0 {
+ suggestionsString += "\n\nDid you mean this?\n"
+ for _, s := range suggestions {
+ suggestionsString += fmt.Sprintf("\t%v\n", s)
+ }
+ }
+ return suggestionsString
+}
- // root command with subcommands, do subcommand checking
- if commandFound == c && len(argsWOflags) > 0 {
- suggestionsString := ""
- if !c.DisableSuggestions {
- if c.SuggestionsMinimumDistance <= 0 {
- c.SuggestionsMinimumDistance = 2
- }
- if suggestions := c.SuggestionsFor(argsWOflags[0]); len(suggestions) > 0 {
- suggestionsString += "\n\nDid you mean this?\n"
- for _, s := range suggestions {
- suggestionsString += fmt.Sprintf("\t%v\n", s)
- }
- }
+func (c *Command) findNext(next string) *Command {
+ matches := make([]*Command, 0)
+ for _, cmd := range c.commands {
+ if cmd.Name() == next || cmd.HasAlias(next) {
+ cmd.commandCalledAs.name = next
+ return cmd
+ }
+ if EnablePrefixMatching && cmd.hasNameOrAliasPrefix(next) {
+ matches = append(matches, cmd)
}
- return commandFound, a, fmt.Errorf("unknown command %q for %q%s", argsWOflags[0], commandFound.CommandPath(), suggestionsString)
}
- return commandFound, a, nil
+ if len(matches) == 1 {
+ return matches[0]
+ }
+
+ return nil
+}
+
+// Traverse the command tree to find the command, and parse args for
+// each parent.
+func (c *Command) Traverse(args []string) (*Command, []string, error) {
+ flags := []string{}
+ inFlag := false
+
+ for i, arg := range args {
+ switch {
+ // A long flag with a space separated value
+ case strings.HasPrefix(arg, "--") && !strings.Contains(arg, "="):
+ // TODO: this isn't quite right, we should really check ahead for 'true' or 'false'
+ inFlag = !hasNoOptDefVal(arg[2:], c.Flags())
+ flags = append(flags, arg)
+ continue
+ // A short flag with a space separated value
+ case strings.HasPrefix(arg, "-") && !strings.Contains(arg, "=") && len(arg) == 2 && !shortHasNoOptDefVal(arg[1:], c.Flags()):
+ inFlag = true
+ flags = append(flags, arg)
+ continue
+ // The value for a flag
+ case inFlag:
+ inFlag = false
+ flags = append(flags, arg)
+ continue
+ // A flag without a value, or with an `=` separated value
+ case isFlagArg(arg):
+ flags = append(flags, arg)
+ continue
+ }
+
+ cmd := c.findNext(arg)
+ if cmd == nil {
+ return c, args, nil
+ }
+
+ if err := c.ParseFlags(flags); err != nil {
+ return nil, args, err
+ }
+ return cmd.Traverse(args[i+1:])
+ }
+ return c, args, nil
}
+// SuggestionsFor provides suggestions for the typedName.
func (c *Command) SuggestionsFor(typedName string) []string {
suggestions := []string{}
for _, cmd := range c.commands {
@@ -502,38 +641,24 @@ func (c *Command) SuggestionsFor(typedName string) []string {
return suggestions
}
+// VisitParents visits all parents of the command and invokes fn on each parent.
func (c *Command) VisitParents(fn func(*Command)) {
- var traverse func(*Command) *Command
-
- traverse = func(x *Command) *Command {
- if x != c {
- fn(x)
- }
- if x.HasParent() {
- return traverse(x.parent)
- }
- return x
+ if c.HasParent() {
+ fn(c.Parent())
+ c.Parent().VisitParents(fn)
}
- traverse(c)
}
+// Root finds root command.
func (c *Command) Root() *Command {
- var findRoot func(*Command) *Command
-
- findRoot = func(x *Command) *Command {
- if x.HasParent() {
- return findRoot(x.parent)
- }
- return x
+ if c.HasParent() {
+ return c.Parent().Root()
}
-
- return findRoot(c)
+ return c
}
-// ArgsLenAtDash will return the length of f.Args at the moment when a -- was
-// found during arg parsing. This allows your program to know which args were
-// before the -- and which came after. (Description from
-// https://godoc.org/github.com/spf13/pflag#FlagSet.ArgsLenAtDash).
+// ArgsLenAtDash will return the length of c.Flags().Args at the moment
+// when a -- was found during args parsing.
func (c *Command) ArgsLenAtDash() int {
return c.Flags().ArgsLenAtDash()
}
@@ -547,25 +672,47 @@ func (c *Command) execute(a []string) (err error) {
c.Printf("Command %q is deprecated, %s\n", c.Name(), c.Deprecated)
}
- // initialize help flag as the last point possible to allow for user
+ // initialize help and version flag at the last point possible to allow for user
// overriding
- c.initHelpFlag()
+ c.InitDefaultHelpFlag()
+ c.InitDefaultVersionFlag()
err = c.ParseFlags(a)
if err != nil {
- return err
+ return c.FlagErrorFunc()(c, err)
}
- // If help is called, regardless of other flags, return we want help
+
+ // If help is called, regardless of other flags, return we want help.
// Also say we need help if the command isn't runnable.
helpVal, err := c.Flags().GetBool("help")
if err != nil {
// should be impossible to get here as we always declare a help
- // flag in initHelpFlag()
+ // flag in InitDefaultHelpFlag()
c.Println("\"help\" flag declared as non-bool. Please correct your code")
return err
}
- if helpVal || !c.Runnable() {
+ if helpVal {
+ return flag.ErrHelp
+ }
+
+ // for back-compat, only add version flag behavior if version is defined
+ if c.Version != "" {
+ versionVal, err := c.Flags().GetBool("version")
+ if err != nil {
+ c.Println("\"version\" flag declared as non-bool. Please correct your code")
+ return err
+ }
+ if versionVal {
+ err := tmpl(c.OutOrStdout(), c.VersionTemplate(), c)
+ if err != nil {
+ c.Println(err)
+ }
+ return err
+ }
+ }
+
+ if !c.Runnable() {
return flag.ErrHelp
}
@@ -576,6 +723,10 @@ func (c *Command) execute(a []string) (err error) {
argWoFlags = a
}
+ if err := c.ValidateArgs(argWoFlags); err != nil {
+ return err
+ }
+
for p := c; p != nil; p = p.Parent() {
if p.PersistentPreRunE != nil {
if err := p.PersistentPreRunE(c, argWoFlags); err != nil {
@@ -595,6 +746,9 @@ func (c *Command) execute(a []string) (err error) {
c.PreRun(c, argWoFlags)
}
+ if err := c.validateRequiredFlags(); err != nil {
+ return err
+ }
if c.RunE != nil {
if err := c.RunE(c, argWoFlags); err != nil {
return err
@@ -630,18 +784,7 @@ func (c *Command) preRun() {
}
}
-func (c *Command) errorMsgFromParse() string {
- s := c.flagErrorBuf.String()
-
- x := strings.Split(s, "\n")
-
- if len(x) > 0 {
- return x[0]
- }
- return ""
-}
-
-// Call execute to use the args (os.Args[1:] by default)
+// Execute uses the args (os.Args[1:] by default)
// and run through the command tree finding appropriate matches
// for commands and then corresponding flags.
func (c *Command) Execute() error {
@@ -649,8 +792,8 @@ func (c *Command) Execute() error {
return err
}
+// ExecuteC executes the command.
func (c *Command) ExecuteC() (cmd *Command, err error) {
-
// Regardless of what command execute is called on, run on Root only
if c.HasParent() {
return c.Root().ExecuteC()
@@ -663,7 +806,7 @@ func (c *Command) ExecuteC() (cmd *Command, err error) {
// initialize help as the last point possible to allow for user
// overriding
- c.initHelpCmd()
+ c.InitDefaultHelpCmd()
var args []string
@@ -674,7 +817,12 @@ func (c *Command) ExecuteC() (cmd *Command, err error) {
args = c.args
}
- cmd, flags, err := c.Find(args)
+ var flags []string
+ if c.TraverseChildren {
+ cmd, flags, err = c.Traverse(args)
+ } else {
+ cmd, flags, err = c.Find(args)
+ }
if err != nil {
// If found parse to a subcommand and then failed, talk about the subcommand
if cmd != nil {
@@ -686,6 +834,12 @@ func (c *Command) ExecuteC() (cmd *Command, err error) {
}
return c, err
}
+
+ cmd.commandCalledAs.called = true
+ if cmd.commandCalledAs.name == "" {
+ cmd.commandCalledAs.name = cmd.Name()
+ }
+
err = cmd.execute(flags)
if err != nil {
// Always show help if requested, even if SilenceErrors is in
@@ -706,52 +860,113 @@ func (c *Command) ExecuteC() (cmd *Command, err error) {
if !cmd.SilenceUsage && !c.SilenceUsage {
c.Println(cmd.UsageString())
}
- return cmd, err
}
- return cmd, nil
+ return cmd, err
}
-func (c *Command) initHelpFlag() {
- if c.Flags().Lookup("help") == nil {
- c.Flags().BoolP("help", "h", false, "help for "+c.Name())
+func (c *Command) ValidateArgs(args []string) error {
+ if c.Args == nil {
+ return nil
}
+ return c.Args(c, args)
}
-func (c *Command) initHelpCmd() {
- if c.helpCommand == nil {
- if !c.HasSubCommands() {
+func (c *Command) validateRequiredFlags() error {
+ flags := c.Flags()
+ missingFlagNames := []string{}
+ flags.VisitAll(func(pflag *flag.Flag) {
+ requiredAnnotation, found := pflag.Annotations[BashCompOneRequiredFlag]
+ if !found {
return
}
+ if (requiredAnnotation[0] == "true") && !pflag.Changed {
+ missingFlagNames = append(missingFlagNames, pflag.Name)
+ }
+ })
+
+ if len(missingFlagNames) > 0 {
+ return fmt.Errorf(`required flag(s) "%s" not set`, strings.Join(missingFlagNames, `", "`))
+ }
+ return nil
+}
+
+// InitDefaultHelpFlag adds default help flag to c.
+// It is called automatically by executing the c or by calling help and usage.
+// If c already has help flag, it will do nothing.
+func (c *Command) InitDefaultHelpFlag() {
+ c.mergePersistentFlags()
+ if c.Flags().Lookup("help") == nil {
+ usage := "help for "
+ if c.Name() == "" {
+ usage += "this command"
+ } else {
+ usage += c.Name()
+ }
+ c.Flags().BoolP("help", "h", false, usage)
+ }
+}
+
+// InitDefaultVersionFlag adds default version flag to c.
+// It is called automatically by executing the c.
+// If c already has a version flag, it will do nothing.
+// If c.Version is empty, it will do nothing.
+func (c *Command) InitDefaultVersionFlag() {
+ if c.Version == "" {
+ return
+ }
+
+ c.mergePersistentFlags()
+ if c.Flags().Lookup("version") == nil {
+ usage := "version for "
+ if c.Name() == "" {
+ usage += "this command"
+ } else {
+ usage += c.Name()
+ }
+ c.Flags().Bool("version", false, usage)
+ }
+}
+
+// InitDefaultHelpCmd adds default help command to c.
+// It is called automatically by executing the c or by calling help and usage.
+// If c already has help command or c has no subcommands, it will do nothing.
+func (c *Command) InitDefaultHelpCmd() {
+ if !c.HasSubCommands() {
+ return
+ }
+ if c.helpCommand == nil {
c.helpCommand = &Command{
Use: "help [command]",
Short: "Help about any command",
Long: `Help provides help for any command in the application.
- Simply type ` + c.Name() + ` help [path to command] for full details.`,
- PersistentPreRun: func(cmd *Command, args []string) {},
- PersistentPostRun: func(cmd *Command, args []string) {},
+Simply type ` + c.Name() + ` help [path to command] for full details.`,
Run: func(c *Command, args []string) {
cmd, _, e := c.Root().Find(args)
if cmd == nil || e != nil {
- c.Printf("Unknown help topic %#q.", args)
+ c.Printf("Unknown help topic %#q\n", args)
c.Root().Usage()
} else {
+ cmd.InitDefaultHelpFlag() // make possible 'help' flag to be shown
cmd.Help()
}
},
}
}
+ c.RemoveCommand(c.helpCommand)
c.AddCommand(c.helpCommand)
}
-// Used for testing
+// ResetCommands delete parent, subcommand and help command from c.
func (c *Command) ResetCommands() {
+ c.parent = nil
c.commands = nil
c.helpCommand = nil
+ c.parentsPflags = nil
}
-// Sorts commands by their names
+// Sorts commands by their names.
type commandSorterByName []*Command
func (c commandSorterByName) Len() int { return len(c) }
@@ -831,45 +1046,48 @@ main:
}
}
-// Print is a convenience method to Print to the defined output, fallback to Stderr if not set
+// Print is a convenience method to Print to the defined output, fallback to Stderr if not set.
func (c *Command) Print(i ...interface{}) {
fmt.Fprint(c.OutOrStderr(), i...)
}
-// Println is a convenience method to Println to the defined output, fallback to Stderr if not set
+// Println is a convenience method to Println to the defined output, fallback to Stderr if not set.
func (c *Command) Println(i ...interface{}) {
- str := fmt.Sprintln(i...)
- c.Print(str)
+ c.Print(fmt.Sprintln(i...))
}
-// Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set
+// Printf is a convenience method to Printf to the defined output, fallback to Stderr if not set.
func (c *Command) Printf(format string, i ...interface{}) {
- str := fmt.Sprintf(format, i...)
- c.Print(str)
+ c.Print(fmt.Sprintf(format, i...))
}
// CommandPath returns the full path to this command.
func (c *Command) CommandPath() string {
- str := c.Name()
- x := c
- for x.HasParent() {
- str = x.parent.Name() + " " + str
- x = x.parent
+ if c.HasParent() {
+ return c.Parent().CommandPath() + " " + c.Name()
}
- return str
+ return c.Name()
}
-//The full usage for a given command (including parents)
+// UseLine puts out the full usage for a given command (including parents).
func (c *Command) UseLine() string {
- str := ""
+ var useline string
if c.HasParent() {
- str = c.parent.CommandPath() + " "
+ useline = c.parent.CommandPath() + " " + c.Use
+ } else {
+ useline = c.Use
}
- return str + c.Use
+ if c.DisableFlagsInUseLine {
+ return useline
+ }
+ if c.HasAvailableFlags() && !strings.Contains(useline, "[flags]") {
+ useline += " [flags]"
+ }
+ return useline
}
-// For use in determining which flags have been assigned to which commands
-// and which persist
+// DebugFlags used to determine which flags have been assigned to which commands
+// and which persist.
func (c *Command) DebugFlags() {
c.Println("DebugFlags called on", c.Name())
var debugflags func(*Command)
@@ -880,12 +1098,8 @@ func (c *Command) DebugFlags() {
}
if x.HasFlags() {
x.flags.VisitAll(func(f *flag.Flag) {
- if x.HasPersistentFlags() {
- if x.persistentFlag(f.Name) == nil {
- c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [L]")
- } else {
- c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [LP]")
- }
+ if x.HasPersistentFlags() && x.persistentFlag(f.Name) != nil {
+ c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [LP]")
} else {
c.Println(" -"+f.Shorthand+",", "--"+f.Name, "["+f.DefValue+"]", "", f.Value, " [L]")
}
@@ -915,9 +1129,6 @@ func (c *Command) DebugFlags() {
// Name returns the command's name: the first word in the use line.
func (c *Command) Name() string {
- if c.name != "" {
- return c.name
- }
name := c.Use
i := strings.Index(name, " ")
if i >= 0 {
@@ -936,26 +1147,53 @@ func (c *Command) HasAlias(s string) bool {
return false
}
+// CalledAs returns the command name or alias that was used to invoke
+// this command or an empty string if the command has not been called.
+func (c *Command) CalledAs() string {
+ if c.commandCalledAs.called {
+ return c.commandCalledAs.name
+ }
+ return ""
+}
+
+// hasNameOrAliasPrefix returns true if the Name or any of aliases start
+// with prefix
+func (c *Command) hasNameOrAliasPrefix(prefix string) bool {
+ if strings.HasPrefix(c.Name(), prefix) {
+ c.commandCalledAs.name = c.Name()
+ return true
+ }
+ for _, alias := range c.Aliases {
+ if strings.HasPrefix(alias, prefix) {
+ c.commandCalledAs.name = alias
+ return true
+ }
+ }
+ return false
+}
+
+// NameAndAliases returns a list of the command name and all aliases
func (c *Command) NameAndAliases() string {
return strings.Join(append([]string{c.Name()}, c.Aliases...), ", ")
}
+// HasExample determines if the command has example.
func (c *Command) HasExample() bool {
return len(c.Example) > 0
}
-// Runnable determines if the command is itself runnable
+// Runnable determines if the command is itself runnable.
func (c *Command) Runnable() bool {
return c.Run != nil || c.RunE != nil
}
-// HasSubCommands determines if the command has children commands
+// HasSubCommands determines if the command has children commands.
func (c *Command) HasSubCommands() bool {
return len(c.commands) > 0
}
// IsAvailableCommand determines if a command is available as a non-help command
-// (this includes all non deprecated/hidden commands)
+// (this includes all non deprecated/hidden commands).
func (c *Command) IsAvailableCommand() bool {
if len(c.Deprecated) != 0 || c.Hidden {
return false
@@ -972,11 +1210,12 @@ func (c *Command) IsAvailableCommand() bool {
return false
}
-// IsHelpCommand determines if a command is a 'help' command; a help command is
-// determined by the fact that it is NOT runnable/hidden/deprecated, and has no
-// sub commands that are runnable/hidden/deprecated
-func (c *Command) IsHelpCommand() bool {
-
+// IsAdditionalHelpTopicCommand determines if a command is an additional
+// help topic command; additional help topic command is determined by the
+// fact that it is NOT runnable/hidden/deprecated, and has no sub commands that
+// are runnable/hidden/deprecated.
+// Concrete example: https://github.com/spf13/cobra/issues/393#issuecomment-282741924.
+func (c *Command) IsAdditionalHelpTopicCommand() bool {
// if a command is runnable, deprecated, or hidden it is not a 'help' command
if c.Runnable() || len(c.Deprecated) != 0 || c.Hidden {
return false
@@ -984,7 +1223,7 @@ func (c *Command) IsHelpCommand() bool {
// if any non-help sub commands are found, the command is not a 'help' command
for _, sub := range c.commands {
- if !sub.IsHelpCommand() {
+ if !sub.IsAdditionalHelpTopicCommand() {
return false
}
}
@@ -993,14 +1232,13 @@ func (c *Command) IsHelpCommand() bool {
return true
}
-// HasHelpSubCommands determines if a command has any avilable 'help' sub commands
+// HasHelpSubCommands determines if a command has any available 'help' sub commands
// that need to be shown in the usage/help default template under 'additional help
-// topics'
+// topics'.
func (c *Command) HasHelpSubCommands() bool {
-
// return true on the first found available 'help' sub command
for _, sub := range c.commands {
- if sub.IsHelpCommand() {
+ if sub.IsAdditionalHelpTopicCommand() {
return true
}
}
@@ -1010,9 +1248,8 @@ func (c *Command) HasHelpSubCommands() bool {
}
// HasAvailableSubCommands determines if a command has available sub commands that
-// need to be shown in the usage/help default template under 'available commands'
+// need to be shown in the usage/help default template under 'available commands'.
func (c *Command) HasAvailableSubCommands() bool {
-
// return true on the first found available (non deprecated/help/hidden)
// sub command
for _, sub := range c.commands {
@@ -1021,22 +1258,23 @@ func (c *Command) HasAvailableSubCommands() bool {
}
}
- // the command either has no sub comamnds, or no available (non deprecated/help/hidden)
+ // the command either has no sub commands, or no available (non deprecated/help/hidden)
// sub commands
return false
}
-// Determine if the command is a child command
+// HasParent determines if the command is a child command.
func (c *Command) HasParent() bool {
return c.parent != nil
}
-// GlobalNormalizationFunc returns the global normalization function or nil if doesn't exists
+// GlobalNormalizationFunc returns the global normalization function or nil if it doesn't exist.
func (c *Command) GlobalNormalizationFunc() func(f *flag.FlagSet, name string) flag.NormalizedName {
return c.globNormFunc
}
-// Get the complete FlagSet that applies to this command (local and persistent declared here and by all parents)
+// Flags returns the complete FlagSet that applies
+// to this command (local and persistent declared here and by all parents).
func (c *Command) Flags() *flag.FlagSet {
if c.flags == nil {
c.flags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
@@ -1045,10 +1283,11 @@ func (c *Command) Flags() *flag.FlagSet {
}
c.flags.SetOutput(c.flagErrorBuf)
}
+
return c.flags
}
-// LocalNonPersistentFlags are flags specific to this command which will NOT persist to subcommands
+// LocalNonPersistentFlags are flags specific to this command which will NOT persist to subcommands.
func (c *Command) LocalNonPersistentFlags() *flag.FlagSet {
persistentFlags := c.PersistentFlags()
@@ -1061,59 +1300,63 @@ func (c *Command) LocalNonPersistentFlags() *flag.FlagSet {
return out
}
-// Get the local FlagSet specifically set in the current command
+// LocalFlags returns the local FlagSet specifically set in the current command.
func (c *Command) LocalFlags() *flag.FlagSet {
c.mergePersistentFlags()
- local := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
- c.lflags.VisitAll(func(f *flag.Flag) {
- local.AddFlag(f)
- })
- if !c.HasParent() {
- flag.CommandLine.VisitAll(func(f *flag.Flag) {
- if local.Lookup(f.Name) == nil {
- local.AddFlag(f)
- }
- })
+ if c.lflags == nil {
+ c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
+ if c.flagErrorBuf == nil {
+ c.flagErrorBuf = new(bytes.Buffer)
+ }
+ c.lflags.SetOutput(c.flagErrorBuf)
}
- return local
+ c.lflags.SortFlags = c.Flags().SortFlags
+ if c.globNormFunc != nil {
+ c.lflags.SetNormalizeFunc(c.globNormFunc)
+ }
+
+ addToLocal := func(f *flag.Flag) {
+ if c.lflags.Lookup(f.Name) == nil && c.parentsPflags.Lookup(f.Name) == nil {
+ c.lflags.AddFlag(f)
+ }
+ }
+ c.Flags().VisitAll(addToLocal)
+ c.PersistentFlags().VisitAll(addToLocal)
+ return c.lflags
}
-// All Flags which were inherited from parents commands
+// InheritedFlags returns all flags which were inherited from parents commands.
func (c *Command) InheritedFlags() *flag.FlagSet {
c.mergePersistentFlags()
- inherited := flag.NewFlagSet(c.Name(), flag.ContinueOnError)
- local := c.LocalFlags()
-
- var rmerge func(x *Command)
-
- rmerge = func(x *Command) {
- if x.HasPersistentFlags() {
- x.PersistentFlags().VisitAll(func(f *flag.Flag) {
- if inherited.Lookup(f.Name) == nil && local.Lookup(f.Name) == nil {
- inherited.AddFlag(f)
- }
- })
- }
- if x.HasParent() {
- rmerge(x.parent)
+ if c.iflags == nil {
+ c.iflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
+ if c.flagErrorBuf == nil {
+ c.flagErrorBuf = new(bytes.Buffer)
}
+ c.iflags.SetOutput(c.flagErrorBuf)
}
- if c.HasParent() {
- rmerge(c.parent)
+ local := c.LocalFlags()
+ if c.globNormFunc != nil {
+ c.iflags.SetNormalizeFunc(c.globNormFunc)
}
- return inherited
+ c.parentsPflags.VisitAll(func(f *flag.Flag) {
+ if c.iflags.Lookup(f.Name) == nil && local.Lookup(f.Name) == nil {
+ c.iflags.AddFlag(f)
+ }
+ })
+ return c.iflags
}
-// All Flags which were not inherited from parent commands
+// NonInheritedFlags returns all flags which were not inherited from parent commands.
func (c *Command) NonInheritedFlags() *flag.FlagSet {
return c.LocalFlags()
}
-// Get the Persistent FlagSet specifically set in the current command
+// PersistentFlags returns the persistent FlagSet specifically set in the current command.
func (c *Command) PersistentFlags() *flag.FlagSet {
if c.pflags == nil {
c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
@@ -1125,7 +1368,7 @@ func (c *Command) PersistentFlags() *flag.FlagSet {
return c.pflags
}
-// For use in testing
+// ResetFlags deletes all flags from command.
func (c *Command) ResetFlags() {
c.flagErrorBuf = new(bytes.Buffer)
c.flagErrorBuf.Reset()
@@ -1133,52 +1376,56 @@ func (c *Command) ResetFlags() {
c.flags.SetOutput(c.flagErrorBuf)
c.pflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
c.pflags.SetOutput(c.flagErrorBuf)
+
+ c.lflags = nil
+ c.iflags = nil
+ c.parentsPflags = nil
}
-// Does the command contain any flags (local plus persistent from the entire structure)
+// HasFlags checks if the command contains any flags (local plus persistent from the entire structure).
func (c *Command) HasFlags() bool {
return c.Flags().HasFlags()
}
-// Does the command contain persistent flags
+// HasPersistentFlags checks if the command contains persistent flags.
func (c *Command) HasPersistentFlags() bool {
return c.PersistentFlags().HasFlags()
}
-// Does the command has flags specifically declared locally
+// HasLocalFlags checks if the command has flags specifically declared locally.
func (c *Command) HasLocalFlags() bool {
return c.LocalFlags().HasFlags()
}
-// Does the command have flags inherited from its parent command
+// HasInheritedFlags checks if the command has flags inherited from its parent command.
func (c *Command) HasInheritedFlags() bool {
return c.InheritedFlags().HasFlags()
}
-// Does the command contain any flags (local plus persistent from the entire
-// structure) which are not hidden or deprecated
+// HasAvailableFlags checks if the command contains any flags (local plus persistent from the entire
+// structure) which are not hidden or deprecated.
func (c *Command) HasAvailableFlags() bool {
return c.Flags().HasAvailableFlags()
}
-// Does the command contain persistent flags which are not hidden or deprecated
+// HasAvailablePersistentFlags checks if the command contains persistent flags which are not hidden or deprecated.
func (c *Command) HasAvailablePersistentFlags() bool {
return c.PersistentFlags().HasAvailableFlags()
}
-// Does the command has flags specifically declared locally which are not hidden
-// or deprecated
+// HasAvailableLocalFlags checks if the command has flags specifically declared locally which are not hidden
+// or deprecated.
func (c *Command) HasAvailableLocalFlags() bool {
return c.LocalFlags().HasAvailableFlags()
}
-// Does the command have flags inherited from its parent command which are
-// not hidden or deprecated
+// HasAvailableInheritedFlags checks if the command has flags inherited from its parent command which are
+// not hidden or deprecated.
func (c *Command) HasAvailableInheritedFlags() bool {
return c.InheritedFlags().HasAvailableFlags()
}
-// Flag climbs up the command tree looking for matching flag
+// Flag climbs up the command tree looking for matching flag.
func (c *Command) Flag(name string) (flag *flag.Flag) {
flag = c.Flags().Lookup(name)
@@ -1189,68 +1436,69 @@ func (c *Command) Flag(name string) (flag *flag.Flag) {
return
}
-// recursively find matching persistent flag
+// Recursively find matching persistent flag.
func (c *Command) persistentFlag(name string) (flag *flag.Flag) {
if c.HasPersistentFlags() {
flag = c.PersistentFlags().Lookup(name)
}
- if flag == nil && c.HasParent() {
- flag = c.parent.persistentFlag(name)
+ if flag == nil {
+ c.updateParentsPflags()
+ flag = c.parentsPflags.Lookup(name)
}
return
}
-// ParseFlags parses persistent flag tree & local flags
-func (c *Command) ParseFlags(args []string) (err error) {
+// ParseFlags parses persistent flag tree and local flags.
+func (c *Command) ParseFlags(args []string) error {
if c.DisableFlagParsing {
return nil
}
+
+ if c.flagErrorBuf == nil {
+ c.flagErrorBuf = new(bytes.Buffer)
+ }
+ beforeErrorBufLen := c.flagErrorBuf.Len()
c.mergePersistentFlags()
- err = c.Flags().Parse(args)
- return
+ err := c.Flags().Parse(args)
+ // Print warnings if they occurred (e.g. deprecated flag messages).
+ if c.flagErrorBuf.Len()-beforeErrorBufLen > 0 && err == nil {
+ c.Print(c.flagErrorBuf.String())
+ }
+
+ return err
}
-// Parent returns a commands parent command
+// Parent returns a commands parent command.
func (c *Command) Parent() *Command {
return c.parent
}
+// mergePersistentFlags merges c.PersistentFlags() to c.Flags()
+// and adds missing persistent flags of all parents.
func (c *Command) mergePersistentFlags() {
- var rmerge func(x *Command)
+ c.updateParentsPflags()
+ c.Flags().AddFlagSet(c.PersistentFlags())
+ c.Flags().AddFlagSet(c.parentsPflags)
+}
- // Save the set of local flags
- if c.lflags == nil {
- c.lflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
- if c.flagErrorBuf == nil {
- c.flagErrorBuf = new(bytes.Buffer)
- }
- c.lflags.SetOutput(c.flagErrorBuf)
- addtolocal := func(f *flag.Flag) {
- c.lflags.AddFlag(f)
- }
- c.Flags().VisitAll(addtolocal)
- c.PersistentFlags().VisitAll(addtolocal)
- }
- rmerge = func(x *Command) {
- if !x.HasParent() {
- flag.CommandLine.VisitAll(func(f *flag.Flag) {
- if x.PersistentFlags().Lookup(f.Name) == nil {
- x.PersistentFlags().AddFlag(f)
- }
- })
- }
- if x.HasPersistentFlags() {
- x.PersistentFlags().VisitAll(func(f *flag.Flag) {
- if c.Flags().Lookup(f.Name) == nil {
- c.Flags().AddFlag(f)
- }
- })
- }
- if x.HasParent() {
- rmerge(x.parent)
- }
+// updateParentsPflags updates c.parentsPflags by adding
+// new persistent flags of all parents.
+// If c.parentsPflags == nil, it makes new.
+func (c *Command) updateParentsPflags() {
+ if c.parentsPflags == nil {
+ c.parentsPflags = flag.NewFlagSet(c.Name(), flag.ContinueOnError)
+ c.parentsPflags.SetOutput(c.flagErrorBuf)
+ c.parentsPflags.SortFlags = false
}
- rmerge(c)
+ if c.globNormFunc != nil {
+ c.parentsPflags.SetNormalizeFunc(c.globNormFunc)
+ }
+
+ c.Root().PersistentFlags().AddFlagSet(flag.CommandLine)
+
+ c.VisitParents(func(parent *Command) {
+ c.parentsPflags.AddFlagSet(parent.PersistentFlags())
+ })
}
diff --git a/vendor/github.com/spf13/cobra/command_win.go b/vendor/github.com/spf13/cobra/command_win.go
index 4b0eaa1b6bc7..edec728e4f5a 100644
--- a/vendor/github.com/spf13/cobra/command_win.go
+++ b/vendor/github.com/spf13/cobra/command_win.go
@@ -11,14 +11,8 @@ import (
var preExecHookFn = preExecHook
-// enables an information splash screen on Windows if the CLI is started from explorer.exe.
-var MousetrapHelpText string = `This is a command line tool
-
-You need to open cmd.exe and run it from there.
-`
-
func preExecHook(c *Command) {
- if mousetrap.StartedByExplorer() {
+ if MousetrapHelpText != "" && mousetrap.StartedByExplorer() {
c.Print(MousetrapHelpText)
time.Sleep(5 * time.Second)
os.Exit(1)
diff --git a/vendor/github.com/spf13/cobra/doc/man_docs.go b/vendor/github.com/spf13/cobra/doc/man_docs.go
index b202029d1e0c..ce92332dd178 100644
--- a/vendor/github.com/spf13/cobra/doc/man_docs.go
+++ b/vendor/github.com/spf13/cobra/doc/man_docs.go
@@ -23,21 +23,21 @@ import (
"strings"
"time"
- mangen "github.com/cpuguy83/go-md2man/md2man"
+ "github.com/cpuguy83/go-md2man/md2man"
"github.com/spf13/cobra"
"github.com/spf13/pflag"
)
// GenManTree will generate a man page for this command and all descendants
// in the directory given. The header may be nil. This function may not work
-// correctly if your command names have - in them. If you have `cmd` with two
-// subcmds, `sub` and `sub-third`. And `sub` has a subcommand called `third`
+// correctly if your command names have `-` in them. If you have `cmd` with two
+// subcmds, `sub` and `sub-third`, and `sub` has a subcommand called `third`
// it is undefined which help output will be in the file `cmd-sub-third.1`.
func GenManTree(cmd *cobra.Command, header *GenManHeader, dir string) error {
return GenManTreeFromOpts(cmd, GenManTreeOptions{
Header: header,
Path: dir,
- CommandSeparator: "_",
+ CommandSeparator: "-",
})
}
@@ -49,7 +49,7 @@ func GenManTreeFromOpts(cmd *cobra.Command, opts GenManTreeOptions) error {
header = &GenManHeader{}
}
for _, c := range cmd.Commands() {
- if !c.IsAvailableCommand() || c.IsHelpCommand() {
+ if !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {
continue
}
if err := GenManTreeFromOpts(c, opts); err != nil {
@@ -66,7 +66,7 @@ func GenManTreeFromOpts(cmd *cobra.Command, opts GenManTreeOptions) error {
separator = opts.CommandSeparator
}
basename := strings.Replace(cmd.CommandPath(), " ", separator, -1)
- filename := filepath.Join(opts.Path, basename + "." + section)
+ filename := filepath.Join(opts.Path, basename+"."+section)
f, err := os.Create(filename)
if err != nil {
return err
@@ -77,6 +77,8 @@ func GenManTreeFromOpts(cmd *cobra.Command, opts GenManTreeOptions) error {
return GenMan(cmd, &headerCopy, f)
}
+// GenManTreeOptions is the options for generating the man pages.
+// Used only in GenManTreeFromOpts.
type GenManTreeOptions struct {
Header *GenManHeader
Path string
@@ -105,7 +107,7 @@ func GenMan(cmd *cobra.Command, header *GenManHeader, w io.Writer) error {
fillHeader(header, cmd.CommandPath())
b := genMan(cmd, header)
- _, err := w.Write(mangen.Render(b))
+ _, err := w.Write(md2man.Render(b))
return err
}
@@ -126,25 +128,25 @@ func fillHeader(header *GenManHeader, name string) {
}
}
-func manPreamble(out io.Writer, header *GenManHeader, cmd *cobra.Command, dashedName string) {
+func manPreamble(buf *bytes.Buffer, header *GenManHeader, cmd *cobra.Command, dashedName string) {
description := cmd.Long
if len(description) == 0 {
description = cmd.Short
}
- fmt.Fprintf(out, `%% %s(%s)%s
+ buf.WriteString(fmt.Sprintf(`%% %s(%s)%s
%% %s
%% %s
# NAME
-`, header.Title, header.Section, header.date, header.Source, header.Manual)
- fmt.Fprintf(out, "%s \\- %s\n\n", dashedName, cmd.Short)
- fmt.Fprintf(out, "# SYNOPSIS\n")
- fmt.Fprintf(out, "**%s**\n\n", cmd.UseLine())
- fmt.Fprintf(out, "# DESCRIPTION\n")
- fmt.Fprintf(out, "%s\n\n", description)
+`, header.Title, header.Section, header.date, header.Source, header.Manual))
+ buf.WriteString(fmt.Sprintf("%s \\- %s\n\n", dashedName, cmd.Short))
+ buf.WriteString("# SYNOPSIS\n")
+ buf.WriteString(fmt.Sprintf("**%s**\n\n", cmd.UseLine()))
+ buf.WriteString("# DESCRIPTION\n")
+ buf.WriteString(description + "\n\n")
}
-func manPrintFlags(out io.Writer, flags *pflag.FlagSet) {
+func manPrintFlags(buf *bytes.Buffer, flags *pflag.FlagSet) {
flags.VisitAll(func(flag *pflag.Flag) {
if len(flag.Deprecated) > 0 || flag.Hidden {
return
@@ -156,38 +158,41 @@ func manPrintFlags(out io.Writer, flags *pflag.FlagSet) {
format = fmt.Sprintf("**--%s**", flag.Name)
}
if len(flag.NoOptDefVal) > 0 {
- format = format + "["
+ format += "["
}
if flag.Value.Type() == "string" {
// put quotes on the value
- format = format + "=%q"
+ format += "=%q"
} else {
- format = format + "=%s"
+ format += "=%s"
}
if len(flag.NoOptDefVal) > 0 {
- format = format + "]"
+ format += "]"
}
- format = format + "\n\t%s\n\n"
- fmt.Fprintf(out, format, flag.DefValue, flag.Usage)
+ format += "\n\t%s\n\n"
+ buf.WriteString(fmt.Sprintf(format, flag.DefValue, flag.Usage))
})
}
-func manPrintOptions(out io.Writer, command *cobra.Command) {
+func manPrintOptions(buf *bytes.Buffer, command *cobra.Command) {
flags := command.NonInheritedFlags()
if flags.HasFlags() {
- fmt.Fprintf(out, "# OPTIONS\n")
- manPrintFlags(out, flags)
- fmt.Fprintf(out, "\n")
+ buf.WriteString("# OPTIONS\n")
+ manPrintFlags(buf, flags)
+ buf.WriteString("\n")
}
flags = command.InheritedFlags()
if flags.HasFlags() {
- fmt.Fprintf(out, "# OPTIONS INHERITED FROM PARENT COMMANDS\n")
- manPrintFlags(out, flags)
- fmt.Fprintf(out, "\n")
+ buf.WriteString("# OPTIONS INHERITED FROM PARENT COMMANDS\n")
+ manPrintFlags(buf, flags)
+ buf.WriteString("\n")
}
}
func genMan(cmd *cobra.Command, header *GenManHeader) []byte {
+ cmd.InitDefaultHelpCmd()
+ cmd.InitDefaultHelpFlag()
+
// something like `rootcmd-subcmd1-subcmd2`
dashCommandName := strings.Replace(cmd.CommandPath(), " ", "-", -1)
@@ -196,11 +201,11 @@ func genMan(cmd *cobra.Command, header *GenManHeader) []byte {
manPreamble(buf, header, cmd, dashCommandName)
manPrintOptions(buf, cmd)
if len(cmd.Example) > 0 {
- fmt.Fprintf(buf, "# EXAMPLE\n")
- fmt.Fprintf(buf, "```\n%s\n```\n", cmd.Example)
+ buf.WriteString("# EXAMPLE\n")
+ buf.WriteString(fmt.Sprintf("```\n%s\n```\n", cmd.Example))
}
if hasSeeAlso(cmd) {
- fmt.Fprintf(buf, "# SEE ALSO\n")
+ buf.WriteString("# SEE ALSO\n")
seealsos := make([]string, 0)
if cmd.HasParent() {
parentPath := cmd.Parent().CommandPath()
@@ -216,16 +221,16 @@ func genMan(cmd *cobra.Command, header *GenManHeader) []byte {
children := cmd.Commands()
sort.Sort(byName(children))
for _, c := range children {
- if !c.IsAvailableCommand() || c.IsHelpCommand() {
+ if !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {
continue
}
seealso := fmt.Sprintf("**%s-%s(%s)**", dashCommandName, c.Name(), header.Section)
seealsos = append(seealsos, seealso)
}
- fmt.Fprintf(buf, "%s\n", strings.Join(seealsos, ", "))
+ buf.WriteString(strings.Join(seealsos, ", ") + "\n")
}
if !cmd.DisableAutoGenTag {
- fmt.Fprintf(buf, "# HISTORY\n%s Auto generated by spf13/cobra\n", header.Date.Format("2-Jan-2006"))
+ buf.WriteString(fmt.Sprintf("# HISTORY\n%s Auto generated by spf13/cobra\n", header.Date.Format("2-Jan-2006")))
}
return buf.Bytes()
}
diff --git a/vendor/github.com/spf13/cobra/doc/man_docs.md b/vendor/github.com/spf13/cobra/doc/man_docs.md
index 5fe957a35587..3709160f34f0 100644
--- a/vendor/github.com/spf13/cobra/doc/man_docs.md
+++ b/vendor/github.com/spf13/cobra/doc/man_docs.md
@@ -6,6 +6,8 @@ Generating man pages from a cobra command is incredibly easy. An example is as f
package main
import (
+ "log"
+
"github.com/spf13/cobra"
"github.com/spf13/cobra/doc"
)
@@ -15,12 +17,15 @@ func main() {
Use: "test",
Short: "my test program",
}
- header := &cobra.GenManHeader{
+ header := &doc.GenManHeader{
Title: "MINE",
Section: "3",
}
- doc.GenManTree(cmd, header, "/tmp")
+ err := doc.GenManTree(cmd, header, "/tmp")
+ if err != nil {
+ log.Fatal(err)
+ }
}
```
-That will get you a man page `/tmp/test.1`
+That will get you a man page `/tmp/test.3`
diff --git a/vendor/github.com/spf13/cobra/doc/md_docs.go b/vendor/github.com/spf13/cobra/doc/md_docs.go
index fa1363180490..d7a2c2b62991 100644
--- a/vendor/github.com/spf13/cobra/doc/md_docs.go
+++ b/vendor/github.com/spf13/cobra/doc/md_docs.go
@@ -14,6 +14,7 @@
package doc
import (
+ "bytes"
"fmt"
"io"
"os"
@@ -25,38 +26,36 @@ import (
"github.com/spf13/cobra"
)
-func printOptions(w io.Writer, cmd *cobra.Command, name string) error {
+func printOptions(buf *bytes.Buffer, cmd *cobra.Command, name string) error {
flags := cmd.NonInheritedFlags()
- flags.SetOutput(w)
+ flags.SetOutput(buf)
if flags.HasFlags() {
- if _, err := fmt.Fprintf(w, "### Options\n\n```\n"); err != nil {
- return err
- }
+ buf.WriteString("### Options\n\n```\n")
flags.PrintDefaults()
- if _, err := fmt.Fprintf(w, "```\n\n"); err != nil {
- return err
- }
+ buf.WriteString("```\n\n")
}
parentFlags := cmd.InheritedFlags()
- parentFlags.SetOutput(w)
+ parentFlags.SetOutput(buf)
if parentFlags.HasFlags() {
- if _, err := fmt.Fprintf(w, "### Options inherited from parent commands\n\n```\n"); err != nil {
- return err
- }
+ buf.WriteString("### Options inherited from parent commands\n\n```\n")
parentFlags.PrintDefaults()
- if _, err := fmt.Fprintf(w, "```\n\n"); err != nil {
- return err
- }
+ buf.WriteString("```\n\n")
}
return nil
}
+// GenMarkdown creates markdown output.
func GenMarkdown(cmd *cobra.Command, w io.Writer) error {
return GenMarkdownCustom(cmd, w, func(s string) string { return s })
}
+// GenMarkdownCustom creates custom markdown output.
func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error {
+ cmd.InitDefaultHelpCmd()
+ cmd.InitDefaultHelpFlag()
+
+ buf := new(bytes.Buffer)
name := cmd.CommandPath()
short := cmd.Short
@@ -65,49 +64,31 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string)
long = short
}
- if _, err := fmt.Fprintf(w, "## %s\n\n", name); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, "%s\n\n", short); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, "### Synopsis\n\n"); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, "\n%s\n\n", long); err != nil {
- return err
- }
+ buf.WriteString("## " + name + "\n\n")
+ buf.WriteString(short + "\n\n")
+ buf.WriteString("### Synopsis\n\n")
+ buf.WriteString(long + "\n\n")
if cmd.Runnable() {
- if _, err := fmt.Fprintf(w, "```\n%s\n```\n\n", cmd.UseLine()); err != nil {
- return err
- }
+ buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.UseLine()))
}
if len(cmd.Example) > 0 {
- if _, err := fmt.Fprintf(w, "### Examples\n\n"); err != nil {
- return err
- }
- if _, err := fmt.Fprintf(w, "```\n%s\n```\n\n", cmd.Example); err != nil {
- return err
- }
+ buf.WriteString("### Examples\n\n")
+ buf.WriteString(fmt.Sprintf("```\n%s\n```\n\n", cmd.Example))
}
- if err := printOptions(w, cmd, name); err != nil {
+ if err := printOptions(buf, cmd, name); err != nil {
return err
}
if hasSeeAlso(cmd) {
- if _, err := fmt.Fprintf(w, "### SEE ALSO\n"); err != nil {
- return err
- }
+ buf.WriteString("### SEE ALSO\n\n")
if cmd.HasParent() {
parent := cmd.Parent()
pname := parent.CommandPath()
link := pname + ".md"
link = strings.Replace(link, " ", "_", -1)
- if _, err := fmt.Fprintf(w, "* [%s](%s)\t - %s\n", pname, linkHandler(link), parent.Short); err != nil {
- return err
- }
+ buf.WriteString(fmt.Sprintf("* [%s](%s)\t - %s\n", pname, linkHandler(link), parent.Short))
cmd.VisitParents(func(c *cobra.Command) {
if c.DisableAutoGenTag {
cmd.DisableAutoGenTag = c.DisableAutoGenTag
@@ -119,37 +100,40 @@ func GenMarkdownCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string)
sort.Sort(byName(children))
for _, child := range children {
- if !child.IsAvailableCommand() || child.IsHelpCommand() {
+ if !child.IsAvailableCommand() || child.IsAdditionalHelpTopicCommand() {
continue
}
cname := name + " " + child.Name()
link := cname + ".md"
link = strings.Replace(link, " ", "_", -1)
- if _, err := fmt.Fprintf(w, "* [%s](%s)\t - %s\n", cname, linkHandler(link), child.Short); err != nil {
- return err
- }
- }
- if _, err := fmt.Fprintf(w, "\n"); err != nil {
- return err
+ buf.WriteString(fmt.Sprintf("* [%s](%s)\t - %s\n", cname, linkHandler(link), child.Short))
}
+ buf.WriteString("\n")
}
if !cmd.DisableAutoGenTag {
- if _, err := fmt.Fprintf(w, "###### Auto generated by spf13/cobra on %s\n", time.Now().Format("2-Jan-2006")); err != nil {
- return err
- }
+ buf.WriteString("###### Auto generated by spf13/cobra on " + time.Now().Format("2-Jan-2006") + "\n")
}
- return nil
+ _, err := buf.WriteTo(w)
+ return err
}
+// GenMarkdownTree will generate a markdown page for this command and all
+// descendants in the directory given. The header may be nil.
+// This function may not work correctly if your command names have `-` in them.
+// If you have `cmd` with two subcmds, `sub` and `sub-third`,
+// and `sub` has a subcommand called `third`, it is undefined which
+// help output will be in the file `cmd-sub-third.1`.
func GenMarkdownTree(cmd *cobra.Command, dir string) error {
identity := func(s string) string { return s }
emptyStr := func(s string) string { return "" }
return GenMarkdownTreeCustom(cmd, dir, emptyStr, identity)
}
+// GenMarkdownTreeCustom is the the same as GenMarkdownTree, but
+// with custom filePrepender and linkHandler.
func GenMarkdownTreeCustom(cmd *cobra.Command, dir string, filePrepender, linkHandler func(string) string) error {
for _, c := range cmd.Commands() {
- if !c.IsAvailableCommand() || c.IsHelpCommand() {
+ if !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {
continue
}
if err := GenMarkdownTreeCustom(c, dir, filePrepender, linkHandler); err != nil {
diff --git a/vendor/github.com/spf13/cobra/doc/md_docs.md b/vendor/github.com/spf13/cobra/doc/md_docs.md
index 0c3b96e27186..56ce9fe819e3 100644
--- a/vendor/github.com/spf13/cobra/doc/md_docs.md
+++ b/vendor/github.com/spf13/cobra/doc/md_docs.md
@@ -6,6 +6,8 @@ Generating man pages from a cobra command is incredibly easy. An example is as f
package main
import (
+ "log"
+
"github.com/spf13/cobra"
"github.com/spf13/cobra/doc"
)
@@ -15,7 +17,10 @@ func main() {
Use: "test",
Short: "my test program",
}
- doc.GenMarkdownTree(cmd, "/tmp")
+ err := doc.GenMarkdownTree(cmd, "/tmp")
+ if err != nil {
+ log.Fatal(err)
+ }
}
```
@@ -29,18 +34,22 @@ This program can actually generate docs for the kubectl command in the kubernete
package main
import (
+ "log"
"io/ioutil"
"os"
- kubectlcmd "k8s.io/kubernetes/pkg/kubectl/cmd"
+ "k8s.io/kubernetes/pkg/kubectl/cmd"
cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
"github.com/spf13/cobra/doc"
)
func main() {
- cmd := kubectlcmd.NewKubectlCommand(cmdutil.NewFactory(nil), os.Stdin, ioutil.Discard, ioutil.Discard)
- doc.GenMarkdownTree(cmd, "./")
+ kubectl := cmd.NewKubectlCommand(cmdutil.NewFactory(nil), os.Stdin, ioutil.Discard, ioutil.Discard)
+ err := doc.GenMarkdownTree(kubectl, "./")
+ if err != nil {
+ log.Fatal(err)
+ }
}
```
@@ -52,7 +61,10 @@ You may wish to have more control over the output, or only generate for a single
```go
out := new(bytes.Buffer)
- doc.GenMarkdown(cmd, out)
+ err := doc.GenMarkdown(cmd, out)
+ if err != nil {
+ log.Fatal(err)
+ }
```
This will write the markdown doc for ONLY "cmd" into the out, buffer.
@@ -101,4 +113,3 @@ linkHandler := func(name string) string {
return "/commands/" + strings.ToLower(base) + "/"
}
```
-
diff --git a/vendor/github.com/spf13/cobra/doc/rest_docs.go b/vendor/github.com/spf13/cobra/doc/rest_docs.go
new file mode 100644
index 000000000000..4913e3ee2ea2
--- /dev/null
+++ b/vendor/github.com/spf13/cobra/doc/rest_docs.go
@@ -0,0 +1,185 @@
+//Copyright 2015 Red Hat Inc. All rights reserved.
+//
+// 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 doc
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "os"
+ "path/filepath"
+ "sort"
+ "strings"
+ "time"
+
+ "github.com/spf13/cobra"
+)
+
+func printOptionsReST(buf *bytes.Buffer, cmd *cobra.Command, name string) error {
+ flags := cmd.NonInheritedFlags()
+ flags.SetOutput(buf)
+ if flags.HasFlags() {
+ buf.WriteString("Options\n")
+ buf.WriteString("~~~~~~~\n\n::\n\n")
+ flags.PrintDefaults()
+ buf.WriteString("\n")
+ }
+
+ parentFlags := cmd.InheritedFlags()
+ parentFlags.SetOutput(buf)
+ if parentFlags.HasFlags() {
+ buf.WriteString("Options inherited from parent commands\n")
+ buf.WriteString("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\n::\n\n")
+ parentFlags.PrintDefaults()
+ buf.WriteString("\n")
+ }
+ return nil
+}
+
+// linkHandler for default ReST hyperlink markup
+func defaultLinkHandler(name, ref string) string {
+ return fmt.Sprintf("`%s <%s.rst>`_", name, ref)
+}
+
+// GenReST creates reStructured Text output.
+func GenReST(cmd *cobra.Command, w io.Writer) error {
+ return GenReSTCustom(cmd, w, defaultLinkHandler)
+}
+
+// GenReSTCustom creates custom reStructured Text output.
+func GenReSTCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string, string) string) error {
+ cmd.InitDefaultHelpCmd()
+ cmd.InitDefaultHelpFlag()
+
+ buf := new(bytes.Buffer)
+ name := cmd.CommandPath()
+
+ short := cmd.Short
+ long := cmd.Long
+ if len(long) == 0 {
+ long = short
+ }
+ ref := strings.Replace(name, " ", "_", -1)
+
+ buf.WriteString(".. _" + ref + ":\n\n")
+ buf.WriteString(name + "\n")
+ buf.WriteString(strings.Repeat("-", len(name)) + "\n\n")
+ buf.WriteString(short + "\n\n")
+ buf.WriteString("Synopsis\n")
+ buf.WriteString("~~~~~~~~\n\n")
+ buf.WriteString("\n" + long + "\n\n")
+
+ if cmd.Runnable() {
+ buf.WriteString(fmt.Sprintf("::\n\n %s\n\n", cmd.UseLine()))
+ }
+
+ if len(cmd.Example) > 0 {
+ buf.WriteString("Examples\n")
+ buf.WriteString("~~~~~~~~\n\n")
+ buf.WriteString(fmt.Sprintf("::\n\n%s\n\n", indentString(cmd.Example, " ")))
+ }
+
+ if err := printOptionsReST(buf, cmd, name); err != nil {
+ return err
+ }
+ if hasSeeAlso(cmd) {
+ buf.WriteString("SEE ALSO\n")
+ buf.WriteString("~~~~~~~~\n\n")
+ if cmd.HasParent() {
+ parent := cmd.Parent()
+ pname := parent.CommandPath()
+ ref = strings.Replace(pname, " ", "_", -1)
+ buf.WriteString(fmt.Sprintf("* %s \t - %s\n", linkHandler(pname, ref), parent.Short))
+ cmd.VisitParents(func(c *cobra.Command) {
+ if c.DisableAutoGenTag {
+ cmd.DisableAutoGenTag = c.DisableAutoGenTag
+ }
+ })
+ }
+
+ children := cmd.Commands()
+ sort.Sort(byName(children))
+
+ for _, child := range children {
+ if !child.IsAvailableCommand() || child.IsAdditionalHelpTopicCommand() {
+ continue
+ }
+ cname := name + " " + child.Name()
+ ref = strings.Replace(cname, " ", "_", -1)
+ buf.WriteString(fmt.Sprintf("* %s \t - %s\n", linkHandler(cname, ref), child.Short))
+ }
+ buf.WriteString("\n")
+ }
+ if !cmd.DisableAutoGenTag {
+ buf.WriteString("*Auto generated by spf13/cobra on " + time.Now().Format("2-Jan-2006") + "*\n")
+ }
+ _, err := buf.WriteTo(w)
+ return err
+}
+
+// GenReSTTree will generate a ReST page for this command and all
+// descendants in the directory given.
+// This function may not work correctly if your command names have `-` in them.
+// If you have `cmd` with two subcmds, `sub` and `sub-third`,
+// and `sub` has a subcommand called `third`, it is undefined which
+// help output will be in the file `cmd-sub-third.1`.
+func GenReSTTree(cmd *cobra.Command, dir string) error {
+ emptyStr := func(s string) string { return "" }
+ return GenReSTTreeCustom(cmd, dir, emptyStr, defaultLinkHandler)
+}
+
+// GenReSTTreeCustom is the the same as GenReSTTree, but
+// with custom filePrepender and linkHandler.
+func GenReSTTreeCustom(cmd *cobra.Command, dir string, filePrepender func(string) string, linkHandler func(string, string) string) error {
+ for _, c := range cmd.Commands() {
+ if !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {
+ continue
+ }
+ if err := GenReSTTreeCustom(c, dir, filePrepender, linkHandler); err != nil {
+ return err
+ }
+ }
+
+ basename := strings.Replace(cmd.CommandPath(), " ", "_", -1) + ".rst"
+ filename := filepath.Join(dir, basename)
+ f, err := os.Create(filename)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+
+ if _, err := io.WriteString(f, filePrepender(filename)); err != nil {
+ return err
+ }
+ if err := GenReSTCustom(cmd, f, linkHandler); err != nil {
+ return err
+ }
+ return nil
+}
+
+// adapted from: https://github.com/kr/text/blob/main/indent.go
+func indentString(s, p string) string {
+ var res []byte
+ b := []byte(s)
+ prefix := []byte(p)
+ bol := true
+ for _, c := range b {
+ if bol && c != '\n' {
+ res = append(res, prefix...)
+ }
+ res = append(res, c)
+ bol = c == '\n'
+ }
+ return string(res)
+}
diff --git a/vendor/github.com/spf13/cobra/doc/rest_docs.md b/vendor/github.com/spf13/cobra/doc/rest_docs.md
new file mode 100644
index 000000000000..6098430eff67
--- /dev/null
+++ b/vendor/github.com/spf13/cobra/doc/rest_docs.md
@@ -0,0 +1,114 @@
+# Generating ReStructured Text Docs For Your Own cobra.Command
+
+Generating ReST pages from a cobra command is incredibly easy. An example is as follows:
+
+```go
+package main
+
+import (
+ "log"
+
+ "github.com/spf13/cobra"
+ "github.com/spf13/cobra/doc"
+)
+
+func main() {
+ cmd := &cobra.Command{
+ Use: "test",
+ Short: "my test program",
+ }
+ err := doc.GenReSTTree(cmd, "/tmp")
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+```
+
+That will get you a ReST document `/tmp/test.rst`
+
+## Generate ReST docs for the entire command tree
+
+This program can actually generate docs for the kubectl command in the kubernetes project
+
+```go
+package main
+
+import (
+ "log"
+ "io/ioutil"
+ "os"
+
+ "k8s.io/kubernetes/pkg/kubectl/cmd"
+ cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
+
+ "github.com/spf13/cobra/doc"
+)
+
+func main() {
+ kubectl := cmd.NewKubectlCommand(cmdutil.NewFactory(nil), os.Stdin, ioutil.Discard, ioutil.Discard)
+ err := doc.GenReSTTree(kubectl, "./")
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+```
+
+This will generate a whole series of files, one for each command in the tree, in the directory specified (in this case "./")
+
+## Generate ReST docs for a single command
+
+You may wish to have more control over the output, or only generate for a single command, instead of the entire command tree. If this is the case you may prefer to `GenReST` instead of `GenReSTTree`
+
+```go
+ out := new(bytes.Buffer)
+ err := doc.GenReST(cmd, out)
+ if err != nil {
+ log.Fatal(err)
+ }
+```
+
+This will write the ReST doc for ONLY "cmd" into the out, buffer.
+
+## Customize the output
+
+Both `GenReST` and `GenReSTTree` have alternate versions with callbacks to get some control of the output:
+
+```go
+func GenReSTTreeCustom(cmd *Command, dir string, filePrepender func(string) string, linkHandler func(string, string) string) error {
+ //...
+}
+```
+
+```go
+func GenReSTCustom(cmd *Command, out *bytes.Buffer, linkHandler func(string, string) string) error {
+ //...
+}
+```
+
+The `filePrepender` will prepend the return value given the full filepath to the rendered ReST file. A common use case is to add front matter to use the generated documentation with [Hugo](http://gohugo.io/):
+
+```go
+const fmTemplate = `---
+date: %s
+title: "%s"
+slug: %s
+url: %s
+---
+`
+filePrepender := func(filename string) string {
+ now := time.Now().Format(time.RFC3339)
+ name := filepath.Base(filename)
+ base := strings.TrimSuffix(name, path.Ext(name))
+ url := "/commands/" + strings.ToLower(base) + "/"
+ return fmt.Sprintf(fmTemplate, now, strings.Replace(base, "_", " ", -1), base, url)
+}
+```
+
+The `linkHandler` can be used to customize the rendered links to the commands, given a command name and reference. This is useful while converting rst to html or while generating documentation with tools like Sphinx where `:ref:` is used:
+
+```go
+// Sphinx cross-referencing format
+linkHandler := func(name, ref string) string {
+ return fmt.Sprintf(":ref:`%s <%s>`", name, ref)
+}
+```
diff --git a/vendor/github.com/spf13/cobra/doc/util.go b/vendor/github.com/spf13/cobra/doc/util.go
index a1c6b89ba6cb..8d3dbecec829 100644
--- a/vendor/github.com/spf13/cobra/doc/util.go
+++ b/vendor/github.com/spf13/cobra/doc/util.go
@@ -13,7 +13,11 @@
package doc
-import "github.com/spf13/cobra"
+import (
+ "strings"
+
+ "github.com/spf13/cobra"
+)
// Test to see if we have a reason to print See Also information in docs
// Basically this is a test for a parent commend or a subcommand which is
@@ -23,7 +27,7 @@ func hasSeeAlso(cmd *cobra.Command) bool {
return true
}
for _, c := range cmd.Commands() {
- if !c.IsAvailableCommand() || c.IsHelpCommand() {
+ if !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {
continue
}
return true
@@ -31,6 +35,15 @@ func hasSeeAlso(cmd *cobra.Command) bool {
return false
}
+// Temporary workaround for yaml lib generating incorrect yaml with long strings
+// that do not contain \n.
+func forceMultiLine(s string) string {
+ if len(s) > 60 && !strings.Contains(s, "\n") {
+ s = s + "\n"
+ }
+ return s
+}
+
type byName []*cobra.Command
func (s byName) Len() int { return len(s) }
diff --git a/vendor/github.com/spf13/cobra/doc/yaml_docs.go b/vendor/github.com/spf13/cobra/doc/yaml_docs.go
new file mode 100644
index 000000000000..ea00af07e817
--- /dev/null
+++ b/vendor/github.com/spf13/cobra/doc/yaml_docs.go
@@ -0,0 +1,169 @@
+// Copyright 2016 French Ben. All rights reserved.
+//
+// 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 doc
+
+import (
+ "fmt"
+ "io"
+ "os"
+ "path/filepath"
+ "sort"
+ "strings"
+
+ "github.com/spf13/cobra"
+ "github.com/spf13/pflag"
+ "gopkg.in/yaml.v2"
+)
+
+type cmdOption struct {
+ Name string
+ Shorthand string `yaml:",omitempty"`
+ DefaultValue string `yaml:"default_value,omitempty"`
+ Usage string `yaml:",omitempty"`
+}
+
+type cmdDoc struct {
+ Name string
+ Synopsis string `yaml:",omitempty"`
+ Description string `yaml:",omitempty"`
+ Options []cmdOption `yaml:",omitempty"`
+ InheritedOptions []cmdOption `yaml:"inherited_options,omitempty"`
+ Example string `yaml:",omitempty"`
+ SeeAlso []string `yaml:"see_also,omitempty"`
+}
+
+// GenYamlTree creates yaml structured ref files for this command and all descendants
+// in the directory given. This function may not work
+// correctly if your command names have `-` in them. If you have `cmd` with two
+// subcmds, `sub` and `sub-third`, and `sub` has a subcommand called `third`
+// it is undefined which help output will be in the file `cmd-sub-third.1`.
+func GenYamlTree(cmd *cobra.Command, dir string) error {
+ identity := func(s string) string { return s }
+ emptyStr := func(s string) string { return "" }
+ return GenYamlTreeCustom(cmd, dir, emptyStr, identity)
+}
+
+// GenYamlTreeCustom creates yaml structured ref files.
+func GenYamlTreeCustom(cmd *cobra.Command, dir string, filePrepender, linkHandler func(string) string) error {
+ for _, c := range cmd.Commands() {
+ if !c.IsAvailableCommand() || c.IsAdditionalHelpTopicCommand() {
+ continue
+ }
+ if err := GenYamlTreeCustom(c, dir, filePrepender, linkHandler); err != nil {
+ return err
+ }
+ }
+
+ basename := strings.Replace(cmd.CommandPath(), " ", "_", -1) + ".yaml"
+ filename := filepath.Join(dir, basename)
+ f, err := os.Create(filename)
+ if err != nil {
+ return err
+ }
+ defer f.Close()
+
+ if _, err := io.WriteString(f, filePrepender(filename)); err != nil {
+ return err
+ }
+ if err := GenYamlCustom(cmd, f, linkHandler); err != nil {
+ return err
+ }
+ return nil
+}
+
+// GenYaml creates yaml output.
+func GenYaml(cmd *cobra.Command, w io.Writer) error {
+ return GenYamlCustom(cmd, w, func(s string) string { return s })
+}
+
+// GenYamlCustom creates custom yaml output.
+func GenYamlCustom(cmd *cobra.Command, w io.Writer, linkHandler func(string) string) error {
+ cmd.InitDefaultHelpCmd()
+ cmd.InitDefaultHelpFlag()
+
+ yamlDoc := cmdDoc{}
+ yamlDoc.Name = cmd.CommandPath()
+
+ yamlDoc.Synopsis = forceMultiLine(cmd.Short)
+ yamlDoc.Description = forceMultiLine(cmd.Long)
+
+ if len(cmd.Example) > 0 {
+ yamlDoc.Example = cmd.Example
+ }
+
+ flags := cmd.NonInheritedFlags()
+ if flags.HasFlags() {
+ yamlDoc.Options = genFlagResult(flags)
+ }
+ flags = cmd.InheritedFlags()
+ if flags.HasFlags() {
+ yamlDoc.InheritedOptions = genFlagResult(flags)
+ }
+
+ if hasSeeAlso(cmd) {
+ result := []string{}
+ if cmd.HasParent() {
+ parent := cmd.Parent()
+ result = append(result, parent.CommandPath()+" - "+parent.Short)
+ }
+ children := cmd.Commands()
+ sort.Sort(byName(children))
+ for _, child := range children {
+ if !child.IsAvailableCommand() || child.IsAdditionalHelpTopicCommand() {
+ continue
+ }
+ result = append(result, child.Name()+" - "+child.Short)
+ }
+ yamlDoc.SeeAlso = result
+ }
+
+ final, err := yaml.Marshal(&yamlDoc)
+ if err != nil {
+ fmt.Println(err)
+ os.Exit(1)
+ }
+
+ if _, err := w.Write(final); err != nil {
+ return err
+ }
+ return nil
+}
+
+func genFlagResult(flags *pflag.FlagSet) []cmdOption {
+ var result []cmdOption
+
+ flags.VisitAll(func(flag *pflag.Flag) {
+ // Todo, when we mark a shorthand is deprecated, but specify an empty message.
+ // The flag.ShorthandDeprecated is empty as the shorthand is deprecated.
+ // Using len(flag.ShorthandDeprecated) > 0 can't handle this, others are ok.
+ if !(len(flag.ShorthandDeprecated) > 0) && len(flag.Shorthand) > 0 {
+ opt := cmdOption{
+ flag.Name,
+ flag.Shorthand,
+ flag.DefValue,
+ forceMultiLine(flag.Usage),
+ }
+ result = append(result, opt)
+ } else {
+ opt := cmdOption{
+ Name: flag.Name,
+ DefaultValue: forceMultiLine(flag.DefValue),
+ Usage: forceMultiLine(flag.Usage),
+ }
+ result = append(result, opt)
+ }
+ })
+
+ return result
+}
diff --git a/vendor/github.com/spf13/cobra/doc/yaml_docs.md b/vendor/github.com/spf13/cobra/doc/yaml_docs.md
new file mode 100644
index 000000000000..1a9b7c6a3c9d
--- /dev/null
+++ b/vendor/github.com/spf13/cobra/doc/yaml_docs.md
@@ -0,0 +1,112 @@
+# Generating Yaml Docs For Your Own cobra.Command
+
+Generating yaml files from a cobra command is incredibly easy. An example is as follows:
+
+```go
+package main
+
+import (
+ "log"
+
+ "github.com/spf13/cobra"
+ "github.com/spf13/cobra/doc"
+)
+
+func main() {
+ cmd := &cobra.Command{
+ Use: "test",
+ Short: "my test program",
+ }
+ err := doc.GenYamlTree(cmd, "/tmp")
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+```
+
+That will get you a Yaml document `/tmp/test.yaml`
+
+## Generate yaml docs for the entire command tree
+
+This program can actually generate docs for the kubectl command in the kubernetes project
+
+```go
+package main
+
+import (
+ "io/ioutil"
+ "log"
+ "os"
+
+ "k8s.io/kubernetes/pkg/kubectl/cmd"
+ cmdutil "k8s.io/kubernetes/pkg/kubectl/cmd/util"
+
+ "github.com/spf13/cobra/doc"
+)
+
+func main() {
+ kubectl := cmd.NewKubectlCommand(cmdutil.NewFactory(nil), os.Stdin, ioutil.Discard, ioutil.Discard)
+ err := doc.GenYamlTree(kubectl, "./")
+ if err != nil {
+ log.Fatal(err)
+ }
+}
+```
+
+This will generate a whole series of files, one for each command in the tree, in the directory specified (in this case "./")
+
+## Generate yaml docs for a single command
+
+You may wish to have more control over the output, or only generate for a single command, instead of the entire command tree. If this is the case you may prefer to `GenYaml` instead of `GenYamlTree`
+
+```go
+ out := new(bytes.Buffer)
+ doc.GenYaml(cmd, out)
+```
+
+This will write the yaml doc for ONLY "cmd" into the out, buffer.
+
+## Customize the output
+
+Both `GenYaml` and `GenYamlTree` have alternate versions with callbacks to get some control of the output:
+
+```go
+func GenYamlTreeCustom(cmd *Command, dir string, filePrepender, linkHandler func(string) string) error {
+ //...
+}
+```
+
+```go
+func GenYamlCustom(cmd *Command, out *bytes.Buffer, linkHandler func(string) string) error {
+ //...
+}
+```
+
+The `filePrepender` will prepend the return value given the full filepath to the rendered Yaml file. A common use case is to add front matter to use the generated documentation with [Hugo](http://gohugo.io/):
+
+```go
+const fmTemplate = `---
+date: %s
+title: "%s"
+slug: %s
+url: %s
+---
+`
+
+filePrepender := func(filename string) string {
+ now := time.Now().Format(time.RFC3339)
+ name := filepath.Base(filename)
+ base := strings.TrimSuffix(name, path.Ext(name))
+ url := "/commands/" + strings.ToLower(base) + "/"
+ return fmt.Sprintf(fmTemplate, now, strings.Replace(base, "_", " ", -1), base, url)
+}
+```
+
+The `linkHandler` can be used to customize the rendered internal links to the commands, given a filename:
+
+```go
+linkHandler := func(name string) string {
+ base := strings.TrimSuffix(name, path.Ext(name))
+ return "/commands/" + strings.ToLower(base) + "/"
+}
+```
diff --git a/vendor/github.com/spf13/cobra/zsh_completions.go b/vendor/github.com/spf13/cobra/zsh_completions.go
new file mode 100644
index 000000000000..889c22e273c4
--- /dev/null
+++ b/vendor/github.com/spf13/cobra/zsh_completions.go
@@ -0,0 +1,126 @@
+package cobra
+
+import (
+ "bytes"
+ "fmt"
+ "io"
+ "os"
+ "strings"
+)
+
+// GenZshCompletionFile generates zsh completion file.
+func (c *Command) GenZshCompletionFile(filename string) error {
+ outFile, err := os.Create(filename)
+ if err != nil {
+ return err
+ }
+ defer outFile.Close()
+
+ return c.GenZshCompletion(outFile)
+}
+
+// GenZshCompletion generates a zsh completion file and writes to the passed writer.
+func (c *Command) GenZshCompletion(w io.Writer) error {
+ buf := new(bytes.Buffer)
+
+ writeHeader(buf, c)
+ maxDepth := maxDepth(c)
+ writeLevelMapping(buf, maxDepth)
+ writeLevelCases(buf, maxDepth, c)
+
+ _, err := buf.WriteTo(w)
+ return err
+}
+
+func writeHeader(w io.Writer, cmd *Command) {
+ fmt.Fprintf(w, "#compdef %s\n\n", cmd.Name())
+}
+
+func maxDepth(c *Command) int {
+ if len(c.Commands()) == 0 {
+ return 0
+ }
+ maxDepthSub := 0
+ for _, s := range c.Commands() {
+ subDepth := maxDepth(s)
+ if subDepth > maxDepthSub {
+ maxDepthSub = subDepth
+ }
+ }
+ return 1 + maxDepthSub
+}
+
+func writeLevelMapping(w io.Writer, numLevels int) {
+ fmt.Fprintln(w, `_arguments \`)
+ for i := 1; i <= numLevels; i++ {
+ fmt.Fprintf(w, ` '%d: :->level%d' \`, i, i)
+ fmt.Fprintln(w)
+ }
+ fmt.Fprintf(w, ` '%d: :%s'`, numLevels+1, "_files")
+ fmt.Fprintln(w)
+}
+
+func writeLevelCases(w io.Writer, maxDepth int, root *Command) {
+ fmt.Fprintln(w, "case $state in")
+ defer fmt.Fprintln(w, "esac")
+
+ for i := 1; i <= maxDepth; i++ {
+ fmt.Fprintf(w, " level%d)\n", i)
+ writeLevel(w, root, i)
+ fmt.Fprintln(w, " ;;")
+ }
+ fmt.Fprintln(w, " *)")
+ fmt.Fprintln(w, " _arguments '*: :_files'")
+ fmt.Fprintln(w, " ;;")
+}
+
+func writeLevel(w io.Writer, root *Command, i int) {
+ fmt.Fprintf(w, " case $words[%d] in\n", i)
+ defer fmt.Fprintln(w, " esac")
+
+ commands := filterByLevel(root, i)
+ byParent := groupByParent(commands)
+
+ for p, c := range byParent {
+ names := names(c)
+ fmt.Fprintf(w, " %s)\n", p)
+ fmt.Fprintf(w, " _arguments '%d: :(%s)'\n", i, strings.Join(names, " "))
+ fmt.Fprintln(w, " ;;")
+ }
+ fmt.Fprintln(w, " *)")
+ fmt.Fprintln(w, " _arguments '*: :_files'")
+ fmt.Fprintln(w, " ;;")
+
+}
+
+func filterByLevel(c *Command, l int) []*Command {
+ cs := make([]*Command, 0)
+ if l == 0 {
+ cs = append(cs, c)
+ return cs
+ }
+ for _, s := range c.Commands() {
+ cs = append(cs, filterByLevel(s, l-1)...)
+ }
+ return cs
+}
+
+func groupByParent(commands []*Command) map[string][]*Command {
+ m := make(map[string][]*Command)
+ for _, c := range commands {
+ parent := c.Parent()
+ if parent == nil {
+ continue
+ }
+ m[parent.Name()] = append(m[parent.Name()], c)
+ }
+ return m
+}
+
+func names(commands []*Command) []string {
+ ns := make([]string, len(commands))
+ for i, c := range commands {
+ ns[i] = c.Name()
+ }
+ return ns
+}
diff --git a/vendor/github.com/spf13/pflag/.travis.yml b/vendor/github.com/spf13/pflag/.travis.yml
index 707bdc39a7f1..f8a63b308ba5 100644
--- a/vendor/github.com/spf13/pflag/.travis.yml
+++ b/vendor/github.com/spf13/pflag/.travis.yml
@@ -3,18 +3,19 @@ sudo: false
language: go
go:
- - 1.6.3
- - 1.7.3
- - tip
+ - 1.7.3
+ - 1.8.1
+ - tip
matrix:
- allow_failures:
- - go: tip
+ allow_failures:
+ - go: tip
+
install:
- - go get github.com/golang/lint/golint
- - export PATH=$GOPATH/bin:$PATH
- - go install ./...
+ - go get github.com/golang/lint/golint
+ - export PATH=$GOPATH/bin:$PATH
+ - go install ./...
script:
- - verify/all.sh -v
- - go test ./...
+ - verify/all.sh -v
+ - go test ./...
diff --git a/vendor/github.com/spf13/pflag/README.md b/vendor/github.com/spf13/pflag/README.md
index eefb46dec83e..b052414d1295 100644
--- a/vendor/github.com/spf13/pflag/README.md
+++ b/vendor/github.com/spf13/pflag/README.md
@@ -246,6 +246,25 @@ It is possible to mark a flag as hidden, meaning it will still function as norma
flags.MarkHidden("secretFlag")
```
+## Disable sorting of flags
+`pflag` allows you to disable sorting of flags for help and usage message.
+
+**Example**:
+```go
+flags.BoolP("verbose", "v", false, "verbose output")
+flags.String("coolflag", "yeaah", "it's really cool flag")
+flags.Int("usefulflag", 777, "sometimes it's very useful")
+flags.SortFlags = false
+flags.PrintDefaults()
+```
+**Output**:
+```
+ -v, --verbose verbose output
+ --coolflag string it's really cool flag (default "yeaah")
+ --usefulflag int sometimes it's very useful (default 777)
+```
+
+
## Supporting Go flags when using pflag
In order to support flags defined using Go's `flag` package, they must be added to the `pflag` flagset. This is usually necessary
to support flags defined by third-party dependencies (e.g. `golang/glog`).
@@ -270,8 +289,8 @@ func main() {
You can see the full reference documentation of the pflag package
[at godoc.org][3], or through go's standard documentation system by
running `godoc -http=:6060` and browsing to
-[http://localhost:6060/pkg/github.com/ogier/pflag][2] after
+[http://localhost:6060/pkg/github.com/spf13/pflag][2] after
installation.
-[2]: http://localhost:6060/pkg/github.com/ogier/pflag
-[3]: http://godoc.org/github.com/ogier/pflag
+[2]: http://localhost:6060/pkg/github.com/spf13/pflag
+[3]: http://godoc.org/github.com/spf13/pflag
diff --git a/vendor/github.com/spf13/pflag/count.go b/vendor/github.com/spf13/pflag/count.go
index d22be41f29f5..aa126e44d1c8 100644
--- a/vendor/github.com/spf13/pflag/count.go
+++ b/vendor/github.com/spf13/pflag/count.go
@@ -11,13 +11,13 @@ func newCountValue(val int, p *int) *countValue {
}
func (i *countValue) Set(s string) error {
- v, err := strconv.ParseInt(s, 0, 64)
- // -1 means that no specific value was passed, so increment
- if v == -1 {
+ // "+1" means that no specific value was passed, so increment
+ if s == "+1" {
*i = countValue(*i + 1)
- } else {
- *i = countValue(v)
+ return nil
}
+ v, err := strconv.ParseInt(s, 0, 0)
+ *i = countValue(v)
return err
}
@@ -54,7 +54,7 @@ func (f *FlagSet) CountVar(p *int, name string, usage string) {
// CountVarP is like CountVar only take a shorthand for the flag name.
func (f *FlagSet) CountVarP(p *int, name, shorthand string, usage string) {
flag := f.VarPF(newCountValue(0, p), name, shorthand, usage)
- flag.NoOptDefVal = "-1"
+ flag.NoOptDefVal = "+1"
}
// CountVar like CountVar only the flag is placed on the CommandLine instead of a given flag set
@@ -83,7 +83,9 @@ func (f *FlagSet) CountP(name, shorthand string, usage string) *int {
return p
}
-// Count like Count only the flag is placed on the CommandLine isntead of a given flag set
+// Count defines a count flag with specified name, default value, and usage string.
+// The return value is the address of an int variable that stores the value of the flag.
+// A count flag will add 1 to its value evey time it is found on the command line
func Count(name string, usage string) *int {
return CommandLine.CountP(name, "", usage)
}
diff --git a/vendor/github.com/spf13/pflag/flag.go b/vendor/github.com/spf13/pflag/flag.go
index 746af6327e4b..28538c0750ba 100644
--- a/vendor/github.com/spf13/pflag/flag.go
+++ b/vendor/github.com/spf13/pflag/flag.go
@@ -16,9 +16,9 @@ pflag is a drop-in replacement of Go's native flag package. If you import
pflag under the name "flag" then all code should continue to function
with no changes.
- import flag "github.com/ogier/pflag"
+ import flag "github.com/spf13/pflag"
- There is one exception to this: if you directly instantiate the Flag struct
+There is one exception to this: if you directly instantiate the Flag struct
there is one more field "Shorthand" that you will need to set.
Most code never instantiates this struct directly, and instead uses
functions such as String(), BoolVar(), and Var(), and is therefore
@@ -134,14 +134,21 @@ type FlagSet struct {
// a custom error handler.
Usage func()
+ // SortFlags is used to indicate, if user wants to have sorted flags in
+ // help/usage messages.
+ SortFlags bool
+
name string
parsed bool
actual map[NormalizedName]*Flag
+ orderedActual []*Flag
+ sortedActual []*Flag
formal map[NormalizedName]*Flag
+ orderedFormal []*Flag
+ sortedFormal []*Flag
shorthands map[byte]*Flag
args []string // arguments after flags
argsLenAtDash int // len(args) when a '--' was located when parsing, or -1 if no --
- exitOnError bool // does the program exit if there's an error?
errorHandling ErrorHandling
output io.Writer // nil means stderr; use out() accessor
interspersed bool // allow interspersed option/non-option args
@@ -156,7 +163,7 @@ type Flag struct {
Value Value // value as set
DefValue string // default value (as text); for usage message
Changed bool // If the user set the value (or if left to default)
- NoOptDefVal string //default value (as text); if the flag is on the command line without any options
+ NoOptDefVal string // default value (as text); if the flag is on the command line without any options
Deprecated string // If this flag is deprecated, this string is the new or now thing to use
Hidden bool // used by cobra.Command to allow flags to be hidden from help/usage text
ShorthandDeprecated string // If the shorthand of this flag is deprecated, this string is the new or now thing to use
@@ -194,11 +201,19 @@ func sortFlags(flags map[NormalizedName]*Flag) []*Flag {
// "--getUrl" which may also be translated to "geturl" and everything will work.
func (f *FlagSet) SetNormalizeFunc(n func(f *FlagSet, name string) NormalizedName) {
f.normalizeNameFunc = n
- for k, v := range f.formal {
- delete(f.formal, k)
- nname := f.normalizeFlagName(string(k))
- f.formal[nname] = v
- v.Name = string(nname)
+ f.sortedFormal = f.sortedFormal[:0]
+ for fname, flag := range f.formal {
+ nname := f.normalizeFlagName(flag.Name)
+ if fname == nname {
+ continue
+ }
+ flag.Name = string(nname)
+ delete(f.formal, fname)
+ f.formal[nname] = flag
+ if _, set := f.actual[fname]; set {
+ delete(f.actual, fname)
+ f.actual[nname] = flag
+ }
}
}
@@ -229,10 +244,25 @@ func (f *FlagSet) SetOutput(output io.Writer) {
f.output = output
}
-// VisitAll visits the flags in lexicographical order, calling fn for each.
+// VisitAll visits the flags in lexicographical order or
+// in primordial order if f.SortFlags is false, calling fn for each.
// It visits all flags, even those not set.
func (f *FlagSet) VisitAll(fn func(*Flag)) {
- for _, flag := range sortFlags(f.formal) {
+ if len(f.formal) == 0 {
+ return
+ }
+
+ var flags []*Flag
+ if f.SortFlags {
+ if len(f.formal) != len(f.sortedFormal) {
+ f.sortedFormal = sortFlags(f.formal)
+ }
+ flags = f.sortedFormal
+ } else {
+ flags = f.orderedFormal
+ }
+
+ for _, flag := range flags {
fn(flag)
}
}
@@ -253,22 +283,39 @@ func (f *FlagSet) HasAvailableFlags() bool {
return false
}
-// VisitAll visits the command-line flags in lexicographical order, calling
-// fn for each. It visits all flags, even those not set.
+// VisitAll visits the command-line flags in lexicographical order or
+// in primordial order if f.SortFlags is false, calling fn for each.
+// It visits all flags, even those not set.
func VisitAll(fn func(*Flag)) {
CommandLine.VisitAll(fn)
}
-// Visit visits the flags in lexicographical order, calling fn for each.
+// Visit visits the flags in lexicographical order or
+// in primordial order if f.SortFlags is false, calling fn for each.
// It visits only those flags that have been set.
func (f *FlagSet) Visit(fn func(*Flag)) {
- for _, flag := range sortFlags(f.actual) {
+ if len(f.actual) == 0 {
+ return
+ }
+
+ var flags []*Flag
+ if f.SortFlags {
+ if len(f.actual) != len(f.sortedActual) {
+ f.sortedActual = sortFlags(f.actual)
+ }
+ flags = f.sortedActual
+ } else {
+ flags = f.orderedActual
+ }
+
+ for _, flag := range flags {
fn(flag)
}
}
-// Visit visits the command-line flags in lexicographical order, calling fn
-// for each. It visits only those flags that have been set.
+// Visit visits the command-line flags in lexicographical order or
+// in primordial order if f.SortFlags is false, calling fn for each.
+// It visits only those flags that have been set.
func Visit(fn func(*Flag)) {
CommandLine.Visit(fn)
}
@@ -278,6 +325,22 @@ func (f *FlagSet) Lookup(name string) *Flag {
return f.lookup(f.normalizeFlagName(name))
}
+// ShorthandLookup returns the Flag structure of the short handed flag,
+// returning nil if none exists.
+// It panics, if len(name) > 1.
+func (f *FlagSet) ShorthandLookup(name string) *Flag {
+ if name == "" {
+ return nil
+ }
+ if len(name) > 1 {
+ msg := fmt.Sprintf("can not look up shorthand which is more than one ASCII character: %q", name)
+ fmt.Fprintf(f.out(), msg)
+ panic(msg)
+ }
+ c := name[0]
+ return f.shorthands[c]
+}
+
// lookup returns the Flag structure of the named flag, returning nil if none exists.
func (f *FlagSet) lookup(name NormalizedName) *Flag {
return f.formal[name]
@@ -319,7 +382,7 @@ func (f *FlagSet) MarkDeprecated(name string, usageMessage string) error {
if flag == nil {
return fmt.Errorf("flag %q does not exist", name)
}
- if len(usageMessage) == 0 {
+ if usageMessage == "" {
return fmt.Errorf("deprecated message for flag %q must be set", name)
}
flag.Deprecated = usageMessage
@@ -334,7 +397,7 @@ func (f *FlagSet) MarkShorthandDeprecated(name string, usageMessage string) erro
if flag == nil {
return fmt.Errorf("flag %q does not exist", name)
}
- if len(usageMessage) == 0 {
+ if usageMessage == "" {
return fmt.Errorf("deprecated message for flag %q must be set", name)
}
flag.ShorthandDeprecated = usageMessage
@@ -358,6 +421,12 @@ func Lookup(name string) *Flag {
return CommandLine.Lookup(name)
}
+// ShorthandLookup returns the Flag structure of the short handed flag,
+// returning nil if none exists.
+func ShorthandLookup(name string) *Flag {
+ return CommandLine.ShorthandLookup(name)
+}
+
// Set sets the value of the named flag.
func (f *FlagSet) Set(name, value string) error {
normalName := f.normalizeFlagName(name)
@@ -365,17 +434,30 @@ func (f *FlagSet) Set(name, value string) error {
if !ok {
return fmt.Errorf("no such flag -%v", name)
}
+
err := flag.Value.Set(value)
if err != nil {
- return err
+ var flagName string
+ if flag.Shorthand != "" && flag.ShorthandDeprecated == "" {
+ flagName = fmt.Sprintf("-%s, --%s", flag.Shorthand, flag.Name)
+ } else {
+ flagName = fmt.Sprintf("--%s", flag.Name)
+ }
+ return fmt.Errorf("invalid argument %q for %q flag: %v", value, flagName, err)
}
- if f.actual == nil {
- f.actual = make(map[NormalizedName]*Flag)
+
+ if !flag.Changed {
+ if f.actual == nil {
+ f.actual = make(map[NormalizedName]*Flag)
+ }
+ f.actual[normalName] = flag
+ f.orderedActual = append(f.orderedActual, flag)
+
+ flag.Changed = true
}
- f.actual[normalName] = flag
- flag.Changed = true
- if len(flag.Deprecated) > 0 {
- fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated)
+
+ if flag.Deprecated != "" {
+ fmt.Fprintf(f.out(), "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated)
}
return nil
}
@@ -482,6 +564,14 @@ func UnquoteUsage(flag *Flag) (name string, usage string) {
name = "int"
case "uint64":
name = "uint"
+ case "stringSlice":
+ name = "strings"
+ case "intSlice":
+ name = "ints"
+ case "uintSlice":
+ name = "uints"
+ case "boolSlice":
+ name = "bools"
}
return
@@ -557,28 +647,28 @@ func wrap(i, w int, s string) string {
// for all flags in the FlagSet. Wrapped to `cols` columns (0 for no
// wrapping)
func (f *FlagSet) FlagUsagesWrapped(cols int) string {
- x := new(bytes.Buffer)
+ buf := new(bytes.Buffer)
lines := make([]string, 0, len(f.formal))
maxlen := 0
f.VisitAll(func(flag *Flag) {
- if len(flag.Deprecated) > 0 || flag.Hidden {
+ if flag.Deprecated != "" || flag.Hidden {
return
}
line := ""
- if len(flag.Shorthand) > 0 && len(flag.ShorthandDeprecated) == 0 {
+ if flag.Shorthand != "" && flag.ShorthandDeprecated == "" {
line = fmt.Sprintf(" -%s, --%s", flag.Shorthand, flag.Name)
} else {
line = fmt.Sprintf(" --%s", flag.Name)
}
varname, usage := UnquoteUsage(flag)
- if len(varname) > 0 {
+ if varname != "" {
line += " " + varname
}
- if len(flag.NoOptDefVal) > 0 {
+ if flag.NoOptDefVal != "" {
switch flag.Value.Type() {
case "string":
line += fmt.Sprintf("[=\"%s\"]", flag.NoOptDefVal)
@@ -586,6 +676,10 @@ func (f *FlagSet) FlagUsagesWrapped(cols int) string {
if flag.NoOptDefVal != "true" {
line += fmt.Sprintf("[=%s]", flag.NoOptDefVal)
}
+ case "count":
+ if flag.NoOptDefVal != "+1" {
+ line += fmt.Sprintf("[=%s]", flag.NoOptDefVal)
+ }
default:
line += fmt.Sprintf("[=%s]", flag.NoOptDefVal)
}
@@ -601,7 +695,7 @@ func (f *FlagSet) FlagUsagesWrapped(cols int) string {
line += usage
if !flag.defaultIsZeroValue() {
if flag.Value.Type() == "string" {
- line += fmt.Sprintf(" (default \"%s\")", flag.DefValue)
+ line += fmt.Sprintf(" (default %q)", flag.DefValue)
} else {
line += fmt.Sprintf(" (default %s)", flag.DefValue)
}
@@ -614,10 +708,10 @@ func (f *FlagSet) FlagUsagesWrapped(cols int) string {
sidx := strings.Index(line, "\x00")
spacing := strings.Repeat(" ", maxlen-sidx)
// maxlen + 2 comes from + 1 for the \x00 and + 1 for the (deliberate) off-by-one in maxlen-sidx
- fmt.Fprintln(x, line[:sidx], spacing, wrap(maxlen+2, cols, line[sidx+1:]))
+ fmt.Fprintln(buf, line[:sidx], spacing, wrap(maxlen+2, cols, line[sidx+1:]))
}
- return x.String()
+ return buf.String()
}
// FlagUsages returns a string containing the usage information for all flags in
@@ -714,11 +808,10 @@ func (f *FlagSet) VarP(value Value, name, shorthand, usage string) {
// AddFlag will add the flag to the FlagSet
func (f *FlagSet) AddFlag(flag *Flag) {
- // Call normalizeFlagName function only once
normalizedFlagName := f.normalizeFlagName(flag.Name)
- _, alreadythere := f.formal[normalizedFlagName]
- if alreadythere {
+ _, alreadyThere := f.formal[normalizedFlagName]
+ if alreadyThere {
msg := fmt.Sprintf("%s flag redefined: %s", f.name, flag.Name)
fmt.Fprintln(f.out(), msg)
panic(msg) // Happens only if flags are declared with identical names
@@ -729,28 +822,31 @@ func (f *FlagSet) AddFlag(flag *Flag) {
flag.Name = string(normalizedFlagName)
f.formal[normalizedFlagName] = flag
+ f.orderedFormal = append(f.orderedFormal, flag)
- if len(flag.Shorthand) == 0 {
+ if flag.Shorthand == "" {
return
}
if len(flag.Shorthand) > 1 {
- fmt.Fprintf(f.out(), "%s shorthand more than ASCII character: %s\n", f.name, flag.Shorthand)
- panic("shorthand is more than one character")
+ msg := fmt.Sprintf("%q shorthand is more than one ASCII character", flag.Shorthand)
+ fmt.Fprintf(f.out(), msg)
+ panic(msg)
}
if f.shorthands == nil {
f.shorthands = make(map[byte]*Flag)
}
c := flag.Shorthand[0]
- old, alreadythere := f.shorthands[c]
- if alreadythere {
- fmt.Fprintf(f.out(), "%s shorthand reused: %q for %s already used for %s\n", f.name, c, flag.Name, old.Name)
- panic("shorthand redefinition")
+ used, alreadyThere := f.shorthands[c]
+ if alreadyThere {
+ msg := fmt.Sprintf("unable to redefine %q shorthand in %q flagset: it's already used for %q flag", c, f.name, used.Name)
+ fmt.Fprintf(f.out(), msg)
+ panic(msg)
}
f.shorthands[c] = flag
}
// AddFlagSet adds one FlagSet to another. If a flag is already present in f
-// the flag from newSet will be ignored
+// the flag from newSet will be ignored.
func (f *FlagSet) AddFlagSet(newSet *FlagSet) {
if newSet == nil {
return
@@ -781,8 +877,10 @@ func VarP(value Value, name, shorthand, usage string) {
// returns the error.
func (f *FlagSet) failf(format string, a ...interface{}) error {
err := fmt.Errorf(format, a...)
- fmt.Fprintln(f.out(), err)
- f.usage()
+ if f.errorHandling != ContinueOnError {
+ fmt.Fprintln(f.out(), err)
+ f.usage()
+ }
return err
}
@@ -798,34 +896,6 @@ func (f *FlagSet) usage() {
}
}
-func (f *FlagSet) setFlag(flag *Flag, value string, origArg string) error {
- if err := flag.Value.Set(value); err != nil {
- return f.failf("invalid argument %q for %s: %v", value, origArg, err)
- }
- // mark as visited for Visit()
- if f.actual == nil {
- f.actual = make(map[NormalizedName]*Flag)
- }
- f.actual[f.normalizeFlagName(flag.Name)] = flag
- flag.Changed = true
- if len(flag.Deprecated) > 0 {
- fmt.Fprintf(os.Stderr, "Flag --%s has been deprecated, %s\n", flag.Name, flag.Deprecated)
- }
- if len(flag.ShorthandDeprecated) > 0 && containsShorthand(origArg, flag.Shorthand) {
- fmt.Fprintf(os.Stderr, "Flag shorthand -%s has been deprecated, %s\n", flag.Shorthand, flag.ShorthandDeprecated)
- }
- return nil
-}
-
-func containsShorthand(arg, shorthand string) bool {
- // filter out flags --
- if strings.HasPrefix(arg, "-") {
- return false
- }
- arg = strings.SplitN(arg, "=", 2)[0]
- return strings.Contains(arg, shorthand)
-}
-
func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []string, err error) {
a = args
name := s[2:]
@@ -833,10 +903,11 @@ func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []strin
err = f.failf("bad flag syntax: %s", s)
return
}
+
split := strings.SplitN(name, "=", 2)
name = split[0]
- flag, alreadythere := f.formal[f.normalizeFlagName(name)]
- if !alreadythere {
+ flag, exists := f.formal[f.normalizeFlagName(name)]
+ if !exists {
if name == "help" { // special case for nice help message.
f.usage()
return a, ErrHelp
@@ -844,11 +915,12 @@ func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []strin
err = f.failf("unknown flag: --%s", name)
return
}
+
var value string
if len(split) == 2 {
// '--flag=arg'
value = split[1]
- } else if len(flag.NoOptDefVal) > 0 {
+ } else if flag.NoOptDefVal != "" {
// '--flag' (arg was optional)
value = flag.NoOptDefVal
} else if len(a) > 0 {
@@ -860,7 +932,11 @@ func (f *FlagSet) parseLongArg(s string, args []string, fn parseFunc) (a []strin
err = f.failf("flag needs an argument: %s", s)
return
}
- err = fn(flag, value, s)
+
+ err = fn(flag, value)
+ if err != nil {
+ f.failf(err.Error())
+ }
return
}
@@ -868,38 +944,52 @@ func (f *FlagSet) parseSingleShortArg(shorthands string, args []string, fn parse
if strings.HasPrefix(shorthands, "test.") {
return
}
+
outArgs = args
outShorts = shorthands[1:]
c := shorthands[0]
- flag, alreadythere := f.shorthands[c]
- if !alreadythere {
+ flag, exists := f.shorthands[c]
+ if !exists {
if c == 'h' { // special case for nice help message.
f.usage()
err = ErrHelp
return
}
- //TODO continue on error
err = f.failf("unknown shorthand flag: %q in -%s", c, shorthands)
return
}
+
var value string
if len(shorthands) > 2 && shorthands[1] == '=' {
+ // '-f=arg'
value = shorthands[2:]
outShorts = ""
- } else if len(flag.NoOptDefVal) > 0 {
+ } else if flag.NoOptDefVal != "" {
+ // '-f' (arg was optional)
value = flag.NoOptDefVal
} else if len(shorthands) > 1 {
+ // '-farg'
value = shorthands[1:]
outShorts = ""
} else if len(args) > 0 {
+ // '-f arg'
value = args[0]
outArgs = args[1:]
} else {
+ // '-f' (arg was required)
err = f.failf("flag needs an argument: %q in -%s", c, shorthands)
return
}
- err = fn(flag, value, shorthands)
+
+ if flag.ShorthandDeprecated != "" {
+ fmt.Fprintf(f.out(), "Flag shorthand -%s has been deprecated, %s\n", flag.Shorthand, flag.ShorthandDeprecated)
+ }
+
+ err = fn(flag, value)
+ if err != nil {
+ f.failf(err.Error())
+ }
return
}
@@ -907,6 +997,7 @@ func (f *FlagSet) parseShortArg(s string, args []string, fn parseFunc) (a []stri
a = args
shorthands := s[1:]
+ // "shorthands" can be a series of shorthand letters of flags (e.g. "-vvv").
for len(shorthands) > 0 {
shorthands, a, err = f.parseSingleShortArg(shorthands, args, fn)
if err != nil {
@@ -954,18 +1045,24 @@ func (f *FlagSet) parseArgs(args []string, fn parseFunc) (err error) {
// The return value will be ErrHelp if -help was set but not defined.
func (f *FlagSet) Parse(arguments []string) error {
f.parsed = true
+
+ if len(arguments) < 0 {
+ return nil
+ }
+
f.args = make([]string, 0, len(arguments))
- assign := func(flag *Flag, value, origArg string) error {
- return f.setFlag(flag, value, origArg)
+ set := func(flag *Flag, value string) error {
+ return f.Set(flag.Name, value)
}
- err := f.parseArgs(arguments, assign)
+ err := f.parseArgs(arguments, set)
if err != nil {
switch f.errorHandling {
case ContinueOnError:
return err
case ExitOnError:
+ fmt.Println(err)
os.Exit(2)
case PanicOnError:
panic(err)
@@ -974,7 +1071,7 @@ func (f *FlagSet) Parse(arguments []string) error {
return nil
}
-type parseFunc func(flag *Flag, value, origArg string) error
+type parseFunc func(flag *Flag, value string) error
// ParseAll parses flag definitions from the argument list, which should not
// include the command name. The arguments for fn are flag and value. Must be
@@ -985,11 +1082,7 @@ func (f *FlagSet) ParseAll(arguments []string, fn func(flag *Flag, value string)
f.parsed = true
f.args = make([]string, 0, len(arguments))
- assign := func(flag *Flag, value, origArg string) error {
- return fn(flag, value)
- }
-
- err := f.parseArgs(arguments, assign)
+ err := f.parseArgs(arguments, fn)
if err != nil {
switch f.errorHandling {
case ContinueOnError:
@@ -1036,14 +1129,15 @@ func Parsed() bool {
// CommandLine is the default set of command-line flags, parsed from os.Args.
var CommandLine = NewFlagSet(os.Args[0], ExitOnError)
-// NewFlagSet returns a new, empty flag set with the specified name and
-// error handling property.
+// NewFlagSet returns a new, empty flag set with the specified name,
+// error handling property and SortFlags set to true.
func NewFlagSet(name string, errorHandling ErrorHandling) *FlagSet {
f := &FlagSet{
name: name,
errorHandling: errorHandling,
argsLenAtDash: -1,
interspersed: true,
+ SortFlags: true,
}
return f
}
diff --git a/vendor/github.com/spf13/pflag/int16.go b/vendor/github.com/spf13/pflag/int16.go
new file mode 100644
index 000000000000..f1a01d05e694
--- /dev/null
+++ b/vendor/github.com/spf13/pflag/int16.go
@@ -0,0 +1,88 @@
+package pflag
+
+import "strconv"
+
+// -- int16 Value
+type int16Value int16
+
+func newInt16Value(val int16, p *int16) *int16Value {
+ *p = val
+ return (*int16Value)(p)
+}
+
+func (i *int16Value) Set(s string) error {
+ v, err := strconv.ParseInt(s, 0, 16)
+ *i = int16Value(v)
+ return err
+}
+
+func (i *int16Value) Type() string {
+ return "int16"
+}
+
+func (i *int16Value) String() string { return strconv.FormatInt(int64(*i), 10) }
+
+func int16Conv(sval string) (interface{}, error) {
+ v, err := strconv.ParseInt(sval, 0, 16)
+ if err != nil {
+ return 0, err
+ }
+ return int16(v), nil
+}
+
+// GetInt16 returns the int16 value of a flag with the given name
+func (f *FlagSet) GetInt16(name string) (int16, error) {
+ val, err := f.getFlagType(name, "int16", int16Conv)
+ if err != nil {
+ return 0, err
+ }
+ return val.(int16), nil
+}
+
+// Int16Var defines an int16 flag with specified name, default value, and usage string.
+// The argument p points to an int16 variable in which to store the value of the flag.
+func (f *FlagSet) Int16Var(p *int16, name string, value int16, usage string) {
+ f.VarP(newInt16Value(value, p), name, "", usage)
+}
+
+// Int16VarP is like Int16Var, but accepts a shorthand letter that can be used after a single dash.
+func (f *FlagSet) Int16VarP(p *int16, name, shorthand string, value int16, usage string) {
+ f.VarP(newInt16Value(value, p), name, shorthand, usage)
+}
+
+// Int16Var defines an int16 flag with specified name, default value, and usage string.
+// The argument p points to an int16 variable in which to store the value of the flag.
+func Int16Var(p *int16, name string, value int16, usage string) {
+ CommandLine.VarP(newInt16Value(value, p), name, "", usage)
+}
+
+// Int16VarP is like Int16Var, but accepts a shorthand letter that can be used after a single dash.
+func Int16VarP(p *int16, name, shorthand string, value int16, usage string) {
+ CommandLine.VarP(newInt16Value(value, p), name, shorthand, usage)
+}
+
+// Int16 defines an int16 flag with specified name, default value, and usage string.
+// The return value is the address of an int16 variable that stores the value of the flag.
+func (f *FlagSet) Int16(name string, value int16, usage string) *int16 {
+ p := new(int16)
+ f.Int16VarP(p, name, "", value, usage)
+ return p
+}
+
+// Int16P is like Int16, but accepts a shorthand letter that can be used after a single dash.
+func (f *FlagSet) Int16P(name, shorthand string, value int16, usage string) *int16 {
+ p := new(int16)
+ f.Int16VarP(p, name, shorthand, value, usage)
+ return p
+}
+
+// Int16 defines an int16 flag with specified name, default value, and usage string.
+// The return value is the address of an int16 variable that stores the value of the flag.
+func Int16(name string, value int16, usage string) *int16 {
+ return CommandLine.Int16P(name, "", value, usage)
+}
+
+// Int16P is like Int16, but accepts a shorthand letter that can be used after a single dash.
+func Int16P(name, shorthand string, value int16, usage string) *int16 {
+ return CommandLine.Int16P(name, shorthand, value, usage)
+}
diff --git a/vendor/github.com/square/go-jose/README.md b/vendor/github.com/square/go-jose/README.md
deleted file mode 100644
index 60293ffa26bf..000000000000
--- a/vendor/github.com/square/go-jose/README.md
+++ /dev/null
@@ -1,212 +0,0 @@
-# Go JOSE
-
-[![godoc](http://img.shields.io/badge/godoc-reference-blue.svg?style=flat)](https://godoc.org/gopkg.in/square/go-jose.v1) [![license](http://img.shields.io/badge/license-apache_2.0-blue.svg?style=flat)](https://raw.githubusercontent.com/square/go-jose/master/LICENSE)
-[![release](https://img.shields.io/github/release/square/go-jose.svg?style=flat)](https://github.com/square/go-jose/releases)
-[![build](https://travis-ci.org/square/go-jose.svg?branch=master)](https://travis-ci.org/square/go-jose)
-[![coverage](https://coveralls.io/repos/github/square/go-jose/badge.svg?branch=master)](https://coveralls.io/r/square/go-jose)
-
-Package jose aims to provide an implementation of the Javascript Object Signing
-and Encryption set of standards. For the moment, it mainly focuses on encryption
-and signing based on the JSON Web Encryption and JSON Web Signature standards.
-
-**Disclaimer**: This library contains encryption software that is subject to
-the U.S. Export Administration Regulations. You may not export, re-export,
-transfer or download this code or any part of it in violation of any United
-States law, directive or regulation. In particular this software may not be
-exported or re-exported in any form or on any media to Iran, North Sudan,
-Syria, Cuba, or North Korea, or to denied persons or entities mentioned on any
-US maintained blocked list.
-
-## Overview
-
-The implementation follows the
-[JSON Web Encryption](http://dx.doi.org/10.17487/RFC7516)
-standard (RFC 7516) and
-[JSON Web Signature](http://dx.doi.org/10.17487/RFC7515)
-standard (RFC 7515). Tables of supported algorithms are shown below.
-The library supports both the compact and full serialization formats, and has
-optional support for multiple recipients. It also comes with a small
-command-line utility
-([`jose-util`](https://github.com/square/go-jose/tree/master/jose-util))
-for dealing with JOSE messages in a shell.
-
-**Note**: We use a forked version of the `encoding/json` package from the Go
-standard library which uses case-sensitive matching for member names (instead
-of [case-insensitive matching](https://www.ietf.org/mail-archive/web/json/current/msg03763.html)).
-This is to avoid differences in interpretation of messages between go-jose and
-libraries in other languages. If you do not like this behavior, you can use the
-`std_json` build tag to disable it (though we do not recommend doing so).
-
-### Versions
-
-We use [gopkg.in](https://gopkg.in) for versioning.
-
-[Version 1](https://gopkg.in/square/go-jose.v1) is the current stable version:
-
- import "gopkg.in/square/go-jose.v1"
-
-The interface for [go-jose.v1](https://gopkg.in/square/go-jose.v1) will remain
-backwards compatible. We're currently sketching out ideas for a new version, to
-clean up the interface a bit. If you have ideas or feature requests [please let
-us know](https://github.com/square/go-jose/issues/64)!
-
-### Supported algorithms
-
-See below for a table of supported algorithms. Algorithm identifiers match
-the names in the
-[JSON Web Algorithms](http://dx.doi.org/10.17487/RFC7518)
-standard where possible. The
-[Godoc reference](https://godoc.org/github.com/square/go-jose#pkg-constants)
-has a list of constants.
-
- Key encryption | Algorithm identifier(s)
- :------------------------- | :------------------------------
- RSA-PKCS#1v1.5 | RSA1_5
- RSA-OAEP | RSA-OAEP, RSA-OAEP-256
- AES key wrap | A128KW, A192KW, A256KW
- AES-GCM key wrap | A128GCMKW, A192GCMKW, A256GCMKW
- ECDH-ES + AES key wrap | ECDH-ES+A128KW, ECDH-ES+A192KW, ECDH-ES+A256KW
- ECDH-ES (direct) | ECDH-ES1
- Direct encryption | dir1
-
-1. Not supported in multi-recipient mode
-
- Signing / MAC | Algorithm identifier(s)
- :------------------------- | :------------------------------
- RSASSA-PKCS#1v1.5 | RS256, RS384, RS512
- RSASSA-PSS | PS256, PS384, PS512
- HMAC | HS256, HS384, HS512
- ECDSA | ES256, ES384, ES512
-
- Content encryption | Algorithm identifier(s)
- :------------------------- | :------------------------------
- AES-CBC+HMAC | A128CBC-HS256, A192CBC-HS384, A256CBC-HS512
- AES-GCM | A128GCM, A192GCM, A256GCM
-
- Compression | Algorithm identifiers(s)
- :------------------------- | -------------------------------
- DEFLATE (RFC 1951) | DEF
-
-### Supported key types
-
-See below for a table of supported key types. These are understood by the
-library, and can be passed to corresponding functions such as `NewEncrypter` or
-`NewSigner`. Note that if you are creating a new encrypter or signer with a
-JsonWebKey, the key id of the JsonWebKey (if present) will be added to any
-resulting messages.
-
- Algorithm(s) | Corresponding types
- :------------------------- | -------------------------------
- RSA | *[rsa.PublicKey](http://golang.org/pkg/crypto/rsa/#PublicKey), *[rsa.PrivateKey](http://golang.org/pkg/crypto/rsa/#PrivateKey), *[jose.JsonWebKey](https://godoc.org/github.com/square/go-jose#JsonWebKey)
- ECDH, ECDSA | *[ecdsa.PublicKey](http://golang.org/pkg/crypto/ecdsa/#PublicKey), *[ecdsa.PrivateKey](http://golang.org/pkg/crypto/ecdsa/#PrivateKey), *[jose.JsonWebKey](https://godoc.org/github.com/square/go-jose#JsonWebKey)
- AES, HMAC | []byte, *[jose.JsonWebKey](https://godoc.org/github.com/square/go-jose#JsonWebKey)
-
-## Examples
-
-Encryption/decryption example using RSA:
-
-```Go
-// Generate a public/private key pair to use for this example. The library
-// also provides two utility functions (LoadPublicKey and LoadPrivateKey)
-// that can be used to load keys from PEM/DER-encoded data.
-privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
-if err != nil {
- panic(err)
-}
-
-// Instantiate an encrypter using RSA-OAEP with AES128-GCM. An error would
-// indicate that the selected algorithm(s) are not currently supported.
-publicKey := &privateKey.PublicKey
-encrypter, err := NewEncrypter(RSA_OAEP, A128GCM, publicKey)
-if err != nil {
- panic(err)
-}
-
-// Encrypt a sample plaintext. Calling the encrypter returns an encrypted
-// JWE object, which can then be serialized for output afterwards. An error
-// would indicate a problem in an underlying cryptographic primitive.
-var plaintext = []byte("Lorem ipsum dolor sit amet")
-object, err := encrypter.Encrypt(plaintext)
-if err != nil {
- panic(err)
-}
-
-// Serialize the encrypted object using the full serialization format.
-// Alternatively you can also use the compact format here by calling
-// object.CompactSerialize() instead.
-serialized := object.FullSerialize()
-
-// Parse the serialized, encrypted JWE object. An error would indicate that
-// the given input did not represent a valid message.
-object, err = ParseEncrypted(serialized)
-if err != nil {
- panic(err)
-}
-
-// Now we can decrypt and get back our original plaintext. An error here
-// would indicate the the message failed to decrypt, e.g. because the auth
-// tag was broken or the message was tampered with.
-decrypted, err := object.Decrypt(privateKey)
-if err != nil {
- panic(err)
-}
-
-fmt.Printf(string(decrypted))
-// output: Lorem ipsum dolor sit amet
-```
-
-Signing/verification example using RSA:
-
-```Go
-// Generate a public/private key pair to use for this example. The library
-// also provides two utility functions (LoadPublicKey and LoadPrivateKey)
-// that can be used to load keys from PEM/DER-encoded data.
-privateKey, err := rsa.GenerateKey(rand.Reader, 2048)
-if err != nil {
- panic(err)
-}
-
-// Instantiate a signer using RSASSA-PSS (SHA512) with the given private key.
-signer, err := NewSigner(PS512, privateKey)
-if err != nil {
- panic(err)
-}
-
-// Sign a sample payload. Calling the signer returns a protected JWS object,
-// which can then be serialized for output afterwards. An error would
-// indicate a problem in an underlying cryptographic primitive.
-var payload = []byte("Lorem ipsum dolor sit amet")
-object, err := signer.Sign(payload)
-if err != nil {
- panic(err)
-}
-
-// Serialize the encrypted object using the full serialization format.
-// Alternatively you can also use the compact format here by calling
-// object.CompactSerialize() instead.
-serialized := object.FullSerialize()
-
-// Parse the serialized, protected JWS object. An error would indicate that
-// the given input did not represent a valid message.
-object, err = ParseSigned(serialized)
-if err != nil {
- panic(err)
-}
-
-// Now we can verify the signature on the payload. An error here would
-// indicate the the message failed to verify, e.g. because the signature was
-// broken or the message was tampered with.
-output, err := object.Verify(&privateKey.PublicKey)
-if err != nil {
- panic(err)
-}
-
-fmt.Printf(string(output))
-// output: Lorem ipsum dolor sit amet
-```
-
-More examples can be found in the [Godoc
-reference](https://godoc.org/github.com/square/go-jose) for this package. The
-[`jose-util`](https://github.com/square/go-jose/tree/master/jose-util)
-subdirectory also contains a small command-line utility which might
-be useful as an example.
diff --git a/vendor/github.com/square/go-jose/crypter.go b/vendor/github.com/square/go-jose/crypter.go
deleted file mode 100644
index a38632ddc65e..000000000000
--- a/vendor/github.com/square/go-jose/crypter.go
+++ /dev/null
@@ -1,349 +0,0 @@
-/*-
- * Copyright 2014 Square Inc.
- *
- * 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 jose
-
-import (
- "crypto/ecdsa"
- "crypto/rsa"
- "fmt"
- "reflect"
-)
-
-// Encrypter represents an encrypter which produces an encrypted JWE object.
-type Encrypter interface {
- Encrypt(plaintext []byte) (*JsonWebEncryption, error)
- EncryptWithAuthData(plaintext []byte, aad []byte) (*JsonWebEncryption, error)
- SetCompression(alg CompressionAlgorithm)
-}
-
-// MultiEncrypter represents an encrypter which supports multiple recipients.
-type MultiEncrypter interface {
- Encrypt(plaintext []byte) (*JsonWebEncryption, error)
- EncryptWithAuthData(plaintext []byte, aad []byte) (*JsonWebEncryption, error)
- SetCompression(alg CompressionAlgorithm)
- AddRecipient(alg KeyAlgorithm, encryptionKey interface{}) error
-}
-
-// A generic content cipher
-type contentCipher interface {
- keySize() int
- encrypt(cek []byte, aad, plaintext []byte) (*aeadParts, error)
- decrypt(cek []byte, aad []byte, parts *aeadParts) ([]byte, error)
-}
-
-// A key generator (for generating/getting a CEK)
-type keyGenerator interface {
- keySize() int
- genKey() ([]byte, rawHeader, error)
-}
-
-// A generic key encrypter
-type keyEncrypter interface {
- encryptKey(cek []byte, alg KeyAlgorithm) (recipientInfo, error) // Encrypt a key
-}
-
-// A generic key decrypter
-type keyDecrypter interface {
- decryptKey(headers rawHeader, recipient *recipientInfo, generator keyGenerator) ([]byte, error) // Decrypt a key
-}
-
-// A generic encrypter based on the given key encrypter and content cipher.
-type genericEncrypter struct {
- contentAlg ContentEncryption
- compressionAlg CompressionAlgorithm
- cipher contentCipher
- recipients []recipientKeyInfo
- keyGenerator keyGenerator
-}
-
-type recipientKeyInfo struct {
- keyID string
- keyAlg KeyAlgorithm
- keyEncrypter keyEncrypter
-}
-
-// SetCompression sets a compression algorithm to be applied before encryption.
-func (ctx *genericEncrypter) SetCompression(compressionAlg CompressionAlgorithm) {
- ctx.compressionAlg = compressionAlg
-}
-
-// NewEncrypter creates an appropriate encrypter based on the key type
-func NewEncrypter(alg KeyAlgorithm, enc ContentEncryption, encryptionKey interface{}) (Encrypter, error) {
- encrypter := &genericEncrypter{
- contentAlg: enc,
- compressionAlg: NONE,
- recipients: []recipientKeyInfo{},
- cipher: getContentCipher(enc),
- }
-
- if encrypter.cipher == nil {
- return nil, ErrUnsupportedAlgorithm
- }
-
- var keyID string
- var rawKey interface{}
- switch encryptionKey := encryptionKey.(type) {
- case *JsonWebKey:
- keyID = encryptionKey.KeyID
- rawKey = encryptionKey.Key
- default:
- rawKey = encryptionKey
- }
-
- switch alg {
- case DIRECT:
- // Direct encryption mode must be treated differently
- if reflect.TypeOf(rawKey) != reflect.TypeOf([]byte{}) {
- return nil, ErrUnsupportedKeyType
- }
- encrypter.keyGenerator = staticKeyGenerator{
- key: rawKey.([]byte),
- }
- recipient, _ := newSymmetricRecipient(alg, rawKey.([]byte))
- if keyID != "" {
- recipient.keyID = keyID
- }
- encrypter.recipients = []recipientKeyInfo{recipient}
- return encrypter, nil
- case ECDH_ES:
- // ECDH-ES (w/o key wrapping) is similar to DIRECT mode
- typeOf := reflect.TypeOf(rawKey)
- if typeOf != reflect.TypeOf(&ecdsa.PublicKey{}) {
- return nil, ErrUnsupportedKeyType
- }
- encrypter.keyGenerator = ecKeyGenerator{
- size: encrypter.cipher.keySize(),
- algID: string(enc),
- publicKey: rawKey.(*ecdsa.PublicKey),
- }
- recipient, _ := newECDHRecipient(alg, rawKey.(*ecdsa.PublicKey))
- if keyID != "" {
- recipient.keyID = keyID
- }
- encrypter.recipients = []recipientKeyInfo{recipient}
- return encrypter, nil
- default:
- // Can just add a standard recipient
- encrypter.keyGenerator = randomKeyGenerator{
- size: encrypter.cipher.keySize(),
- }
- err := encrypter.AddRecipient(alg, encryptionKey)
- return encrypter, err
- }
-}
-
-// NewMultiEncrypter creates a multi-encrypter based on the given parameters
-func NewMultiEncrypter(enc ContentEncryption) (MultiEncrypter, error) {
- cipher := getContentCipher(enc)
-
- if cipher == nil {
- return nil, ErrUnsupportedAlgorithm
- }
-
- encrypter := &genericEncrypter{
- contentAlg: enc,
- compressionAlg: NONE,
- recipients: []recipientKeyInfo{},
- cipher: cipher,
- keyGenerator: randomKeyGenerator{
- size: cipher.keySize(),
- },
- }
-
- return encrypter, nil
-}
-
-func (ctx *genericEncrypter) AddRecipient(alg KeyAlgorithm, encryptionKey interface{}) (err error) {
- var recipient recipientKeyInfo
-
- switch alg {
- case DIRECT, ECDH_ES:
- return fmt.Errorf("square/go-jose: key algorithm '%s' not supported in multi-recipient mode", alg)
- }
-
- recipient, err = makeJWERecipient(alg, encryptionKey)
-
- if err == nil {
- ctx.recipients = append(ctx.recipients, recipient)
- }
- return err
-}
-
-func makeJWERecipient(alg KeyAlgorithm, encryptionKey interface{}) (recipientKeyInfo, error) {
- switch encryptionKey := encryptionKey.(type) {
- case *rsa.PublicKey:
- return newRSARecipient(alg, encryptionKey)
- case *ecdsa.PublicKey:
- return newECDHRecipient(alg, encryptionKey)
- case []byte:
- return newSymmetricRecipient(alg, encryptionKey)
- case *JsonWebKey:
- recipient, err := makeJWERecipient(alg, encryptionKey.Key)
- if err == nil && encryptionKey.KeyID != "" {
- recipient.keyID = encryptionKey.KeyID
- }
- return recipient, err
- default:
- return recipientKeyInfo{}, ErrUnsupportedKeyType
- }
-}
-
-// newDecrypter creates an appropriate decrypter based on the key type
-func newDecrypter(decryptionKey interface{}) (keyDecrypter, error) {
- switch decryptionKey := decryptionKey.(type) {
- case *rsa.PrivateKey:
- return &rsaDecrypterSigner{
- privateKey: decryptionKey,
- }, nil
- case *ecdsa.PrivateKey:
- return &ecDecrypterSigner{
- privateKey: decryptionKey,
- }, nil
- case []byte:
- return &symmetricKeyCipher{
- key: decryptionKey,
- }, nil
- case *JsonWebKey:
- return newDecrypter(decryptionKey.Key)
- default:
- return nil, ErrUnsupportedKeyType
- }
-}
-
-// Implementation of encrypt method producing a JWE object.
-func (ctx *genericEncrypter) Encrypt(plaintext []byte) (*JsonWebEncryption, error) {
- return ctx.EncryptWithAuthData(plaintext, nil)
-}
-
-// Implementation of encrypt method producing a JWE object.
-func (ctx *genericEncrypter) EncryptWithAuthData(plaintext, aad []byte) (*JsonWebEncryption, error) {
- obj := &JsonWebEncryption{}
- obj.aad = aad
-
- obj.protected = &rawHeader{
- Enc: ctx.contentAlg,
- }
- obj.recipients = make([]recipientInfo, len(ctx.recipients))
-
- if len(ctx.recipients) == 0 {
- return nil, fmt.Errorf("square/go-jose: no recipients to encrypt to")
- }
-
- cek, headers, err := ctx.keyGenerator.genKey()
- if err != nil {
- return nil, err
- }
-
- obj.protected.merge(&headers)
-
- for i, info := range ctx.recipients {
- recipient, err := info.keyEncrypter.encryptKey(cek, info.keyAlg)
- if err != nil {
- return nil, err
- }
-
- recipient.header.Alg = string(info.keyAlg)
- if info.keyID != "" {
- recipient.header.Kid = info.keyID
- }
- obj.recipients[i] = recipient
- }
-
- if len(ctx.recipients) == 1 {
- // Move per-recipient headers into main protected header if there's
- // only a single recipient.
- obj.protected.merge(obj.recipients[0].header)
- obj.recipients[0].header = nil
- }
-
- if ctx.compressionAlg != NONE {
- plaintext, err = compress(ctx.compressionAlg, plaintext)
- if err != nil {
- return nil, err
- }
-
- obj.protected.Zip = ctx.compressionAlg
- }
-
- authData := obj.computeAuthData()
- parts, err := ctx.cipher.encrypt(cek, authData, plaintext)
- if err != nil {
- return nil, err
- }
-
- obj.iv = parts.iv
- obj.ciphertext = parts.ciphertext
- obj.tag = parts.tag
-
- return obj, nil
-}
-
-// Decrypt and validate the object and return the plaintext.
-func (obj JsonWebEncryption) Decrypt(decryptionKey interface{}) ([]byte, error) {
- headers := obj.mergedHeaders(nil)
-
- if len(headers.Crit) > 0 {
- return nil, fmt.Errorf("square/go-jose: unsupported crit header")
- }
-
- decrypter, err := newDecrypter(decryptionKey)
- if err != nil {
- return nil, err
- }
-
- cipher := getContentCipher(headers.Enc)
- if cipher == nil {
- return nil, fmt.Errorf("square/go-jose: unsupported enc value '%s'", string(headers.Enc))
- }
-
- generator := randomKeyGenerator{
- size: cipher.keySize(),
- }
-
- parts := &aeadParts{
- iv: obj.iv,
- ciphertext: obj.ciphertext,
- tag: obj.tag,
- }
-
- authData := obj.computeAuthData()
-
- var plaintext []byte
- for _, recipient := range obj.recipients {
- recipientHeaders := obj.mergedHeaders(&recipient)
-
- cek, err := decrypter.decryptKey(recipientHeaders, &recipient, generator)
- if err == nil {
- // Found a valid CEK -- let's try to decrypt.
- plaintext, err = cipher.decrypt(cek, authData, parts)
- if err == nil {
- break
- }
- }
- }
-
- if plaintext == nil {
- return nil, ErrCryptoFailure
- }
-
- // The "zip" header parameter may only be present in the protected header.
- if obj.protected.Zip != "" {
- plaintext, err = decompress(obj.protected.Zip, plaintext)
- }
-
- return plaintext, err
-}
diff --git a/vendor/github.com/square/go-jose/shared.go b/vendor/github.com/square/go-jose/shared.go
deleted file mode 100644
index 9d895a912cff..000000000000
--- a/vendor/github.com/square/go-jose/shared.go
+++ /dev/null
@@ -1,224 +0,0 @@
-/*-
- * Copyright 2014 Square Inc.
- *
- * 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 jose
-
-import (
- "crypto/elliptic"
- "errors"
- "fmt"
-)
-
-// KeyAlgorithm represents a key management algorithm.
-type KeyAlgorithm string
-
-// SignatureAlgorithm represents a signature (or MAC) algorithm.
-type SignatureAlgorithm string
-
-// ContentEncryption represents a content encryption algorithm.
-type ContentEncryption string
-
-// CompressionAlgorithm represents an algorithm used for plaintext compression.
-type CompressionAlgorithm string
-
-var (
- // ErrCryptoFailure represents an error in cryptographic primitive. This
- // occurs when, for example, a message had an invalid authentication tag or
- // could not be decrypted.
- ErrCryptoFailure = errors.New("square/go-jose: error in cryptographic primitive")
-
- // ErrUnsupportedAlgorithm indicates that a selected algorithm is not
- // supported. This occurs when trying to instantiate an encrypter for an
- // algorithm that is not yet implemented.
- ErrUnsupportedAlgorithm = errors.New("square/go-jose: unknown/unsupported algorithm")
-
- // ErrUnsupportedKeyType indicates that the given key type/format is not
- // supported. This occurs when trying to instantiate an encrypter and passing
- // it a key of an unrecognized type or with unsupported parameters, such as
- // an RSA private key with more than two primes.
- ErrUnsupportedKeyType = errors.New("square/go-jose: unsupported key type/format")
-
- // ErrNotSupported serialization of object is not supported. This occurs when
- // trying to compact-serialize an object which can't be represented in
- // compact form.
- ErrNotSupported = errors.New("square/go-jose: compact serialization not supported for object")
-
- // ErrUnprotectedNonce indicates that while parsing a JWS or JWE object, a
- // nonce header parameter was included in an unprotected header object.
- ErrUnprotectedNonce = errors.New("square/go-jose: Nonce parameter included in unprotected header")
-)
-
-// Key management algorithms
-const (
- RSA1_5 = KeyAlgorithm("RSA1_5") // RSA-PKCS1v1.5
- RSA_OAEP = KeyAlgorithm("RSA-OAEP") // RSA-OAEP-SHA1
- RSA_OAEP_256 = KeyAlgorithm("RSA-OAEP-256") // RSA-OAEP-SHA256
- A128KW = KeyAlgorithm("A128KW") // AES key wrap (128)
- A192KW = KeyAlgorithm("A192KW") // AES key wrap (192)
- A256KW = KeyAlgorithm("A256KW") // AES key wrap (256)
- DIRECT = KeyAlgorithm("dir") // Direct encryption
- ECDH_ES = KeyAlgorithm("ECDH-ES") // ECDH-ES
- ECDH_ES_A128KW = KeyAlgorithm("ECDH-ES+A128KW") // ECDH-ES + AES key wrap (128)
- ECDH_ES_A192KW = KeyAlgorithm("ECDH-ES+A192KW") // ECDH-ES + AES key wrap (192)
- ECDH_ES_A256KW = KeyAlgorithm("ECDH-ES+A256KW") // ECDH-ES + AES key wrap (256)
- A128GCMKW = KeyAlgorithm("A128GCMKW") // AES-GCM key wrap (128)
- A192GCMKW = KeyAlgorithm("A192GCMKW") // AES-GCM key wrap (192)
- A256GCMKW = KeyAlgorithm("A256GCMKW") // AES-GCM key wrap (256)
- PBES2_HS256_A128KW = KeyAlgorithm("PBES2-HS256+A128KW") // PBES2 + HMAC-SHA256 + AES key wrap (128)
- PBES2_HS384_A192KW = KeyAlgorithm("PBES2-HS384+A192KW") // PBES2 + HMAC-SHA384 + AES key wrap (192)
- PBES2_HS512_A256KW = KeyAlgorithm("PBES2-HS512+A256KW") // PBES2 + HMAC-SHA512 + AES key wrap (256)
-)
-
-// Signature algorithms
-const (
- HS256 = SignatureAlgorithm("HS256") // HMAC using SHA-256
- HS384 = SignatureAlgorithm("HS384") // HMAC using SHA-384
- HS512 = SignatureAlgorithm("HS512") // HMAC using SHA-512
- RS256 = SignatureAlgorithm("RS256") // RSASSA-PKCS-v1.5 using SHA-256
- RS384 = SignatureAlgorithm("RS384") // RSASSA-PKCS-v1.5 using SHA-384
- RS512 = SignatureAlgorithm("RS512") // RSASSA-PKCS-v1.5 using SHA-512
- ES256 = SignatureAlgorithm("ES256") // ECDSA using P-256 and SHA-256
- ES384 = SignatureAlgorithm("ES384") // ECDSA using P-384 and SHA-384
- ES512 = SignatureAlgorithm("ES512") // ECDSA using P-521 and SHA-512
- PS256 = SignatureAlgorithm("PS256") // RSASSA-PSS using SHA256 and MGF1-SHA256
- PS384 = SignatureAlgorithm("PS384") // RSASSA-PSS using SHA384 and MGF1-SHA384
- PS512 = SignatureAlgorithm("PS512") // RSASSA-PSS using SHA512 and MGF1-SHA512
-)
-
-// Content encryption algorithms
-const (
- A128CBC_HS256 = ContentEncryption("A128CBC-HS256") // AES-CBC + HMAC-SHA256 (128)
- A192CBC_HS384 = ContentEncryption("A192CBC-HS384") // AES-CBC + HMAC-SHA384 (192)
- A256CBC_HS512 = ContentEncryption("A256CBC-HS512") // AES-CBC + HMAC-SHA512 (256)
- A128GCM = ContentEncryption("A128GCM") // AES-GCM (128)
- A192GCM = ContentEncryption("A192GCM") // AES-GCM (192)
- A256GCM = ContentEncryption("A256GCM") // AES-GCM (256)
-)
-
-// Compression algorithms
-const (
- NONE = CompressionAlgorithm("") // No compression
- DEFLATE = CompressionAlgorithm("DEF") // DEFLATE (RFC 1951)
-)
-
-// rawHeader represents the JOSE header for JWE/JWS objects (used for parsing).
-type rawHeader struct {
- Alg string `json:"alg,omitempty"`
- Enc ContentEncryption `json:"enc,omitempty"`
- Zip CompressionAlgorithm `json:"zip,omitempty"`
- Crit []string `json:"crit,omitempty"`
- Apu *byteBuffer `json:"apu,omitempty"`
- Apv *byteBuffer `json:"apv,omitempty"`
- Epk *JsonWebKey `json:"epk,omitempty"`
- Iv *byteBuffer `json:"iv,omitempty"`
- Tag *byteBuffer `json:"tag,omitempty"`
- Jwk *JsonWebKey `json:"jwk,omitempty"`
- Kid string `json:"kid,omitempty"`
- Nonce string `json:"nonce,omitempty"`
-}
-
-// JoseHeader represents the read-only JOSE header for JWE/JWS objects.
-type JoseHeader struct {
- KeyID string
- JsonWebKey *JsonWebKey
- Algorithm string
- Nonce string
-}
-
-// sanitized produces a cleaned-up header object from the raw JSON.
-func (parsed rawHeader) sanitized() JoseHeader {
- return JoseHeader{
- KeyID: parsed.Kid,
- JsonWebKey: parsed.Jwk,
- Algorithm: parsed.Alg,
- Nonce: parsed.Nonce,
- }
-}
-
-// Merge headers from src into dst, giving precedence to headers from l.
-func (dst *rawHeader) merge(src *rawHeader) {
- if src == nil {
- return
- }
-
- if dst.Alg == "" {
- dst.Alg = src.Alg
- }
- if dst.Enc == "" {
- dst.Enc = src.Enc
- }
- if dst.Zip == "" {
- dst.Zip = src.Zip
- }
- if dst.Crit == nil {
- dst.Crit = src.Crit
- }
- if dst.Crit == nil {
- dst.Crit = src.Crit
- }
- if dst.Apu == nil {
- dst.Apu = src.Apu
- }
- if dst.Apv == nil {
- dst.Apv = src.Apv
- }
- if dst.Epk == nil {
- dst.Epk = src.Epk
- }
- if dst.Iv == nil {
- dst.Iv = src.Iv
- }
- if dst.Tag == nil {
- dst.Tag = src.Tag
- }
- if dst.Kid == "" {
- dst.Kid = src.Kid
- }
- if dst.Jwk == nil {
- dst.Jwk = src.Jwk
- }
- if dst.Nonce == "" {
- dst.Nonce = src.Nonce
- }
-}
-
-// Get JOSE name of curve
-func curveName(crv elliptic.Curve) (string, error) {
- switch crv {
- case elliptic.P256():
- return "P-256", nil
- case elliptic.P384():
- return "P-384", nil
- case elliptic.P521():
- return "P-521", nil
- default:
- return "", fmt.Errorf("square/go-jose: unsupported/unknown elliptic curve")
- }
-}
-
-// Get size of curve in bytes
-func curveSize(crv elliptic.Curve) int {
- bits := crv.Params().BitSize
-
- div := bits / 8
- mod := bits % 8
-
- if mod == 0 {
- return div
- }
-
- return div + 1
-}
diff --git a/vendor/github.com/square/go-jose/signing.go b/vendor/github.com/square/go-jose/signing.go
deleted file mode 100644
index c6ed2c92b1c8..000000000000
--- a/vendor/github.com/square/go-jose/signing.go
+++ /dev/null
@@ -1,218 +0,0 @@
-/*-
- * Copyright 2014 Square Inc.
- *
- * 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 jose
-
-import (
- "crypto/ecdsa"
- "crypto/rsa"
- "fmt"
-)
-
-// NonceSource represents a source of random nonces to go into JWS objects
-type NonceSource interface {
- Nonce() (string, error)
-}
-
-// Signer represents a signer which takes a payload and produces a signed JWS object.
-type Signer interface {
- Sign(payload []byte) (*JsonWebSignature, error)
- SetNonceSource(source NonceSource)
- SetEmbedJwk(embed bool)
-}
-
-// MultiSigner represents a signer which supports multiple recipients.
-type MultiSigner interface {
- Sign(payload []byte) (*JsonWebSignature, error)
- SetNonceSource(source NonceSource)
- SetEmbedJwk(embed bool)
- AddRecipient(alg SignatureAlgorithm, signingKey interface{}) error
-}
-
-type payloadSigner interface {
- signPayload(payload []byte, alg SignatureAlgorithm) (Signature, error)
-}
-
-type payloadVerifier interface {
- verifyPayload(payload []byte, signature []byte, alg SignatureAlgorithm) error
-}
-
-type genericSigner struct {
- recipients []recipientSigInfo
- nonceSource NonceSource
- embedJwk bool
-}
-
-type recipientSigInfo struct {
- sigAlg SignatureAlgorithm
- keyID string
- publicKey *JsonWebKey
- signer payloadSigner
-}
-
-// NewSigner creates an appropriate signer based on the key type
-func NewSigner(alg SignatureAlgorithm, signingKey interface{}) (Signer, error) {
- // NewMultiSigner never fails (currently)
- signer := NewMultiSigner()
-
- err := signer.AddRecipient(alg, signingKey)
- if err != nil {
- return nil, err
- }
-
- return signer, nil
-}
-
-// NewMultiSigner creates a signer for multiple recipients
-func NewMultiSigner() MultiSigner {
- return &genericSigner{
- recipients: []recipientSigInfo{},
- embedJwk: true,
- }
-}
-
-// newVerifier creates a verifier based on the key type
-func newVerifier(verificationKey interface{}) (payloadVerifier, error) {
- switch verificationKey := verificationKey.(type) {
- case *rsa.PublicKey:
- return &rsaEncrypterVerifier{
- publicKey: verificationKey,
- }, nil
- case *ecdsa.PublicKey:
- return &ecEncrypterVerifier{
- publicKey: verificationKey,
- }, nil
- case []byte:
- return &symmetricMac{
- key: verificationKey,
- }, nil
- case *JsonWebKey:
- return newVerifier(verificationKey.Key)
- default:
- return nil, ErrUnsupportedKeyType
- }
-}
-
-func (ctx *genericSigner) AddRecipient(alg SignatureAlgorithm, signingKey interface{}) error {
- recipient, err := makeJWSRecipient(alg, signingKey)
- if err != nil {
- return err
- }
-
- ctx.recipients = append(ctx.recipients, recipient)
- return nil
-}
-
-func makeJWSRecipient(alg SignatureAlgorithm, signingKey interface{}) (recipientSigInfo, error) {
- switch signingKey := signingKey.(type) {
- case *rsa.PrivateKey:
- return newRSASigner(alg, signingKey)
- case *ecdsa.PrivateKey:
- return newECDSASigner(alg, signingKey)
- case []byte:
- return newSymmetricSigner(alg, signingKey)
- case *JsonWebKey:
- recipient, err := makeJWSRecipient(alg, signingKey.Key)
- if err != nil {
- return recipientSigInfo{}, err
- }
- recipient.keyID = signingKey.KeyID
- return recipient, nil
- default:
- return recipientSigInfo{}, ErrUnsupportedKeyType
- }
-}
-
-func (ctx *genericSigner) Sign(payload []byte) (*JsonWebSignature, error) {
- obj := &JsonWebSignature{}
- obj.payload = payload
- obj.Signatures = make([]Signature, len(ctx.recipients))
-
- for i, recipient := range ctx.recipients {
- protected := &rawHeader{
- Alg: string(recipient.sigAlg),
- }
-
- if recipient.publicKey != nil && ctx.embedJwk {
- protected.Jwk = recipient.publicKey
- }
- if recipient.keyID != "" {
- protected.Kid = recipient.keyID
- }
-
- if ctx.nonceSource != nil {
- nonce, err := ctx.nonceSource.Nonce()
- if err != nil {
- return nil, fmt.Errorf("square/go-jose: Error generating nonce: %v", err)
- }
- protected.Nonce = nonce
- }
-
- serializedProtected := mustSerializeJSON(protected)
-
- input := []byte(fmt.Sprintf("%s.%s",
- base64URLEncode(serializedProtected),
- base64URLEncode(payload)))
-
- signatureInfo, err := recipient.signer.signPayload(input, recipient.sigAlg)
- if err != nil {
- return nil, err
- }
-
- signatureInfo.protected = protected
- obj.Signatures[i] = signatureInfo
- }
-
- return obj, nil
-}
-
-// SetNonceSource provides or updates a nonce pool to the first recipients.
-// After this method is called, the signer will consume one nonce per
-// signature, returning an error it is unable to get a nonce.
-func (ctx *genericSigner) SetNonceSource(source NonceSource) {
- ctx.nonceSource = source
-}
-
-// SetEmbedJwk specifies if the signing key should be embedded in the protected header,
-// if any. It defaults to 'true'.
-func (ctx *genericSigner) SetEmbedJwk(embed bool) {
- ctx.embedJwk = embed
-}
-
-// Verify validates the signature on the object and returns the payload.
-func (obj JsonWebSignature) Verify(verificationKey interface{}) ([]byte, error) {
- verifier, err := newVerifier(verificationKey)
- if err != nil {
- return nil, err
- }
-
- for _, signature := range obj.Signatures {
- headers := signature.mergedHeaders()
- if len(headers.Crit) > 0 {
- // Unsupported crit header
- continue
- }
-
- input := obj.computeAuthData(&signature)
- alg := SignatureAlgorithm(headers.Alg)
- err := verifier.verifyPayload(input, signature.Signature, alg)
- if err == nil {
- return obj.payload, nil
- }
- }
-
- return nil, ErrCryptoFailure
-}
diff --git a/vendor/github.com/square/go-jose/utils.go b/vendor/github.com/square/go-jose/utils.go
deleted file mode 100644
index 4ca2bc06bae7..000000000000
--- a/vendor/github.com/square/go-jose/utils.go
+++ /dev/null
@@ -1,74 +0,0 @@
-/*-
- * Copyright 2014 Square Inc.
- *
- * 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 jose
-
-import (
- "crypto/x509"
- "encoding/pem"
- "fmt"
-)
-
-// LoadPublicKey loads a public key from PEM/DER-encoded data.
-func LoadPublicKey(data []byte) (interface{}, error) {
- input := data
-
- block, _ := pem.Decode(data)
- if block != nil {
- input = block.Bytes
- }
-
- // Try to load SubjectPublicKeyInfo
- pub, err0 := x509.ParsePKIXPublicKey(input)
- if err0 == nil {
- return pub, nil
- }
-
- cert, err1 := x509.ParseCertificate(input)
- if err1 == nil {
- return cert.PublicKey, nil
- }
-
- return nil, fmt.Errorf("square/go-jose: parse error, got '%s' and '%s'", err0, err1)
-}
-
-// LoadPrivateKey loads a private key from PEM/DER-encoded data.
-func LoadPrivateKey(data []byte) (interface{}, error) {
- input := data
-
- block, _ := pem.Decode(data)
- if block != nil {
- input = block.Bytes
- }
-
- var priv interface{}
- priv, err0 := x509.ParsePKCS1PrivateKey(input)
- if err0 == nil {
- return priv, nil
- }
-
- priv, err1 := x509.ParsePKCS8PrivateKey(input)
- if err1 == nil {
- return priv, nil
- }
-
- priv, err2 := x509.ParseECPrivateKey(input)
- if err2 == nil {
- return priv, nil
- }
-
- return nil, fmt.Errorf("square/go-jose: parse error, got '%s', '%s' and '%s'", err0, err1, err2)
-}
diff --git a/vendor/github.com/storageos/go-api/README.md b/vendor/github.com/storageos/go-api/README.md
index 15869239da2e..15ebd60eb05e 100644
--- a/vendor/github.com/storageos/go-api/README.md
+++ b/vendor/github.com/storageos/go-api/README.md
@@ -1,2 +1,5 @@
# StorageOS API client library
+## Swagger Spec
+Swagger specification for this repo is available in the [StorageOS public documentation](https://github.com/storageos/storageos.github.io/blob/master/swagger.yaml).
+
diff --git a/vendor/github.com/storageos/go-api/client.go b/vendor/github.com/storageos/go-api/client.go
index 2b0b2fbb5762..5be9924f3dce 100644
--- a/vendor/github.com/storageos/go-api/client.go
+++ b/vendor/github.com/storageos/go-api/client.go
@@ -4,16 +4,16 @@ import (
"bytes"
"context"
"crypto/tls"
- "crypto/x509"
"encoding/json"
"errors"
"fmt"
+ "github.com/storageos/go-api/netutil"
+ "github.com/storageos/go-api/serror"
"io"
"io/ioutil"
"net"
"net/http"
"net/url"
- "os"
"reflect"
"strconv"
"strings"
@@ -22,17 +22,11 @@ import (
const (
userAgent = "go-storageosclient"
- unixProtocol = "unix"
- namedPipeProtocol = "npipe"
DefaultVersionStr = "1"
DefaultVersion = 1
- defaultNamespace = "default"
)
var (
- // ErrInvalidEndpoint is returned when the endpoint is not a valid HTTP URL.
- ErrInvalidEndpoint = errors.New("invalid endpoint")
-
// ErrConnectionRefused is returned when the client cannot connect to the given endpoint.
ErrConnectionRefused = errors.New("cannot connect to StorageOS API endpoint")
@@ -42,8 +36,14 @@ var (
// ErrInvalidVersion is returned when a versioned client was requested but no version specified.
ErrInvalidVersion = errors.New("invalid version")
+ // DefaultPort is the default API port
+ DefaultPort = "5705"
+
+ // DataplaneHealthPort is the the port used by the dataplane health-check service
+ DataplaneHealthPort = "5704"
+
// DefaultHost is the default API host
- DefaultHost = "tcp://localhost:5705"
+ DefaultHost = "tcp://localhost:" + DefaultPort
)
// APIVersion is an internal representation of a version of the Remote API.
@@ -73,15 +73,13 @@ type Client struct {
SkipServerVersionCheck bool
HTTPClient *http.Client
TLSConfig *tls.Config
- Dialer Dialer
- endpoint string
- endpointURL *url.URL
username string
secret string
requestedAPIVersion APIVersion
serverAPIVersion APIVersion
expectedAPIVersion APIVersion
nativeHTTPClient *http.Client
+ useTLS bool
}
// ClientVersion returns the API version of the client
@@ -99,20 +97,8 @@ type Dialer interface {
// NewClient returns a Client instance ready for communication with the given
// server endpoint. It will use the latest remote API version available in the
// server.
-func NewClient(endpoint string) (*Client, error) {
- client, err := NewVersionedClient(endpoint, "")
- if err != nil {
- return nil, err
- }
- client.SkipServerVersionCheck = true
- return client, nil
-}
-
-// NewTLSClient returns a Client instance ready for TLS communications with the given
-// server endpoint, key and certificates . It will use the latest remote API version
-// available in the server.
-func NewTLSClient(endpoint string, cert, key, ca string) (*Client, error) {
- client, err := NewVersionedTLSClient(endpoint, cert, key, ca, "")
+func NewClient(nodes string) (*Client, error) {
+ client, err := NewVersionedClient(nodes, "")
if err != nil {
return nil, err
}
@@ -122,95 +108,24 @@ func NewTLSClient(endpoint string, cert, key, ca string) (*Client, error) {
// NewVersionedClient returns a Client instance ready for communication with
// the given server endpoint, using a specific remote API version.
-func NewVersionedClient(endpoint string, apiVersionString string) (*Client, error) {
- u, err := parseEndpoint(endpoint, false)
- if err != nil {
- return nil, err
- }
-
- c := &Client{
- HTTPClient: defaultClient(),
- Dialer: &net.Dialer{},
- endpoint: endpoint,
- endpointURL: u,
- }
-
- if apiVersionString != "" {
- version, err := strconv.Atoi(apiVersionString)
- if err != nil {
- return nil, err
- }
- c.requestedAPIVersion = APIVersion(version)
- }
+func NewVersionedClient(nodestring string, apiVersionString string) (*Client, error) {
+ nodes := strings.Split(nodestring, ",")
- c.initializeNativeClient()
- return c, nil
-}
-
-// NewVersionedTLSClient returns a Client instance ready for TLS communications with the givens
-// server endpoint, key and certificates, using a specific remote API version.
-func NewVersionedTLSClient(endpoint string, cert, key, ca, apiVersionString string) (*Client, error) {
- var certPEMBlock []byte
- var keyPEMBlock []byte
- var caPEMCert []byte
- if _, err := os.Stat(cert); !os.IsNotExist(err) {
- certPEMBlock, err = ioutil.ReadFile(cert)
- if err != nil {
- return nil, err
- }
- }
- if _, err := os.Stat(key); !os.IsNotExist(err) {
- keyPEMBlock, err = ioutil.ReadFile(key)
- if err != nil {
- return nil, err
- }
- }
- if _, err := os.Stat(ca); !os.IsNotExist(err) {
- caPEMCert, err = ioutil.ReadFile(ca)
- if err != nil {
- return nil, err
- }
- }
- return NewVersionedTLSClientFromBytes(endpoint, certPEMBlock, keyPEMBlock, caPEMCert, apiVersionString)
-}
-
-// NewVersionedTLSClientFromBytes returns a Client instance ready for TLS communications with the givens
-// server endpoint, key and certificates (passed inline to the function as opposed to being
-// read from a local file), using a specific remote API version.
-func NewVersionedTLSClientFromBytes(endpoint string, certPEMBlock, keyPEMBlock, caPEMCert []byte, apiVersionString string) (*Client, error) {
- u, err := parseEndpoint(endpoint, true)
+ d, err := netutil.NewMultiDialer(nodes, nil)
if err != nil {
return nil, err
}
- tlsConfig := &tls.Config{}
- if certPEMBlock != nil && keyPEMBlock != nil {
- tlsCert, err := tls.X509KeyPair(certPEMBlock, keyPEMBlock)
- if err != nil {
- return nil, err
- }
- tlsConfig.Certificates = []tls.Certificate{tlsCert}
- }
- if caPEMCert == nil {
- tlsConfig.InsecureSkipVerify = true
- } else {
- caPool := x509.NewCertPool()
- if !caPool.AppendCertsFromPEM(caPEMCert) {
- return nil, errors.New("Could not add RootCA pem")
+ var useTLS bool
+ if len(nodes) > 0 {
+ if u, err := url.Parse(nodes[0]); err != nil && u.Scheme == "https" {
+ useTLS = true
}
- tlsConfig.RootCAs = caPool
- }
- tr := defaultTransport()
- tr.TLSClientConfig = tlsConfig
- if err != nil {
- return nil, err
}
+
c := &Client{
- HTTPClient: &http.Client{Transport: tr},
- TLSConfig: tlsConfig,
- Dialer: &net.Dialer{},
- endpoint: endpoint,
- endpointURL: u,
+ HTTPClient: defaultClient(d),
+ useTLS: useTLS,
}
if apiVersionString != "" {
@@ -221,7 +136,6 @@ func NewVersionedTLSClientFromBytes(endpoint string, certPEMBlock, keyPEMBlock,
c.requestedAPIVersion = APIVersion(version)
}
- c.initializeNativeClient()
return c, nil
}
@@ -265,13 +179,6 @@ func (c *Client) checkAPIVersion() error {
return nil
}
-// Endpoint returns the current endpoint. It's useful for getting the endpoint
-// when using functions that get this data from the environment (like
-// NewClientFromEnv.
-func (c *Client) Endpoint() string {
- return c.endpoint
-}
-
// Ping pings the API server
//
// See https://goo.gl/wYfgY1 for more details.
@@ -341,15 +248,7 @@ func (c *Client) do(method, urlpath string, doOptions doOptions) (*http.Response
}
httpClient := c.HTTPClient
- protocol := c.endpointURL.Scheme
- var u string
- switch protocol {
- case unixProtocol, namedPipeProtocol:
- httpClient = c.nativeHTTPClient
- u = c.getFakeNativeURL(urlpath, doOptions.unversioned)
- default:
- u = c.getAPIPath(urlpath, query, doOptions.unversioned)
- }
+ u := c.getAPIPath(urlpath, query, doOptions.unversioned)
req, err := http.NewRequest(method, u, params)
if err != nil {
@@ -376,6 +275,11 @@ func (c *Client) do(method, urlpath string, doOptions doOptions) (*http.Response
resp, err := httpClient.Do(req.WithContext(ctx))
if err != nil {
+ // If it is a custom error, return it. It probably knows more than us
+ if serror.IsStorageOSError(err) {
+ return nil, err
+ }
+
if strings.Contains(err.Error(), "connection refused") {
return nil, ErrConnectionRefused
}
@@ -397,27 +301,18 @@ func chooseError(ctx context.Context, err error) error {
}
}
-func (c *Client) getURL(path string, unversioned bool) string {
-
- urlStr := strings.TrimRight(c.endpointURL.String(), "/")
- path = strings.TrimLeft(path, "/")
- if c.endpointURL.Scheme == unixProtocol || c.endpointURL.Scheme == namedPipeProtocol {
- urlStr = ""
- }
- if unversioned {
- return fmt.Sprintf("%s/%s", urlStr, path)
+func (c *Client) getAPIPath(path string, query url.Values, unversioned bool) string {
+ // The custom dialer contacts the hosts for us, making this hosname irrelevant
+ var urlStr string
+ if c.useTLS {
+ urlStr = "https://storageos-cluster"
+ } else {
+ urlStr = "http://storageos-cluster"
}
- return fmt.Sprintf("%s/%s/%s", urlStr, c.requestedAPIVersion, path)
-}
-
-func (c *Client) getAPIPath(path string, query url.Values, unversioned bool) string {
var apiPath string
- urlStr := strings.TrimRight(c.endpointURL.String(), "/")
+
path = strings.TrimLeft(path, "/")
- if c.endpointURL.Scheme == unixProtocol || c.endpointURL.Scheme == namedPipeProtocol {
- urlStr = ""
- }
if unversioned {
apiPath = fmt.Sprintf("%s/%s", urlStr, path)
} else {
@@ -431,30 +326,6 @@ func (c *Client) getAPIPath(path string, query url.Values, unversioned bool) str
return apiPath
}
-// getFakeNativeURL returns the URL needed to make an HTTP request over a UNIX
-// domain socket to the given path.
-func (c *Client) getFakeNativeURL(path string, unversioned bool) string {
- u := *c.endpointURL // Copy.
-
- // Override URL so that net/http will not complain.
- u.Scheme = "http"
- u.Host = "unix.sock" // Doesn't matter what this is - it's not used.
- u.Path = ""
- urlStr := strings.TrimRight(u.String(), "/")
- path = strings.TrimLeft(path, "/")
- if unversioned {
- return fmt.Sprintf("%s/%s", urlStr, path)
- }
- return fmt.Sprintf("%s/%s/%s", urlStr, c.requestedAPIVersion, path)
-}
-
-type jsonMessage struct {
- Status string `json:"status,omitempty"`
- Progress string `json:"progress,omitempty"`
- Error string `json:"error,omitempty"`
- Stream string `json:"stream,omitempty"`
-}
-
func queryString(opts interface{}) string {
if opts == nil {
return ""
@@ -530,63 +401,50 @@ type Error struct {
}
func newError(resp *http.Response) *Error {
+ type jsonError struct {
+ Message string `json:"message"`
+ }
+
defer resp.Body.Close()
data, err := ioutil.ReadAll(resp.Body)
if err != nil {
return &Error{Status: resp.StatusCode, Message: fmt.Sprintf("cannot read body, err: %v", err)}
}
- return &Error{Status: resp.StatusCode, Message: string(data)}
+
+ // attempt to unmarshal the error if in json format
+ jerr := &jsonError{}
+ err = json.Unmarshal(data, jerr)
+ if err != nil {
+ return &Error{Status: resp.StatusCode, Message: string(data)} // Failed, just return string
+ }
+
+ return &Error{Status: resp.StatusCode, Message: jerr.Message}
}
func (e *Error) Error() string {
- return fmt.Sprintf("API error (%d): %s", e.Status, e.Message)
-}
+ var niceStatus string
-func parseEndpoint(endpoint string, tls bool) (*url.URL, error) {
- if endpoint != "" && !strings.Contains(endpoint, "://") {
- endpoint = "tcp://" + endpoint
- }
- u, err := url.Parse(endpoint)
- if err != nil {
- return nil, ErrInvalidEndpoint
- }
- if tls && u.Scheme != "unix" {
- u.Scheme = "https"
+ switch e.Status {
+ case 400, 500:
+ niceStatus = "Server failed to process your request. Was the data correct?"
+ case 401:
+ niceStatus = "Unauthenticated access of secure endpoint, please retry after authentication"
+ case 403:
+ niceStatus = "Forbidden request. Your user cannot perform this action"
+ case 404:
+ niceStatus = "Requested object not found. Does this item exist?"
}
- switch u.Scheme {
- case unixProtocol, namedPipeProtocol:
- return u, nil
- case "http", "https", "tcp":
- _, port, err := net.SplitHostPort(u.Host)
- if err != nil {
- if e, ok := err.(*net.AddrError); ok {
- if e.Err == "missing port in address" {
- return u, nil
- }
- }
- return nil, ErrInvalidEndpoint
- }
- number, err := strconv.ParseInt(port, 10, 64)
- if err == nil && number > 0 && number < 65536 {
- if u.Scheme == "tcp" {
- if tls {
- u.Scheme = "https"
- } else {
- u.Scheme = "http"
- }
- }
- return u, nil
- }
- return nil, ErrInvalidEndpoint
- default:
- return nil, ErrInvalidEndpoint
+
+ if niceStatus != "" {
+ return fmt.Sprintf("API error (%s): %s", niceStatus, e.Message)
}
+ return fmt.Sprintf("API error (%s): %s", http.StatusText(e.Status), e.Message)
}
// defaultTransport returns a new http.Transport with the same default values
// as http.DefaultTransport, but with idle connections and keepalives disabled.
-func defaultTransport() *http.Transport {
- transport := defaultPooledTransport()
+func defaultTransport(d Dialer) *http.Transport {
+ transport := defaultPooledTransport(d)
transport.DisableKeepAlives = true
transport.MaxIdleConnsPerHost = -1
return transport
@@ -596,14 +454,11 @@ func defaultTransport() *http.Transport {
// values to http.DefaultTransport. Do not use this for transient transports as
// it can leak file descriptors over time. Only use this for transports that
// will be re-used for the same host(s).
-func defaultPooledTransport() *http.Transport {
+func defaultPooledTransport(d Dialer) *http.Transport {
transport := &http.Transport{
- Proxy: http.ProxyFromEnvironment,
- Dial: (&net.Dialer{
- Timeout: 30 * time.Second,
- KeepAlive: 30 * time.Second,
- }).Dial,
- TLSHandshakeTimeout: 10 * time.Second,
+ Proxy: http.ProxyFromEnvironment,
+ Dial: d.Dial,
+ TLSHandshakeTimeout: 5 * time.Second,
DisableKeepAlives: false,
MaxIdleConnsPerHost: 1,
}
@@ -613,8 +468,16 @@ func defaultPooledTransport() *http.Transport {
// defaultClient returns a new http.Client with similar default values to
// http.Client, but with a non-shared Transport, idle connections disabled, and
// keepalives disabled.
-func defaultClient() *http.Client {
+// If a custom dialer is not provided, one with sane defaults will be created.
+func defaultClient(d Dialer) *http.Client {
+ if d == nil {
+ d = &net.Dialer{
+ Timeout: 5 * time.Second,
+ KeepAlive: 5 * time.Second,
+ }
+ }
+
return &http.Client{
- Transport: defaultTransport(),
+ Transport: defaultTransport(d),
}
}
diff --git a/vendor/github.com/storageos/go-api/client_unix.go b/vendor/github.com/storageos/go-api/client_unix.go
deleted file mode 100644
index 07eb65120e16..000000000000
--- a/vendor/github.com/storageos/go-api/client_unix.go
+++ /dev/null
@@ -1,25 +0,0 @@
-// +build !windows
-// Copyright 2016 go-dockerclient authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package storageos
-
-import (
- "net"
- "net/http"
-)
-
-// initializeNativeClient initializes the native Unix domain socket client on
-// Unix-style operating systems
-func (c *Client) initializeNativeClient() {
- if c.endpointURL.Scheme != unixProtocol {
- return
- }
- socketPath := c.endpointURL.Path
- tr := defaultTransport()
- tr.Dial = func(network, addr string) (net.Conn, error) {
- return c.Dialer.Dial(unixProtocol, socketPath)
- }
- c.nativeHTTPClient = &http.Client{Transport: tr}
-}
diff --git a/vendor/github.com/storageos/go-api/client_windows.go b/vendor/github.com/storageos/go-api/client_windows.go
deleted file mode 100644
index 7951463a3145..000000000000
--- a/vendor/github.com/storageos/go-api/client_windows.go
+++ /dev/null
@@ -1,40 +0,0 @@
-// +build windows
-// Copyright 2016 go-dockerclient authors. All rights reserved.
-// Use of this source code is governed by a BSD-style
-// license that can be found in the LICENSE file.
-
-package storageos
-
-import (
- "net"
- "net/http"
- "time"
-
- "github.com/Microsoft/go-winio"
-)
-
-const namedPipeConnectTimeout = 2 * time.Second
-
-type pipeDialer struct {
- dialFunc func(network, addr string) (net.Conn, error)
-}
-
-func (p pipeDialer) Dial(network, address string) (net.Conn, error) {
- return p.dialFunc(network, address)
-}
-
-// initializeNativeClient initializes the native Named Pipe client for Windows
-func (c *Client) initializeNativeClient() {
- if c.endpointURL.Scheme != namedPipeProtocol {
- return
- }
- namedPipePath := c.endpointURL.Path
- dialFunc := func(network, addr string) (net.Conn, error) {
- timeout := namedPipeConnectTimeout
- return winio.DialPipe(namedPipePath, &timeout)
- }
- tr := defaultTransport()
- tr.Dial = dialFunc
- c.Dialer = &pipeDialer{dialFunc}
- c.nativeHTTPClient = &http.Client{Transport: tr}
-}
diff --git a/vendor/github.com/storageos/go-api/controller.go b/vendor/github.com/storageos/go-api/controller.go
index 1d8e0bfee676..1b4f9ea12893 100644
--- a/vendor/github.com/storageos/go-api/controller.go
+++ b/vendor/github.com/storageos/go-api/controller.go
@@ -26,7 +26,6 @@ func (c *Client) ControllerList(opts types.ListOptions) ([]*types.Controller, er
listOpts := doOptions{
fieldSelector: opts.FieldSelector,
labelSelector: opts.LabelSelector,
- namespace: opts.Namespace,
context: opts.Context,
}
diff --git a/vendor/github.com/storageos/go-api/health.go b/vendor/github.com/storageos/go-api/health.go
new file mode 100644
index 000000000000..f4a37807d59b
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/health.go
@@ -0,0 +1,71 @@
+package storageos
+
+import (
+ "context"
+ "encoding/json"
+ "fmt"
+ "net/http"
+
+ "github.com/storageos/go-api/types"
+)
+
+var (
+ // HealthAPIPrefix is a partial path to the HTTP endpoint.
+ HealthAPIPrefix = "health"
+)
+
+// CPHealth returns the health of the control plane server at a given url.
+func (c *Client) CPHealth(ctx context.Context, hostname string) (*types.CPHealthStatus, error) {
+
+ url := fmt.Sprintf("http://%s:%s/v1/%s", hostname, DefaultPort, HealthAPIPrefix)
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ req.Header.Set("User-Agent", userAgent)
+ if c.username != "" && c.secret != "" {
+ req.SetBasicAuth(c.username, c.secret)
+ }
+
+ resp, err := c.HTTPClient.Do(req.WithContext(ctx))
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ var status *types.CPHealthStatus
+ if err := json.NewDecoder(resp.Body).Decode(&status); err != nil {
+ return nil, err
+ }
+
+ return status, nil
+}
+
+// DPHealth returns the health of the data plane server at a given url.
+func (c *Client) DPHealth(ctx context.Context, hostname string) (*types.DPHealthStatus, error) {
+
+ url := fmt.Sprintf("http://%s:%s/v1/%s", hostname, DataplaneHealthPort, HealthAPIPrefix)
+ req, err := http.NewRequest("GET", url, nil)
+ if err != nil {
+ return nil, err
+ }
+
+ req.Header.Set("User-Agent", userAgent)
+ if c.username != "" && c.secret != "" {
+ req.SetBasicAuth(c.username, c.secret)
+ }
+
+ resp, err := c.HTTPClient.Do(req.WithContext(ctx))
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ var status *types.DPHealthStatus
+ if err := json.NewDecoder(resp.Body).Decode(&status); err != nil {
+ return nil, err
+ }
+
+ return status, nil
+}
diff --git a/vendor/github.com/storageos/go-api/logger.go b/vendor/github.com/storageos/go-api/logger.go
new file mode 100644
index 000000000000..6db812312638
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/logger.go
@@ -0,0 +1,62 @@
+package storageos
+
+import (
+ "context"
+ "encoding/json"
+ "net/url"
+
+ "github.com/storageos/go-api/types"
+)
+
+var (
+ // LoggerAPIPrefix is a partial path to the HTTP endpoint.
+ LoggerAPIPrefix = "logs"
+)
+
+// LoggerConfig returns every cluster node's logging configuration.
+func (c *Client) LoggerConfig(opts types.ListOptions) ([]*types.Logger, error) {
+
+ listOpts := doOptions{
+ fieldSelector: opts.FieldSelector,
+ labelSelector: opts.LabelSelector,
+ context: opts.Context,
+ }
+
+ if opts.LabelSelector != "" {
+ query := url.Values{}
+ query.Add("labelSelector", opts.LabelSelector)
+ listOpts.values = query
+ }
+
+ resp, err := c.do("GET", LoggerAPIPrefix+"/cluster/config", listOpts)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+ var loggers []*types.Logger
+ if err := json.NewDecoder(resp.Body).Decode(&loggers); err != nil {
+ return nil, err
+ }
+ return loggers, nil
+
+}
+
+// LoggerUpdate patches updates to logging configuration. Fields to update must
+// be listed in the Fields value, and if a list of Nodes is given it will only
+// apply to the nodes listed. Returns the updated configuration.
+func (c *Client) LoggerUpdate(opts types.LoggerUpdateOptions) ([]*types.Logger, error) {
+
+ resp, err := c.do("PATCH", LoggerAPIPrefix+"/cluster/config", doOptions{
+ data: opts,
+ context: context.Background(),
+ })
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+ var loggers []*types.Logger
+ if err := json.NewDecoder(resp.Body).Decode(&loggers); err != nil {
+ return nil, err
+ }
+ return loggers, nil
+}
diff --git a/vendor/github.com/storageos/go-api/login.go b/vendor/github.com/storageos/go-api/login.go
new file mode 100644
index 000000000000..31b0a471f928
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/login.go
@@ -0,0 +1,46 @@
+package storageos
+
+import (
+ "encoding/json"
+ "errors"
+)
+
+var (
+ // LoginAPIPrefix is a partial path to the HTTP endpoint.
+ LoginAPIPrefix = "auth/login"
+ ErrLoginFailed = errors.New("Failed to get token from API endpoint")
+)
+
+// Login attemps to get a token from the API
+func (c *Client) Login() (token string, err error) {
+ resp, err := c.do("POST", LoginAPIPrefix, doOptions{data: struct {
+ User string `json:"username"`
+ Pass string `json:"password"`
+ }{c.username, c.secret}})
+
+ if err != nil {
+ if _, ok := err.(*Error); ok {
+ return "", ErrLoginFailed
+ }
+
+ return "", err
+ }
+
+ if resp.StatusCode != 200 {
+ return "", ErrLoginFailed
+ }
+
+ unmarsh := struct {
+ Token string `json:"token"`
+ }{}
+
+ if err := json.NewDecoder(resp.Body).Decode(&unmarsh); err != nil {
+ return "", err
+ }
+
+ if unmarsh.Token == "" {
+ return "", ErrLoginFailed
+ }
+
+ return unmarsh.Token, nil
+}
diff --git a/vendor/github.com/storageos/go-api/netutil/errors.go b/vendor/github.com/storageos/go-api/netutil/errors.go
new file mode 100644
index 000000000000..245001e72c5d
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/netutil/errors.go
@@ -0,0 +1,26 @@
+package netutil
+
+import (
+ "errors"
+ "fmt"
+ "github.com/storageos/go-api/serror"
+ "strings"
+)
+
+func errAllFailed(addrs []string) error {
+ msg := fmt.Sprintf("failed to dial all known cluster members, (%s)", strings.Join(addrs, ","))
+ help := "ensure that the value of $STORAGEOS_HOST (or the -H flag) is correct, and that there are healthy StorageOS nodes in this cluster"
+
+ return serror.NewTypedStorageOSError(serror.APIUncontactable, nil, msg, help)
+}
+
+func newInvalidNodeError(err error) error {
+ msg := fmt.Sprintf("invalid node format: %s", err)
+ help := "please check the format of $STORAGEOS_HOST (or the -H flag) complies with the StorageOS JOIN format"
+
+ return serror.NewTypedStorageOSError(serror.InvalidHostConfig, err, msg, help)
+}
+
+var errNoAddresses = errors.New("the MultiDialer instance has not been initialised with client addresses")
+var errUnsupportedScheme = errors.New("unsupported URL scheme")
+var errInvalidPortNumber = errors.New("invalid port number")
diff --git a/vendor/github.com/storageos/go-api/netutil/multidialer.go b/vendor/github.com/storageos/go-api/netutil/multidialer.go
new file mode 100644
index 000000000000..30a8226b1375
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/netutil/multidialer.go
@@ -0,0 +1,109 @@
+package netutil
+
+import (
+ "context"
+ "math/rand"
+ "net"
+ "time"
+)
+
+var DefaultDialPort = "5705"
+
+func init() {
+ rand.Seed(time.Now().UnixNano())
+}
+
+// Dialer is an interface that matches *net.Dialer. The intention is to allow either the stdlib
+// dialer or a custom implementation to be passed to the MultiDialer constructor. This also makes
+// the component easier to test.
+type Dialer interface {
+ DialContext(context.Context, string, string) (net.Conn, error)
+}
+
+// MultiDialer is a custom net Dialer (to be used in a net.Transport field) that attemps to dial
+// out to any (potentialy many) of a set of pre-defined addresses. The intended use of this
+// function is to extend the functionality of the stdlib http.Client to transparently support
+// requests to any member of a given storageos cluster.
+type MultiDialer struct {
+ Addresses []string
+ Dialer *net.Dialer
+}
+
+// NewMultiDialer returns a new MultiDialer instance, configured to dial out to the given set of
+// nodes. Nodes can be provided using a URL format (e.g. http://google.com:80), or a host-port pair
+// (e.g. localhost:4567).
+//
+// If a port number is omitted, the value of DefaultDialPort is used.
+// Given hostnames are resolved to IP addresses, and IP addresses are used verbatim.
+//
+// If called with a non-nil dialer, the MultiDialer instance will use this for internall dial
+// requests. If this value is nil, the function will initialise one with sane defaults.
+func NewMultiDialer(nodes []string, dialer *net.Dialer) (*MultiDialer, error) {
+ // If a dialer is not provided, initialise one with sane defaults
+ if dialer == nil {
+ dialer = &net.Dialer{
+ Timeout: 5 * time.Second,
+ KeepAlive: 5 * time.Second,
+ }
+ }
+
+ addrs, err := addrsFromNodes(nodes)
+ if err != nil {
+ return nil, err
+ }
+
+ return &MultiDialer{
+ Addresses: addrs,
+ Dialer: dialer,
+ }, nil
+}
+
+// DialContext will dial each of the MultiDialer's internal addresses in a random order until one
+// successfully returns a connection, it has run out of addresses (returning ErrAllFailed), or the
+// given context has been closed.
+//
+// Due to the intrinsic behaviour of this function, any address passed to this function will be
+// ignored.
+func (m *MultiDialer) DialContext(ctx context.Context, network, ignoredAddress string) (net.Conn, error) {
+ if len(m.Addresses) == 0 {
+ return nil, newInvalidNodeError(errNoAddresses)
+ }
+
+ // Shuffle a copy of the addresses (for even load balancing)
+ addrs := make([]string, len(m.Addresses))
+ copy(addrs, m.Addresses)
+
+ // Fisher–Yates shuffle algorithm
+ for i := len(addrs) - 1; i > 0; i-- {
+ j := rand.Intn(i + 1)
+ addrs[i], addrs[j] = addrs[j], addrs[i]
+ }
+
+ // Try to dial each of these addresses in turn, or return on closed context
+ for _, addr := range addrs {
+ select {
+ case <-ctx.Done():
+ return nil, ctx.Err()
+
+ default:
+ // Create new child context for a single dial
+ dctx, cancel := context.WithTimeout(ctx, time.Second)
+ defer cancel()
+
+ conn, err := m.Dialer.DialContext(dctx, network, addr)
+ if err != nil {
+ continue
+ }
+
+ return conn, nil
+ }
+ }
+
+ // We failed to dail all of the addresses we have
+ return nil, errAllFailed(m.Addresses)
+}
+
+// Dial returns the result of a call to m.DialContext passing in the background context
+func (m *MultiDialer) Dial(network, addr string) (net.Conn, error) {
+ return m.DialContext(context.Background(), network, addr)
+}
diff --git a/vendor/github.com/storageos/go-api/netutil/parsers.go b/vendor/github.com/storageos/go-api/netutil/parsers.go
new file mode 100644
index 000000000000..a8a8701ffa07
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/netutil/parsers.go
@@ -0,0 +1,142 @@
+package netutil
+
+import (
+ "net"
+ "net/url"
+ "strconv"
+ "strings"
+)
+
+// addrsFromNodes takes a list of node hosts and attempts to return a list of hosts in ip:port
+// format along with any error encountered.
+//
+// The function accepts node hosts in URL, ip, ip:port, resolvable-name and resolvable-name:port
+// formats and will append the default port value if needed.
+func addrsFromNodes(nodes []string) ([]string, error) {
+ var addrs []string
+
+ for _, n := range nodes {
+ switch {
+ // Assume that the node is provided as a URL
+ case strings.Contains(n, "://"):
+ newAddrs, err := parseURL(n)
+ if err != nil {
+ return nil, newInvalidNodeError(err)
+ }
+
+ addrs = append(addrs, newAddrs...)
+
+ // Assume the node is in hostname:port or ip:port format
+ case strings.Contains(n, ":"):
+ newAddrs, err := parseHostPort(n)
+ if err != nil {
+ return nil, newInvalidNodeError(err)
+ }
+
+ addrs = append(addrs, newAddrs...)
+
+ // Assume hostname or ip
+ default:
+ newAddrs, err := parseHost(n)
+ if err != nil {
+ return nil, newInvalidNodeError(err)
+ }
+
+ addrs = append(addrs, newAddrs...)
+ }
+ }
+
+ return addrs, nil
+}
+
+func validPort(port string) bool {
+ intPort, err := strconv.Atoi(port)
+
+ return (err == nil) &&
+ (intPort > 0) &&
+ (intPort <= 65535)
+}
+
+// parseURL takes a valid URL and verifies that it is using a correct scheme, has a resolvable
+// address (or is an IP) and has a valid port (or adds the default if the port is omitted). The
+// function then returns a list of addresses in ip:port format along with any error encountered.
+//
+// The function may return multiple addresses depending on the dns answer received when resolving
+// the host.
+func parseURL(node string) ([]string, error) {
+ url, err := url.Parse(node)
+ if err != nil {
+ return nil, err
+ }
+
+ // Verify a valid scheme
+ switch url.Scheme {
+ case "tcp", "http", "https":
+ host, port, err := net.SplitHostPort(url.Host)
+ if err != nil {
+ // We could be here as there is no port, lets try one last time with default port added
+ host, port, err = net.SplitHostPort(url.Host + ":" + DefaultDialPort)
+ if err != nil {
+ return nil, err
+ }
+ }
+
+ if !validPort(port) {
+ return nil, errInvalidPortNumber
+ }
+
+ // LookupHost works for IP addr too
+ addrs, err := net.LookupHost(host)
+ if err != nil {
+ return nil, err
+ }
+
+ for i, a := range addrs {
+ addrs[i] = a + ":" + port
+ }
+
+ return addrs, nil
+
+ default:
+ return nil, errUnsupportedScheme
+ }
+}
+
+// parseHostPort takes a string in host:port format and checks it has a resolvable address (or is
+// an IP) and a valid port (or adds the default if the port is omitted). The function then returns
+// a list of addresses in ip:port format along with any error encountered.
+//
+// The function may return multiple addresses depending on the dns answer received when resolving
+// the host.
+func parseHostPort(node string) ([]string, error) {
+ host, port, err := net.SplitHostPort(node)
+ if err != nil {
+ return nil, err
+ }
+
+ if !validPort(port) {
+ return nil, errInvalidPortNumber
+ }
+
+ // LookupHost works for IP addr too
+ addrs, err := net.LookupHost(host)
+ if err != nil {
+ return nil, err
+ }
+
+ for i, a := range addrs {
+ addrs[i] = a + ":" + port
+ }
+
+ return addrs, nil
+}
+
+// parseHostPort takes a hostname string and checks it is resolvable to an address (or is already
+// an IP) The function then returns a list of addresses in ip:port format (where port is the
+// default port) along with any error encountered.
+//
+// The function may return multiple addresses depending on the dns answer received when resolving
+// the host.
+func parseHost(node string) ([]string, error) {
+ return parseHostPort(node + ":" + DefaultDialPort)
+}
diff --git a/vendor/github.com/storageos/go-api/policy.go b/vendor/github.com/storageos/go-api/policy.go
new file mode 100644
index 000000000000..e2539c5b113a
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/policy.go
@@ -0,0 +1,103 @@
+package storageos
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "github.com/storageos/go-api/types"
+ "net/http"
+ "net/url"
+)
+
+var (
+
+ // PolicyAPIPrefix is a partial path to the HTTP endpoint.
+ PolicyAPIPrefix = "policies"
+
+ // ErrNoSuchPolicy is the error returned when the policy does not exist.
+ ErrNoSuchPolicy = errors.New("no such policy")
+)
+
+// nopMarshaler is an alias to a []byte that implements json.Marshaler
+// it bypasses the base64 encoded string representation that json will give byte slices.
+// It should only be used to wrap []byte types containing pre-rendered valid json that will later
+// (out of the caller's control) be run through json.Marshal
+type nopMarshaler []byte
+
+func (n *nopMarshaler) MarshalJSON() ([]byte, error) {
+ return *n, nil
+}
+
+// PolicyCreate creates a policy on the server.
+func (c *Client) PolicyCreate(jsonl []byte, ctx context.Context) error {
+ nopm := nopMarshaler(jsonl)
+ _, err := c.do("POST", PolicyAPIPrefix, doOptions{
+ data: &nopm,
+ context: ctx,
+ headers: map[string]string{"Content-Type": "application/x-jsonlines"},
+ })
+ return err
+}
+
+// Policy returns a policy on the server by ID.
+func (c *Client) Policy(id string) (*types.Policy, error) {
+ path := fmt.Sprintf("%s/%s", PolicyAPIPrefix, id)
+ resp, err := c.do("GET", path, doOptions{})
+ if err != nil {
+ if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound {
+ return nil, ErrNoSuchPolicy
+ }
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ var policy *types.Policy
+ if err := json.NewDecoder(resp.Body).Decode(&policy); err != nil {
+ return nil, err
+ }
+ return policy, nil
+}
+
+// PolicyList returns the list of policies on the server.
+func (c *Client) PolicyList(opts types.ListOptions) (types.PolicySet, error) {
+ listOpts := doOptions{
+ fieldSelector: opts.FieldSelector,
+ labelSelector: opts.LabelSelector,
+ namespace: opts.Namespace,
+ context: opts.Context,
+ }
+
+ if opts.LabelSelector != "" {
+ query := url.Values{}
+ query.Add("labelSelector", opts.LabelSelector)
+ listOpts.values = query
+ }
+
+ resp, err := c.do("GET", PolicyAPIPrefix, listOpts)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ var policies types.PolicySet
+ if err := json.NewDecoder(resp.Body).Decode(&policies); err != nil {
+ return nil, err
+ }
+ return policies, nil
+}
+
+// PolicyDelete deletes a policy on the server by ID.
+func (c *Client) PolicyDelete(opts types.DeleteOptions) error {
+ resp, err := c.do("DELETE", PolicyAPIPrefix+"/"+opts.Name, doOptions{})
+ if err != nil {
+ if e, ok := err.(*Error); ok {
+ if e.Status == http.StatusNotFound {
+ return ErrNoSuchPolicy
+ }
+ }
+ return err
+ }
+ defer resp.Body.Close()
+ return nil
+}
diff --git a/vendor/github.com/storageos/go-api/rule.go b/vendor/github.com/storageos/go-api/rule.go
index d1d8f4e00bb3..a187e2569c29 100644
--- a/vendor/github.com/storageos/go-api/rule.go
+++ b/vendor/github.com/storageos/go-api/rule.go
@@ -72,10 +72,15 @@ func (c *Client) Rule(namespace string, ref string) (*types.Rule, error) {
// RuleCreate creates a rule on the server and returns the new object.
func (c *Client) RuleCreate(opts types.RuleCreateOptions) (*types.Rule, error) {
- resp, err := c.do("POST", RuleAPIPrefix, doOptions{
- data: opts,
- namespace: opts.Namespace,
- context: opts.Context,
+ path, err := namespacedPath(opts.Namespace, RuleAPIPrefix)
+ if err != nil {
+ return nil, err
+ }
+
+ resp, err := c.do("POST", path, doOptions{
+ data: opts,
+ // namespace: opts.Namespace,
+ context: opts.Context,
})
if err != nil {
return nil, err
diff --git a/vendor/github.com/storageos/go-api/serror/error_kind.go b/vendor/github.com/storageos/go-api/serror/error_kind.go
new file mode 100644
index 000000000000..53531398769f
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/serror/error_kind.go
@@ -0,0 +1,11 @@
+package serror
+
+//go:generate stringer -type=StorageOSErrorKind error_kind.go
+type StorageOSErrorKind int
+
+// Known error kinds
+const (
+ UnknownError StorageOSErrorKind = iota
+ APIUncontactable
+ InvalidHostConfig
+)
diff --git a/vendor/github.com/storageos/go-api/serror/kind_lookup_map.go b/vendor/github.com/storageos/go-api/serror/kind_lookup_map.go
new file mode 100644
index 000000000000..f96ce6a9d9ad
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/serror/kind_lookup_map.go
@@ -0,0 +1,37 @@
+package serror
+
+import (
+ "encoding/json"
+ "fmt"
+ "strings"
+)
+
+var kindLookupMap map[string]StorageOSErrorKind
+
+func init() {
+ kindLookupMap = make(map[string]StorageOSErrorKind)
+
+ // Populate the lookup map with all the known constants
+ for i := StorageOSErrorKind(0); !strings.HasPrefix(i.String(), "StorageOSErrorKind("); i++ {
+ kindLookupMap[i.String()] = i
+ }
+}
+
+func (s *StorageOSErrorKind) UnmarshalJSON(b []byte) error {
+ str := ""
+ if err := json.Unmarshal(b, &str); err != nil {
+ return err
+ }
+
+ v, ok := kindLookupMap[str]
+ if !ok {
+ return fmt.Errorf("Failed to unmarshal ErrorKind %s", s)
+ }
+
+ *s = v
+ return nil
+}
+
+func (s *StorageOSErrorKind) MarshalJSON() ([]byte, error) {
+ return json.Marshal(s.String())
+}
diff --git a/vendor/github.com/storageos/go-api/serror/storageos_error.go b/vendor/github.com/storageos/go-api/serror/storageos_error.go
new file mode 100644
index 000000000000..332c19ad677a
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/serror/storageos_error.go
@@ -0,0 +1,34 @@
+package serror
+
+import (
+ "encoding/json"
+)
+
+type StorageOSError interface {
+ // embedding error provides compatibility with standard error handling code
+ error
+
+ // Encoding/decoding methods to help errors traverse API boundaries
+ json.Marshaler
+ json.Unmarshaler
+
+ Err() error // Returns the underlying error that caused this event
+ String() string // A short string representing the error (for logging etc)
+ Help() string // A larger string that should provide informative debug instruction to users
+ Kind() StorageOSErrorKind // A type representing a set of known error conditions, helpful to switch on
+ Extra() map[string]string // A container for error specific information
+
+ // TODO: should we include callstack traces here? We could have a debug mode for it.
+}
+
+func ErrorKind(err error) StorageOSErrorKind {
+ if serr, ok := err.(StorageOSError); ok {
+ return serr.Kind()
+ }
+ return UnknownError
+}
+
+func IsStorageOSError(err error) bool {
+ _, ok := err.(StorageOSError)
+ return ok
+}
diff --git a/vendor/github.com/storageos/go-api/serror/storageoserrorkind_string.go b/vendor/github.com/storageos/go-api/serror/storageoserrorkind_string.go
new file mode 100644
index 000000000000..fafdccc74609
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/serror/storageoserrorkind_string.go
@@ -0,0 +1,16 @@
+// Code generated by "stringer -type=StorageOSErrorKind error_kind.go"; DO NOT EDIT.
+
+package serror
+
+import "strconv"
+
+const _StorageOSErrorKind_name = "UnknownErrorAPIUncontactableInvalidHostConfig"
+
+var _StorageOSErrorKind_index = [...]uint8{0, 12, 28, 45}
+
+func (i StorageOSErrorKind) String() string {
+ if i < 0 || i >= StorageOSErrorKind(len(_StorageOSErrorKind_index)-1) {
+ return "StorageOSErrorKind(" + strconv.FormatInt(int64(i), 10) + ")"
+ }
+ return _StorageOSErrorKind_name[_StorageOSErrorKind_index[i]:_StorageOSErrorKind_index[i+1]]
+}
diff --git a/vendor/github.com/storageos/go-api/serror/typed_error.go b/vendor/github.com/storageos/go-api/serror/typed_error.go
new file mode 100644
index 000000000000..553adec43981
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/serror/typed_error.go
@@ -0,0 +1,64 @@
+package serror
+
+import (
+ "encoding/json"
+)
+
+func NewTypedStorageOSError(kind StorageOSErrorKind, err error, msg string, help string) StorageOSError {
+ return &typedStorageOSError{
+ internal: &internal_TypedStorageOSError{
+ ErrorKind: &kind,
+ Cause: err,
+ ErrMessage: msg,
+ HelpMessage: help,
+ },
+ }
+}
+
+func NewUntypedStorageOSError(err error, msg string, help string) StorageOSError {
+ var kind StorageOSErrorKind = UnknownError
+
+ return &typedStorageOSError{
+ internal: &internal_TypedStorageOSError{
+ ErrorKind: &kind,
+ Cause: err,
+ ErrMessage: msg,
+ HelpMessage: help,
+ },
+ }
+}
+
+type internal_TypedStorageOSError struct {
+ ErrorKind *StorageOSErrorKind `json:"error_kind"`
+ Cause error `json:"caused_by"`
+ ErrMessage string `json:"error_message"`
+ HelpMessage string `json:"help_message"`
+ ExtraMap map[string]string `json:"extra"`
+}
+
+type typedStorageOSError struct {
+ internal *internal_TypedStorageOSError
+}
+
+func (t *typedStorageOSError) MarshalJSON() ([]byte, error) {
+ return json.Marshal(t.internal)
+}
+
+func (t *typedStorageOSError) UnmarshalJSON(d []byte) error {
+ internal := &internal_TypedStorageOSError{}
+
+ err := json.Unmarshal(d, internal)
+ if err != nil {
+ return err
+ }
+
+ t.internal = internal
+ return nil
+}
+
+func (t *typedStorageOSError) Error() string { return t.String() }
+func (t *typedStorageOSError) Err() error { return t.internal.Cause }
+func (t *typedStorageOSError) String() string { return t.internal.ErrMessage }
+func (t *typedStorageOSError) Help() string { return t.internal.HelpMessage }
+func (t *typedStorageOSError) Kind() StorageOSErrorKind { return *t.internal.ErrorKind }
+func (t *typedStorageOSError) Extra() map[string]string { return t.internal.ExtraMap }
diff --git a/vendor/github.com/storageos/go-api/swagger-gen.yaml b/vendor/github.com/storageos/go-api/swagger-gen.yaml
deleted file mode 100644
index f07a02737f73..000000000000
--- a/vendor/github.com/storageos/go-api/swagger-gen.yaml
+++ /dev/null
@@ -1,12 +0,0 @@
-
-layout:
- models:
- - name: definition
- source: asset:model
- target: "{{ joinFilePath .Target .ModelPackage }}"
- file_name: "{{ (snakize (pascalize .Name)) }}.go"
- operations:
- - name: handler
- source: asset:serverOperation
- target: "{{ joinFilePath .Target .APIPackage .Package }}"
- file_name: "{{ (snakize (pascalize .Name)) }}.go"
diff --git a/vendor/github.com/storageos/go-api/swagger.yaml b/vendor/github.com/storageos/go-api/swagger.yaml
deleted file mode 100644
index 0b7d28b1a3cd..000000000000
--- a/vendor/github.com/storageos/go-api/swagger.yaml
+++ /dev/null
@@ -1,854 +0,0 @@
-
-# A Swagger 2.0 (a.k.a. OpenAPI) definition of the StorageOS API.
-#
-# This is used for generating API documentation and the types used by the
-# client/server. See api/README.md for more information.
-#
-# Some style notes:
-# - This file is used by ReDoc, which allows GitHub Flavored Markdown in
-# descriptions.
-# - There is no maximum line length, for ease of editing and pretty diffs.
-# - operationIds are in the format "NounVerb", with a singular noun.
-
-swagger: "2.0"
-schemes:
- - "http"
- - "https"
-produces:
- - "application/json"
- - "text/plain"
-consumes:
- - "application/json"
- - "text/plain"
-basePath: "/v1"
-info:
- title: "StorageOS API"
- version: "0.7"
- x-logo:
- url: "http://storageos.wpengine.com/wp-content/uploads/2017/03/cropped-logo-1.png"
- description: |
- The StorageOS API is an HTTP API used for managing volumes and StorageOS services. It is the API that the StorageOS UI, CLI and platform integrations use to communicate with the StorageOS backend.
-
- # Errors
-
- The API uses standard HTTP status codes to indicate the success or failure of the API call. The body of the response will be JSON in the following format:
- ```
- {
- "message": "page not found"
- }
- ```
-# The tags on paths define the menu sections in the ReDoc documentation, so
-# the usage of tags must make sense for that:
-# - They should be singular, not plural.
-# - There should not be too many tags, or the menu becomes unwieldy. For
-# example, it is preferable to add a path to the "System" tag instead of
-# creating a tag with a single path in it.
-# - The order of tags in this list defines the order in the menu.
-tags:
- # Primary objects
- - name: "Volume"
- x-displayName: "Volumes"
- description: |
- Create and manage volumes.
- - name: "Pool"
- x-displayName: "Pools"
- description: |
- Create and manage distributed capacity pools.
-
-definitions:
-
- ErrorResponse:
- description: "Represents an error."
- type: "object"
- required: ["message"]
- properties:
- message:
- description: "The error message."
- type: "string"
- x-nullable: false
- example:
- message: "Something went wrong."
-
- Deployment:
- type: "object"
- description: "Volume master or replica deployment details."
- properties:
- ID:
- type: "string"
- readOnly: true
- Controller:
- type: "string"
- readOnly: true
- Inode:
- type: "integer"
- format: "uint32"
- readOnly: true
- Status:
- type: "string"
- readOnly: true
- Health:
- type: "string"
- readOnly: true
- CreatedAt:
- type: "string"
- format: "datetime"
- readOnly: true
-
- VolumeCreateOptions:
- type: "object"
- description: "Parameters available for creating new volumes."
- required: [Name]
- properties:
- Name:
- description: "Volume name."
- type: "string"
- x-nullable: false
- Description:
- type: "string"
- x-nullable: false
- description: "Volume description."
- Size:
- type: "integer"
- description: "Size in GB (if 0 or not specified, then defaults to 10 GB)."
- x-nullable: false
- Pool:
- type: "string"
- description: "Name of capacity pool to provision the volume in, or the name of the current pool."
- Labels:
- type: "object"
- description: "User-defined key/value metadata."
- x-nullable: false
- additionalProperties:
- type: "string"
-
- VolumeUpdateOptions:
- type: "object"
- description: "Parameters available for updating existing volumes."
- properties:
- Description:
- type: "string"
- x-nullable: false
- description: "Volume description."
- Size:
- type: "integer"
- description: "Size in GB."
- x-nullable: false
- Labels:
- type: "object"
- description: "User-defined key/value metadata."
- x-nullable: false
- additionalProperties:
- type: "string"
-
- # VolumeMountOptions:
- # type: "object"
- # description: "Parameters available for mounting volumes."
- # properties:
- # ID:
- # type: "string"
- # x-nullable: false
- # description: "Volume unique ID."
- # Name:
- # description: "Volume name."
- # type: "string"
- # x-nullable: false
- # Namespace:
- # description: "The object scope, such as for teams and projects."
- # type: "string"
- # x-nullable: false
- # Client:
- # type: "string"
- # x-nullable: false
- # description: "Hostname of the client performing the mount."
- #
- # VolumeUnmountOptions:
- # type: "object"
- # description: "Parameters available for unmounting volumes."
- # properties:
- # ID:
- # type: "string"
- # x-nullable: false
- # description: "Volume unique ID."
- # Name:
- # description: "Volume name."
- # type: "string"
- # x-nullable: false
- # Namespace:
- # description: "The object scope, such as for teams and projects."
- # type: "string"
- # x-nullable: false
- # Client:
- # type: "string"
- # x-nullable: false
- # description: "Hostname of the client performing the unmount."
-
- # ListOptions:
- # type: "object"
- # description: "Parameters for finding volumes."
- # properties:
- # LabelSelector:
- # description: "A selector to restrict the list of returned objects by their labels. Defaults to everything."
- # type: "string"
- # FieldSelector:
- # type: "string"
- # description: "A selector to restrict the list of returned objects by their fields. Defaults to everything."
- # TimeoutSeconds:
- # type: "integer"
- # description: "Timeout for the list call."
- # Namespace:
- # type: "string"
- # description: "Object name and auth scope, such as for teams and projects"
-
- Volume:
- type: "object"
- description: "A storage volume."
- required: [Name, Size]
- properties:
- ID:
- description: "Volume unique ID."
- type: "string"
- x-nullable: false
- readOnly: true
- Name:
- description: "Volume name."
- type: "string"
- x-nullable: false
- Description:
- type: "string"
- x-nullable: false
- description: "Volume description."
- Size:
- type: integer
- description: "Size in GB."
- x-nullable: false
- Pool:
- type: "string"
- description: "Name of capacity pool to provision the volume in, or the name of the current pool."
- Labels:
- type: "object"
- description: "User-defined key/value metadata."
- x-nullable: false
- additionalProperties:
- type: "string"
- Master:
- $ref: "#/definitions/Deployment"
- Replicas:
- type: "array"
- description: "Volume deployment information for the replica volumes."
- items:
- $ref: "#/definitions/Deployment"
- readOnly: true
- Status:
- type: "string"
- description: "Short status, one of: pending, evaluating, deploying, active, unavailable, failed, updating, deleting."
- readOnly: true
- StatusMessage:
- type: "string"
- description: "Status message explaining current status."
- readOnly: true
- Health:
- type: "string"
- description: "Volume health, one of: healthy, degraded or dead."
- readOnly: true
- Inode:
- type: "integer"
- format: "uint32"
- description: "Block device inode."
- readOnly: true
- Deleted:
- type: "boolean"
- description: "Flag indicating if the volume has been deleted and is waiting for scrubbing."
- readOnly: true
- Mounted:
- type: "boolean"
- description: "Flag indicating if the volume is mounted and in use."
- readOnly: true
- MountedBy:
- type: "string"
- description: "Reference to the node that has the volume mounted."
- readOnly: true
- Mountpoint:
- type: "string"
- description: "Mountpoint where the volume was mounted."
- readOnly: true
- MountedAt:
- type: "string"
- format: "dateTime"
- description: "When the volume was mounted."
- readOnly: true
- CreatedBy:
- type: "string"
- description: "User that created the volume."
- readOnly: true
- CreatedAt:
- type: "string"
- format: "dateTime"
- description: "When the volume was created."
- readOnly: true
- example:
- Name: vol01
- Size: 5
- Labels:
- com.example.some-label: "some-value"
- com.example.some-other-label: "some-other-value"
-
- PoolCreateOptions:
- type: "object"
- description: "Parameters available for creating new pools."
- required: [Name]
- properties:
- Name:
- description: "Pool name."
- type: "string"
- x-nullable: false
- Description:
- type: "string"
- x-nullable: false
- description: "Pool description."
- Default:
- type: "boolean"
- description: "Default determines whether this pool is the default if a volume is provisioned without a pool specified. There can only be one default pool."
- x-nullable: false
- DefaultDriver:
- type: "string"
- x-nullable: false
- description: "DefaultDriver specifies the storage driver to use by default if there are multiple drivers in the pool and no driver was specified in the provisioning request or assigned by rules. If no driver was specified and no default set, driver weight is used to determine the default."
- ControllerNames:
- type: "array"
- description: "ControllerNames is a list of controller names that are participating in the storage pool."
- items:
- type: "string"
- DriverNames:
- type: "array"
- description: "DriverNames is a list of backend storage drivers that are available in the storage pool."
- items:
- type: "string"
- Active:
- type: "boolean"
- x-nullable: false
- description: "Flag describing whether rule is active."
- default: false
- Labels:
- type: "object"
- description: "Labels define a list of labels that describe the pool."
- additionalProperties:
- type: "string"
-
- Pool:
- type: "object"
- description: |
- Pools are used to define distributed capacity that can be used to provision
- volumes from. Typically, each server that makes storage available will be
- added to one or more pools.
-
- Capacity drivers are also added to the pool to determine which backend
- storage driver to use. Currently this is limited to a single type of
- driver per pool, but in the future we will allow multiple, allowing for
- dynamic tiering and snapshots from one driver type to another.
- required: [Name]
- properties:
- ID:
- description: "Pool unique ID."
- type: "string"
- x-nullable: false
- readOnly: true
- Name:
- description: "Pool name."
- type: "string"
- x-nullable: false
- Description:
- type: "string"
- x-nullable: false
- description: "Pool description."
- Default:
- type: "boolean"
- x-nullable: false
- description: |
- Default determines whether this pool is the default if a volume is
- provisioned without a pool specified. There can only be one default
- pool.
- DefaultDriver:
- type: "string"
- description: |
- DefaultDriver specifies the storage driver to use by default if there
- are multiple drivers in the pool and no driver was specified in the
- provisioning request or assigned by rules. If no driver was specified
- and no default set, driver weight is used to determine the default.
- ControllerNames:
- type: "array"
- description: "ControllerNames is a list of controller names that are participating in the storage pool."
- items:
- type: "string"
- DriverNames:
- type: "array"
- description: "DriverNames is a list of backend storage drivers that are available in the storage pool."
- items:
- type: "string"
- DriverInstances:
- $ref: "#/definitions/DriverInstances"
- Active:
- type: "boolean"
- x-nullable: false
- description: "Flag describing whether rule is active."
- default: false
- CapacityStats:
- $ref: "#/definitions/CapacityStats"
- Labels:
- type: "object"
- description: "Labels define a list of labels that describe the pool."
- additionalProperties:
- type: "string"
-
- Rule:
- type: "object"
- description: "A policy rule."
- required: [Name]
- properties:
- ID:
- description: "Rule unique ID."
- type: "string"
- x-nullable: false
- readOnly: true
- Name:
- description: "Rule name."
- type: "string"
- x-nullable: false
- Description:
- type: "string"
- x-nullable: false
- description: "Rule description."
- Active:
- type: "boolean"
- x-nullable: false
- description: "Flag describing whether rule is active."
- default: false
- Weight:
- type: "integer"
- x-nullable: false
- description: |
- "Weight is used to determine order during rule processing. Rules with heavier weights are processed later."
- default: 0
- Operator:
- type: "string"
- description: "Operator is used to compare objects or labels."
- enum:
- - "!"
- - "="
- - "=="
- - "in"
- - "!="
- - "notin"
- - "exists"
- - "gt"
- - "lt"
- RuleAction:
- type: "string"
- description: "RuleAction controls whether the action is to add or remove a label from the matching object(s)."
- enum:
- - "add"
- - "remove"
- default: "add"
- Selectors:
- type: "object"
- description: "Selectors defines the list of labels that should trigger a rule."
- additionalProperties:
- type: "string"
- Labels:
- type: "object"
- description: "Labels define the list of labels that will be added or removed from the matching object(s).."
- additionalProperties:
- type: "string"
-
- CapacityStats:
- type: "object"
- description: "CapacityStats is used to report capacity statistics on pools and controllers."
- properties:
- TotalCapacityBytes:
- description: "TotalCapacityBytes is the object's total capacity in bytes."
- type: "integer"
- readOnly: true
- AvailableCapacityBytes:
- description: "AvailableCapacityBytes is the object's available capacity in bytes."
- type: "integer"
- readOnly: true
- ProvisionedCapacityBytes:
- description: "ProvisionedCapacityBytes is the object's provisioned capacity in bytes."
- type: "integer"
- readOnly: true
-
- DriverInstances:
- type: "object"
- description: "DriverInstances shows the internal configuration and state of each driver on all the nodes in the pool. Data within DriverInstances can not be modified directly."
- properties:
- ID:
- description: "Instance unique ID."
- type: "string"
- x-nullable: false
- readOnly: true
- Name:
- description: "Instance name."
- type: "string"
- x-nullable: false
- readOnly: true
- Description:
- description: "Instance description."
- type: "string"
- x-nullable: false
- readOnly: true
- Active:
- description: "Flag describing whether the template is active."
- type: "boolean"
- x-nullable: false
- readOnly: true
- Config:
- description: "Config is JSON struct that is passed directly to the driver. There is no specific format, and the driver is responsible for validation."
- type: "object"
- readOnly: true
- additionalProperties:
- type: "string"
- Labels:
- description: "Labels define a list of labels that describe the driver instance. These are inherited from the pool when the driver instance is created."
- type: "object"
- readOnly: true
- additionalProperties:
- type: "string"
- ControllerName:
- description: "ControllerName specifies the controller that this instance is running on."
- type: "string"
- x-nullable: false
- readOnly: true
- PoolID:
- description: "PoolID refers to the pool that this driver instance relates to."
- type: "string"
- x-nullable: false
- readOnly: true
- DriverName:
- description: "DriverName specifies which capacity driver this is an instance of."
- type: "string"
- x-nullable: false
- readOnly: true
- CapacityStats:
- $ref: "#/definitions/CapacityStats"
-
-parameters:
- Name:
- name: "name"
- in: "path"
- type: "string"
- description: "Volume name or ID."
- required: true
- Namespace:
- name: "namespace"
- in: "path"
- type: "string"
- description: "Object name and auth scope, such as for teams and projects."
- required: true
- NamespaceQuery:
- name: "namespace"
- in: "query"
- type: "string"
- description: "Object name and auth scope, such as for teams and projects."
- default: "default"
- LabelSelector:
- name: "labelSelector"
- in: "query"
- description: "A selector to restrict the list of returned objects by their labels. Defaults to everything."
- type: "string"
- FieldSelector:
- name: "fieldSelector"
- in: "query"
- type: "string"
- description: "A selector to restrict the list of returned objects by their fields. Defaults to everything."
- TimeoutSeconds:
- name: "timeoutSeconds"
- in: "query"
- type: "integer"
- description: "Timeout for the list call."
-
-paths:
- /namespaces/{namespace}/volumes:
- get:
- summary: "List volumes"
- description: "List of volumes that match the query."
- produces:
- - "application/json"
- tags: ["Volume"]
- parameters:
- - name: "namespace"
- in: "path"
- required: true
- description: "The object scope, such as for teams and projects."
- type: "string"
- - $ref: "#/parameters/LabelSelector"
- - $ref: "#/parameters/FieldSelector"
- - $ref: "#/parameters/TimeoutSeconds"
- - $ref: "#/parameters/NamespaceQuery"
- responses:
- 200:
- description: "Success"
- schema:
- type: "array"
- items:
- $ref: "#/definitions/Volume"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- post:
- summary: "Create volume"
- description: "Provisions a new volume."
- produces:
- - "application/json"
- tags: ["Volume"]
- parameters:
- - $ref: "#/parameters/Namespace"
- - name: "VolumeCreateOptions"
- in: "body"
- schema:
- $ref: "#/definitions/VolumeCreateOptions"
- responses:
- 201:
- description: "Volume created successfully"
- schema:
- $ref: "#/definitions/Volume"
- 401:
- description: "Unauthorized"
- 409:
- description: "Volume with name already exists"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- /namespaces/{namespace}/volumes/{name}:
- get:
- summary: "Get a volume"
- description: "Gets a volume by name or ID. Returns to whole volume object."
- produces:
- - "application/json"
- tags: ["Volume"]
- parameters:
- - $ref: "#/parameters/Name"
- - $ref: "#/parameters/Namespace"
- responses:
- 200:
- description: "Success"
- schema:
- $ref: "#/definitions/Volume"
- 401:
- description: "Unauthorized"
- 404:
- description: "Not found"
- schema:
- $ref: "#/definitions/ErrorResponse"
- 407:
- description: "Volume already exists"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- put:
- summary: "Update volume"
- description: "Updates an existing volume."
- produces:
- - "application/json"
- tags: ["Volume"]
- parameters:
- - $ref: "#/parameters/Name"
- - $ref: "#/parameters/Namespace"
- - name: "VolumeUpdateOptions"
- in: "body"
- schema:
- $ref: "#/definitions/VolumeUpdateOptions"
- responses:
- 200:
- description: "Success"
- schema:
- $ref: "#/definitions/Volume"
- 401:
- description: "Unauthorized"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- delete:
- summary: "Delete volume"
- description: "Deletes a volume."
- produces:
- - "application/json"
- tags: ["Volume"]
- parameters:
- - name: "namespace"
- in: "path"
- required: true
- description: "The object scope, such as for teams and projects."
- type: "string"
- - name: "name"
- in: "path"
- required: true
- description: "Volume name or ID."
- type: "string"
- responses:
- 200:
- description: "Success"
- 401:
- description: "Unauthorized"
- 407:
- description: "Volume in use"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- /namespaces/{namespace}/volumes/{name}/mount:
- post:
- summary: "Mount volume"
- description: "Updates the mount reference for the volume."
- produces:
- - "application/json"
- tags: ["Volume"]
- parameters:
- - $ref: "#/parameters/Name"
- - $ref: "#/parameters/Namespace"
- - name: "client"
- in: "body"
- description: "Hostname of the client mounting the volume"
- required: true
- schema:
- type: "string"
- responses:
- 200:
- description: "Success"
- schema:
- $ref: "#/definitions/Volume"
- 401:
- description: "Unauthorized"
- 407:
- description: "Volume already mounted"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- /namespaces/{namespace}/volumes/{name}/unmount:
- post:
- summary: "Mount volume"
- description: "Updates the mount reference for the volume."
- produces:
- - "application/json"
- tags: ["Volume"]
- parameters:
- - $ref: "#/parameters/Name"
- - $ref: "#/parameters/Namespace"
- - name: "client"
- in: "body"
- description: "Hostname of the client mounting the volume"
- required: true
- schema:
- type: "string"
- responses:
- 200:
- description: "Success"
- schema:
- $ref: "#/definitions/Volume"
- 401:
- description: "Unauthorized"
- 407:
- description: "Volume not mounted"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- /pools:
- get:
- summary: "List pools"
- description: "List of pools that match the query."
- produces:
- - "application/json"
- tags: ["Pool"]
- #parameters:
- # - $ref: "#/parameters/LabelSelector"
- # - $ref: "#/parameters/FieldSelector"
- # - $ref: "#/parameters/TimeoutSeconds"
- # - $ref: "#/parameters/NamespaceQuery"
- responses:
- 200:
- description: "Success"
- schema:
- type: "array"
- items:
- $ref: "#/definitions/Pool"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- post:
- summary: "Create pool"
- description: "Provisions a new pool."
- produces:
- - "application/json"
- tags: ["Pool"]
- parameters:
- - name: "PoolCreateOptions"
- in: "body"
- schema:
- $ref: "#/definitions/PoolCreateOptions"
- responses:
- 201:
- description: "Pool created successfully"
- schema:
- $ref: "#/definitions/Pool"
- 401:
- description: "Unauthorized"
- 409:
- description: "Pool with name already exists"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- /pools/{name}:
- get:
- summary: "Get a pool"
- description: "Gets a pool by name or ID. Returns to whole pool object."
- produces:
- - "application/json"
- tags: ["Pool"]
- parameters:
- - $ref: "#/parameters/Name"
- responses:
- 200:
- description: "Success"
- schema:
- $ref: "#/definitions/Pool"
- 401:
- description: "Unauthorized"
- 404:
- description: "Not found"
- schema:
- $ref: "#/definitions/ErrorResponse"
- 407:
- description: "Pool already exists"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
- delete:
- summary: "Delete pool"
- description: "Deletes a pool."
- produces:
- - "application/json"
- tags: ["Pool"]
- parameters:
- - name: "name"
- in: "path"
- required: true
- description: "Pool name or ID."
- type: "string"
- responses:
- 200:
- description: "Success"
- 401:
- description: "Unauthorized"
- 407:
- description: "Pool in use"
- 500:
- description: "Server error"
- schema:
- $ref: "#/definitions/ErrorResponse"
diff --git a/vendor/github.com/storageos/go-api/types/controller.go b/vendor/github.com/storageos/go-api/types/controller.go
index b6381f174f1d..e32df7690721 100644
--- a/vendor/github.com/storageos/go-api/types/controller.go
+++ b/vendor/github.com/storageos/go-api/types/controller.go
@@ -41,6 +41,7 @@ type Controller struct {
Scheduler bool `json:"scheduler"`
Name string `json:"name"`
Address string `json:"address"`
+ DeviceDir string `json:"deviceDir"`
APIPort int `json:"apiPort"`
NatsPort int `json:"natsPort"`
NatsClusterPort int `json:"natsClusterPort"`
@@ -59,6 +60,9 @@ type Controller struct {
VersionInfo map[string]VersionInfo `json:"versionInfo"`
Version string `json:"version"`
+ // Cordon true if in an unschedulable state
+ Cordon bool `json:"unschedulable"`
+
// high level stats that combine info from all driver instances
CapacityStats CapacityStats `json:"capacityStats"`
}
diff --git a/vendor/github.com/storageos/go-api/types/controller_update_options.go b/vendor/github.com/storageos/go-api/types/controller_update_options.go
index 8c17ade8c56f..a55b8160d33d 100644
--- a/vendor/github.com/storageos/go-api/types/controller_update_options.go
+++ b/vendor/github.com/storageos/go-api/types/controller_update_options.go
@@ -19,6 +19,9 @@ type ControllerUpdateOptions struct {
// Labels are user-defined key/value metadata.
Labels map[string]string `json:"labels"`
+ // Cordon sets the controler into an unschedulable state if true
+ Cordon bool `json:"unschedulable"`
+
// Context can be set with a timeout or can be used to cancel a request.
Context context.Context `json:"-"`
}
diff --git a/vendor/github.com/storageos/go-api/types/deployment.go b/vendor/github.com/storageos/go-api/types/deployment.go
index 9707246273d2..63f63f2a4efb 100644
--- a/vendor/github.com/storageos/go-api/types/deployment.go
+++ b/vendor/github.com/storageos/go-api/types/deployment.go
@@ -18,6 +18,10 @@ type Deployment struct {
// Read Only: true
Controller string `json:"controller"`
+ // Controller name
+ // Read Only: true
+ ControllerName string `json:"controllerName"`
+
// Health
// Read Only: true
Health string `json:"health"`
diff --git a/vendor/github.com/storageos/go-api/types/logger.go b/vendor/github.com/storageos/go-api/types/logger.go
new file mode 100644
index 000000000000..f02bad96eb5f
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/types/logger.go
@@ -0,0 +1,40 @@
+package types
+
+import "context"
+
+// Logger is the runtime configuration of the node's logging services.
+// swagger:model Logger
+type Logger struct {
+
+ // Node name
+ Node string `json:"node"`
+
+ // Log level
+ Level string `json:"level"`
+
+ // Log filter
+ Filter string `json:"filter"`
+
+ // Log filters by category
+ // Read Only: true
+ Categories map[string]string `json:"categories"`
+}
+
+// LoggerUpdateOptions are the available parameters for updating loggers.
+type LoggerUpdateOptions struct {
+
+ // Log level
+ Level string `json:"level"`
+
+ // Log filter
+ Filter string `json:"filter"`
+
+ // List of nodes to update. All if not set.
+ Nodes []string `json:"nodes"`
+
+ // List of fields to update. Must be set.
+ Fields []string `json:"fields"`
+
+ // Context can be set with a timeout or can be used to cancel a request.
+ Context context.Context `json:"-"`
+}
diff --git a/vendor/github.com/storageos/go-api/types/node.go b/vendor/github.com/storageos/go-api/types/node.go
new file mode 100644
index 000000000000..52f5da63d39e
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/types/node.go
@@ -0,0 +1,97 @@
+package types
+
+import (
+ "encoding/json"
+)
+
+type SubModuleStatus struct {
+ Status string `json:"status"`
+ UpdatedAt string `json:"updatedAt"`
+ ChangedAt string `json:"changedAt"`
+ Message string `json:"message"`
+}
+
+type NamedSubModuleStatus struct {
+ Name string
+ SubModuleStatus
+}
+
+type CPHealthStatus struct {
+ KV SubModuleStatus
+ KVWrite SubModuleStatus
+ NATS SubModuleStatus
+ Scheduler SubModuleStatus
+}
+
+func (c *CPHealthStatus) ToNamedSubmodules() []NamedSubModuleStatus {
+ return []NamedSubModuleStatus{
+ {Name: "nats", SubModuleStatus: c.NATS},
+ {Name: "kv", SubModuleStatus: c.KV},
+ {Name: "kv_write", SubModuleStatus: c.KVWrite},
+ {Name: "scheduler", SubModuleStatus: c.Scheduler},
+ }
+}
+
+func (c *CPHealthStatus) UnmarshalJSON(data []byte) error {
+ unmarsh := struct {
+ Submodules struct {
+ KV SubModuleStatus `json:"kv"`
+ KVWrite SubModuleStatus `json:"kv_write"`
+ NATS SubModuleStatus `json:"nats"`
+ Scheduler SubModuleStatus `json:"scheduler"`
+ } `json:"submodules"`
+ }{}
+
+ if err := json.Unmarshal(data, &unmarsh); err != nil {
+ return err
+ }
+
+ c.KV = unmarsh.Submodules.KV
+ c.KVWrite = unmarsh.Submodules.KVWrite
+ c.NATS = unmarsh.Submodules.NATS
+ c.Scheduler = unmarsh.Submodules.Scheduler
+
+ return nil
+}
+
+type DPHealthStatus struct {
+ DirectFSClient SubModuleStatus
+ DirectFSServer SubModuleStatus
+ Director SubModuleStatus
+ FSDriver SubModuleStatus
+ FS SubModuleStatus
+}
+
+func (d *DPHealthStatus) ToNamedSubmodules() []NamedSubModuleStatus {
+ return []NamedSubModuleStatus{
+ {Name: "dfs_client", SubModuleStatus: d.DirectFSClient},
+ {Name: "dfs_server", SubModuleStatus: d.DirectFSServer},
+ {Name: "director", SubModuleStatus: d.Director},
+ {Name: "fs_driver", SubModuleStatus: d.FSDriver},
+ {Name: "fs", SubModuleStatus: d.FS},
+ }
+}
+
+func (d *DPHealthStatus) UnmarshalJSON(data []byte) error {
+ unmarsh := struct {
+ Submodules struct {
+ DirectFSClient SubModuleStatus `json:"directfs-client"`
+ DirectFSServer SubModuleStatus `json:"directfs-server"`
+ Director SubModuleStatus `json:"director"`
+ FSDriver SubModuleStatus `json:"filesystem-driver"`
+ FS SubModuleStatus `json:"fs"`
+ } `json:"submodules"`
+ }{}
+
+ if err := json.Unmarshal(data, &unmarsh); err != nil {
+ return err
+ }
+
+ d.DirectFSClient = unmarsh.Submodules.DirectFSClient
+ d.DirectFSServer = unmarsh.Submodules.DirectFSServer
+ d.Director = unmarsh.Submodules.Director
+ d.FSDriver = unmarsh.Submodules.FSDriver
+ d.FS = unmarsh.Submodules.FS
+
+ return nil
+}
diff --git a/vendor/github.com/storageos/go-api/types/policy.go b/vendor/github.com/storageos/go-api/types/policy.go
new file mode 100644
index 000000000000..6441939d5e45
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/types/policy.go
@@ -0,0 +1,45 @@
+package types
+
+import (
+ "encoding/json"
+)
+
+type Policy struct {
+ Spec struct {
+ User string `json:"user,omitempty"`
+ Group string `json:"group,omitempty"`
+ Readonly bool `json:"readonly,omitempty"`
+ APIGroup string `json:"apiGroup,omitempty"`
+ Resource string `json:"resource,omitempty"`
+ Namespace string `json:"namespace,omitempty"`
+ NonResourcePath string `json:"nonResourcePath,omitempty"`
+ } `json:"spec"`
+}
+
+// PolicyWithId is used as an internal type to render table formated versions of the json response
+type PolicyWithID struct {
+ Policy
+ ID string
+}
+
+// MarshalJSON returns a marshaled copy of the internal policy object, so it is still valid to use
+// with the REST API
+func (p *PolicyWithID) MarshalJSON() ([]byte, error) {
+ return json.Marshal(p.Policy)
+}
+
+// PolicySet is a representation of the data structure returned from the REST API
+type PolicySet map[string]Policy
+
+func (p PolicySet) GetPoliciesWithID() []*PolicyWithID {
+ rtn := make([]*PolicyWithID, 0, len(p))
+
+ for k, v := range p {
+ rtn = append(rtn, &PolicyWithID{
+ Policy: v,
+ ID: k,
+ })
+ }
+
+ return rtn
+}
diff --git a/vendor/github.com/storageos/go-api/types/user.go b/vendor/github.com/storageos/go-api/types/user.go
new file mode 100644
index 000000000000..aa4bca8ce5bb
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/types/user.go
@@ -0,0 +1,79 @@
+package types
+
+import (
+ "context"
+ "encoding/json"
+ "strings"
+)
+
+type User struct {
+ UUID string `json:"id"`
+ Username string `json:"username"`
+ Groups []string `json:"groups"`
+ Password string `json:"password,omitempty"`
+ Role string `json:"role"`
+}
+
+func (u *User) MarshalJSON() ([]byte, error) {
+ return json.Marshal(&struct {
+ UUID string `json:"id"`
+ Username string `json:"username"`
+ Groups string `json:"groups"`
+ Password string `json:"password,omitempty"`
+ Role string `json:"role"`
+ }{
+ UUID: u.UUID,
+ Username: u.Username,
+ Groups: strings.Join(u.Groups, ","),
+ Password: u.Password,
+ Role: u.Role,
+ })
+
+}
+
+func (u *User) UnmarshalJSON(data []byte) error {
+ temp := &struct {
+ UUID string `json:"id"`
+ Username string `json:"username"`
+ Groups string `json:"groups"`
+ Password string `json:"password"`
+ Role string `json:"role"`
+ }{}
+
+ if err := json.Unmarshal(data, temp); err != nil {
+ return err
+ }
+
+ u.UUID = temp.UUID
+ u.Username = temp.Username
+ u.Password = temp.Password
+ u.Role = temp.Role
+ u.Groups = strings.Split(temp.Groups, ",")
+
+ return nil
+}
+
+type UserCreateOptions struct {
+ Username string `json:"username"`
+ Groups []string `json:"groups"`
+ Password string `json:"password"`
+ Role string `json:"role"`
+
+ // Context can be set with a timeout or can be used to cancel a request.
+ Context context.Context `json:"-"`
+}
+
+func (u UserCreateOptions) MarshalJSON() ([]byte, error) {
+ return json.Marshal(&struct {
+ Username string `json:"username"`
+ Groups string `json:"groups"`
+ Password string `json:"password"`
+ Role string `json:"role"`
+ }{
+ Username: u.Username,
+ Groups: strings.Join(u.Groups, ","),
+ Password: u.Password,
+ Role: u.Role,
+ })
+
+}
diff --git a/vendor/github.com/storageos/go-api/types/volume.go b/vendor/github.com/storageos/go-api/types/volume.go
index 62665c2576f5..698d7a92d724 100644
--- a/vendor/github.com/storageos/go-api/types/volume.go
+++ b/vendor/github.com/storageos/go-api/types/volume.go
@@ -43,6 +43,9 @@ type Volume struct {
// Namespace is the object name and authentication scope, such as for teams and projects.
Namespace string `json:"namespace"`
+ // node selector (where volumes should land)
+ NodeSelector string `json:"nodeSelector"`
+
// Volume deployment information for the master volume.
// Read Only: true
Master *Deployment `json:"master,omitempty"`
@@ -51,6 +54,9 @@ type Volume struct {
// Read Only: true
Mounted bool `json:"mounted"`
+ // MountDevice, where the device is located
+ MountDevice string `json:"mountDevice"`
+
// Mountpoint, where the volume is mounted
Mountpoint string `json:"mountpoint"`
@@ -78,6 +84,10 @@ type Volume struct {
// Read Only: true
StatusMessage string `json:"statusMessage"`
+ // mkfs performed on new volumes
+ MkfsDone bool `json:"mkfsDone"`
+ MkfsDoneAt time.Time `json:"mkfsDoneAt"`
+
// When the volume was created.
// Read Only: true
CreatedAt time.Time `json:"createdAt"`
diff --git a/vendor/github.com/storageos/go-api/types/volume_create_options.go b/vendor/github.com/storageos/go-api/types/volume_create_options.go
index f767b1d8f52c..d7096e1e89a8 100644
--- a/vendor/github.com/storageos/go-api/types/volume_create_options.go
+++ b/vendor/github.com/storageos/go-api/types/volume_create_options.go
@@ -25,6 +25,9 @@ type VolumeCreateOptions struct {
// Namespace is the object scope, such as for teams and projects.
Namespace string `json:"namespace"`
+ // node selector (where volumes should land)
+ NodeSelector string `json:"nodeSelector"`
+
// Labels are user-defined key/value metadata.
Labels map[string]string `json:"labels"`
diff --git a/vendor/github.com/storageos/go-api/types/volume_update_options.go b/vendor/github.com/storageos/go-api/types/volume_update_options.go
index d0c8d6b4f1bc..3c73c6b904e5 100644
--- a/vendor/github.com/storageos/go-api/types/volume_update_options.go
+++ b/vendor/github.com/storageos/go-api/types/volume_update_options.go
@@ -23,6 +23,9 @@ type VolumeUpdateOptions struct {
// Namespace is the object scope, such as for teams and projects.
Namespace string `json:"namespace"`
+ // node selector (where volumes should land)
+ NodeSelector string `json:"nodeSelector"`
+
// Labels are user-defined key/value metadata.
Labels map[string]string `json:"labels"`
diff --git a/vendor/github.com/storageos/go-api/user.go b/vendor/github.com/storageos/go-api/user.go
new file mode 100644
index 000000000000..19688203aa08
--- /dev/null
+++ b/vendor/github.com/storageos/go-api/user.go
@@ -0,0 +1,119 @@
+package storageos
+
+import (
+ "context"
+ "encoding/json"
+ "errors"
+ "fmt"
+ "net/http"
+ "net/url"
+
+ "github.com/storageos/go-api/types"
+)
+
+var (
+
+ // UserAPIPrefix is a partial path to the HTTP endpoint.
+ UserAPIPrefix = "users"
+
+ // ErrNoSuchUser is the error returned when the user does not exist.
+ ErrNoSuchUser = errors.New("no such user")
+)
+
+// UserList returns the list of available users.
+func (c *Client) UserList(opts types.ListOptions) ([]*types.User, error) {
+ listOpts := doOptions{
+ fieldSelector: opts.FieldSelector,
+ labelSelector: opts.LabelSelector,
+ namespace: opts.Namespace,
+ context: opts.Context,
+ }
+
+ if opts.LabelSelector != "" {
+ query := url.Values{}
+ query.Add("labelSelector", opts.LabelSelector)
+ listOpts.values = query
+ }
+
+ resp, err := c.do("GET", UserAPIPrefix, listOpts)
+ if err != nil {
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ users := make([]*types.User, 0)
+ if err := json.NewDecoder(resp.Body).Decode(&users); err != nil {
+ return nil, err
+ }
+ return users, nil
+}
+
+// User returns a user by its username/id.
+func (c *Client) User(username string) (*types.User, error) {
+ path := fmt.Sprintf("%s/%s", UserAPIPrefix, username)
+ resp, err := c.do("GET", path, doOptions{})
+ if err != nil {
+ if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound {
+ return nil, ErrNoSuchUser
+ }
+ return nil, err
+ }
+ defer resp.Body.Close()
+
+ var user *types.User
+ if err := json.NewDecoder(resp.Body).Decode(&user); err != nil {
+ return nil, err
+ }
+ return user, nil
+}
+
+// UserCreate creates a user on the server.
+func (c *Client) UserCreate(opts types.UserCreateOptions) error {
+ _, err := c.do("POST", UserAPIPrefix, doOptions{
+ data: opts,
+ context: opts.Context,
+ })
+ return err
+}
+
+// UserUpdate updates a user on the server.
+func (c *Client) UserUpdate(user *types.User, ctx context.Context) error {
+ var ref string
+ switch {
+ case user.UUID != "":
+ ref = user.UUID
+ case user.Username != "":
+ ref = user.Username
+ default:
+ return ErrNoSuchUser
+ }
+
+ path := fmt.Sprintf("%s/%s", UserAPIPrefix, ref)
+ resp, err := c.do("POST", path, doOptions{
+ data: user,
+ context: ctx,
+ })
+ if err != nil {
+ if e, ok := err.(*Error); ok && e.Status == http.StatusNotFound {
+ return ErrNoSuchUser
+ }
+ return err
+ }
+ defer resp.Body.Close()
+ return nil
+}
+
+// UserDelete removes a user by its reference.
+func (c *Client) UserDelete(opts types.DeleteOptions) error {
+ resp, err := c.do("DELETE", UserAPIPrefix+"/"+opts.Name, doOptions{})
+ if err != nil {
+ if e, ok := err.(*Error); ok {
+ if e.Status == http.StatusNotFound {
+ return ErrNoSuchUser
+ }
+ }
+ return err
+ }
+ defer resp.Body.Close()
+ return nil
+}
diff --git a/vendor/github.com/vishvananda/netlink/Makefile b/vendor/github.com/vishvananda/netlink/Makefile
index 6c8413b13a52..a0e68e7a9aaa 100644
--- a/vendor/github.com/vishvananda/netlink/Makefile
+++ b/vendor/github.com/vishvananda/netlink/Makefile
@@ -3,7 +3,8 @@ DIRS := \
nl
DEPS = \
- github.com/vishvananda/netns
+ github.com/vishvananda/netns \
+ golang.org/x/sys/unix
uniq = $(if $1,$(firstword $1) $(call uniq,$(filter-out $(firstword $1),$1)))
testdirs = $(call uniq,$(foreach d,$(1),$(dir $(wildcard $(d)/*_test.go))))
@@ -18,7 +19,7 @@ $(call goroot,$(DEPS)):
.PHONY: $(call testdirs,$(DIRS))
$(call testdirs,$(DIRS)):
- sudo -E go test -test.parallel 4 -timeout 60s -v github.com/vishvananda/netlink/$@
+ go test -test.exec sudo -test.parallel 4 -timeout 60s -test.v github.com/vishvananda/netlink/$@
$(call fmt,$(call testdirs,$(DIRS))):
! gofmt -l $(subst fmt-,,$@)/*.go | grep -q .
diff --git a/vendor/github.com/vishvananda/netlink/README.md b/vendor/github.com/vishvananda/netlink/README.md
index 0b61be217e0b..a88e2f418409 100644
--- a/vendor/github.com/vishvananda/netlink/README.md
+++ b/vendor/github.com/vishvananda/netlink/README.md
@@ -89,3 +89,4 @@ There are also a few pieces of low level netlink functionality that still
need to be implemented. Routing rules are not in place and some of the
more advanced link types. Hopefully there is decent structure and testing
in place to make these fairly straightforward to add.
+
diff --git a/vendor/github.com/vishvananda/netlink/addr_linux.go b/vendor/github.com/vishvananda/netlink/addr_linux.go
index 92edb90d09f3..8597ab7fcbcc 100644
--- a/vendor/github.com/vishvananda/netlink/addr_linux.go
+++ b/vendor/github.com/vishvananda/netlink/addr_linux.go
@@ -2,13 +2,12 @@ package netlink
import (
"fmt"
- "log"
"net"
"strings"
- "syscall"
"github.com/vishvananda/netlink/nl"
"github.com/vishvananda/netns"
+ "golang.org/x/sys/unix"
)
// IFA_FLAGS is a u32 attribute.
@@ -23,7 +22,7 @@ func AddrAdd(link Link, addr *Addr) error {
// AddrAdd will add an IP address to a link device.
// Equivalent to: `ip addr add $addr dev $link`
func (h *Handle) AddrAdd(link Link, addr *Addr) error {
- req := h.newNetlinkRequest(syscall.RTM_NEWADDR, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_NEWADDR, unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
return h.addrHandle(link, addr, req)
}
@@ -36,7 +35,7 @@ func AddrReplace(link Link, addr *Addr) error {
// AddrReplace will replace (or, if not present, add) an IP address on a link device.
// Equivalent to: `ip addr replace $addr dev $link`
func (h *Handle) AddrReplace(link Link, addr *Addr) error {
- req := h.newNetlinkRequest(syscall.RTM_NEWADDR, syscall.NLM_F_CREATE|syscall.NLM_F_REPLACE|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_NEWADDR, unix.NLM_F_CREATE|unix.NLM_F_REPLACE|unix.NLM_F_ACK)
return h.addrHandle(link, addr, req)
}
@@ -49,7 +48,7 @@ func AddrDel(link Link, addr *Addr) error {
// AddrDel will delete an IP address from a link device.
// Equivalent to: `ip addr del $addr dev $link`
func (h *Handle) AddrDel(link Link, addr *Addr) error {
- req := h.newNetlinkRequest(syscall.RTM_DELADDR, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_DELADDR, unix.NLM_F_ACK)
return h.addrHandle(link, addr, req)
}
@@ -76,7 +75,7 @@ func (h *Handle) addrHandle(link Link, addr *Addr, req *nl.NetlinkRequest) error
localAddrData = addr.IP.To16()
}
- localData := nl.NewRtAttr(syscall.IFA_LOCAL, localAddrData)
+ localData := nl.NewRtAttr(unix.IFA_LOCAL, localAddrData)
req.AddData(localData)
var peerAddrData []byte
if addr.Peer != nil {
@@ -89,7 +88,7 @@ func (h *Handle) addrHandle(link Link, addr *Addr, req *nl.NetlinkRequest) error
peerAddrData = localAddrData
}
- addressData := nl.NewRtAttr(syscall.IFA_ADDRESS, peerAddrData)
+ addressData := nl.NewRtAttr(unix.IFA_ADDRESS, peerAddrData)
req.AddData(addressData)
if addr.Flags != 0 {
@@ -110,14 +109,14 @@ func (h *Handle) addrHandle(link Link, addr *Addr, req *nl.NetlinkRequest) error
}
addr.Broadcast = calcBroadcast
}
- req.AddData(nl.NewRtAttr(syscall.IFA_BROADCAST, addr.Broadcast))
+ req.AddData(nl.NewRtAttr(unix.IFA_BROADCAST, addr.Broadcast))
if addr.Label != "" {
- labelData := nl.NewRtAttr(syscall.IFA_LABEL, nl.ZeroTerminated(addr.Label))
+ labelData := nl.NewRtAttr(unix.IFA_LABEL, nl.ZeroTerminated(addr.Label))
req.AddData(labelData)
}
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -132,11 +131,11 @@ func AddrList(link Link, family int) ([]Addr, error) {
// Equivalent to: `ip addr show`.
// The list can be filtered by link and ip family.
func (h *Handle) AddrList(link Link, family int) ([]Addr, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETADDR, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(unix.RTM_GETADDR, unix.NLM_F_DUMP)
msg := nl.NewIfInfomsg(family)
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWADDR)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWADDR)
if err != nil {
return nil, err
}
@@ -188,21 +187,21 @@ func parseAddr(m []byte) (addr Addr, family, index int, err error) {
var local, dst *net.IPNet
for _, attr := range attrs {
switch attr.Attr.Type {
- case syscall.IFA_ADDRESS:
+ case unix.IFA_ADDRESS:
dst = &net.IPNet{
IP: attr.Value,
Mask: net.CIDRMask(int(msg.Prefixlen), 8*len(attr.Value)),
}
addr.Peer = dst
- case syscall.IFA_LOCAL:
+ case unix.IFA_LOCAL:
local = &net.IPNet{
IP: attr.Value,
Mask: net.CIDRMask(int(msg.Prefixlen), 8*len(attr.Value)),
}
addr.IPNet = local
- case syscall.IFA_BROADCAST:
+ case unix.IFA_BROADCAST:
addr.Broadcast = attr.Value
- case syscall.IFA_LABEL:
+ case unix.IFA_LABEL:
addr.Label = string(attr.Value[:len(attr.Value)-1])
case IFA_FLAGS:
addr.Flags = int(native.Uint32(attr.Value[0:4]))
@@ -237,17 +236,35 @@ type AddrUpdate struct {
// AddrSubscribe takes a chan down which notifications will be sent
// when addresses change. Close the 'done' chan to stop subscription.
func AddrSubscribe(ch chan<- AddrUpdate, done <-chan struct{}) error {
- return addrSubscribe(netns.None(), netns.None(), ch, done)
+ return addrSubscribeAt(netns.None(), netns.None(), ch, done, nil)
}
// AddrSubscribeAt works like AddrSubscribe plus it allows the caller
// to choose the network namespace in which to subscribe (ns).
func AddrSubscribeAt(ns netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}) error {
- return addrSubscribe(ns, netns.None(), ch, done)
+ return addrSubscribeAt(ns, netns.None(), ch, done, nil)
}
-func addrSubscribe(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}) error {
- s, err := nl.SubscribeAt(newNs, curNs, syscall.NETLINK_ROUTE, syscall.RTNLGRP_IPV4_IFADDR, syscall.RTNLGRP_IPV6_IFADDR)
+// AddrSubscribeOptions contains a set of options to use with
+// AddrSubscribeWithOptions.
+type AddrSubscribeOptions struct {
+ Namespace *netns.NsHandle
+ ErrorCallback func(error)
+}
+
+// AddrSubscribeWithOptions work like AddrSubscribe but enable to
+// provide additional options to modify the behavior. Currently, the
+// namespace can be provided as well as an error callback.
+func AddrSubscribeWithOptions(ch chan<- AddrUpdate, done <-chan struct{}, options AddrSubscribeOptions) error {
+ if options.Namespace == nil {
+ none := netns.None()
+ options.Namespace = &none
+ }
+ return addrSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback)
+}
+
+func addrSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-chan struct{}, cberr func(error)) error {
+ s, err := nl.SubscribeAt(newNs, curNs, unix.NETLINK_ROUTE, unix.RTNLGRP_IPV4_IFADDR, unix.RTNLGRP_IPV6_IFADDR)
if err != nil {
return err
}
@@ -262,25 +279,31 @@ func addrSubscribe(newNs, curNs netns.NsHandle, ch chan<- AddrUpdate, done <-cha
for {
msgs, err := s.Receive()
if err != nil {
- log.Printf("netlink.AddrSubscribe: Receive() error: %v", err)
+ if cberr != nil {
+ cberr(err)
+ }
return
}
for _, m := range msgs {
msgType := m.Header.Type
- if msgType != syscall.RTM_NEWADDR && msgType != syscall.RTM_DELADDR {
- log.Printf("netlink.AddrSubscribe: bad message type: %d", msgType)
- continue
+ if msgType != unix.RTM_NEWADDR && msgType != unix.RTM_DELADDR {
+ if cberr != nil {
+ cberr(fmt.Errorf("bad message type: %d", msgType))
+ }
+ return
}
addr, _, ifindex, err := parseAddr(m.Data)
if err != nil {
- log.Printf("netlink.AddrSubscribe: could not parse address: %v", err)
- continue
+ if cberr != nil {
+ cberr(fmt.Errorf("could not parse address: %v", err))
+ }
+ return
}
ch <- AddrUpdate{LinkAddress: *addr.IPNet,
LinkIndex: ifindex,
- NewAddr: msgType == syscall.RTM_NEWADDR,
+ NewAddr: msgType == unix.RTM_NEWADDR,
Flags: addr.Flags,
Scope: addr.Scope,
PreferedLft: addr.PreferedLft,
diff --git a/vendor/github.com/vishvananda/netlink/bridge_linux.go b/vendor/github.com/vishvananda/netlink/bridge_linux.go
index a65d6a1319a5..6eb331ef1545 100644
--- a/vendor/github.com/vishvananda/netlink/bridge_linux.go
+++ b/vendor/github.com/vishvananda/netlink/bridge_linux.go
@@ -2,9 +2,9 @@ package netlink
import (
"fmt"
- "syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
// BridgeVlanList gets a map of device id to bridge vlan infos.
@@ -16,12 +16,12 @@ func BridgeVlanList() (map[int32][]*nl.BridgeVlanInfo, error) {
// BridgeVlanList gets a map of device id to bridge vlan infos.
// Equivalent to: `bridge vlan show`
func (h *Handle) BridgeVlanList() (map[int32][]*nl.BridgeVlanInfo, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_DUMP)
- msg := nl.NewIfInfomsg(syscall.AF_BRIDGE)
+ req := h.newNetlinkRequest(unix.RTM_GETLINK, unix.NLM_F_DUMP)
+ msg := nl.NewIfInfomsg(unix.AF_BRIDGE)
req.AddData(msg)
req.AddData(nl.NewRtAttr(nl.IFLA_EXT_MASK, nl.Uint32Attr(uint32(nl.RTEXT_FILTER_BRVLAN))))
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWLINK)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWLINK)
if err != nil {
return nil, err
}
@@ -63,7 +63,7 @@ func BridgeVlanAdd(link Link, vid uint16, pvid, untagged, self, master bool) err
// BridgeVlanAdd adds a new vlan filter entry
// Equivalent to: `bridge vlan add dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]`
func (h *Handle) BridgeVlanAdd(link Link, vid uint16, pvid, untagged, self, master bool) error {
- return h.bridgeVlanModify(syscall.RTM_SETLINK, link, vid, pvid, untagged, self, master)
+ return h.bridgeVlanModify(unix.RTM_SETLINK, link, vid, pvid, untagged, self, master)
}
// BridgeVlanDel adds a new vlan filter entry
@@ -75,15 +75,15 @@ func BridgeVlanDel(link Link, vid uint16, pvid, untagged, self, master bool) err
// BridgeVlanDel adds a new vlan filter entry
// Equivalent to: `bridge vlan del dev DEV vid VID [ pvid ] [ untagged ] [ self ] [ master ]`
func (h *Handle) BridgeVlanDel(link Link, vid uint16, pvid, untagged, self, master bool) error {
- return h.bridgeVlanModify(syscall.RTM_DELLINK, link, vid, pvid, untagged, self, master)
+ return h.bridgeVlanModify(unix.RTM_DELLINK, link, vid, pvid, untagged, self, master)
}
func (h *Handle) bridgeVlanModify(cmd int, link Link, vid uint16, pvid, untagged, self, master bool) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(cmd, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(cmd, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_BRIDGE)
+ msg := nl.NewIfInfomsg(unix.AF_BRIDGE)
msg.Index = int32(base.Index)
req.AddData(msg)
@@ -107,7 +107,7 @@ func (h *Handle) bridgeVlanModify(cmd int, link Link, vid uint16, pvid, untagged
}
nl.NewRtAttrChild(br, nl.IFLA_BRIDGE_VLAN_INFO, vlanInfo.Serialize())
req.AddData(br)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
if err != nil {
return err
}
diff --git a/vendor/github.com/vishvananda/netlink/class_linux.go b/vendor/github.com/vishvananda/netlink/class_linux.go
index 91cd3883de90..a4997740e292 100644
--- a/vendor/github.com/vishvananda/netlink/class_linux.go
+++ b/vendor/github.com/vishvananda/netlink/class_linux.go
@@ -5,6 +5,7 @@ import (
"syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
// NOTE: function is in here because it uses other linux functions
@@ -50,7 +51,7 @@ func ClassDel(class Class) error {
// ClassDel will delete a class from the system.
// Equivalent to: `tc class del $class`
func (h *Handle) ClassDel(class Class) error {
- return h.classModify(syscall.RTM_DELTCLASS, 0, class)
+ return h.classModify(unix.RTM_DELTCLASS, 0, class)
}
// ClassChange will change a class in place
@@ -64,7 +65,7 @@ func ClassChange(class Class) error {
// Equivalent to: `tc class change $class`
// The parent and handle MUST NOT be changed.
func (h *Handle) ClassChange(class Class) error {
- return h.classModify(syscall.RTM_NEWTCLASS, 0, class)
+ return h.classModify(unix.RTM_NEWTCLASS, 0, class)
}
// ClassReplace will replace a class to the system.
@@ -82,7 +83,7 @@ func ClassReplace(class Class) error {
// If a class already exist with this parent/handle pair, the class is changed.
// If a class does not already exist with this parent/handle, a new class is created.
func (h *Handle) ClassReplace(class Class) error {
- return h.classModify(syscall.RTM_NEWTCLASS, syscall.NLM_F_CREATE, class)
+ return h.classModify(unix.RTM_NEWTCLASS, unix.NLM_F_CREATE, class)
}
// ClassAdd will add a class to the system.
@@ -95,14 +96,14 @@ func ClassAdd(class Class) error {
// Equivalent to: `tc class add $class`
func (h *Handle) ClassAdd(class Class) error {
return h.classModify(
- syscall.RTM_NEWTCLASS,
- syscall.NLM_F_CREATE|syscall.NLM_F_EXCL,
+ unix.RTM_NEWTCLASS,
+ unix.NLM_F_CREATE|unix.NLM_F_EXCL,
class,
)
}
func (h *Handle) classModify(cmd, flags int, class Class) error {
- req := h.newNetlinkRequest(cmd, flags|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(cmd, flags|unix.NLM_F_ACK)
base := class.Attrs()
msg := &nl.TcMsg{
Family: nl.FAMILY_ALL,
@@ -112,12 +113,12 @@ func (h *Handle) classModify(cmd, flags int, class Class) error {
}
req.AddData(msg)
- if cmd != syscall.RTM_DELTCLASS {
+ if cmd != unix.RTM_DELTCLASS {
if err := classPayload(req, class); err != nil {
return err
}
}
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -141,12 +142,12 @@ func classPayload(req *nl.NetlinkRequest, class Class) error {
var rtab [256]uint32
var ctab [256]uint32
tcrate := nl.TcRateSpec{Rate: uint32(htb.Rate)}
- if CalcRtable(&tcrate, rtab, cellLog, uint32(mtu), linklayer) < 0 {
+ if CalcRtable(&tcrate, rtab[:], cellLog, uint32(mtu), linklayer) < 0 {
return errors.New("HTB: failed to calculate rate table")
}
opt.Rate = tcrate
tcceil := nl.TcRateSpec{Rate: uint32(htb.Ceil)}
- if CalcRtable(&tcceil, ctab, ccellLog, uint32(mtu), linklayer) < 0 {
+ if CalcRtable(&tcceil, ctab[:], ccellLog, uint32(mtu), linklayer) < 0 {
return errors.New("HTB: failed to calculate ceil rate table")
}
opt.Ceil = tcceil
@@ -169,7 +170,7 @@ func ClassList(link Link, parent uint32) ([]Class, error) {
// Equivalent to: `tc class show`.
// Generally returns nothing if link and parent are not specified.
func (h *Handle) ClassList(link Link, parent uint32) ([]Class, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETTCLASS, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(unix.RTM_GETTCLASS, unix.NLM_F_DUMP)
msg := &nl.TcMsg{
Family: nl.FAMILY_ALL,
Parent: parent,
@@ -181,7 +182,7 @@ func (h *Handle) ClassList(link Link, parent uint32) ([]Class, error) {
}
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWTCLASS)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWTCLASS)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/vishvananda/netlink/conntrack_linux.go b/vendor/github.com/vishvananda/netlink/conntrack_linux.go
index ecf044565909..a0fc74a37224 100644
--- a/vendor/github.com/vishvananda/netlink/conntrack_linux.go
+++ b/vendor/github.com/vishvananda/netlink/conntrack_linux.go
@@ -6,9 +6,9 @@ import (
"errors"
"fmt"
"net"
- "syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
// ConntrackTableType Conntrack table for the netlink operation
@@ -85,8 +85,8 @@ func (h *Handle) ConntrackTableList(table ConntrackTableType, family InetFamily)
// conntrack -F [table] Flush table
// The flush operation applies to all the family types
func (h *Handle) ConntrackTableFlush(table ConntrackTableType) error {
- req := h.newConntrackRequest(table, syscall.AF_INET, nl.IPCTNL_MSG_CT_DELETE, syscall.NLM_F_ACK)
- _, err := req.Execute(syscall.NETLINK_NETFILTER, 0)
+ req := h.newConntrackRequest(table, unix.AF_INET, nl.IPCTNL_MSG_CT_DELETE, unix.NLM_F_ACK)
+ _, err := req.Execute(unix.NETLINK_NETFILTER, 0)
return err
}
@@ -102,10 +102,10 @@ func (h *Handle) ConntrackDeleteFilter(table ConntrackTableType, family InetFami
for _, dataRaw := range res {
flow := parseRawData(dataRaw)
if match := filter.MatchConntrackFlow(flow); match {
- req2 := h.newConntrackRequest(table, family, nl.IPCTNL_MSG_CT_DELETE, syscall.NLM_F_ACK)
+ req2 := h.newConntrackRequest(table, family, nl.IPCTNL_MSG_CT_DELETE, unix.NLM_F_ACK)
// skip the first 4 byte that are the netfilter header, the newConntrackRequest is adding it already
req2.AddRawData(dataRaw[4:])
- req2.Execute(syscall.NETLINK_NETFILTER, 0)
+ req2.Execute(unix.NETLINK_NETFILTER, 0)
matched++
}
}
@@ -127,8 +127,8 @@ func (h *Handle) newConntrackRequest(table ConntrackTableType, family InetFamily
}
func (h *Handle) dumpConntrackTable(table ConntrackTableType, family InetFamily) ([][]byte, error) {
- req := h.newConntrackRequest(table, family, nl.IPCTNL_MSG_CT_GET, syscall.NLM_F_DUMP)
- return req.Execute(syscall.NETLINK_NETFILTER, 0)
+ req := h.newConntrackRequest(table, family, nl.IPCTNL_MSG_CT_GET, unix.NLM_F_DUMP)
+ return req.Execute(unix.NETLINK_NETFILTER, 0)
}
// The full conntrack flow structure is very complicated and can be found in the file:
diff --git a/vendor/github.com/vishvananda/netlink/filter.go b/vendor/github.com/vishvananda/netlink/filter.go
index 938b28b0b03b..30b541494e24 100644
--- a/vendor/github.com/vishvananda/netlink/filter.go
+++ b/vendor/github.com/vishvananda/netlink/filter.go
@@ -2,8 +2,6 @@ package netlink
import (
"fmt"
-
- "github.com/vishvananda/netlink/nl"
)
type Filter interface {
@@ -19,7 +17,7 @@ type FilterAttrs struct {
Handle uint32
Parent uint32
Priority uint16 // lower is higher priority
- Protocol uint16 // syscall.ETH_P_*
+ Protocol uint16 // unix.ETH_P_*
}
func (q FilterAttrs) String() string {
@@ -184,14 +182,6 @@ func NewMirredAction(redirIndex int) *MirredAction {
}
}
-// Constants used in TcU32Sel.Flags.
-const (
- TC_U32_TERMINAL = nl.TC_U32_TERMINAL
- TC_U32_OFFSET = nl.TC_U32_OFFSET
- TC_U32_VAROFFSET = nl.TC_U32_VAROFFSET
- TC_U32_EAT = nl.TC_U32_EAT
-)
-
// Sel of the U32 filters that contains multiple TcU32Key. This is the copy
// and the frontend representation of nl.TcU32Sel. It is serialized into canonical
// nl.TcU32Sel with the appropriate endianness.
diff --git a/vendor/github.com/vishvananda/netlink/filter_linux.go b/vendor/github.com/vishvananda/netlink/filter_linux.go
index dc0f90af8804..7cb7a4fd9400 100644
--- a/vendor/github.com/vishvananda/netlink/filter_linux.go
+++ b/vendor/github.com/vishvananda/netlink/filter_linux.go
@@ -9,6 +9,15 @@ import (
"unsafe"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
+)
+
+// Constants used in TcU32Sel.Flags.
+const (
+ TC_U32_TERMINAL = nl.TC_U32_TERMINAL
+ TC_U32_OFFSET = nl.TC_U32_OFFSET
+ TC_U32_VAROFFSET = nl.TC_U32_VAROFFSET
+ TC_U32_EAT = nl.TC_U32_EAT
)
// Fw filter filters on firewall marks
@@ -47,7 +56,7 @@ func NewFw(attrs FilterAttrs, fattrs FilterFwAttrs) (*Fw, error) {
if police.Rate.Rate != 0 {
police.Rate.Mpu = fattrs.Mpu
police.Rate.Overhead = fattrs.Overhead
- if CalcRtable(&police.Rate, rtab, rcellLog, fattrs.Mtu, linklayer) < 0 {
+ if CalcRtable(&police.Rate, rtab[:], rcellLog, fattrs.Mtu, linklayer) < 0 {
return nil, errors.New("TBF: failed to calculate rate table")
}
police.Burst = uint32(Xmittime(uint64(police.Rate.Rate), uint32(buffer)))
@@ -56,7 +65,7 @@ func NewFw(attrs FilterAttrs, fattrs FilterFwAttrs) (*Fw, error) {
if police.PeakRate.Rate != 0 {
police.PeakRate.Mpu = fattrs.Mpu
police.PeakRate.Overhead = fattrs.Overhead
- if CalcRtable(&police.PeakRate, ptab, pcellLog, fattrs.Mtu, linklayer) < 0 {
+ if CalcRtable(&police.PeakRate, ptab[:], pcellLog, fattrs.Mtu, linklayer) < 0 {
return nil, errors.New("POLICE: failed to calculate peak rate table")
}
}
@@ -90,7 +99,7 @@ func FilterDel(filter Filter) error {
// FilterDel will delete a filter from the system.
// Equivalent to: `tc filter del $filter`
func (h *Handle) FilterDel(filter Filter) error {
- req := h.newNetlinkRequest(syscall.RTM_DELTFILTER, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_DELTFILTER, unix.NLM_F_ACK)
base := filter.Attrs()
msg := &nl.TcMsg{
Family: nl.FAMILY_ALL,
@@ -101,7 +110,7 @@ func (h *Handle) FilterDel(filter Filter) error {
}
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -115,7 +124,7 @@ func FilterAdd(filter Filter) error {
// Equivalent to: `tc filter add $filter`
func (h *Handle) FilterAdd(filter Filter) error {
native = nl.NativeEndian()
- req := h.newNetlinkRequest(syscall.RTM_NEWTFILTER, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_NEWTFILTER, unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
base := filter.Attrs()
msg := &nl.TcMsg{
Family: nl.FAMILY_ALL,
@@ -128,9 +137,11 @@ func (h *Handle) FilterAdd(filter Filter) error {
req.AddData(nl.NewRtAttr(nl.TCA_KIND, nl.ZeroTerminated(filter.Type())))
options := nl.NewRtAttr(nl.TCA_OPTIONS, nil)
- if u32, ok := filter.(*U32); ok {
+
+ switch filter := filter.(type) {
+ case *U32:
// Convert TcU32Sel into nl.TcU32Sel as it is without copy.
- sel := (*nl.TcU32Sel)(unsafe.Pointer(u32.Sel))
+ sel := (*nl.TcU32Sel)(unsafe.Pointer(filter.Sel))
if sel == nil {
// match all
sel = &nl.TcU32Sel{
@@ -158,63 +169,63 @@ func (h *Handle) FilterAdd(filter Filter) error {
}
sel.Nkeys = uint8(len(sel.Keys))
nl.NewRtAttrChild(options, nl.TCA_U32_SEL, sel.Serialize())
- if u32.ClassId != 0 {
- nl.NewRtAttrChild(options, nl.TCA_U32_CLASSID, nl.Uint32Attr(u32.ClassId))
+ if filter.ClassId != 0 {
+ nl.NewRtAttrChild(options, nl.TCA_U32_CLASSID, nl.Uint32Attr(filter.ClassId))
}
actionsAttr := nl.NewRtAttrChild(options, nl.TCA_U32_ACT, nil)
// backwards compatibility
- if u32.RedirIndex != 0 {
- u32.Actions = append([]Action{NewMirredAction(u32.RedirIndex)}, u32.Actions...)
+ if filter.RedirIndex != 0 {
+ filter.Actions = append([]Action{NewMirredAction(filter.RedirIndex)}, filter.Actions...)
}
- if err := EncodeActions(actionsAttr, u32.Actions); err != nil {
+ if err := EncodeActions(actionsAttr, filter.Actions); err != nil {
return err
}
- } else if fw, ok := filter.(*Fw); ok {
- if fw.Mask != 0 {
+ case *Fw:
+ if filter.Mask != 0 {
b := make([]byte, 4)
- native.PutUint32(b, fw.Mask)
+ native.PutUint32(b, filter.Mask)
nl.NewRtAttrChild(options, nl.TCA_FW_MASK, b)
}
- if fw.InDev != "" {
- nl.NewRtAttrChild(options, nl.TCA_FW_INDEV, nl.ZeroTerminated(fw.InDev))
+ if filter.InDev != "" {
+ nl.NewRtAttrChild(options, nl.TCA_FW_INDEV, nl.ZeroTerminated(filter.InDev))
}
- if (fw.Police != nl.TcPolice{}) {
+ if (filter.Police != nl.TcPolice{}) {
police := nl.NewRtAttrChild(options, nl.TCA_FW_POLICE, nil)
- nl.NewRtAttrChild(police, nl.TCA_POLICE_TBF, fw.Police.Serialize())
- if (fw.Police.Rate != nl.TcRateSpec{}) {
- payload := SerializeRtab(fw.Rtab)
+ nl.NewRtAttrChild(police, nl.TCA_POLICE_TBF, filter.Police.Serialize())
+ if (filter.Police.Rate != nl.TcRateSpec{}) {
+ payload := SerializeRtab(filter.Rtab)
nl.NewRtAttrChild(police, nl.TCA_POLICE_RATE, payload)
}
- if (fw.Police.PeakRate != nl.TcRateSpec{}) {
- payload := SerializeRtab(fw.Ptab)
+ if (filter.Police.PeakRate != nl.TcRateSpec{}) {
+ payload := SerializeRtab(filter.Ptab)
nl.NewRtAttrChild(police, nl.TCA_POLICE_PEAKRATE, payload)
}
}
- if fw.ClassId != 0 {
+ if filter.ClassId != 0 {
b := make([]byte, 4)
- native.PutUint32(b, fw.ClassId)
+ native.PutUint32(b, filter.ClassId)
nl.NewRtAttrChild(options, nl.TCA_FW_CLASSID, b)
}
- } else if bpf, ok := filter.(*BpfFilter); ok {
+ case *BpfFilter:
var bpfFlags uint32
- if bpf.ClassId != 0 {
- nl.NewRtAttrChild(options, nl.TCA_BPF_CLASSID, nl.Uint32Attr(bpf.ClassId))
+ if filter.ClassId != 0 {
+ nl.NewRtAttrChild(options, nl.TCA_BPF_CLASSID, nl.Uint32Attr(filter.ClassId))
}
- if bpf.Fd >= 0 {
- nl.NewRtAttrChild(options, nl.TCA_BPF_FD, nl.Uint32Attr((uint32(bpf.Fd))))
+ if filter.Fd >= 0 {
+ nl.NewRtAttrChild(options, nl.TCA_BPF_FD, nl.Uint32Attr((uint32(filter.Fd))))
}
- if bpf.Name != "" {
- nl.NewRtAttrChild(options, nl.TCA_BPF_NAME, nl.ZeroTerminated(bpf.Name))
+ if filter.Name != "" {
+ nl.NewRtAttrChild(options, nl.TCA_BPF_NAME, nl.ZeroTerminated(filter.Name))
}
- if bpf.DirectAction {
+ if filter.DirectAction {
bpfFlags |= nl.TCA_BPF_FLAG_ACT_DIRECT
}
nl.NewRtAttrChild(options, nl.TCA_BPF_FLAGS, nl.Uint32Attr(bpfFlags))
}
req.AddData(options)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -229,7 +240,7 @@ func FilterList(link Link, parent uint32) ([]Filter, error) {
// Equivalent to: `tc filter show`.
// Generally returns nothing if link and parent are not specified.
func (h *Handle) FilterList(link Link, parent uint32) ([]Filter, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETTFILTER, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(unix.RTM_GETTFILTER, unix.NLM_F_DUMP)
msg := &nl.TcMsg{
Family: nl.FAMILY_ALL,
Parent: parent,
@@ -241,7 +252,7 @@ func (h *Handle) FilterList(link Link, parent uint32) ([]Filter, error) {
}
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWTFILTER)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWTFILTER)
if err != nil {
return nil, err
}
@@ -552,7 +563,7 @@ func AdjustSize(sz uint, mpu uint, linklayer int) uint {
}
}
-func CalcRtable(rate *nl.TcRateSpec, rtab [256]uint32, cellLog int, mtu uint32, linklayer int) int {
+func CalcRtable(rate *nl.TcRateSpec, rtab []uint32, cellLog int, mtu uint32, linklayer int) int {
bps := rate.Rate
mpu := rate.Mpu
var sz uint
diff --git a/vendor/github.com/vishvananda/netlink/fou.go b/vendor/github.com/vishvananda/netlink/fou.go
new file mode 100644
index 000000000000..71e73c37a0a3
--- /dev/null
+++ b/vendor/github.com/vishvananda/netlink/fou.go
@@ -0,0 +1,21 @@
+package netlink
+
+import (
+ "errors"
+)
+
+var (
+ // ErrAttrHeaderTruncated is returned when a netlink attribute's header is
+ // truncated.
+ ErrAttrHeaderTruncated = errors.New("attribute header truncated")
+ // ErrAttrBodyTruncated is returned when a netlink attribute's body is
+ // truncated.
+ ErrAttrBodyTruncated = errors.New("attribute body truncated")
+)
+
+type Fou struct {
+ Family int
+ Port int
+ Protocol int
+ EncapType int
+}
diff --git a/vendor/github.com/vishvananda/netlink/fou_linux.go b/vendor/github.com/vishvananda/netlink/fou_linux.go
new file mode 100644
index 000000000000..62d59bd2d093
--- /dev/null
+++ b/vendor/github.com/vishvananda/netlink/fou_linux.go
@@ -0,0 +1,215 @@
+// +build linux
+
+package netlink
+
+import (
+ "encoding/binary"
+ "errors"
+
+ "github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
+)
+
+const (
+ FOU_GENL_NAME = "fou"
+)
+
+const (
+ FOU_CMD_UNSPEC uint8 = iota
+ FOU_CMD_ADD
+ FOU_CMD_DEL
+ FOU_CMD_GET
+ FOU_CMD_MAX = FOU_CMD_GET
+)
+
+const (
+ FOU_ATTR_UNSPEC = iota
+ FOU_ATTR_PORT
+ FOU_ATTR_AF
+ FOU_ATTR_IPPROTO
+ FOU_ATTR_TYPE
+ FOU_ATTR_REMCSUM_NOPARTIAL
+ FOU_ATTR_MAX = FOU_ATTR_REMCSUM_NOPARTIAL
+)
+
+const (
+ FOU_ENCAP_UNSPEC = iota
+ FOU_ENCAP_DIRECT
+ FOU_ENCAP_GUE
+ FOU_ENCAP_MAX = FOU_ENCAP_GUE
+)
+
+var fouFamilyId int
+
+func FouFamilyId() (int, error) {
+ if fouFamilyId != 0 {
+ return fouFamilyId, nil
+ }
+
+ fam, err := GenlFamilyGet(FOU_GENL_NAME)
+ if err != nil {
+ return -1, err
+ }
+
+ fouFamilyId = int(fam.ID)
+ return fouFamilyId, nil
+}
+
+func FouAdd(f Fou) error {
+ return pkgHandle.FouAdd(f)
+}
+
+func (h *Handle) FouAdd(f Fou) error {
+ fam_id, err := FouFamilyId()
+ if err != nil {
+ return err
+ }
+
+ // setting ip protocol conflicts with encapsulation type GUE
+ if f.EncapType == FOU_ENCAP_GUE && f.Protocol != 0 {
+ return errors.New("GUE encapsulation doesn't specify an IP protocol")
+ }
+
+ req := h.newNetlinkRequest(fam_id, unix.NLM_F_ACK)
+
+ // int to byte for port
+ bp := make([]byte, 2)
+ binary.BigEndian.PutUint16(bp[0:2], uint16(f.Port))
+
+ attrs := []*nl.RtAttr{
+ nl.NewRtAttr(FOU_ATTR_PORT, bp),
+ nl.NewRtAttr(FOU_ATTR_TYPE, []byte{uint8(f.EncapType)}),
+ nl.NewRtAttr(FOU_ATTR_AF, []byte{uint8(f.Family)}),
+ nl.NewRtAttr(FOU_ATTR_IPPROTO, []byte{uint8(f.Protocol)}),
+ }
+ raw := []byte{FOU_CMD_ADD, 1, 0, 0}
+ for _, a := range attrs {
+ raw = append(raw, a.Serialize()...)
+ }
+
+ req.AddRawData(raw)
+
+ _, err = req.Execute(unix.NETLINK_GENERIC, 0)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func FouDel(f Fou) error {
+ return pkgHandle.FouDel(f)
+}
+
+func (h *Handle) FouDel(f Fou) error {
+ fam_id, err := FouFamilyId()
+ if err != nil {
+ return err
+ }
+
+ req := h.newNetlinkRequest(fam_id, unix.NLM_F_ACK)
+
+ // int to byte for port
+ bp := make([]byte, 2)
+ binary.BigEndian.PutUint16(bp[0:2], uint16(f.Port))
+
+ attrs := []*nl.RtAttr{
+ nl.NewRtAttr(FOU_ATTR_PORT, bp),
+ nl.NewRtAttr(FOU_ATTR_AF, []byte{uint8(f.Family)}),
+ }
+ raw := []byte{FOU_CMD_DEL, 1, 0, 0}
+ for _, a := range attrs {
+ raw = append(raw, a.Serialize()...)
+ }
+
+ req.AddRawData(raw)
+
+ _, err = req.Execute(unix.NETLINK_GENERIC, 0)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+func FouList(fam int) ([]Fou, error) {
+ return pkgHandle.FouList(fam)
+}
+
+func (h *Handle) FouList(fam int) ([]Fou, error) {
+ fam_id, err := FouFamilyId()
+ if err != nil {
+ return nil, err
+ }
+
+ req := h.newNetlinkRequest(fam_id, unix.NLM_F_DUMP)
+
+ attrs := []*nl.RtAttr{
+ nl.NewRtAttr(FOU_ATTR_AF, []byte{uint8(fam)}),
+ }
+ raw := []byte{FOU_CMD_GET, 1, 0, 0}
+ for _, a := range attrs {
+ raw = append(raw, a.Serialize()...)
+ }
+
+ req.AddRawData(raw)
+
+ msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
+ if err != nil {
+ return nil, err
+ }
+
+ fous := make([]Fou, 0, len(msgs))
+ for _, m := range msgs {
+ f, err := deserializeFouMsg(m)
+ if err != nil {
+ return fous, err
+ }
+
+ fous = append(fous, f)
+ }
+
+ return fous, nil
+}
+
+func deserializeFouMsg(msg []byte) (Fou, error) {
+ // we'll skip to byte 4 to first attribute
+ msg = msg[3:]
+ var shift int
+ fou := Fou{}
+
+ for {
+ // attribute header is at least 16 bits
+ if len(msg) < 4 {
+ return fou, ErrAttrHeaderTruncated
+ }
+
+ lgt := int(binary.BigEndian.Uint16(msg[0:2]))
+ if len(msg) < lgt+4 {
+ return fou, ErrAttrBodyTruncated
+ }
+ attr := binary.BigEndian.Uint16(msg[2:4])
+
+ shift = lgt + 3
+ switch attr {
+ case FOU_ATTR_AF:
+ fou.Family = int(msg[5])
+ case FOU_ATTR_PORT:
+ fou.Port = int(binary.BigEndian.Uint16(msg[5:7]))
+ // port is 2 bytes
+ shift = lgt + 2
+ case FOU_ATTR_IPPROTO:
+ fou.Protocol = int(msg[5])
+ case FOU_ATTR_TYPE:
+ fou.EncapType = int(msg[5])
+ }
+
+ msg = msg[shift:]
+
+ if len(msg) < 4 {
+ break
+ }
+ }
+
+ return fou, nil
+}
diff --git a/vendor/github.com/vishvananda/netlink/fou_unspecified.go b/vendor/github.com/vishvananda/netlink/fou_unspecified.go
new file mode 100644
index 000000000000..3a8365bfe623
--- /dev/null
+++ b/vendor/github.com/vishvananda/netlink/fou_unspecified.go
@@ -0,0 +1,15 @@
+// +build !linux
+
+package netlink
+
+func FouAdd(f Fou) error {
+ return ErrNotImplemented
+}
+
+func FouDel(f Fou) error {
+ return ErrNotImplemented
+}
+
+func FouList(fam int) ([]Fou, error) {
+ return nil, ErrNotImplemented
+}
diff --git a/vendor/github.com/vishvananda/netlink/genetlink_linux.go b/vendor/github.com/vishvananda/netlink/genetlink_linux.go
index a388a87001ce..ce7969907d43 100644
--- a/vendor/github.com/vishvananda/netlink/genetlink_linux.go
+++ b/vendor/github.com/vishvananda/netlink/genetlink_linux.go
@@ -5,6 +5,7 @@ import (
"syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
type GenlOp struct {
@@ -130,9 +131,9 @@ func (h *Handle) GenlFamilyList() ([]*GenlFamily, error) {
Command: nl.GENL_CTRL_CMD_GETFAMILY,
Version: nl.GENL_CTRL_VERSION,
}
- req := h.newNetlinkRequest(nl.GENL_ID_CTRL, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(nl.GENL_ID_CTRL, unix.NLM_F_DUMP)
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)
+ msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
if err != nil {
return nil, err
}
@@ -151,7 +152,7 @@ func (h *Handle) GenlFamilyGet(name string) (*GenlFamily, error) {
req := h.newNetlinkRequest(nl.GENL_ID_CTRL, 0)
req.AddData(msg)
req.AddData(nl.NewRtAttr(nl.GENL_CTRL_ATTR_FAMILY_NAME, nl.ZeroTerminated(name)))
- msgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)
+ msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/vishvananda/netlink/gtp_linux.go b/vendor/github.com/vishvananda/netlink/gtp_linux.go
index 7331303ecbe1..f5e160ba5c06 100644
--- a/vendor/github.com/vishvananda/netlink/gtp_linux.go
+++ b/vendor/github.com/vishvananda/netlink/gtp_linux.go
@@ -7,6 +7,7 @@ import (
"syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
type PDP struct {
@@ -82,9 +83,9 @@ func (h *Handle) GTPPDPList() ([]*PDP, error) {
Command: nl.GENL_GTP_CMD_GETPDP,
Version: nl.GENL_GTP_VERSION,
}
- req := h.newNetlinkRequest(int(f.ID), syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(int(f.ID), unix.NLM_F_DUMP)
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)
+ msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
if err != nil {
return nil, err
}
@@ -96,7 +97,7 @@ func GTPPDPList() ([]*PDP, error) {
}
func gtpPDPGet(req *nl.NetlinkRequest) (*PDP, error) {
- msgs, err := req.Execute(syscall.NETLINK_GENERIC, 0)
+ msgs, err := req.Execute(unix.NETLINK_GENERIC, 0)
if err != nil {
return nil, err
}
@@ -182,7 +183,7 @@ func (h *Handle) GTPPDPAdd(link Link, pdp *PDP) error {
Command: nl.GENL_GTP_CMD_NEWPDP,
Version: nl.GENL_GTP_VERSION,
}
- req := h.newNetlinkRequest(int(f.ID), syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(int(f.ID), unix.NLM_F_EXCL|unix.NLM_F_ACK)
req.AddData(msg)
req.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_VERSION, nl.Uint32Attr(pdp.Version)))
req.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_LINK, nl.Uint32Attr(uint32(link.Attrs().Index))))
@@ -199,7 +200,7 @@ func (h *Handle) GTPPDPAdd(link Link, pdp *PDP) error {
default:
return fmt.Errorf("unsupported GTP version: %d", pdp.Version)
}
- _, err = req.Execute(syscall.NETLINK_GENERIC, 0)
+ _, err = req.Execute(unix.NETLINK_GENERIC, 0)
return err
}
@@ -216,7 +217,7 @@ func (h *Handle) GTPPDPDel(link Link, pdp *PDP) error {
Command: nl.GENL_GTP_CMD_DELPDP,
Version: nl.GENL_GTP_VERSION,
}
- req := h.newNetlinkRequest(int(f.ID), syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(int(f.ID), unix.NLM_F_EXCL|unix.NLM_F_ACK)
req.AddData(msg)
req.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_VERSION, nl.Uint32Attr(pdp.Version)))
req.AddData(nl.NewRtAttr(nl.GENL_GTP_ATTR_LINK, nl.Uint32Attr(uint32(link.Attrs().Index))))
@@ -229,7 +230,7 @@ func (h *Handle) GTPPDPDel(link Link, pdp *PDP) error {
default:
return fmt.Errorf("unsupported GTP version: %d", pdp.Version)
}
- _, err = req.Execute(syscall.NETLINK_GENERIC, 0)
+ _, err = req.Execute(unix.NETLINK_GENERIC, 0)
return err
}
diff --git a/vendor/github.com/vishvananda/netlink/handle_linux.go b/vendor/github.com/vishvananda/netlink/handle_linux.go
index a04ceae6b619..9f6d7fe0fbd1 100644
--- a/vendor/github.com/vishvananda/netlink/handle_linux.go
+++ b/vendor/github.com/vishvananda/netlink/handle_linux.go
@@ -2,11 +2,11 @@ package netlink
import (
"fmt"
- "syscall"
"time"
"github.com/vishvananda/netlink/nl"
"github.com/vishvananda/netns"
+ "golang.org/x/sys/unix"
)
// Empty handle used by the netlink package methods
@@ -43,14 +43,29 @@ func (h *Handle) SetSocketTimeout(to time.Duration) error {
if to < time.Microsecond {
return fmt.Errorf("invalid timeout, minimul value is %s", time.Microsecond)
}
- tv := syscall.NsecToTimeval(to.Nanoseconds())
+ tv := unix.NsecToTimeval(to.Nanoseconds())
for _, sh := range h.sockets {
- fd := sh.Socket.GetFd()
- err := syscall.SetsockoptTimeval(fd, syscall.SOL_SOCKET, syscall.SO_RCVTIMEO, &tv)
- if err != nil {
+ if err := sh.Socket.SetSendTimeout(&tv); err != nil {
return err
}
- err = syscall.SetsockoptTimeval(fd, syscall.SOL_SOCKET, syscall.SO_SNDTIMEO, &tv)
+ if err := sh.Socket.SetReceiveTimeout(&tv); err != nil {
+ return err
+ }
+ }
+ return nil
+}
+
+// SetSocketReceiveBufferSize sets the receive buffer size for each
+// socket in the netlink handle. The maximum value is capped by
+// /proc/sys/net/core/rmem_max.
+func (h *Handle) SetSocketReceiveBufferSize(size int, force bool) error {
+ opt := unix.SO_RCVBUF
+ if force {
+ opt = unix.SO_RCVBUFFORCE
+ }
+ for _, sh := range h.sockets {
+ fd := sh.Socket.GetFd()
+ err := unix.SetsockoptInt(fd, unix.SOL_SOCKET, opt, size)
if err != nil {
return err
}
@@ -58,6 +73,24 @@ func (h *Handle) SetSocketTimeout(to time.Duration) error {
return nil
}
+// GetSocketReceiveBufferSize gets the receiver buffer size for each
+// socket in the netlink handle. The retrieved value should be the
+// double to the one set for SetSocketReceiveBufferSize.
+func (h *Handle) GetSocketReceiveBufferSize() ([]int, error) {
+ results := make([]int, len(h.sockets))
+ i := 0
+ for _, sh := range h.sockets {
+ fd := sh.Socket.GetFd()
+ size, err := unix.GetsockoptInt(fd, unix.SOL_SOCKET, unix.SO_RCVBUF)
+ if err != nil {
+ return nil, err
+ }
+ results[i] = size
+ i++
+ }
+ return results, nil
+}
+
// NewHandle returns a netlink handle on the network namespace
// specified by ns. If ns=netns.None(), current network namespace
// will be assumed
@@ -101,10 +134,10 @@ func (h *Handle) newNetlinkRequest(proto, flags int) *nl.NetlinkRequest {
return nl.NewNetlinkRequest(proto, flags)
}
return &nl.NetlinkRequest{
- NlMsghdr: syscall.NlMsghdr{
- Len: uint32(syscall.SizeofNlMsghdr),
+ NlMsghdr: unix.NlMsghdr{
+ Len: uint32(unix.SizeofNlMsghdr),
Type: uint16(proto),
- Flags: syscall.NLM_F_REQUEST | uint16(flags),
+ Flags: unix.NLM_F_REQUEST | uint16(flags),
},
Sockets: h.sockets,
}
diff --git a/vendor/github.com/vishvananda/netlink/handle_unspecified.go b/vendor/github.com/vishvananda/netlink/handle_unspecified.go
index 32cf022732de..7da21a6a1847 100644
--- a/vendor/github.com/vishvananda/netlink/handle_unspecified.go
+++ b/vendor/github.com/vishvananda/netlink/handle_unspecified.go
@@ -145,6 +145,10 @@ func (h *Handle) LinkSetFlood(link Link, mode bool) error {
return ErrNotImplemented
}
+func (h *Handle) LinkSetTxQLen(link Link, qlen int) error {
+ return ErrNotImplemented
+}
+
func (h *Handle) setProtinfoAttr(link Link, mode bool, attr int) error {
return ErrNotImplemented
}
diff --git a/vendor/github.com/vishvananda/netlink/link.go b/vendor/github.com/vishvananda/netlink/link.go
index 4e77037b5c3b..d8ba16a948f5 100644
--- a/vendor/github.com/vishvananda/netlink/link.go
+++ b/vendor/github.com/vishvananda/netlink/link.go
@@ -3,6 +3,7 @@ package netlink
import (
"fmt"
"net"
+ "os"
)
// Link represents a link device from netlink. Shared link attributes
@@ -37,6 +38,9 @@ type LinkAttrs struct {
EncapType string
Protinfo *Protinfo
OperState LinkOperState
+ NetNsID int
+ NumTxQueues int
+ NumRxQueues int
}
// LinkOperState represents the values of the IFLA_OPERSTATE link
@@ -258,6 +262,9 @@ const (
type Macvlan struct {
LinkAttrs
Mode MacvlanMode
+
+ // MACAddrs is only populated for Macvlan SOURCE links
+ MACAddrs []net.HardwareAddr
}
func (macvlan *Macvlan) Attrs() *LinkAttrs {
@@ -283,8 +290,10 @@ type TuntapFlag uint16
// Tuntap links created via /dev/tun/tap, but can be destroyed via netlink
type Tuntap struct {
LinkAttrs
- Mode TuntapMode
- Flags TuntapFlag
+ Mode TuntapMode
+ Flags TuntapFlag
+ Queues int
+ Fds []*os.File
}
func (tuntap *Tuntap) Attrs() *LinkAttrs {
@@ -326,26 +335,28 @@ func (generic *GenericLink) Type() string {
type Vxlan struct {
LinkAttrs
- VxlanId int
- VtepDevIndex int
- SrcAddr net.IP
- Group net.IP
- TTL int
- TOS int
- Learning bool
- Proxy bool
- RSC bool
- L2miss bool
- L3miss bool
- UDPCSum bool
- NoAge bool
- GBP bool
- FlowBased bool
- Age int
- Limit int
- Port int
- PortLow int
- PortHigh int
+ VxlanId int
+ VtepDevIndex int
+ SrcAddr net.IP
+ Group net.IP
+ TTL int
+ TOS int
+ Learning bool
+ Proxy bool
+ RSC bool
+ L2miss bool
+ L3miss bool
+ UDPCSum bool
+ UDP6ZeroCSumTx bool
+ UDP6ZeroCSumRx bool
+ NoAge bool
+ GBP bool
+ FlowBased bool
+ Age int
+ Limit int
+ Port int
+ PortLow int
+ PortHigh int
}
func (vxlan *Vxlan) Attrs() *LinkAttrs {
@@ -699,12 +710,17 @@ func (gretap *Gretap) Type() string {
type Iptun struct {
LinkAttrs
- Ttl uint8
- Tos uint8
- PMtuDisc uint8
- Link uint32
- Local net.IP
- Remote net.IP
+ Ttl uint8
+ Tos uint8
+ PMtuDisc uint8
+ Link uint32
+ Local net.IP
+ Remote net.IP
+ EncapSport uint16
+ EncapDport uint16
+ EncapType uint16
+ EncapFlags uint16
+ FlowBased bool
}
func (iptun *Iptun) Attrs() *LinkAttrs {
@@ -715,6 +731,28 @@ func (iptun *Iptun) Type() string {
return "ipip"
}
+type Sittun struct {
+ LinkAttrs
+ Link uint32
+ Local net.IP
+ Remote net.IP
+ Ttl uint8
+ Tos uint8
+ PMtuDisc uint8
+ EncapType uint16
+ EncapFlags uint16
+ EncapSport uint16
+ EncapDport uint16
+}
+
+func (sittun *Sittun) Attrs() *LinkAttrs {
+ return &sittun.LinkAttrs
+}
+
+func (sittun *Sittun) Type() string {
+ return "sit"
+}
+
type Vti struct {
LinkAttrs
IKey uint32
@@ -732,6 +770,32 @@ func (iptun *Vti) Type() string {
return "vti"
}
+type Gretun struct {
+ LinkAttrs
+ Link uint32
+ IFlags uint16
+ OFlags uint16
+ IKey uint32
+ OKey uint32
+ Local net.IP
+ Remote net.IP
+ Ttl uint8
+ Tos uint8
+ PMtuDisc uint8
+ EncapType uint16
+ EncapFlags uint16
+ EncapSport uint16
+ EncapDport uint16
+}
+
+func (gretun *Gretun) Attrs() *LinkAttrs {
+ return &gretun.LinkAttrs
+}
+
+func (gretun *Gretun) Type() string {
+ return "gre"
+}
+
type Vrf struct {
LinkAttrs
Table uint32
diff --git a/vendor/github.com/vishvananda/netlink/link_linux.go b/vendor/github.com/vishvananda/netlink/link_linux.go
index 0fe70295ef26..a6ae10418772 100644
--- a/vendor/github.com/vishvananda/netlink/link_linux.go
+++ b/vendor/github.com/vishvananda/netlink/link_linux.go
@@ -11,6 +11,7 @@ import (
"github.com/vishvananda/netlink/nl"
"github.com/vishvananda/netns"
+ "golang.org/x/sys/unix"
)
const (
@@ -20,13 +21,15 @@ const (
)
const (
- TUNTAP_MODE_TUN TuntapMode = syscall.IFF_TUN
- TUNTAP_MODE_TAP TuntapMode = syscall.IFF_TAP
- TUNTAP_DEFAULTS TuntapFlag = syscall.IFF_TUN_EXCL | syscall.IFF_ONE_QUEUE
- TUNTAP_VNET_HDR TuntapFlag = syscall.IFF_VNET_HDR
- TUNTAP_TUN_EXCL TuntapFlag = syscall.IFF_TUN_EXCL
- TUNTAP_NO_PI TuntapFlag = syscall.IFF_NO_PI
- TUNTAP_ONE_QUEUE TuntapFlag = syscall.IFF_ONE_QUEUE
+ TUNTAP_MODE_TUN TuntapMode = unix.IFF_TUN
+ TUNTAP_MODE_TAP TuntapMode = unix.IFF_TAP
+ TUNTAP_DEFAULTS TuntapFlag = unix.IFF_TUN_EXCL | unix.IFF_ONE_QUEUE
+ TUNTAP_VNET_HDR TuntapFlag = unix.IFF_VNET_HDR
+ TUNTAP_TUN_EXCL TuntapFlag = unix.IFF_TUN_EXCL
+ TUNTAP_NO_PI TuntapFlag = unix.IFF_NO_PI
+ TUNTAP_ONE_QUEUE TuntapFlag = unix.IFF_ONE_QUEUE
+ TUNTAP_MULTI_QUEUE TuntapFlag = 0x0100
+ TUNTAP_MULTI_QUEUE_DEFAULTS TuntapFlag = TUNTAP_MULTI_QUEUE | TUNTAP_NO_PI
)
var lookupByDump = false
@@ -61,15 +64,15 @@ func (h *Handle) ensureIndex(link *LinkAttrs) {
func (h *Handle) LinkSetARPOff(link Link) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
- msg.Change |= syscall.IFF_NOARP
- msg.Flags |= syscall.IFF_NOARP
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Change |= unix.IFF_NOARP
+ msg.Flags |= unix.IFF_NOARP
msg.Index = int32(base.Index)
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -80,15 +83,15 @@ func LinkSetARPOff(link Link) error {
func (h *Handle) LinkSetARPOn(link Link) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
- msg.Change |= syscall.IFF_NOARP
- msg.Flags &= ^uint32(syscall.IFF_NOARP)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Change |= unix.IFF_NOARP
+ msg.Flags &= ^uint32(unix.IFF_NOARP)
msg.Index = int32(base.Index)
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -99,15 +102,84 @@ func LinkSetARPOn(link Link) error {
func (h *Handle) SetPromiscOn(link Link) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
- msg.Change = syscall.IFF_PROMISC
- msg.Flags = syscall.IFF_PROMISC
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Change = unix.IFF_PROMISC
+ msg.Flags = unix.IFF_PROMISC
msg.Index = int32(base.Index)
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
+ return err
+}
+
+func MacvlanMACAddrAdd(link Link, addr net.HardwareAddr) error {
+ return pkgHandle.MacvlanMACAddrAdd(link, addr)
+}
+
+func (h *Handle) MacvlanMACAddrAdd(link Link, addr net.HardwareAddr) error {
+ return h.macvlanMACAddrChange(link, []net.HardwareAddr{addr}, nl.MACVLAN_MACADDR_ADD)
+}
+
+func MacvlanMACAddrDel(link Link, addr net.HardwareAddr) error {
+ return pkgHandle.MacvlanMACAddrDel(link, addr)
+}
+
+func (h *Handle) MacvlanMACAddrDel(link Link, addr net.HardwareAddr) error {
+ return h.macvlanMACAddrChange(link, []net.HardwareAddr{addr}, nl.MACVLAN_MACADDR_DEL)
+}
+
+func MacvlanMACAddrFlush(link Link) error {
+ return pkgHandle.MacvlanMACAddrFlush(link)
+}
+
+func (h *Handle) MacvlanMACAddrFlush(link Link) error {
+ return h.macvlanMACAddrChange(link, nil, nl.MACVLAN_MACADDR_FLUSH)
+}
+
+func MacvlanMACAddrSet(link Link, addrs []net.HardwareAddr) error {
+ return pkgHandle.MacvlanMACAddrSet(link, addrs)
+}
+
+func (h *Handle) MacvlanMACAddrSet(link Link, addrs []net.HardwareAddr) error {
+ return h.macvlanMACAddrChange(link, addrs, nl.MACVLAN_MACADDR_SET)
+}
+
+func (h *Handle) macvlanMACAddrChange(link Link, addrs []net.HardwareAddr, mode uint32) error {
+ base := link.Attrs()
+ h.ensureIndex(base)
+ req := h.newNetlinkRequest(unix.RTM_NEWLINK, unix.NLM_F_ACK)
+
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Index = int32(base.Index)
+ req.AddData(msg)
+
+ linkInfo := nl.NewRtAttr(unix.IFLA_LINKINFO, nil)
+ nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_KIND, nl.NonZeroTerminated(link.Type()))
+ inner := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
+
+ // IFLA_MACVLAN_MACADDR_MODE = mode
+ b := make([]byte, 4)
+ native.PutUint32(b, mode)
+ nl.NewRtAttrChild(inner, nl.IFLA_MACVLAN_MACADDR_MODE, b)
+
+ // populate message with MAC addrs, if necessary
+ switch mode {
+ case nl.MACVLAN_MACADDR_ADD, nl.MACVLAN_MACADDR_DEL:
+ if len(addrs) == 1 {
+ nl.NewRtAttrChild(inner, nl.IFLA_MACVLAN_MACADDR, []byte(addrs[0]))
+ }
+ case nl.MACVLAN_MACADDR_SET:
+ mad := nl.NewRtAttrChild(inner, nl.IFLA_MACVLAN_MACADDR_DATA, nil)
+ for _, addr := range addrs {
+ nl.NewRtAttrChild(mad, nl.IFLA_MACVLAN_MACADDR, []byte(addr))
+ }
+ }
+
+ req.AddData(linkInfo)
+
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -118,7 +190,7 @@ func BridgeSetMcastSnoop(link Link, on bool) error {
func (h *Handle) BridgeSetMcastSnoop(link Link, on bool) error {
bridge := link.(*Bridge)
bridge.MulticastSnooping = &on
- return h.linkModify(bridge, syscall.NLM_F_ACK)
+ return h.linkModify(bridge, unix.NLM_F_ACK)
}
func SetPromiscOn(link Link) error {
@@ -128,15 +200,15 @@ func SetPromiscOn(link Link) error {
func (h *Handle) SetPromiscOff(link Link) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
- msg.Change = syscall.IFF_PROMISC
- msg.Flags = 0 & ^syscall.IFF_PROMISC
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Change = unix.IFF_PROMISC
+ msg.Flags = 0 & ^unix.IFF_PROMISC
msg.Index = int32(base.Index)
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -155,15 +227,15 @@ func LinkSetUp(link Link) error {
func (h *Handle) LinkSetUp(link Link) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_NEWLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_NEWLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
- msg.Change = syscall.IFF_UP
- msg.Flags = syscall.IFF_UP
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Change = unix.IFF_UP
+ msg.Flags = unix.IFF_UP
msg.Index = int32(base.Index)
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -178,15 +250,15 @@ func LinkSetDown(link Link) error {
func (h *Handle) LinkSetDown(link Link) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_NEWLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_NEWLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
- msg.Change = syscall.IFF_UP
- msg.Flags = 0 & ^syscall.IFF_UP
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Change = unix.IFF_UP
+ msg.Flags = 0 & ^unix.IFF_UP
msg.Index = int32(base.Index)
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -201,19 +273,19 @@ func LinkSetMTU(link Link, mtu int) error {
func (h *Handle) LinkSetMTU(link Link, mtu int) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
b := make([]byte, 4)
native.PutUint32(b, uint32(mtu))
- data := nl.NewRtAttr(syscall.IFLA_MTU, b)
+ data := nl.NewRtAttr(unix.IFLA_MTU, b)
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -228,16 +300,16 @@ func LinkSetName(link Link, name string) error {
func (h *Handle) LinkSetName(link Link, name string) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
- data := nl.NewRtAttr(syscall.IFLA_IFNAME, []byte(name))
+ data := nl.NewRtAttr(unix.IFLA_IFNAME, []byte(name))
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -252,16 +324,16 @@ func LinkSetAlias(link Link, name string) error {
func (h *Handle) LinkSetAlias(link Link, name string) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
- data := nl.NewRtAttr(syscall.IFLA_IFALIAS, []byte(name))
+ data := nl.NewRtAttr(unix.IFLA_IFALIAS, []byte(name))
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -276,16 +348,16 @@ func LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error {
func (h *Handle) LinkSetHardwareAddr(link Link, hwaddr net.HardwareAddr) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
- data := nl.NewRtAttr(syscall.IFLA_ADDRESS, []byte(hwaddr))
+ data := nl.NewRtAttr(unix.IFLA_ADDRESS, []byte(hwaddr))
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -300,9 +372,9 @@ func LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error {
func (h *Handle) LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAddr) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
@@ -315,7 +387,7 @@ func (h *Handle) LinkSetVfHardwareAddr(link Link, vf int, hwaddr net.HardwareAdd
nl.NewRtAttrChild(info, nl.IFLA_VF_MAC, vfmsg.Serialize())
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -330,9 +402,9 @@ func LinkSetVfVlan(link Link, vf, vlan int) error {
func (h *Handle) LinkSetVfVlan(link Link, vf, vlan int) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
@@ -345,7 +417,7 @@ func (h *Handle) LinkSetVfVlan(link Link, vf, vlan int) error {
nl.NewRtAttrChild(info, nl.IFLA_VF_VLAN, vfmsg.Serialize())
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -360,9 +432,9 @@ func LinkSetVfTxRate(link Link, vf, rate int) error {
func (h *Handle) LinkSetVfTxRate(link Link, vf, rate int) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
@@ -375,7 +447,7 @@ func (h *Handle) LinkSetVfTxRate(link Link, vf, rate int) error {
nl.NewRtAttrChild(info, nl.IFLA_VF_TX_RATE, vfmsg.Serialize())
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -391,9 +463,9 @@ func (h *Handle) LinkSetVfSpoofchk(link Link, vf int, check bool) error {
var setting uint32
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
@@ -409,7 +481,7 @@ func (h *Handle) LinkSetVfSpoofchk(link Link, vf int, check bool) error {
nl.NewRtAttrChild(info, nl.IFLA_VF_SPOOFCHK, vfmsg.Serialize())
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -425,9 +497,9 @@ func (h *Handle) LinkSetVfTrust(link Link, vf int, state bool) error {
var setting uint32
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
@@ -443,7 +515,7 @@ func (h *Handle) LinkSetVfTrust(link Link, vf int, state bool) error {
nl.NewRtAttrChild(info, nl.IFLA_VF_TRUST, vfmsg.Serialize())
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -491,19 +563,19 @@ func LinkSetMasterByIndex(link Link, masterIndex int) error {
func (h *Handle) LinkSetMasterByIndex(link Link, masterIndex int) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
b := make([]byte, 4)
native.PutUint32(b, uint32(masterIndex))
- data := nl.NewRtAttr(syscall.IFLA_MASTER, b)
+ data := nl.NewRtAttr(unix.IFLA_MASTER, b)
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -520,19 +592,19 @@ func LinkSetNsPid(link Link, nspid int) error {
func (h *Handle) LinkSetNsPid(link Link, nspid int) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
b := make([]byte, 4)
native.PutUint32(b, uint32(nspid))
- data := nl.NewRtAttr(syscall.IFLA_NET_NS_PID, b)
+ data := nl.NewRtAttr(unix.IFLA_NET_NS_PID, b)
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -549,9 +621,9 @@ func LinkSetNsFd(link Link, fd int) error {
func (h *Handle) LinkSetNsFd(link Link, fd int) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
@@ -561,24 +633,30 @@ func (h *Handle) LinkSetNsFd(link Link, fd int) error {
data := nl.NewRtAttr(nl.IFLA_NET_NS_FD, b)
req.AddData(data)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
// LinkSetXdpFd adds a bpf function to the driver. The fd must be a bpf
// program loaded with bpf(type=BPF_PROG_TYPE_XDP)
func LinkSetXdpFd(link Link, fd int) error {
+ return LinkSetXdpFdWithFlags(link, fd, 0)
+}
+
+// LinkSetXdpFdWithFlags adds a bpf function to the driver with the given
+// options. The fd must be a bpf program loaded with bpf(type=BPF_PROG_TYPE_XDP)
+func LinkSetXdpFdWithFlags(link Link, fd, flags int) error {
base := link.Attrs()
ensureIndex(base)
- req := nl.NewNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := nl.NewNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
- addXdpAttrs(&LinkXdp{Fd: fd}, req)
+ addXdpAttrs(&LinkXdp{Fd: fd, Flags: uint32(flags)}, req)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -636,6 +714,8 @@ func addVxlanAttrs(vxlan *Vxlan, linkInfo *nl.RtAttr) {
nl.NewRtAttrChild(data, nl.IFLA_VXLAN_RSC, boolAttr(vxlan.RSC))
nl.NewRtAttrChild(data, nl.IFLA_VXLAN_L2MISS, boolAttr(vxlan.L2miss))
nl.NewRtAttrChild(data, nl.IFLA_VXLAN_L3MISS, boolAttr(vxlan.L3miss))
+ nl.NewRtAttrChild(data, nl.IFLA_VXLAN_UDP_ZERO_CSUM6_TX, boolAttr(vxlan.UDP6ZeroCSumTx))
+ nl.NewRtAttrChild(data, nl.IFLA_VXLAN_UDP_ZERO_CSUM6_RX, boolAttr(vxlan.UDP6ZeroCSumRx))
if vxlan.UDPCSum {
nl.NewRtAttrChild(data, nl.IFLA_VXLAN_UDP_CSUM, boolAttr(vxlan.UDPCSum))
@@ -760,6 +840,12 @@ func addBondAttrs(bond *Bond, linkInfo *nl.RtAttr) {
}
}
+func cleanupFds(fds []*os.File) {
+ for _, f := range fds {
+ f.Close()
+ }
+}
+
// LinkAdd adds a new link device. The type and features of the device
// are taken from the parameters in the link object.
// Equivalent to: `ip link add $link`
@@ -771,7 +857,7 @@ func LinkAdd(link Link) error {
// are taken fromt the parameters in the link object.
// Equivalent to: `ip link add $link`
func (h *Handle) LinkAdd(link Link) error {
- return h.linkModify(link, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ return h.linkModify(link, unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
}
func (h *Handle) linkModify(link Link, flags int) error {
@@ -785,101 +871,152 @@ func (h *Handle) linkModify(link Link, flags int) error {
if tuntap, ok := link.(*Tuntap); ok {
// TODO: support user
// TODO: support group
- // TODO: multi_queue
// TODO: support non- persistent
- if tuntap.Mode < syscall.IFF_TUN || tuntap.Mode > syscall.IFF_TAP {
+ if tuntap.Mode < unix.IFF_TUN || tuntap.Mode > unix.IFF_TAP {
return fmt.Errorf("Tuntap.Mode %v unknown!", tuntap.Mode)
}
- file, err := os.OpenFile("/dev/net/tun", os.O_RDWR, 0)
- if err != nil {
- return err
- }
- defer file.Close()
+
+ queues := tuntap.Queues
+
+ var fds []*os.File
var req ifReq
- if tuntap.Flags == 0 {
- req.Flags = uint16(TUNTAP_DEFAULTS)
+ copy(req.Name[:15], base.Name)
+
+ req.Flags = uint16(tuntap.Flags)
+
+ if queues == 0 { //Legacy compatibility
+ queues = 1
+ if tuntap.Flags == 0 {
+ req.Flags = uint16(TUNTAP_DEFAULTS)
+ }
} else {
- req.Flags = uint16(tuntap.Flags)
+ // For best peformance set Flags to TUNTAP_MULTI_QUEUE_DEFAULTS | TUNTAP_VNET_HDR
+ // when a) KVM has support for this ABI and
+ // b) the value of the flag is queryable using the TUNGETIFF ioctl
+ if tuntap.Flags == 0 {
+ req.Flags = uint16(TUNTAP_MULTI_QUEUE_DEFAULTS)
+ }
}
+
req.Flags |= uint16(tuntap.Mode)
- copy(req.Name[:15], base.Name)
- _, _, errno := syscall.Syscall(syscall.SYS_IOCTL, file.Fd(), uintptr(syscall.TUNSETIFF), uintptr(unsafe.Pointer(&req)))
- if errno != 0 {
- return fmt.Errorf("Tuntap IOCTL TUNSETIFF failed, errno %v", errno)
+
+ for i := 0; i < queues; i++ {
+ localReq := req
+ file, err := os.OpenFile("/dev/net/tun", os.O_RDWR, 0)
+ if err != nil {
+ cleanupFds(fds)
+ return err
+ }
+
+ fds = append(fds, file)
+ _, _, errno := unix.Syscall(unix.SYS_IOCTL, file.Fd(), uintptr(unix.TUNSETIFF), uintptr(unsafe.Pointer(&localReq)))
+ if errno != 0 {
+ cleanupFds(fds)
+ return fmt.Errorf("Tuntap IOCTL TUNSETIFF failed [%d], errno %v", i, errno)
+ }
}
- _, _, errno = syscall.Syscall(syscall.SYS_IOCTL, file.Fd(), uintptr(syscall.TUNSETPERSIST), 1)
+
+ _, _, errno := unix.Syscall(unix.SYS_IOCTL, fds[0].Fd(), uintptr(unix.TUNSETPERSIST), 1)
if errno != 0 {
+ cleanupFds(fds)
return fmt.Errorf("Tuntap IOCTL TUNSETPERSIST failed, errno %v", errno)
}
+
h.ensureIndex(base)
// can't set master during create, so set it afterwards
if base.MasterIndex != 0 {
// TODO: verify MasterIndex is actually a bridge?
- return h.LinkSetMasterByIndex(link, base.MasterIndex)
+ err := h.LinkSetMasterByIndex(link, base.MasterIndex)
+ if err != nil {
+ _, _, _ = unix.Syscall(unix.SYS_IOCTL, fds[0].Fd(), uintptr(unix.TUNSETPERSIST), 0)
+ cleanupFds(fds)
+ return err
+ }
+ }
+
+ if tuntap.Queues == 0 {
+ cleanupFds(fds)
+ } else {
+ tuntap.Fds = fds
}
+
return nil
}
- req := h.newNetlinkRequest(syscall.RTM_NEWLINK, flags)
+ req := h.newNetlinkRequest(unix.RTM_NEWLINK, flags)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
// TODO: make it shorter
if base.Flags&net.FlagUp != 0 {
- msg.Change = syscall.IFF_UP
- msg.Flags = syscall.IFF_UP
+ msg.Change = unix.IFF_UP
+ msg.Flags = unix.IFF_UP
}
if base.Flags&net.FlagBroadcast != 0 {
- msg.Change |= syscall.IFF_BROADCAST
- msg.Flags |= syscall.IFF_BROADCAST
+ msg.Change |= unix.IFF_BROADCAST
+ msg.Flags |= unix.IFF_BROADCAST
}
if base.Flags&net.FlagLoopback != 0 {
- msg.Change |= syscall.IFF_LOOPBACK
- msg.Flags |= syscall.IFF_LOOPBACK
+ msg.Change |= unix.IFF_LOOPBACK
+ msg.Flags |= unix.IFF_LOOPBACK
}
if base.Flags&net.FlagPointToPoint != 0 {
- msg.Change |= syscall.IFF_POINTOPOINT
- msg.Flags |= syscall.IFF_POINTOPOINT
+ msg.Change |= unix.IFF_POINTOPOINT
+ msg.Flags |= unix.IFF_POINTOPOINT
}
if base.Flags&net.FlagMulticast != 0 {
- msg.Change |= syscall.IFF_MULTICAST
- msg.Flags |= syscall.IFF_MULTICAST
+ msg.Change |= unix.IFF_MULTICAST
+ msg.Flags |= unix.IFF_MULTICAST
}
+ if base.Index != 0 {
+ msg.Index = int32(base.Index)
+ }
+
req.AddData(msg)
if base.ParentIndex != 0 {
b := make([]byte, 4)
native.PutUint32(b, uint32(base.ParentIndex))
- data := nl.NewRtAttr(syscall.IFLA_LINK, b)
+ data := nl.NewRtAttr(unix.IFLA_LINK, b)
req.AddData(data)
} else if link.Type() == "ipvlan" {
return fmt.Errorf("Can't create ipvlan link without ParentIndex")
}
- nameData := nl.NewRtAttr(syscall.IFLA_IFNAME, nl.ZeroTerminated(base.Name))
+ nameData := nl.NewRtAttr(unix.IFLA_IFNAME, nl.ZeroTerminated(base.Name))
req.AddData(nameData)
if base.MTU > 0 {
- mtu := nl.NewRtAttr(syscall.IFLA_MTU, nl.Uint32Attr(uint32(base.MTU)))
+ mtu := nl.NewRtAttr(unix.IFLA_MTU, nl.Uint32Attr(uint32(base.MTU)))
req.AddData(mtu)
}
if base.TxQLen >= 0 {
- qlen := nl.NewRtAttr(syscall.IFLA_TXQLEN, nl.Uint32Attr(uint32(base.TxQLen)))
+ qlen := nl.NewRtAttr(unix.IFLA_TXQLEN, nl.Uint32Attr(uint32(base.TxQLen)))
req.AddData(qlen)
}
if base.HardwareAddr != nil {
- hwaddr := nl.NewRtAttr(syscall.IFLA_ADDRESS, []byte(base.HardwareAddr))
+ hwaddr := nl.NewRtAttr(unix.IFLA_ADDRESS, []byte(base.HardwareAddr))
req.AddData(hwaddr)
}
+ if base.NumTxQueues > 0 {
+ txqueues := nl.NewRtAttr(nl.IFLA_NUM_TX_QUEUES, nl.Uint32Attr(uint32(base.NumTxQueues)))
+ req.AddData(txqueues)
+ }
+
+ if base.NumRxQueues > 0 {
+ rxqueues := nl.NewRtAttr(nl.IFLA_NUM_RX_QUEUES, nl.Uint32Attr(uint32(base.NumRxQueues)))
+ req.AddData(rxqueues)
+ }
+
if base.Namespace != nil {
var attr *nl.RtAttr
switch base.Namespace.(type) {
case NsPid:
val := nl.Uint32Attr(uint32(base.Namespace.(NsPid)))
- attr = nl.NewRtAttr(syscall.IFLA_NET_NS_PID, val)
+ attr = nl.NewRtAttr(unix.IFLA_NET_NS_PID, val)
case NsFd:
val := nl.Uint32Attr(uint32(base.Namespace.(NsFd)))
attr = nl.NewRtAttr(nl.IFLA_NET_NS_FD, val)
@@ -892,60 +1029,65 @@ func (h *Handle) linkModify(link Link, flags int) error {
addXdpAttrs(base.Xdp, req)
}
- linkInfo := nl.NewRtAttr(syscall.IFLA_LINKINFO, nil)
+ linkInfo := nl.NewRtAttr(unix.IFLA_LINKINFO, nil)
nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_KIND, nl.NonZeroTerminated(link.Type()))
- if vlan, ok := link.(*Vlan); ok {
+ switch link := link.(type) {
+ case *Vlan:
b := make([]byte, 2)
- native.PutUint16(b, uint16(vlan.VlanId))
+ native.PutUint16(b, uint16(link.VlanId))
data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
nl.NewRtAttrChild(data, nl.IFLA_VLAN_ID, b)
- } else if veth, ok := link.(*Veth); ok {
+ case *Veth:
data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
peer := nl.NewRtAttrChild(data, nl.VETH_INFO_PEER, nil)
- nl.NewIfInfomsgChild(peer, syscall.AF_UNSPEC)
- nl.NewRtAttrChild(peer, syscall.IFLA_IFNAME, nl.ZeroTerminated(veth.PeerName))
+ nl.NewIfInfomsgChild(peer, unix.AF_UNSPEC)
+ nl.NewRtAttrChild(peer, unix.IFLA_IFNAME, nl.ZeroTerminated(link.PeerName))
if base.TxQLen >= 0 {
- nl.NewRtAttrChild(peer, syscall.IFLA_TXQLEN, nl.Uint32Attr(uint32(base.TxQLen)))
+ nl.NewRtAttrChild(peer, unix.IFLA_TXQLEN, nl.Uint32Attr(uint32(base.TxQLen)))
}
if base.MTU > 0 {
- nl.NewRtAttrChild(peer, syscall.IFLA_MTU, nl.Uint32Attr(uint32(base.MTU)))
+ nl.NewRtAttrChild(peer, unix.IFLA_MTU, nl.Uint32Attr(uint32(base.MTU)))
}
- } else if vxlan, ok := link.(*Vxlan); ok {
- addVxlanAttrs(vxlan, linkInfo)
- } else if bond, ok := link.(*Bond); ok {
- addBondAttrs(bond, linkInfo)
- } else if ipv, ok := link.(*IPVlan); ok {
+ case *Vxlan:
+ addVxlanAttrs(link, linkInfo)
+ case *Bond:
+ addBondAttrs(link, linkInfo)
+ case *IPVlan:
data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
- nl.NewRtAttrChild(data, nl.IFLA_IPVLAN_MODE, nl.Uint16Attr(uint16(ipv.Mode)))
- } else if macv, ok := link.(*Macvlan); ok {
- if macv.Mode != MACVLAN_MODE_DEFAULT {
+ nl.NewRtAttrChild(data, nl.IFLA_IPVLAN_MODE, nl.Uint16Attr(uint16(link.Mode)))
+ case *Macvlan:
+ if link.Mode != MACVLAN_MODE_DEFAULT {
data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
- nl.NewRtAttrChild(data, nl.IFLA_MACVLAN_MODE, nl.Uint32Attr(macvlanModes[macv.Mode]))
+ nl.NewRtAttrChild(data, nl.IFLA_MACVLAN_MODE, nl.Uint32Attr(macvlanModes[link.Mode]))
}
- } else if macv, ok := link.(*Macvtap); ok {
- if macv.Mode != MACVLAN_MODE_DEFAULT {
+ case *Macvtap:
+ if link.Mode != MACVLAN_MODE_DEFAULT {
data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
- nl.NewRtAttrChild(data, nl.IFLA_MACVLAN_MODE, nl.Uint32Attr(macvlanModes[macv.Mode]))
+ nl.NewRtAttrChild(data, nl.IFLA_MACVLAN_MODE, nl.Uint32Attr(macvlanModes[link.Mode]))
}
- } else if gretap, ok := link.(*Gretap); ok {
- addGretapAttrs(gretap, linkInfo)
- } else if iptun, ok := link.(*Iptun); ok {
- addIptunAttrs(iptun, linkInfo)
- } else if vti, ok := link.(*Vti); ok {
- addVtiAttrs(vti, linkInfo)
- } else if vrf, ok := link.(*Vrf); ok {
- addVrfAttrs(vrf, linkInfo)
- } else if bridge, ok := link.(*Bridge); ok {
- addBridgeAttrs(bridge, linkInfo)
- } else if gtp, ok := link.(*GTP); ok {
- addGTPAttrs(gtp, linkInfo)
+ case *Gretap:
+ addGretapAttrs(link, linkInfo)
+ case *Iptun:
+ addIptunAttrs(link, linkInfo)
+ case *Sittun:
+ addSittunAttrs(link, linkInfo)
+ case *Gretun:
+ addGretunAttrs(link, linkInfo)
+ case *Vti:
+ addVtiAttrs(link, linkInfo)
+ case *Vrf:
+ addVrfAttrs(link, linkInfo)
+ case *Bridge:
+ addBridgeAttrs(link, linkInfo)
+ case *GTP:
+ addGTPAttrs(link, linkInfo)
}
req.AddData(linkInfo)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
if err != nil {
return err
}
@@ -975,13 +1117,13 @@ func (h *Handle) LinkDel(link Link) error {
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_DELLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_DELLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(base.Index)
req.AddData(msg)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -1024,16 +1166,16 @@ func (h *Handle) LinkByName(name string) (Link, error) {
return h.linkByNameDump(name)
}
- req := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_GETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
req.AddData(msg)
- nameData := nl.NewRtAttr(syscall.IFLA_IFNAME, nl.ZeroTerminated(name))
+ nameData := nl.NewRtAttr(unix.IFLA_IFNAME, nl.ZeroTerminated(name))
req.AddData(nameData)
link, err := execGetLink(req)
- if err == syscall.EINVAL {
+ if err == unix.EINVAL {
// older kernels don't support looking up via IFLA_IFNAME
// so fall back to dumping all links
h.lookupByDump = true
@@ -1056,16 +1198,16 @@ func (h *Handle) LinkByAlias(alias string) (Link, error) {
return h.linkByAliasDump(alias)
}
- req := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_GETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
req.AddData(msg)
- nameData := nl.NewRtAttr(syscall.IFLA_IFALIAS, nl.ZeroTerminated(alias))
+ nameData := nl.NewRtAttr(unix.IFLA_IFALIAS, nl.ZeroTerminated(alias))
req.AddData(nameData)
link, err := execGetLink(req)
- if err == syscall.EINVAL {
+ if err == unix.EINVAL {
// older kernels don't support looking up via IFLA_IFALIAS
// so fall back to dumping all links
h.lookupByDump = true
@@ -1082,9 +1224,9 @@ func LinkByIndex(index int) (Link, error) {
// LinkByIndex finds a link by index and returns a pointer to the object.
func (h *Handle) LinkByIndex(index int) (Link, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_GETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
msg.Index = int32(index)
req.AddData(msg)
@@ -1092,10 +1234,10 @@ func (h *Handle) LinkByIndex(index int) (Link, error) {
}
func execGetLink(req *nl.NetlinkRequest) (Link, error) {
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, 0)
if err != nil {
if errno, ok := err.(syscall.Errno); ok {
- if errno == syscall.ENODEV {
+ if errno == unix.ENODEV {
return nil, LinkNotFoundError{fmt.Errorf("Link not found")}
}
}
@@ -1116,7 +1258,7 @@ func execGetLink(req *nl.NetlinkRequest) (Link, error) {
// linkDeserialize deserializes a raw message received from netlink into
// a link object.
-func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
+func LinkDeserialize(hdr *unix.NlMsghdr, m []byte) (Link, error) {
msg := nl.DeserializeIfInfomsg(m)
attrs, err := nl.ParseRouteAttr(m[msg.Len():])
@@ -1125,7 +1267,7 @@ func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
}
base := LinkAttrs{Index: int(msg.Index), RawFlags: msg.Flags, Flags: linkFlags(msg.Flags), EncapType: msg.EncapType()}
- if msg.Flags&syscall.IFF_PROMISC != 0 {
+ if msg.Flags&unix.IFF_PROMISC != 0 {
base.Promisc = 1
}
var (
@@ -1136,7 +1278,7 @@ func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
)
for _, attr := range attrs {
switch attr.Attr.Type {
- case syscall.IFLA_LINKINFO:
+ case unix.IFLA_LINKINFO:
infos, err := nl.ParseRouteAttr(attr.Value)
if err != nil {
return nil, err
@@ -1170,6 +1312,10 @@ func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
link = &Gretap{}
case "ipip":
link = &Iptun{}
+ case "sit":
+ link = &Sittun{}
+ case "gre":
+ link = &Gretun{}
case "vti":
link = &Vti{}
case "vrf":
@@ -1201,6 +1347,10 @@ func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
parseGretapData(link, data)
case "ipip":
parseIptunData(link, data)
+ case "sit":
+ parseSittunData(link, data)
+ case "gre":
+ parseGretunData(link, data)
case "vti":
parseVtiData(link, data)
case "vrf":
@@ -1212,7 +1362,7 @@ func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
}
}
}
- case syscall.IFLA_ADDRESS:
+ case unix.IFLA_ADDRESS:
var nonzero bool
for _, b := range attr.Value {
if b != 0 {
@@ -1222,19 +1372,19 @@ func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
if nonzero {
base.HardwareAddr = attr.Value[:]
}
- case syscall.IFLA_IFNAME:
+ case unix.IFLA_IFNAME:
base.Name = string(attr.Value[:len(attr.Value)-1])
- case syscall.IFLA_MTU:
+ case unix.IFLA_MTU:
base.MTU = int(native.Uint32(attr.Value[0:4]))
- case syscall.IFLA_LINK:
+ case unix.IFLA_LINK:
base.ParentIndex = int(native.Uint32(attr.Value[0:4]))
- case syscall.IFLA_MASTER:
+ case unix.IFLA_MASTER:
base.MasterIndex = int(native.Uint32(attr.Value[0:4]))
- case syscall.IFLA_TXQLEN:
+ case unix.IFLA_TXQLEN:
base.TxQLen = int(native.Uint32(attr.Value[0:4]))
- case syscall.IFLA_IFALIAS:
+ case unix.IFLA_IFALIAS:
base.Alias = string(attr.Value[:len(attr.Value)-1])
- case syscall.IFLA_STATS:
+ case unix.IFLA_STATS:
stats32 = attr.Value[:]
case IFLA_STATS64:
stats64 = attr.Value[:]
@@ -1244,17 +1394,19 @@ func LinkDeserialize(hdr *syscall.NlMsghdr, m []byte) (Link, error) {
return nil, err
}
base.Xdp = xdp
- case syscall.IFLA_PROTINFO | syscall.NLA_F_NESTED:
- if hdr != nil && hdr.Type == syscall.RTM_NEWLINK &&
- msg.Family == syscall.AF_BRIDGE {
+ case unix.IFLA_PROTINFO | unix.NLA_F_NESTED:
+ if hdr != nil && hdr.Type == unix.RTM_NEWLINK &&
+ msg.Family == unix.AF_BRIDGE {
attrs, err := nl.ParseRouteAttr(attr.Value[:])
if err != nil {
return nil, err
}
base.Protinfo = parseProtinfo(attrs)
}
- case syscall.IFLA_OPERSTATE:
+ case unix.IFLA_OPERSTATE:
base.OperState = LinkOperState(uint8(attr.Value[0]))
+ case nl.IFLA_LINK_NETNSID:
+ base.NetNsID = int(native.Uint32(attr.Value[0:4]))
}
}
@@ -1284,12 +1436,12 @@ func LinkList() ([]Link, error) {
func (h *Handle) LinkList() ([]Link, error) {
// NOTE(vish): This duplicates functionality in net/iface_linux.go, but we need
// to get the message ourselves to parse link type.
- req := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(unix.RTM_GETLINK, unix.NLM_F_DUMP)
- msg := nl.NewIfInfomsg(syscall.AF_UNSPEC)
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWLINK)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWLINK)
if err != nil {
return nil, err
}
@@ -1309,24 +1461,42 @@ func (h *Handle) LinkList() ([]Link, error) {
// LinkUpdate is used to pass information back from LinkSubscribe()
type LinkUpdate struct {
nl.IfInfomsg
- Header syscall.NlMsghdr
+ Header unix.NlMsghdr
Link
}
// LinkSubscribe takes a chan down which notifications will be sent
// when links change. Close the 'done' chan to stop subscription.
func LinkSubscribe(ch chan<- LinkUpdate, done <-chan struct{}) error {
- return linkSubscribe(netns.None(), netns.None(), ch, done)
+ return linkSubscribeAt(netns.None(), netns.None(), ch, done, nil)
}
// LinkSubscribeAt works like LinkSubscribe plus it allows the caller
// to choose the network namespace in which to subscribe (ns).
func LinkSubscribeAt(ns netns.NsHandle, ch chan<- LinkUpdate, done <-chan struct{}) error {
- return linkSubscribe(ns, netns.None(), ch, done)
+ return linkSubscribeAt(ns, netns.None(), ch, done, nil)
+}
+
+// LinkSubscribeOptions contains a set of options to use with
+// LinkSubscribeWithOptions.
+type LinkSubscribeOptions struct {
+ Namespace *netns.NsHandle
+ ErrorCallback func(error)
+}
+
+// LinkSubscribeWithOptions work like LinkSubscribe but enable to
+// provide additional options to modify the behavior. Currently, the
+// namespace can be provided as well as an error callback.
+func LinkSubscribeWithOptions(ch chan<- LinkUpdate, done <-chan struct{}, options LinkSubscribeOptions) error {
+ if options.Namespace == nil {
+ none := netns.None()
+ options.Namespace = &none
+ }
+ return linkSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback)
}
-func linkSubscribe(newNs, curNs netns.NsHandle, ch chan<- LinkUpdate, done <-chan struct{}) error {
- s, err := nl.SubscribeAt(newNs, curNs, syscall.NETLINK_ROUTE, syscall.RTNLGRP_LINK)
+func linkSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- LinkUpdate, done <-chan struct{}, cberr func(error)) error {
+ s, err := nl.SubscribeAt(newNs, curNs, unix.NETLINK_ROUTE, unix.RTNLGRP_LINK)
if err != nil {
return err
}
@@ -1341,15 +1511,22 @@ func linkSubscribe(newNs, curNs netns.NsHandle, ch chan<- LinkUpdate, done <-cha
for {
msgs, err := s.Receive()
if err != nil {
+ if cberr != nil {
+ cberr(err)
+ }
return
}
for _, m := range msgs {
ifmsg := nl.DeserializeIfInfomsg(m.Data)
- link, err := LinkDeserialize(&m.Header, m.Data)
+ header := unix.NlMsghdr(m.Header)
+ link, err := LinkDeserialize(&header, m.Data)
if err != nil {
+ if cberr != nil {
+ cberr(err)
+ }
return
}
- ch <- LinkUpdate{IfInfomsg: *ifmsg, Header: m.Header, Link: link}
+ ch <- LinkUpdate{IfInfomsg: *ifmsg, Header: header, Link: link}
}
}
}()
@@ -1424,22 +1601,49 @@ func (h *Handle) LinkSetBrProxyArpWiFi(link Link, mode bool) error {
func (h *Handle) setProtinfoAttr(link Link, mode bool, attr int) error {
base := link.Attrs()
h.ensureIndex(base)
- req := h.newNetlinkRequest(syscall.RTM_SETLINK, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
- msg := nl.NewIfInfomsg(syscall.AF_BRIDGE)
+ msg := nl.NewIfInfomsg(unix.AF_BRIDGE)
msg.Index = int32(base.Index)
req.AddData(msg)
- br := nl.NewRtAttr(syscall.IFLA_PROTINFO|syscall.NLA_F_NESTED, nil)
+ br := nl.NewRtAttr(unix.IFLA_PROTINFO|unix.NLA_F_NESTED, nil)
nl.NewRtAttrChild(br, attr, boolToByte(mode))
req.AddData(br)
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
if err != nil {
return err
}
return nil
}
+// LinkSetTxQLen sets the transaction queue length for the link.
+// Equivalent to: `ip link set $link txqlen $qlen`
+func LinkSetTxQLen(link Link, qlen int) error {
+ return pkgHandle.LinkSetTxQLen(link, qlen)
+}
+
+// LinkSetTxQLen sets the transaction queue length for the link.
+// Equivalent to: `ip link set $link txqlen $qlen`
+func (h *Handle) LinkSetTxQLen(link Link, qlen int) error {
+ base := link.Attrs()
+ h.ensureIndex(base)
+ req := h.newNetlinkRequest(unix.RTM_SETLINK, unix.NLM_F_ACK)
+
+ msg := nl.NewIfInfomsg(unix.AF_UNSPEC)
+ msg.Index = int32(base.Index)
+ req.AddData(msg)
+
+ b := make([]byte, 4)
+ native.PutUint32(b, uint32(qlen))
+
+ data := nl.NewRtAttr(unix.IFLA_TXQLEN, b)
+ req.AddData(data)
+
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
+ return err
+}
+
func parseVlanData(link Link, data []syscall.NetlinkRouteAttr) {
vlan := link.(*Vlan)
for _, datum := range data {
@@ -1482,6 +1686,10 @@ func parseVxlanData(link Link, data []syscall.NetlinkRouteAttr) {
vxlan.L3miss = int8(datum.Value[0]) != 0
case nl.IFLA_VXLAN_UDP_CSUM:
vxlan.UDPCSum = int8(datum.Value[0]) != 0
+ case nl.IFLA_VXLAN_UDP_ZERO_CSUM6_TX:
+ vxlan.UDP6ZeroCSumTx = int8(datum.Value[0]) != 0
+ case nl.IFLA_VXLAN_UDP_ZERO_CSUM6_RX:
+ vxlan.UDP6ZeroCSumRx = int8(datum.Value[0]) != 0
case nl.IFLA_VXLAN_GBP:
vxlan.GBP = true
case nl.IFLA_VXLAN_FLOWBASED:
@@ -1584,7 +1792,8 @@ func parseMacvtapData(link Link, data []syscall.NetlinkRouteAttr) {
func parseMacvlanData(link Link, data []syscall.NetlinkRouteAttr) {
macv := link.(*Macvlan)
for _, datum := range data {
- if datum.Attr.Type == nl.IFLA_MACVLAN_MODE {
+ switch datum.Attr.Type {
+ case nl.IFLA_MACVLAN_MODE:
switch native.Uint32(datum.Value[0:4]) {
case nl.MACVLAN_MODE_PRIVATE:
macv.Mode = MACVLAN_MODE_PRIVATE
@@ -1597,7 +1806,16 @@ func parseMacvlanData(link Link, data []syscall.NetlinkRouteAttr) {
case nl.MACVLAN_MODE_SOURCE:
macv.Mode = MACVLAN_MODE_SOURCE
}
- return
+ case nl.IFLA_MACVLAN_MACADDR_COUNT:
+ macv.MACAddrs = make([]net.HardwareAddr, 0, int(native.Uint32(datum.Value[0:4])))
+ case nl.IFLA_MACVLAN_MACADDR_DATA:
+ macs, err := nl.ParseRouteAttr(datum.Value[:])
+ if err != nil {
+ panic(fmt.Sprintf("failed to ParseRouteAttr for IFLA_MACVLAN_MACADDR_DATA: %v", err))
+ }
+ for _, macDatum := range macs {
+ macv.MACAddrs = append(macv.MACAddrs, net.HardwareAddr(macDatum.Value[0:6]))
+ }
}
}
}
@@ -1605,19 +1823,19 @@ func parseMacvlanData(link Link, data []syscall.NetlinkRouteAttr) {
// copied from pkg/net_linux.go
func linkFlags(rawFlags uint32) net.Flags {
var f net.Flags
- if rawFlags&syscall.IFF_UP != 0 {
+ if rawFlags&unix.IFF_UP != 0 {
f |= net.FlagUp
}
- if rawFlags&syscall.IFF_BROADCAST != 0 {
+ if rawFlags&unix.IFF_BROADCAST != 0 {
f |= net.FlagBroadcast
}
- if rawFlags&syscall.IFF_LOOPBACK != 0 {
+ if rawFlags&unix.IFF_LOOPBACK != 0 {
f |= net.FlagLoopback
}
- if rawFlags&syscall.IFF_POINTOPOINT != 0 {
+ if rawFlags&unix.IFF_POINTOPOINT != 0 {
f |= net.FlagPointToPoint
}
- if rawFlags&syscall.IFF_MULTICAST != 0 {
+ if rawFlags&unix.IFF_MULTICAST != 0 {
f |= net.FlagMulticast
}
return f
@@ -1699,7 +1917,82 @@ func parseGretapData(link Link, data []syscall.NetlinkRouteAttr) {
case nl.IFLA_GRE_ENCAP_FLAGS:
gre.EncapFlags = native.Uint16(datum.Value[0:2])
case nl.IFLA_GRE_COLLECT_METADATA:
- gre.FlowBased = int8(datum.Value[0]) != 0
+ if len(datum.Value) > 0 {
+ gre.FlowBased = int8(datum.Value[0]) != 0
+ }
+ }
+ }
+}
+
+func addGretunAttrs(gre *Gretun, linkInfo *nl.RtAttr) {
+ data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
+
+ ip := gre.Local.To4()
+ if ip != nil {
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_LOCAL, []byte(ip))
+ }
+ ip = gre.Remote.To4()
+ if ip != nil {
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_REMOTE, []byte(ip))
+ }
+
+ if gre.IKey != 0 {
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_IKEY, htonl(gre.IKey))
+ gre.IFlags |= uint16(nl.GRE_KEY)
+ }
+
+ if gre.OKey != 0 {
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_OKEY, htonl(gre.OKey))
+ gre.OFlags |= uint16(nl.GRE_KEY)
+ }
+
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_IFLAGS, htons(gre.IFlags))
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_OFLAGS, htons(gre.OFlags))
+
+ if gre.Link != 0 {
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_LINK, nl.Uint32Attr(gre.Link))
+ }
+
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_PMTUDISC, nl.Uint8Attr(gre.PMtuDisc))
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_TTL, nl.Uint8Attr(gre.Ttl))
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_TOS, nl.Uint8Attr(gre.Tos))
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_TYPE, nl.Uint16Attr(gre.EncapType))
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_FLAGS, nl.Uint16Attr(gre.EncapFlags))
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_SPORT, htons(gre.EncapSport))
+ nl.NewRtAttrChild(data, nl.IFLA_GRE_ENCAP_DPORT, htons(gre.EncapDport))
+}
+
+func parseGretunData(link Link, data []syscall.NetlinkRouteAttr) {
+ gre := link.(*Gretun)
+ for _, datum := range data {
+ switch datum.Attr.Type {
+ case nl.IFLA_GRE_OKEY:
+ gre.IKey = ntohl(datum.Value[0:4])
+ case nl.IFLA_GRE_IKEY:
+ gre.OKey = ntohl(datum.Value[0:4])
+ case nl.IFLA_GRE_LOCAL:
+ gre.Local = net.IP(datum.Value[0:4])
+ case nl.IFLA_GRE_REMOTE:
+ gre.Remote = net.IP(datum.Value[0:4])
+ case nl.IFLA_GRE_IFLAGS:
+ gre.IFlags = ntohs(datum.Value[0:2])
+ case nl.IFLA_GRE_OFLAGS:
+ gre.OFlags = ntohs(datum.Value[0:2])
+
+ case nl.IFLA_GRE_TTL:
+ gre.Ttl = uint8(datum.Value[0])
+ case nl.IFLA_GRE_TOS:
+ gre.Tos = uint8(datum.Value[0])
+ case nl.IFLA_GRE_PMTUDISC:
+ gre.PMtuDisc = uint8(datum.Value[0])
+ case nl.IFLA_GRE_ENCAP_TYPE:
+ gre.EncapType = native.Uint16(datum.Value[0:2])
+ case nl.IFLA_GRE_ENCAP_FLAGS:
+ gre.EncapFlags = native.Uint16(datum.Value[0:2])
+ case nl.IFLA_GRE_ENCAP_SPORT:
+ gre.EncapSport = ntohs(datum.Value[0:2])
+ case nl.IFLA_GRE_ENCAP_DPORT:
+ gre.EncapDport = ntohs(datum.Value[0:2])
}
}
}
@@ -1713,12 +2006,14 @@ func parseLinkStats64(data []byte) *LinkStatistics {
}
func addXdpAttrs(xdp *LinkXdp, req *nl.NetlinkRequest) {
- attrs := nl.NewRtAttr(nl.IFLA_XDP|syscall.NLA_F_NESTED, nil)
+ attrs := nl.NewRtAttr(nl.IFLA_XDP|unix.NLA_F_NESTED, nil)
b := make([]byte, 4)
native.PutUint32(b, uint32(xdp.Fd))
nl.NewRtAttrChild(attrs, nl.IFLA_XDP_FD, b)
- native.PutUint32(b, xdp.Flags)
- nl.NewRtAttrChild(attrs, nl.IFLA_XDP_FLAGS, b)
+ if xdp.Flags != 0 {
+ native.PutUint32(b, xdp.Flags)
+ nl.NewRtAttrChild(attrs, nl.IFLA_XDP_FLAGS, b)
+ }
req.AddData(attrs)
}
@@ -1744,6 +2039,12 @@ func parseLinkXdp(data []byte) (*LinkXdp, error) {
}
func addIptunAttrs(iptun *Iptun, linkInfo *nl.RtAttr) {
+ if iptun.FlowBased {
+ // In flow based mode, no other attributes need to be configured
+ nl.NewRtAttrChild(linkInfo, nl.IFLA_IPTUN_COLLECT_METADATA, boolAttr(iptun.FlowBased))
+ return
+ }
+
data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
ip := iptun.Local.To4()
@@ -1762,6 +2063,10 @@ func addIptunAttrs(iptun *Iptun, linkInfo *nl.RtAttr) {
nl.NewRtAttrChild(data, nl.IFLA_IPTUN_PMTUDISC, nl.Uint8Attr(iptun.PMtuDisc))
nl.NewRtAttrChild(data, nl.IFLA_IPTUN_TTL, nl.Uint8Attr(iptun.Ttl))
nl.NewRtAttrChild(data, nl.IFLA_IPTUN_TOS, nl.Uint8Attr(iptun.Tos))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_TYPE, nl.Uint16Attr(iptun.EncapType))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_FLAGS, nl.Uint16Attr(iptun.EncapFlags))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_SPORT, htons(iptun.EncapSport))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_DPORT, htons(iptun.EncapDport))
}
func parseIptunData(link Link, data []syscall.NetlinkRouteAttr) {
@@ -1778,6 +2083,72 @@ func parseIptunData(link Link, data []syscall.NetlinkRouteAttr) {
iptun.Tos = uint8(datum.Value[0])
case nl.IFLA_IPTUN_PMTUDISC:
iptun.PMtuDisc = uint8(datum.Value[0])
+ case nl.IFLA_IPTUN_ENCAP_SPORT:
+ iptun.EncapSport = ntohs(datum.Value[0:2])
+ case nl.IFLA_IPTUN_ENCAP_DPORT:
+ iptun.EncapDport = ntohs(datum.Value[0:2])
+ case nl.IFLA_IPTUN_ENCAP_TYPE:
+ iptun.EncapType = native.Uint16(datum.Value[0:2])
+ case nl.IFLA_IPTUN_ENCAP_FLAGS:
+ iptun.EncapFlags = native.Uint16(datum.Value[0:2])
+ case nl.IFLA_IPTUN_COLLECT_METADATA:
+ iptun.FlowBased = int8(datum.Value[0]) != 0
+ }
+ }
+}
+
+func addSittunAttrs(sittun *Sittun, linkInfo *nl.RtAttr) {
+ data := nl.NewRtAttrChild(linkInfo, nl.IFLA_INFO_DATA, nil)
+
+ if sittun.Link != 0 {
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_LINK, nl.Uint32Attr(sittun.Link))
+ }
+
+ ip := sittun.Local.To4()
+ if ip != nil {
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_LOCAL, []byte(ip))
+ }
+
+ ip = sittun.Remote.To4()
+ if ip != nil {
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_REMOTE, []byte(ip))
+ }
+
+ if sittun.Ttl > 0 {
+ // Would otherwise fail on 3.10 kernel
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_TTL, nl.Uint8Attr(sittun.Ttl))
+ }
+
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_TOS, nl.Uint8Attr(sittun.Tos))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_PMTUDISC, nl.Uint8Attr(sittun.PMtuDisc))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_TYPE, nl.Uint16Attr(sittun.EncapType))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_FLAGS, nl.Uint16Attr(sittun.EncapFlags))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_SPORT, htons(sittun.EncapSport))
+ nl.NewRtAttrChild(data, nl.IFLA_IPTUN_ENCAP_DPORT, htons(sittun.EncapDport))
+}
+
+func parseSittunData(link Link, data []syscall.NetlinkRouteAttr) {
+ sittun := link.(*Sittun)
+ for _, datum := range data {
+ switch datum.Attr.Type {
+ case nl.IFLA_IPTUN_LOCAL:
+ sittun.Local = net.IP(datum.Value[0:4])
+ case nl.IFLA_IPTUN_REMOTE:
+ sittun.Remote = net.IP(datum.Value[0:4])
+ case nl.IFLA_IPTUN_TTL:
+ sittun.Ttl = uint8(datum.Value[0])
+ case nl.IFLA_IPTUN_TOS:
+ sittun.Tos = uint8(datum.Value[0])
+ case nl.IFLA_IPTUN_PMTUDISC:
+ sittun.PMtuDisc = uint8(datum.Value[0])
+ case nl.IFLA_IPTUN_ENCAP_TYPE:
+ sittun.EncapType = native.Uint16(datum.Value[0:2])
+ case nl.IFLA_IPTUN_ENCAP_FLAGS:
+ sittun.EncapFlags = native.Uint16(datum.Value[0:2])
+ case nl.IFLA_IPTUN_ENCAP_SPORT:
+ sittun.EncapSport = ntohs(datum.Value[0:2])
+ case nl.IFLA_IPTUN_ENCAP_DPORT:
+ sittun.EncapDport = ntohs(datum.Value[0:2])
}
}
}
diff --git a/vendor/github.com/vishvananda/netlink/neigh.go b/vendor/github.com/vishvananda/netlink/neigh.go
index 0e5eb90c9ebe..3f5cd497a739 100644
--- a/vendor/github.com/vishvananda/netlink/neigh.go
+++ b/vendor/github.com/vishvananda/netlink/neigh.go
@@ -14,6 +14,9 @@ type Neigh struct {
Flags int
IP net.IP
HardwareAddr net.HardwareAddr
+ LLIPAddr net.IP //Used in the case of NHRP
+ Vlan int
+ VNI int
}
// String returns $ip/$hwaddr $label
diff --git a/vendor/github.com/vishvananda/netlink/neigh_linux.go b/vendor/github.com/vishvananda/netlink/neigh_linux.go
index f069db257338..f75c22649f90 100644
--- a/vendor/github.com/vishvananda/netlink/neigh_linux.go
+++ b/vendor/github.com/vishvananda/netlink/neigh_linux.go
@@ -2,10 +2,10 @@ package netlink
import (
"net"
- "syscall"
"unsafe"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
const (
@@ -73,7 +73,7 @@ func NeighAdd(neigh *Neigh) error {
// NeighAdd will add an IP to MAC mapping to the ARP table
// Equivalent to: `ip neigh add ....`
func (h *Handle) NeighAdd(neigh *Neigh) error {
- return h.neighAdd(neigh, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL)
+ return h.neighAdd(neigh, unix.NLM_F_CREATE|unix.NLM_F_EXCL)
}
// NeighSet will add or replace an IP to MAC mapping to the ARP table
@@ -85,7 +85,7 @@ func NeighSet(neigh *Neigh) error {
// NeighSet will add or replace an IP to MAC mapping to the ARP table
// Equivalent to: `ip neigh replace....`
func (h *Handle) NeighSet(neigh *Neigh) error {
- return h.neighAdd(neigh, syscall.NLM_F_CREATE|syscall.NLM_F_REPLACE)
+ return h.neighAdd(neigh, unix.NLM_F_CREATE|unix.NLM_F_REPLACE)
}
// NeighAppend will append an entry to FDB
@@ -97,7 +97,7 @@ func NeighAppend(neigh *Neigh) error {
// NeighAppend will append an entry to FDB
// Equivalent to: `bridge fdb append...`
func (h *Handle) NeighAppend(neigh *Neigh) error {
- return h.neighAdd(neigh, syscall.NLM_F_CREATE|syscall.NLM_F_APPEND)
+ return h.neighAdd(neigh, unix.NLM_F_CREATE|unix.NLM_F_APPEND)
}
// NeighAppend will append an entry to FDB
@@ -109,7 +109,7 @@ func neighAdd(neigh *Neigh, mode int) error {
// NeighAppend will append an entry to FDB
// Equivalent to: `bridge fdb append...`
func (h *Handle) neighAdd(neigh *Neigh, mode int) error {
- req := h.newNetlinkRequest(syscall.RTM_NEWNEIGH, mode|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_NEWNEIGH, mode|unix.NLM_F_ACK)
return neighHandle(neigh, req)
}
@@ -122,12 +122,13 @@ func NeighDel(neigh *Neigh) error {
// NeighDel will delete an IP address from a link device.
// Equivalent to: `ip addr del $addr dev $link`
func (h *Handle) NeighDel(neigh *Neigh) error {
- req := h.newNetlinkRequest(syscall.RTM_DELNEIGH, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_DELNEIGH, unix.NLM_F_ACK)
return neighHandle(neigh, req)
}
func neighHandle(neigh *Neigh, req *nl.NetlinkRequest) error {
var family int
+
if neigh.Family > 0 {
family = neigh.Family
} else {
@@ -151,12 +152,25 @@ func neighHandle(neigh *Neigh, req *nl.NetlinkRequest) error {
dstData := nl.NewRtAttr(NDA_DST, ipData)
req.AddData(dstData)
- if neigh.Flags != NTF_PROXY || neigh.HardwareAddr != nil {
+ if neigh.LLIPAddr != nil {
+ llIPData := nl.NewRtAttr(NDA_LLADDR, neigh.LLIPAddr.To4())
+ req.AddData(llIPData)
+ } else if neigh.Flags != NTF_PROXY || neigh.HardwareAddr != nil {
hwData := nl.NewRtAttr(NDA_LLADDR, []byte(neigh.HardwareAddr))
req.AddData(hwData)
}
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ if neigh.Vlan != 0 {
+ vlanData := nl.NewRtAttr(NDA_VLAN, nl.Uint16Attr(uint16(neigh.Vlan)))
+ req.AddData(vlanData)
+ }
+
+ if neigh.VNI != 0 {
+ vniData := nl.NewRtAttr(NDA_VNI, nl.Uint32Attr(uint32(neigh.VNI)))
+ req.AddData(vniData)
+ }
+
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -189,7 +203,7 @@ func (h *Handle) NeighProxyList(linkIndex, family int) ([]Neigh, error) {
}
func (h *Handle) neighList(linkIndex, family, flags int) ([]Neigh, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETNEIGH, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(unix.RTM_GETNEIGH, unix.NLM_F_DUMP)
msg := Ndmsg{
Family: uint8(family),
Index: uint32(linkIndex),
@@ -197,7 +211,7 @@ func (h *Handle) neighList(linkIndex, family, flags int) ([]Neigh, error) {
}
req.AddData(&msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWNEIGH)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWNEIGH)
if err != nil {
return nil, err
}
@@ -237,12 +251,37 @@ func NeighDeserialize(m []byte) (*Neigh, error) {
return nil, err
}
+ // This should be cached for perfomance
+ // once per table dump
+ link, err := LinkByIndex(neigh.LinkIndex)
+ if err != nil {
+ return nil, err
+ }
+ encapType := link.Attrs().EncapType
+
for _, attr := range attrs {
switch attr.Attr.Type {
case NDA_DST:
neigh.IP = net.IP(attr.Value)
case NDA_LLADDR:
- neigh.HardwareAddr = net.HardwareAddr(attr.Value)
+ // BUG: Is this a bug in the netlink library?
+ // #define RTA_LENGTH(len) (RTA_ALIGN(sizeof(struct rtattr)) + (len))
+ // #define RTA_PAYLOAD(rta) ((int)((rta)->rta_len) - RTA_LENGTH(0))
+ attrLen := attr.Attr.Len - unix.SizeofRtAttr
+ if attrLen == 4 && (encapType == "ipip" ||
+ encapType == "sit" ||
+ encapType == "gre") {
+ neigh.LLIPAddr = net.IP(attr.Value)
+ } else if attrLen == 16 &&
+ encapType == "tunnel6" {
+ neigh.IP = net.IP(attr.Value)
+ } else {
+ neigh.HardwareAddr = net.HardwareAddr(attr.Value)
+ }
+ case NDA_VLAN:
+ neigh.Vlan = int(native.Uint16(attr.Value[0:2]))
+ case NDA_VNI:
+ neigh.VNI = int(native.Uint32(attr.Value[0:4]))
}
}
diff --git a/vendor/github.com/vishvananda/netlink/netlink_unspecified.go b/vendor/github.com/vishvananda/netlink/netlink_unspecified.go
index 2d57c16d7411..86111b92ce16 100644
--- a/vendor/github.com/vishvananda/netlink/netlink_unspecified.go
+++ b/vendor/github.com/vishvananda/netlink/netlink_unspecified.go
@@ -108,6 +108,10 @@ func LinkSetFlood(link Link, mode bool) error {
return ErrNotImplemented
}
+func LinkSetTxQLen(link Link, qlen int) error {
+ return ErrNotImplemented
+}
+
func LinkAdd(link Link) error {
return ErrNotImplemented
}
diff --git a/vendor/github.com/vishvananda/netlink/nl/addr_linux.go b/vendor/github.com/vishvananda/netlink/nl/addr_linux.go
index fe362e9fa7c3..50db3b4cdd87 100644
--- a/vendor/github.com/vishvananda/netlink/nl/addr_linux.go
+++ b/vendor/github.com/vishvananda/netlink/nl/addr_linux.go
@@ -1,17 +1,18 @@
package nl
import (
- "syscall"
"unsafe"
+
+ "golang.org/x/sys/unix"
)
type IfAddrmsg struct {
- syscall.IfAddrmsg
+ unix.IfAddrmsg
}
func NewIfAddrmsg(family int) *IfAddrmsg {
return &IfAddrmsg{
- IfAddrmsg: syscall.IfAddrmsg{
+ IfAddrmsg: unix.IfAddrmsg{
Family: uint8(family),
},
}
@@ -35,15 +36,15 @@ func NewIfAddrmsg(family int) *IfAddrmsg {
// SizeofIfAddrmsg = 0x8
func DeserializeIfAddrmsg(b []byte) *IfAddrmsg {
- return (*IfAddrmsg)(unsafe.Pointer(&b[0:syscall.SizeofIfAddrmsg][0]))
+ return (*IfAddrmsg)(unsafe.Pointer(&b[0:unix.SizeofIfAddrmsg][0]))
}
func (msg *IfAddrmsg) Serialize() []byte {
- return (*(*[syscall.SizeofIfAddrmsg]byte)(unsafe.Pointer(msg)))[:]
+ return (*(*[unix.SizeofIfAddrmsg]byte)(unsafe.Pointer(msg)))[:]
}
func (msg *IfAddrmsg) Len() int {
- return syscall.SizeofIfAddrmsg
+ return unix.SizeofIfAddrmsg
}
// struct ifa_cacheinfo {
diff --git a/vendor/github.com/vishvananda/netlink/nl/link_linux.go b/vendor/github.com/vishvananda/netlink/nl/link_linux.go
index e4a192f8eafb..ba0b3e19c676 100644
--- a/vendor/github.com/vishvananda/netlink/nl/link_linux.go
+++ b/vendor/github.com/vishvananda/netlink/nl/link_linux.go
@@ -1,14 +1,15 @@
package nl
import (
- "syscall"
"unsafe"
+
+ "golang.org/x/sys/unix"
)
const (
DEFAULT_CHANGE = 0xFFFFFFFF
// doesn't exist in syscall
- IFLA_VFINFO_LIST = syscall.IFLA_IFALIAS + 1 + iota
+ IFLA_VFINFO_LIST = unix.IFLA_IFALIAS + 1 + iota
IFLA_STATS64
IFLA_VF_PORTS
IFLA_PORT_SELF
@@ -118,6 +119,10 @@ const (
IFLA_MACVLAN_UNSPEC = iota
IFLA_MACVLAN_MODE
IFLA_MACVLAN_FLAGS
+ IFLA_MACVLAN_MACADDR_MODE
+ IFLA_MACVLAN_MACADDR
+ IFLA_MACVLAN_MACADDR_DATA
+ IFLA_MACVLAN_MACADDR_COUNT
IFLA_MACVLAN_MAX = IFLA_MACVLAN_FLAGS
)
@@ -129,6 +134,13 @@ const (
MACVLAN_MODE_SOURCE = 16
)
+const (
+ MACVLAN_MACADDR_ADD = iota
+ MACVLAN_MACADDR_DEL
+ MACVLAN_MACADDR_FLUSH
+ MACVLAN_MACADDR_SET
+)
+
const (
IFLA_BOND_UNSPEC = iota
IFLA_BOND_MODE
@@ -443,6 +455,13 @@ func (msg *VfTrust) Serialize() []byte {
return (*(*[SizeofVfTrust]byte)(unsafe.Pointer(msg)))[:]
}
+const (
+ XDP_FLAGS_UPDATE_IF_NOEXIST = 1 << iota
+ XDP_FLAGS_SKB_MODE
+ XDP_FLAGS_DRV_MODE
+ XDP_FLAGS_MASK = XDP_FLAGS_UPDATE_IF_NOEXIST | XDP_FLAGS_SKB_MODE | XDP_FLAGS_DRV_MODE
+)
+
const (
IFLA_XDP_UNSPEC = iota
IFLA_XDP_FD /* fd of xdp program to attach, or -1 to remove */
@@ -468,7 +487,12 @@ const (
IFLA_IPTUN_6RD_RELAY_PREFIX
IFLA_IPTUN_6RD_PREFIXLEN
IFLA_IPTUN_6RD_RELAY_PREFIXLEN
- IFLA_IPTUN_MAX = IFLA_IPTUN_6RD_RELAY_PREFIXLEN
+ IFLA_IPTUN_ENCAP_TYPE
+ IFLA_IPTUN_ENCAP_FLAGS
+ IFLA_IPTUN_ENCAP_SPORT
+ IFLA_IPTUN_ENCAP_DPORT
+ IFLA_IPTUN_COLLECT_METADATA
+ IFLA_IPTUN_MAX = IFLA_IPTUN_COLLECT_METADATA
)
const (
diff --git a/vendor/github.com/vishvananda/netlink/nl/nl_linux.go b/vendor/github.com/vishvananda/netlink/nl/nl_linux.go
index 1329acd86435..bc8e82c2cc4d 100644
--- a/vendor/github.com/vishvananda/netlink/nl/nl_linux.go
+++ b/vendor/github.com/vishvananda/netlink/nl/nl_linux.go
@@ -13,18 +13,19 @@ import (
"unsafe"
"github.com/vishvananda/netns"
+ "golang.org/x/sys/unix"
)
const (
// Family type definitions
- FAMILY_ALL = syscall.AF_UNSPEC
- FAMILY_V4 = syscall.AF_INET
- FAMILY_V6 = syscall.AF_INET6
+ FAMILY_ALL = unix.AF_UNSPEC
+ FAMILY_V4 = unix.AF_INET
+ FAMILY_V6 = unix.AF_INET6
FAMILY_MPLS = AF_MPLS
)
// SupportedNlFamilies contains the list of netlink families this netlink package supports
-var SupportedNlFamilies = []int{syscall.NETLINK_ROUTE, syscall.NETLINK_XFRM, syscall.NETLINK_NETFILTER}
+var SupportedNlFamilies = []int{unix.NETLINK_ROUTE, unix.NETLINK_XFRM, unix.NETLINK_NETFILTER}
var nextSeqNr uint32
@@ -77,161 +78,161 @@ type NetlinkRequestData interface {
// IfInfomsg is related to links, but it is used for list requests as well
type IfInfomsg struct {
- syscall.IfInfomsg
+ unix.IfInfomsg
}
// Create an IfInfomsg with family specified
func NewIfInfomsg(family int) *IfInfomsg {
return &IfInfomsg{
- IfInfomsg: syscall.IfInfomsg{
+ IfInfomsg: unix.IfInfomsg{
Family: uint8(family),
},
}
}
func DeserializeIfInfomsg(b []byte) *IfInfomsg {
- return (*IfInfomsg)(unsafe.Pointer(&b[0:syscall.SizeofIfInfomsg][0]))
+ return (*IfInfomsg)(unsafe.Pointer(&b[0:unix.SizeofIfInfomsg][0]))
}
func (msg *IfInfomsg) Serialize() []byte {
- return (*(*[syscall.SizeofIfInfomsg]byte)(unsafe.Pointer(msg)))[:]
+ return (*(*[unix.SizeofIfInfomsg]byte)(unsafe.Pointer(msg)))[:]
}
func (msg *IfInfomsg) Len() int {
- return syscall.SizeofIfInfomsg
+ return unix.SizeofIfInfomsg
}
func (msg *IfInfomsg) EncapType() string {
switch msg.Type {
case 0:
return "generic"
- case syscall.ARPHRD_ETHER:
+ case unix.ARPHRD_ETHER:
return "ether"
- case syscall.ARPHRD_EETHER:
+ case unix.ARPHRD_EETHER:
return "eether"
- case syscall.ARPHRD_AX25:
+ case unix.ARPHRD_AX25:
return "ax25"
- case syscall.ARPHRD_PRONET:
+ case unix.ARPHRD_PRONET:
return "pronet"
- case syscall.ARPHRD_CHAOS:
+ case unix.ARPHRD_CHAOS:
return "chaos"
- case syscall.ARPHRD_IEEE802:
+ case unix.ARPHRD_IEEE802:
return "ieee802"
- case syscall.ARPHRD_ARCNET:
+ case unix.ARPHRD_ARCNET:
return "arcnet"
- case syscall.ARPHRD_APPLETLK:
+ case unix.ARPHRD_APPLETLK:
return "atalk"
- case syscall.ARPHRD_DLCI:
+ case unix.ARPHRD_DLCI:
return "dlci"
- case syscall.ARPHRD_ATM:
+ case unix.ARPHRD_ATM:
return "atm"
- case syscall.ARPHRD_METRICOM:
+ case unix.ARPHRD_METRICOM:
return "metricom"
- case syscall.ARPHRD_IEEE1394:
+ case unix.ARPHRD_IEEE1394:
return "ieee1394"
- case syscall.ARPHRD_INFINIBAND:
+ case unix.ARPHRD_INFINIBAND:
return "infiniband"
- case syscall.ARPHRD_SLIP:
+ case unix.ARPHRD_SLIP:
return "slip"
- case syscall.ARPHRD_CSLIP:
+ case unix.ARPHRD_CSLIP:
return "cslip"
- case syscall.ARPHRD_SLIP6:
+ case unix.ARPHRD_SLIP6:
return "slip6"
- case syscall.ARPHRD_CSLIP6:
+ case unix.ARPHRD_CSLIP6:
return "cslip6"
- case syscall.ARPHRD_RSRVD:
+ case unix.ARPHRD_RSRVD:
return "rsrvd"
- case syscall.ARPHRD_ADAPT:
+ case unix.ARPHRD_ADAPT:
return "adapt"
- case syscall.ARPHRD_ROSE:
+ case unix.ARPHRD_ROSE:
return "rose"
- case syscall.ARPHRD_X25:
+ case unix.ARPHRD_X25:
return "x25"
- case syscall.ARPHRD_HWX25:
+ case unix.ARPHRD_HWX25:
return "hwx25"
- case syscall.ARPHRD_PPP:
+ case unix.ARPHRD_PPP:
return "ppp"
- case syscall.ARPHRD_HDLC:
+ case unix.ARPHRD_HDLC:
return "hdlc"
- case syscall.ARPHRD_LAPB:
+ case unix.ARPHRD_LAPB:
return "lapb"
- case syscall.ARPHRD_DDCMP:
+ case unix.ARPHRD_DDCMP:
return "ddcmp"
- case syscall.ARPHRD_RAWHDLC:
+ case unix.ARPHRD_RAWHDLC:
return "rawhdlc"
- case syscall.ARPHRD_TUNNEL:
+ case unix.ARPHRD_TUNNEL:
return "ipip"
- case syscall.ARPHRD_TUNNEL6:
+ case unix.ARPHRD_TUNNEL6:
return "tunnel6"
- case syscall.ARPHRD_FRAD:
+ case unix.ARPHRD_FRAD:
return "frad"
- case syscall.ARPHRD_SKIP:
+ case unix.ARPHRD_SKIP:
return "skip"
- case syscall.ARPHRD_LOOPBACK:
+ case unix.ARPHRD_LOOPBACK:
return "loopback"
- case syscall.ARPHRD_LOCALTLK:
+ case unix.ARPHRD_LOCALTLK:
return "ltalk"
- case syscall.ARPHRD_FDDI:
+ case unix.ARPHRD_FDDI:
return "fddi"
- case syscall.ARPHRD_BIF:
+ case unix.ARPHRD_BIF:
return "bif"
- case syscall.ARPHRD_SIT:
+ case unix.ARPHRD_SIT:
return "sit"
- case syscall.ARPHRD_IPDDP:
+ case unix.ARPHRD_IPDDP:
return "ip/ddp"
- case syscall.ARPHRD_IPGRE:
+ case unix.ARPHRD_IPGRE:
return "gre"
- case syscall.ARPHRD_PIMREG:
+ case unix.ARPHRD_PIMREG:
return "pimreg"
- case syscall.ARPHRD_HIPPI:
+ case unix.ARPHRD_HIPPI:
return "hippi"
- case syscall.ARPHRD_ASH:
+ case unix.ARPHRD_ASH:
return "ash"
- case syscall.ARPHRD_ECONET:
+ case unix.ARPHRD_ECONET:
return "econet"
- case syscall.ARPHRD_IRDA:
+ case unix.ARPHRD_IRDA:
return "irda"
- case syscall.ARPHRD_FCPP:
+ case unix.ARPHRD_FCPP:
return "fcpp"
- case syscall.ARPHRD_FCAL:
+ case unix.ARPHRD_FCAL:
return "fcal"
- case syscall.ARPHRD_FCPL:
+ case unix.ARPHRD_FCPL:
return "fcpl"
- case syscall.ARPHRD_FCFABRIC:
+ case unix.ARPHRD_FCFABRIC:
return "fcfb0"
- case syscall.ARPHRD_FCFABRIC + 1:
+ case unix.ARPHRD_FCFABRIC + 1:
return "fcfb1"
- case syscall.ARPHRD_FCFABRIC + 2:
+ case unix.ARPHRD_FCFABRIC + 2:
return "fcfb2"
- case syscall.ARPHRD_FCFABRIC + 3:
+ case unix.ARPHRD_FCFABRIC + 3:
return "fcfb3"
- case syscall.ARPHRD_FCFABRIC + 4:
+ case unix.ARPHRD_FCFABRIC + 4:
return "fcfb4"
- case syscall.ARPHRD_FCFABRIC + 5:
+ case unix.ARPHRD_FCFABRIC + 5:
return "fcfb5"
- case syscall.ARPHRD_FCFABRIC + 6:
+ case unix.ARPHRD_FCFABRIC + 6:
return "fcfb6"
- case syscall.ARPHRD_FCFABRIC + 7:
+ case unix.ARPHRD_FCFABRIC + 7:
return "fcfb7"
- case syscall.ARPHRD_FCFABRIC + 8:
+ case unix.ARPHRD_FCFABRIC + 8:
return "fcfb8"
- case syscall.ARPHRD_FCFABRIC + 9:
+ case unix.ARPHRD_FCFABRIC + 9:
return "fcfb9"
- case syscall.ARPHRD_FCFABRIC + 10:
+ case unix.ARPHRD_FCFABRIC + 10:
return "fcfb10"
- case syscall.ARPHRD_FCFABRIC + 11:
+ case unix.ARPHRD_FCFABRIC + 11:
return "fcfb11"
- case syscall.ARPHRD_FCFABRIC + 12:
+ case unix.ARPHRD_FCFABRIC + 12:
return "fcfb12"
- case syscall.ARPHRD_IEEE802_TR:
+ case unix.ARPHRD_IEEE802_TR:
return "tr"
- case syscall.ARPHRD_IEEE80211:
+ case unix.ARPHRD_IEEE80211:
return "ieee802.11"
- case syscall.ARPHRD_IEEE80211_PRISM:
+ case unix.ARPHRD_IEEE80211_PRISM:
return "ieee802.11/prism"
- case syscall.ARPHRD_IEEE80211_RADIOTAP:
+ case unix.ARPHRD_IEEE80211_RADIOTAP:
return "ieee802.11/radiotap"
- case syscall.ARPHRD_IEEE802154:
+ case unix.ARPHRD_IEEE802154:
return "ieee802.15.4"
case 65534:
@@ -243,7 +244,7 @@ func (msg *IfInfomsg) EncapType() string {
}
func rtaAlignOf(attrlen int) int {
- return (attrlen + syscall.RTA_ALIGNTO - 1) & ^(syscall.RTA_ALIGNTO - 1)
+ return (attrlen + unix.RTA_ALIGNTO - 1) & ^(unix.RTA_ALIGNTO - 1)
}
func NewIfInfomsgChild(parent *RtAttr, family int) *IfInfomsg {
@@ -254,7 +255,7 @@ func NewIfInfomsgChild(parent *RtAttr, family int) *IfInfomsg {
// Extend RtAttr to handle data and children
type RtAttr struct {
- syscall.RtAttr
+ unix.RtAttr
Data []byte
children []NetlinkRequestData
}
@@ -262,7 +263,7 @@ type RtAttr struct {
// Create a new Extended RtAttr object
func NewRtAttr(attrType int, data []byte) *RtAttr {
return &RtAttr{
- RtAttr: syscall.RtAttr{
+ RtAttr: unix.RtAttr{
Type: uint16(attrType),
},
children: []NetlinkRequestData{},
@@ -277,16 +278,21 @@ func NewRtAttrChild(parent *RtAttr, attrType int, data []byte) *RtAttr {
return attr
}
+// AddChild adds an existing RtAttr as a child.
+func (a *RtAttr) AddChild(attr *RtAttr) {
+ a.children = append(a.children, attr)
+}
+
func (a *RtAttr) Len() int {
if len(a.children) == 0 {
- return (syscall.SizeofRtAttr + len(a.Data))
+ return (unix.SizeofRtAttr + len(a.Data))
}
l := 0
for _, child := range a.children {
l += rtaAlignOf(child.Len())
}
- l += syscall.SizeofRtAttr
+ l += unix.SizeofRtAttr
return rtaAlignOf(l + len(a.Data))
}
@@ -319,7 +325,7 @@ func (a *RtAttr) Serialize() []byte {
}
type NetlinkRequest struct {
- syscall.NlMsghdr
+ unix.NlMsghdr
Data []NetlinkRequestData
RawData []byte
Sockets map[int]*SocketHandle
@@ -327,7 +333,7 @@ type NetlinkRequest struct {
// Serialize the Netlink Request into a byte array
func (req *NetlinkRequest) Serialize() []byte {
- length := syscall.SizeofNlMsghdr
+ length := unix.SizeofNlMsghdr
dataBytes := make([][]byte, len(req.Data))
for i, data := range req.Data {
dataBytes[i] = data.Serialize()
@@ -337,8 +343,8 @@ func (req *NetlinkRequest) Serialize() []byte {
req.Len = uint32(length)
b := make([]byte, length)
- hdr := (*(*[syscall.SizeofNlMsghdr]byte)(unsafe.Pointer(req)))[:]
- next := syscall.SizeofNlMsghdr
+ hdr := (*(*[unix.SizeofNlMsghdr]byte)(unsafe.Pointer(req)))[:]
+ next := unix.SizeofNlMsghdr
copy(b[0:next], hdr)
for _, data := range dataBytes {
for _, dataByte := range data {
@@ -421,10 +427,10 @@ done:
if m.Header.Pid != pid {
return nil, fmt.Errorf("Wrong pid %d, expected %d", m.Header.Pid, pid)
}
- if m.Header.Type == syscall.NLMSG_DONE {
+ if m.Header.Type == unix.NLMSG_DONE {
break done
}
- if m.Header.Type == syscall.NLMSG_ERROR {
+ if m.Header.Type == unix.NLMSG_ERROR {
native := NativeEndian()
error := int32(native.Uint32(m.Data[0:4]))
if error == 0 {
@@ -436,7 +442,7 @@ done:
continue
}
res = append(res, m.Data)
- if m.Header.Flags&syscall.NLM_F_MULTI == 0 {
+ if m.Header.Flags&unix.NLM_F_MULTI == 0 {
break done
}
}
@@ -449,10 +455,10 @@ done:
// the message is serialized
func NewNetlinkRequest(proto, flags int) *NetlinkRequest {
return &NetlinkRequest{
- NlMsghdr: syscall.NlMsghdr{
- Len: uint32(syscall.SizeofNlMsghdr),
+ NlMsghdr: unix.NlMsghdr{
+ Len: uint32(unix.SizeofNlMsghdr),
Type: uint16(proto),
- Flags: syscall.NLM_F_REQUEST | uint16(flags),
+ Flags: unix.NLM_F_REQUEST | uint16(flags),
Seq: atomic.AddUint32(&nextSeqNr, 1),
},
}
@@ -460,21 +466,21 @@ func NewNetlinkRequest(proto, flags int) *NetlinkRequest {
type NetlinkSocket struct {
fd int32
- lsa syscall.SockaddrNetlink
+ lsa unix.SockaddrNetlink
sync.Mutex
}
func getNetlinkSocket(protocol int) (*NetlinkSocket, error) {
- fd, err := syscall.Socket(syscall.AF_NETLINK, syscall.SOCK_RAW|syscall.SOCK_CLOEXEC, protocol)
+ fd, err := unix.Socket(unix.AF_NETLINK, unix.SOCK_RAW|unix.SOCK_CLOEXEC, protocol)
if err != nil {
return nil, err
}
s := &NetlinkSocket{
fd: int32(fd),
}
- s.lsa.Family = syscall.AF_NETLINK
- if err := syscall.Bind(fd, &s.lsa); err != nil {
- syscall.Close(fd)
+ s.lsa.Family = unix.AF_NETLINK
+ if err := unix.Bind(fd, &s.lsa); err != nil {
+ unix.Close(fd)
return nil, err
}
@@ -551,21 +557,21 @@ func executeInNetns(newNs, curNs netns.NsHandle) (func(), error) {
// Returns the netlink socket on which Receive() method can be called
// to retrieve the messages from the kernel.
func Subscribe(protocol int, groups ...uint) (*NetlinkSocket, error) {
- fd, err := syscall.Socket(syscall.AF_NETLINK, syscall.SOCK_RAW, protocol)
+ fd, err := unix.Socket(unix.AF_NETLINK, unix.SOCK_RAW, protocol)
if err != nil {
return nil, err
}
s := &NetlinkSocket{
fd: int32(fd),
}
- s.lsa.Family = syscall.AF_NETLINK
+ s.lsa.Family = unix.AF_NETLINK
for _, g := range groups {
s.lsa.Groups |= (1 << (g - 1))
}
- if err := syscall.Bind(fd, &s.lsa); err != nil {
- syscall.Close(fd)
+ if err := unix.Bind(fd, &s.lsa); err != nil {
+ unix.Close(fd)
return nil, err
}
@@ -586,7 +592,7 @@ func SubscribeAt(newNs, curNs netns.NsHandle, protocol int, groups ...uint) (*Ne
func (s *NetlinkSocket) Close() {
fd := int(atomic.SwapInt32(&s.fd, -1))
- syscall.Close(fd)
+ unix.Close(fd)
}
func (s *NetlinkSocket) GetFd() int {
@@ -598,7 +604,7 @@ func (s *NetlinkSocket) Send(request *NetlinkRequest) error {
if fd < 0 {
return fmt.Errorf("Send called on a closed socket")
}
- if err := syscall.Sendto(fd, request.Serialize(), 0, &s.lsa); err != nil {
+ if err := unix.Sendto(fd, request.Serialize(), 0, &s.lsa); err != nil {
return err
}
return nil
@@ -609,26 +615,40 @@ func (s *NetlinkSocket) Receive() ([]syscall.NetlinkMessage, error) {
if fd < 0 {
return nil, fmt.Errorf("Receive called on a closed socket")
}
- rb := make([]byte, syscall.Getpagesize())
- nr, _, err := syscall.Recvfrom(fd, rb, 0)
+ rb := make([]byte, unix.Getpagesize())
+ nr, _, err := unix.Recvfrom(fd, rb, 0)
if err != nil {
return nil, err
}
- if nr < syscall.NLMSG_HDRLEN {
+ if nr < unix.NLMSG_HDRLEN {
return nil, fmt.Errorf("Got short response from netlink")
}
rb = rb[:nr]
return syscall.ParseNetlinkMessage(rb)
}
+// SetSendTimeout allows to set a send timeout on the socket
+func (s *NetlinkSocket) SetSendTimeout(timeout *unix.Timeval) error {
+ // Set a send timeout of SOCKET_SEND_TIMEOUT, this will allow the Send to periodically unblock and avoid that a routine
+ // remains stuck on a send on a closed fd
+ return unix.SetsockoptTimeval(int(s.fd), unix.SOL_SOCKET, unix.SO_SNDTIMEO, timeout)
+}
+
+// SetReceiveTimeout allows to set a receive timeout on the socket
+func (s *NetlinkSocket) SetReceiveTimeout(timeout *unix.Timeval) error {
+ // Set a read timeout of SOCKET_READ_TIMEOUT, this will allow the Read to periodically unblock and avoid that a routine
+ // remains stuck on a recvmsg on a closed fd
+ return unix.SetsockoptTimeval(int(s.fd), unix.SOL_SOCKET, unix.SO_RCVTIMEO, timeout)
+}
+
func (s *NetlinkSocket) GetPid() (uint32, error) {
fd := int(atomic.LoadInt32(&s.fd))
- lsa, err := syscall.Getsockname(fd)
+ lsa, err := unix.Getsockname(fd)
if err != nil {
return 0, err
}
switch v := lsa.(type) {
- case *syscall.SockaddrNetlink:
+ case *unix.SockaddrNetlink:
return v.Pid, nil
}
return 0, fmt.Errorf("Wrong socket type")
@@ -683,24 +703,24 @@ func Uint64Attr(v uint64) []byte {
func ParseRouteAttr(b []byte) ([]syscall.NetlinkRouteAttr, error) {
var attrs []syscall.NetlinkRouteAttr
- for len(b) >= syscall.SizeofRtAttr {
+ for len(b) >= unix.SizeofRtAttr {
a, vbuf, alen, err := netlinkRouteAttrAndValue(b)
if err != nil {
return nil, err
}
- ra := syscall.NetlinkRouteAttr{Attr: *a, Value: vbuf[:int(a.Len)-syscall.SizeofRtAttr]}
+ ra := syscall.NetlinkRouteAttr{Attr: syscall.RtAttr(*a), Value: vbuf[:int(a.Len)-unix.SizeofRtAttr]}
attrs = append(attrs, ra)
b = b[alen:]
}
return attrs, nil
}
-func netlinkRouteAttrAndValue(b []byte) (*syscall.RtAttr, []byte, int, error) {
- a := (*syscall.RtAttr)(unsafe.Pointer(&b[0]))
- if int(a.Len) < syscall.SizeofRtAttr || int(a.Len) > len(b) {
- return nil, nil, 0, syscall.EINVAL
+func netlinkRouteAttrAndValue(b []byte) (*unix.RtAttr, []byte, int, error) {
+ a := (*unix.RtAttr)(unsafe.Pointer(&b[0]))
+ if int(a.Len) < unix.SizeofRtAttr || int(a.Len) > len(b) {
+ return nil, nil, 0, unix.EINVAL
}
- return a, b[syscall.SizeofRtAttr:], rtaAlignOf(int(a.Len)), nil
+ return a, b[unix.SizeofRtAttr:], rtaAlignOf(int(a.Len)), nil
}
// SocketHandle contains the netlink socket and the associated
diff --git a/vendor/github.com/vishvananda/netlink/nl/route_linux.go b/vendor/github.com/vishvananda/netlink/nl/route_linux.go
index 1a064d65d2fb..f6906fcaf7e0 100644
--- a/vendor/github.com/vishvananda/netlink/nl/route_linux.go
+++ b/vendor/github.com/vishvananda/netlink/nl/route_linux.go
@@ -1,65 +1,66 @@
package nl
import (
- "syscall"
"unsafe"
+
+ "golang.org/x/sys/unix"
)
type RtMsg struct {
- syscall.RtMsg
+ unix.RtMsg
}
func NewRtMsg() *RtMsg {
return &RtMsg{
- RtMsg: syscall.RtMsg{
- Table: syscall.RT_TABLE_MAIN,
- Scope: syscall.RT_SCOPE_UNIVERSE,
- Protocol: syscall.RTPROT_BOOT,
- Type: syscall.RTN_UNICAST,
+ RtMsg: unix.RtMsg{
+ Table: unix.RT_TABLE_MAIN,
+ Scope: unix.RT_SCOPE_UNIVERSE,
+ Protocol: unix.RTPROT_BOOT,
+ Type: unix.RTN_UNICAST,
},
}
}
func NewRtDelMsg() *RtMsg {
return &RtMsg{
- RtMsg: syscall.RtMsg{
- Table: syscall.RT_TABLE_MAIN,
- Scope: syscall.RT_SCOPE_NOWHERE,
+ RtMsg: unix.RtMsg{
+ Table: unix.RT_TABLE_MAIN,
+ Scope: unix.RT_SCOPE_NOWHERE,
},
}
}
func (msg *RtMsg) Len() int {
- return syscall.SizeofRtMsg
+ return unix.SizeofRtMsg
}
func DeserializeRtMsg(b []byte) *RtMsg {
- return (*RtMsg)(unsafe.Pointer(&b[0:syscall.SizeofRtMsg][0]))
+ return (*RtMsg)(unsafe.Pointer(&b[0:unix.SizeofRtMsg][0]))
}
func (msg *RtMsg) Serialize() []byte {
- return (*(*[syscall.SizeofRtMsg]byte)(unsafe.Pointer(msg)))[:]
+ return (*(*[unix.SizeofRtMsg]byte)(unsafe.Pointer(msg)))[:]
}
type RtNexthop struct {
- syscall.RtNexthop
+ unix.RtNexthop
Children []NetlinkRequestData
}
func DeserializeRtNexthop(b []byte) *RtNexthop {
- return (*RtNexthop)(unsafe.Pointer(&b[0:syscall.SizeofRtNexthop][0]))
+ return (*RtNexthop)(unsafe.Pointer(&b[0:unix.SizeofRtNexthop][0]))
}
func (msg *RtNexthop) Len() int {
if len(msg.Children) == 0 {
- return syscall.SizeofRtNexthop
+ return unix.SizeofRtNexthop
}
l := 0
for _, child := range msg.Children {
l += rtaAlignOf(child.Len())
}
- l += syscall.SizeofRtNexthop
+ l += unix.SizeofRtNexthop
return rtaAlignOf(l)
}
@@ -67,8 +68,8 @@ func (msg *RtNexthop) Serialize() []byte {
length := msg.Len()
msg.RtNexthop.Len = uint16(length)
buf := make([]byte, length)
- copy(buf, (*(*[syscall.SizeofRtNexthop]byte)(unsafe.Pointer(msg)))[:])
- next := rtaAlignOf(syscall.SizeofRtNexthop)
+ copy(buf, (*(*[unix.SizeofRtNexthop]byte)(unsafe.Pointer(msg)))[:])
+ next := rtaAlignOf(unix.SizeofRtNexthop)
if len(msg.Children) > 0 {
for _, child := range msg.Children {
childBuf := child.Serialize()
diff --git a/vendor/github.com/vishvananda/netlink/nl/seg6_linux.go b/vendor/github.com/vishvananda/netlink/nl/seg6_linux.go
new file mode 100644
index 000000000000..b3425f6b0ecc
--- /dev/null
+++ b/vendor/github.com/vishvananda/netlink/nl/seg6_linux.go
@@ -0,0 +1,111 @@
+package nl
+
+import (
+ "errors"
+ "fmt"
+ "net"
+)
+
+type IPv6SrHdr struct {
+ nextHdr uint8
+ hdrLen uint8
+ routingType uint8
+ segmentsLeft uint8
+ firstSegment uint8
+ flags uint8
+ reserved uint16
+
+ Segments []net.IP
+}
+
+func (s1 *IPv6SrHdr) Equal(s2 IPv6SrHdr) bool {
+ if len(s1.Segments) != len(s2.Segments) {
+ return false
+ }
+ for i := range s1.Segments {
+ if s1.Segments[i].Equal(s2.Segments[i]) != true {
+ return false
+ }
+ }
+ return s1.nextHdr == s2.nextHdr &&
+ s1.hdrLen == s2.hdrLen &&
+ s1.routingType == s2.routingType &&
+ s1.segmentsLeft == s2.segmentsLeft &&
+ s1.firstSegment == s2.firstSegment &&
+ s1.flags == s2.flags
+ // reserved doesn't need to be identical.
+}
+
+// seg6 encap mode
+const (
+ SEG6_IPTUN_MODE_INLINE = iota
+ SEG6_IPTUN_MODE_ENCAP
+)
+
+// number of nested RTATTR
+// from include/uapi/linux/seg6_iptunnel.h
+const (
+ SEG6_IPTUNNEL_UNSPEC = iota
+ SEG6_IPTUNNEL_SRH
+ __SEG6_IPTUNNEL_MAX
+)
+const (
+ SEG6_IPTUNNEL_MAX = __SEG6_IPTUNNEL_MAX - 1
+)
+
+func EncodeSEG6Encap(mode int, segments []net.IP) ([]byte, error) {
+ nsegs := len(segments) // nsegs: number of segments
+ if nsegs == 0 {
+ return nil, errors.New("EncodeSEG6Encap: No Segment in srh")
+ }
+ b := make([]byte, 12, 12+len(segments)*16)
+ native := NativeEndian()
+ native.PutUint32(b, uint32(mode))
+ b[4] = 0 // srh.nextHdr (0 when calling netlink)
+ b[5] = uint8(16 * nsegs >> 3) // srh.hdrLen (in 8-octets unit)
+ b[6] = IPV6_SRCRT_TYPE_4 // srh.routingType (assigned by IANA)
+ b[7] = uint8(nsegs - 1) // srh.segmentsLeft
+ b[8] = uint8(nsegs - 1) // srh.firstSegment
+ b[9] = 0 // srh.flags (SR6_FLAG1_HMAC for srh_hmac)
+ // srh.reserved: Defined as "Tag" in draft-ietf-6man-segment-routing-header-07
+ native.PutUint16(b[10:], 0) // srh.reserved
+ for _, netIP := range segments {
+ b = append(b, netIP...) // srh.Segments
+ }
+ return b, nil
+}
+
+func DecodeSEG6Encap(buf []byte) (int, []net.IP, error) {
+ native := NativeEndian()
+ mode := int(native.Uint32(buf))
+ srh := IPv6SrHdr{
+ nextHdr: buf[4],
+ hdrLen: buf[5],
+ routingType: buf[6],
+ segmentsLeft: buf[7],
+ firstSegment: buf[8],
+ flags: buf[9],
+ reserved: native.Uint16(buf[10:12]),
+ }
+ buf = buf[12:]
+ if len(buf)%16 != 0 {
+ err := fmt.Errorf("DecodeSEG6Encap: error parsing Segment List (buf len: %d)\n", len(buf))
+ return mode, nil, err
+ }
+ for len(buf) > 0 {
+ srh.Segments = append(srh.Segments, net.IP(buf[:16]))
+ buf = buf[16:]
+ }
+ return mode, srh.Segments, nil
+}
+
+// Helper functions
+func SEG6EncapModeString(mode int) string {
+ switch mode {
+ case SEG6_IPTUN_MODE_INLINE:
+ return "inline"
+ case SEG6_IPTUN_MODE_ENCAP:
+ return "encap"
+ }
+ return "unknown"
+}
diff --git a/vendor/github.com/vishvananda/netlink/nl/syscall.go b/vendor/github.com/vishvananda/netlink/nl/syscall.go
index 3473e536384d..fc631e0e505f 100644
--- a/vendor/github.com/vishvananda/netlink/nl/syscall.go
+++ b/vendor/github.com/vishvananda/netlink/nl/syscall.go
@@ -65,4 +65,14 @@ const (
LWTUNNEL_ENCAP_IP
LWTUNNEL_ENCAP_ILA
LWTUNNEL_ENCAP_IP6
+ LWTUNNEL_ENCAP_SEG6
+ LWTUNNEL_ENCAP_BPF
+)
+
+// routing header types
+const (
+ IPV6_SRCRT_STRICT = 0x01 // Deprecated; will be removed
+ IPV6_SRCRT_TYPE_0 = 0 // Deprecated; will be removed
+ IPV6_SRCRT_TYPE_2 = 2 // IPv6 type 2 Routing Header
+ IPV6_SRCRT_TYPE_4 = 4 // Segment Routing with IPv6
)
diff --git a/vendor/github.com/vishvananda/netlink/protinfo_linux.go b/vendor/github.com/vishvananda/netlink/protinfo_linux.go
index 10dd0d53357c..43c465f05758 100644
--- a/vendor/github.com/vishvananda/netlink/protinfo_linux.go
+++ b/vendor/github.com/vishvananda/netlink/protinfo_linux.go
@@ -5,6 +5,7 @@ import (
"syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
func LinkGetProtinfo(link Link) (Protinfo, error) {
@@ -15,10 +16,10 @@ func (h *Handle) LinkGetProtinfo(link Link) (Protinfo, error) {
base := link.Attrs()
h.ensureIndex(base)
var pi Protinfo
- req := h.newNetlinkRequest(syscall.RTM_GETLINK, syscall.NLM_F_DUMP)
- msg := nl.NewIfInfomsg(syscall.AF_BRIDGE)
+ req := h.newNetlinkRequest(unix.RTM_GETLINK, unix.NLM_F_DUMP)
+ msg := nl.NewIfInfomsg(unix.AF_BRIDGE)
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, 0)
if err != nil {
return pi, err
}
@@ -33,7 +34,7 @@ func (h *Handle) LinkGetProtinfo(link Link) (Protinfo, error) {
return pi, err
}
for _, attr := range attrs {
- if attr.Attr.Type != syscall.IFLA_PROTINFO|syscall.NLA_F_NESTED {
+ if attr.Attr.Type != unix.IFLA_PROTINFO|unix.NLA_F_NESTED {
continue
}
infos, err := nl.ParseRouteAttr(attr.Value)
diff --git a/vendor/github.com/vishvananda/netlink/qdisc_linux.go b/vendor/github.com/vishvananda/netlink/qdisc_linux.go
index 2c0deddb3236..91193145ae75 100644
--- a/vendor/github.com/vishvananda/netlink/qdisc_linux.go
+++ b/vendor/github.com/vishvananda/netlink/qdisc_linux.go
@@ -8,6 +8,7 @@ import (
"syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
// NOTE function is here because it uses other linux functions
@@ -84,7 +85,7 @@ func QdiscDel(qdisc Qdisc) error {
// QdiscDel will delete a qdisc from the system.
// Equivalent to: `tc qdisc del $qdisc`
func (h *Handle) QdiscDel(qdisc Qdisc) error {
- return h.qdiscModify(syscall.RTM_DELQDISC, 0, qdisc)
+ return h.qdiscModify(unix.RTM_DELQDISC, 0, qdisc)
}
// QdiscChange will change a qdisc in place
@@ -98,7 +99,7 @@ func QdiscChange(qdisc Qdisc) error {
// Equivalent to: `tc qdisc change $qdisc`
// The parent and handle MUST NOT be changed.
func (h *Handle) QdiscChange(qdisc Qdisc) error {
- return h.qdiscModify(syscall.RTM_NEWQDISC, 0, qdisc)
+ return h.qdiscModify(unix.RTM_NEWQDISC, 0, qdisc)
}
// QdiscReplace will replace a qdisc to the system.
@@ -113,8 +114,8 @@ func QdiscReplace(qdisc Qdisc) error {
// The handle MUST change.
func (h *Handle) QdiscReplace(qdisc Qdisc) error {
return h.qdiscModify(
- syscall.RTM_NEWQDISC,
- syscall.NLM_F_CREATE|syscall.NLM_F_REPLACE,
+ unix.RTM_NEWQDISC,
+ unix.NLM_F_CREATE|unix.NLM_F_REPLACE,
qdisc)
}
@@ -128,13 +129,13 @@ func QdiscAdd(qdisc Qdisc) error {
// Equivalent to: `tc qdisc add $qdisc`
func (h *Handle) QdiscAdd(qdisc Qdisc) error {
return h.qdiscModify(
- syscall.RTM_NEWQDISC,
- syscall.NLM_F_CREATE|syscall.NLM_F_EXCL,
+ unix.RTM_NEWQDISC,
+ unix.NLM_F_CREATE|unix.NLM_F_EXCL,
qdisc)
}
func (h *Handle) qdiscModify(cmd, flags int, qdisc Qdisc) error {
- req := h.newNetlinkRequest(cmd, flags|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(cmd, flags|unix.NLM_F_ACK)
base := qdisc.Attrs()
msg := &nl.TcMsg{
Family: nl.FAMILY_ALL,
@@ -145,13 +146,13 @@ func (h *Handle) qdiscModify(cmd, flags int, qdisc Qdisc) error {
req.AddData(msg)
// When deleting don't bother building the rest of the netlink payload
- if cmd != syscall.RTM_DELQDISC {
+ if cmd != unix.RTM_DELQDISC {
if err := qdiscPayload(req, qdisc); err != nil {
return err
}
}
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -160,71 +161,73 @@ func qdiscPayload(req *nl.NetlinkRequest, qdisc Qdisc) error {
req.AddData(nl.NewRtAttr(nl.TCA_KIND, nl.ZeroTerminated(qdisc.Type())))
options := nl.NewRtAttr(nl.TCA_OPTIONS, nil)
- if prio, ok := qdisc.(*Prio); ok {
+
+ switch qdisc := qdisc.(type) {
+ case *Prio:
tcmap := nl.TcPrioMap{
- Bands: int32(prio.Bands),
- Priomap: prio.PriorityMap,
+ Bands: int32(qdisc.Bands),
+ Priomap: qdisc.PriorityMap,
}
options = nl.NewRtAttr(nl.TCA_OPTIONS, tcmap.Serialize())
- } else if tbf, ok := qdisc.(*Tbf); ok {
+ case *Tbf:
opt := nl.TcTbfQopt{}
- opt.Rate.Rate = uint32(tbf.Rate)
- opt.Peakrate.Rate = uint32(tbf.Peakrate)
- opt.Limit = tbf.Limit
- opt.Buffer = tbf.Buffer
+ opt.Rate.Rate = uint32(qdisc.Rate)
+ opt.Peakrate.Rate = uint32(qdisc.Peakrate)
+ opt.Limit = qdisc.Limit
+ opt.Buffer = qdisc.Buffer
nl.NewRtAttrChild(options, nl.TCA_TBF_PARMS, opt.Serialize())
- if tbf.Rate >= uint64(1<<32) {
- nl.NewRtAttrChild(options, nl.TCA_TBF_RATE64, nl.Uint64Attr(tbf.Rate))
+ if qdisc.Rate >= uint64(1<<32) {
+ nl.NewRtAttrChild(options, nl.TCA_TBF_RATE64, nl.Uint64Attr(qdisc.Rate))
}
- if tbf.Peakrate >= uint64(1<<32) {
- nl.NewRtAttrChild(options, nl.TCA_TBF_PRATE64, nl.Uint64Attr(tbf.Peakrate))
+ if qdisc.Peakrate >= uint64(1<<32) {
+ nl.NewRtAttrChild(options, nl.TCA_TBF_PRATE64, nl.Uint64Attr(qdisc.Peakrate))
}
- if tbf.Peakrate > 0 {
- nl.NewRtAttrChild(options, nl.TCA_TBF_PBURST, nl.Uint32Attr(tbf.Minburst))
+ if qdisc.Peakrate > 0 {
+ nl.NewRtAttrChild(options, nl.TCA_TBF_PBURST, nl.Uint32Attr(qdisc.Minburst))
}
- } else if htb, ok := qdisc.(*Htb); ok {
+ case *Htb:
opt := nl.TcHtbGlob{}
- opt.Version = htb.Version
- opt.Rate2Quantum = htb.Rate2Quantum
- opt.Defcls = htb.Defcls
+ opt.Version = qdisc.Version
+ opt.Rate2Quantum = qdisc.Rate2Quantum
+ opt.Defcls = qdisc.Defcls
// TODO: Handle Debug properly. For now default to 0
- opt.Debug = htb.Debug
- opt.DirectPkts = htb.DirectPkts
+ opt.Debug = qdisc.Debug
+ opt.DirectPkts = qdisc.DirectPkts
nl.NewRtAttrChild(options, nl.TCA_HTB_INIT, opt.Serialize())
// nl.NewRtAttrChild(options, nl.TCA_HTB_DIRECT_QLEN, opt.Serialize())
- } else if netem, ok := qdisc.(*Netem); ok {
+ case *Netem:
opt := nl.TcNetemQopt{}
- opt.Latency = netem.Latency
- opt.Limit = netem.Limit
- opt.Loss = netem.Loss
- opt.Gap = netem.Gap
- opt.Duplicate = netem.Duplicate
- opt.Jitter = netem.Jitter
+ opt.Latency = qdisc.Latency
+ opt.Limit = qdisc.Limit
+ opt.Loss = qdisc.Loss
+ opt.Gap = qdisc.Gap
+ opt.Duplicate = qdisc.Duplicate
+ opt.Jitter = qdisc.Jitter
options = nl.NewRtAttr(nl.TCA_OPTIONS, opt.Serialize())
// Correlation
corr := nl.TcNetemCorr{}
- corr.DelayCorr = netem.DelayCorr
- corr.LossCorr = netem.LossCorr
- corr.DupCorr = netem.DuplicateCorr
+ corr.DelayCorr = qdisc.DelayCorr
+ corr.LossCorr = qdisc.LossCorr
+ corr.DupCorr = qdisc.DuplicateCorr
if corr.DelayCorr > 0 || corr.LossCorr > 0 || corr.DupCorr > 0 {
nl.NewRtAttrChild(options, nl.TCA_NETEM_CORR, corr.Serialize())
}
// Corruption
corruption := nl.TcNetemCorrupt{}
- corruption.Probability = netem.CorruptProb
- corruption.Correlation = netem.CorruptCorr
+ corruption.Probability = qdisc.CorruptProb
+ corruption.Correlation = qdisc.CorruptCorr
if corruption.Probability > 0 {
nl.NewRtAttrChild(options, nl.TCA_NETEM_CORRUPT, corruption.Serialize())
}
// Reorder
reorder := nl.TcNetemReorder{}
- reorder.Probability = netem.ReorderProb
- reorder.Correlation = netem.ReorderCorr
+ reorder.Probability = qdisc.ReorderProb
+ reorder.Correlation = qdisc.ReorderCorr
if reorder.Probability > 0 {
nl.NewRtAttrChild(options, nl.TCA_NETEM_REORDER, reorder.Serialize())
}
- } else if _, ok := qdisc.(*Ingress); ok {
+ case *Ingress:
// ingress filters must use the proper handle
if qdisc.Attrs().Parent != HANDLE_INGRESS {
return fmt.Errorf("Ingress filters must set Parent to HANDLE_INGRESS")
@@ -246,7 +249,7 @@ func QdiscList(link Link) ([]Qdisc, error) {
// Equivalent to: `tc qdisc show`.
// The list can be filtered by link.
func (h *Handle) QdiscList(link Link) ([]Qdisc, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETQDISC, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(unix.RTM_GETQDISC, unix.NLM_F_DUMP)
index := int32(0)
if link != nil {
base := link.Attrs()
@@ -259,7 +262,7 @@ func (h *Handle) QdiscList(link Link) ([]Qdisc, error) {
}
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWQDISC)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWQDISC)
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/vishvananda/netlink/route.go b/vendor/github.com/vishvananda/netlink/route.go
index 03ac4b23916d..2cd58ee33424 100644
--- a/vendor/github.com/vishvananda/netlink/route.go
+++ b/vendor/github.com/vishvananda/netlink/route.go
@@ -16,6 +16,7 @@ type Destination interface {
Decode([]byte) error
Encode() ([]byte, error)
String() string
+ Equal(Destination) bool
}
type Encap interface {
@@ -23,6 +24,7 @@ type Encap interface {
Decode([]byte) error
Encode() ([]byte, error)
String() string
+ Equal(Encap) bool
}
// Route represents a netlink route.
@@ -43,6 +45,8 @@ type Route struct {
MPLSDst *int
NewDst Destination
Encap Encap
+ MTU int
+ AdvMSS int
}
func (r Route) String() string {
@@ -72,6 +76,25 @@ func (r Route) String() string {
return fmt.Sprintf("{%s}", strings.Join(elems, " "))
}
+func (r Route) Equal(x Route) bool {
+ return r.LinkIndex == x.LinkIndex &&
+ r.ILinkIndex == x.ILinkIndex &&
+ r.Scope == x.Scope &&
+ ipNetEqual(r.Dst, x.Dst) &&
+ r.Src.Equal(x.Src) &&
+ r.Gw.Equal(x.Gw) &&
+ nexthopInfoSlice(r.MultiPath).Equal(x.MultiPath) &&
+ r.Protocol == x.Protocol &&
+ r.Priority == x.Priority &&
+ r.Table == x.Table &&
+ r.Type == x.Type &&
+ r.Tos == x.Tos &&
+ r.Flags == x.Flags &&
+ (r.MPLSDst == x.MPLSDst || (r.MPLSDst != nil && x.MPLSDst != nil && *r.MPLSDst == *x.MPLSDst)) &&
+ (r.NewDst == x.NewDst || (r.NewDst != nil && r.NewDst.Equal(x.NewDst))) &&
+ (r.Encap == x.Encap || (r.Encap != nil && r.Encap.Equal(x.Encap)))
+}
+
func (r *Route) SetFlag(flag NextHopFlag) {
r.Flags |= int(flag)
}
@@ -110,7 +133,46 @@ func (n *NexthopInfo) String() string {
elems = append(elems, fmt.Sprintf("Encap: %s", n.Encap))
}
elems = append(elems, fmt.Sprintf("Weight: %d", n.Hops+1))
- elems = append(elems, fmt.Sprintf("Gw: %d", n.Gw))
+ elems = append(elems, fmt.Sprintf("Gw: %s", n.Gw))
elems = append(elems, fmt.Sprintf("Flags: %s", n.ListFlags()))
return fmt.Sprintf("{%s}", strings.Join(elems, " "))
}
+
+func (n NexthopInfo) Equal(x NexthopInfo) bool {
+ return n.LinkIndex == x.LinkIndex &&
+ n.Hops == x.Hops &&
+ n.Gw.Equal(x.Gw) &&
+ n.Flags == x.Flags &&
+ (n.NewDst == x.NewDst || (n.NewDst != nil && n.NewDst.Equal(x.NewDst))) &&
+ (n.Encap == x.Encap || (n.Encap != nil && n.Encap.Equal(x.Encap)))
+}
+
+type nexthopInfoSlice []*NexthopInfo
+
+func (n nexthopInfoSlice) Equal(x []*NexthopInfo) bool {
+ if len(n) != len(x) {
+ return false
+ }
+ for i := range n {
+ if n[i] == nil || x[i] == nil {
+ return false
+ }
+ if !n[i].Equal(*x[i]) {
+ return false
+ }
+ }
+ return true
+}
+
+// ipNetEqual returns true iff both IPNet are equal
+func ipNetEqual(ipn1 *net.IPNet, ipn2 *net.IPNet) bool {
+ if ipn1 == ipn2 {
+ return true
+ }
+ if ipn1 == nil || ipn2 == nil {
+ return false
+ }
+ m1, _ := ipn1.Mask.Size()
+ m2, _ := ipn2.Mask.Size()
+ return m1 == m2 && ipn1.IP.Equal(ipn2.IP)
+}
diff --git a/vendor/github.com/vishvananda/netlink/route_linux.go b/vendor/github.com/vishvananda/netlink/route_linux.go
index cd739e714694..fd5ac8983540 100644
--- a/vendor/github.com/vishvananda/netlink/route_linux.go
+++ b/vendor/github.com/vishvananda/netlink/route_linux.go
@@ -8,16 +8,17 @@ import (
"github.com/vishvananda/netlink/nl"
"github.com/vishvananda/netns"
+ "golang.org/x/sys/unix"
)
// RtAttr is shared so it is in netlink_linux.go
const (
- SCOPE_UNIVERSE Scope = syscall.RT_SCOPE_UNIVERSE
- SCOPE_SITE Scope = syscall.RT_SCOPE_SITE
- SCOPE_LINK Scope = syscall.RT_SCOPE_LINK
- SCOPE_HOST Scope = syscall.RT_SCOPE_HOST
- SCOPE_NOWHERE Scope = syscall.RT_SCOPE_NOWHERE
+ SCOPE_UNIVERSE Scope = unix.RT_SCOPE_UNIVERSE
+ SCOPE_SITE Scope = unix.RT_SCOPE_SITE
+ SCOPE_LINK Scope = unix.RT_SCOPE_LINK
+ SCOPE_HOST Scope = unix.RT_SCOPE_HOST
+ SCOPE_NOWHERE Scope = unix.RT_SCOPE_NOWHERE
)
const (
@@ -34,8 +35,8 @@ const (
)
const (
- FLAG_ONLINK NextHopFlag = syscall.RTNH_F_ONLINK
- FLAG_PERVASIVE NextHopFlag = syscall.RTNH_F_PERVASIVE
+ FLAG_ONLINK NextHopFlag = unix.RTNH_F_ONLINK
+ FLAG_PERVASIVE NextHopFlag = unix.RTNH_F_PERVASIVE
)
var testFlags = []flagString{
@@ -86,6 +87,34 @@ func (d *MPLSDestination) String() string {
return strings.Join(s, "/")
}
+func (d *MPLSDestination) Equal(x Destination) bool {
+ o, ok := x.(*MPLSDestination)
+ if !ok {
+ return false
+ }
+ if d == nil && o == nil {
+ return true
+ }
+ if d == nil || o == nil {
+ return false
+ }
+ if d.Labels == nil && o.Labels == nil {
+ return true
+ }
+ if d.Labels == nil || o.Labels == nil {
+ return false
+ }
+ if len(d.Labels) != len(o.Labels) {
+ return false
+ }
+ for i := range d.Labels {
+ if d.Labels[i] != o.Labels[i] {
+ return false
+ }
+ }
+ return true
+}
+
type MPLSEncap struct {
Labels []int
}
@@ -96,17 +125,17 @@ func (e *MPLSEncap) Type() int {
func (e *MPLSEncap) Decode(buf []byte) error {
if len(buf) < 4 {
- return fmt.Errorf("Lack of bytes")
+ return fmt.Errorf("lack of bytes")
}
native := nl.NativeEndian()
l := native.Uint16(buf)
if len(buf) < int(l) {
- return fmt.Errorf("Lack of bytes")
+ return fmt.Errorf("lack of bytes")
}
buf = buf[:l]
typ := native.Uint16(buf[2:])
if typ != nl.MPLS_IPTUNNEL_DST {
- return fmt.Errorf("Unknown MPLS Encap Type: %d", typ)
+ return fmt.Errorf("unknown MPLS Encap Type: %d", typ)
}
e.Labels = nl.DecodeMPLSStack(buf[4:])
return nil
@@ -129,6 +158,107 @@ func (e *MPLSEncap) String() string {
return strings.Join(s, "/")
}
+func (e *MPLSEncap) Equal(x Encap) bool {
+ o, ok := x.(*MPLSEncap)
+ if !ok {
+ return false
+ }
+ if e == nil && o == nil {
+ return true
+ }
+ if e == nil || o == nil {
+ return false
+ }
+ if e.Labels == nil && o.Labels == nil {
+ return true
+ }
+ if e.Labels == nil || o.Labels == nil {
+ return false
+ }
+ if len(e.Labels) != len(o.Labels) {
+ return false
+ }
+ for i := range e.Labels {
+ if e.Labels[i] != o.Labels[i] {
+ return false
+ }
+ }
+ return true
+}
+
+// SEG6 definitions
+type SEG6Encap struct {
+ Mode int
+ Segments []net.IP
+}
+
+func (e *SEG6Encap) Type() int {
+ return nl.LWTUNNEL_ENCAP_SEG6
+}
+func (e *SEG6Encap) Decode(buf []byte) error {
+ if len(buf) < 4 {
+ return fmt.Errorf("lack of bytes")
+ }
+ native := nl.NativeEndian()
+ // Get Length(l) & Type(typ) : 2 + 2 bytes
+ l := native.Uint16(buf)
+ if len(buf) < int(l) {
+ return fmt.Errorf("lack of bytes")
+ }
+ buf = buf[:l] // make sure buf size upper limit is Length
+ typ := native.Uint16(buf[2:])
+ if typ != nl.SEG6_IPTUNNEL_SRH {
+ return fmt.Errorf("unknown SEG6 Type: %d", typ)
+ }
+
+ var err error
+ e.Mode, e.Segments, err = nl.DecodeSEG6Encap(buf[4:])
+
+ return err
+}
+func (e *SEG6Encap) Encode() ([]byte, error) {
+ s, err := nl.EncodeSEG6Encap(e.Mode, e.Segments)
+ native := nl.NativeEndian()
+ hdr := make([]byte, 4)
+ native.PutUint16(hdr, uint16(len(s)+4))
+ native.PutUint16(hdr[2:], nl.SEG6_IPTUNNEL_SRH)
+ return append(hdr, s...), err
+}
+func (e *SEG6Encap) String() string {
+ segs := make([]string, 0, len(e.Segments))
+ // append segment backwards (from n to 0) since seg#0 is the last segment.
+ for i := len(e.Segments); i > 0; i-- {
+ segs = append(segs, fmt.Sprintf("%s", e.Segments[i-1]))
+ }
+ str := fmt.Sprintf("mode %s segs %d [ %s ]", nl.SEG6EncapModeString(e.Mode),
+ len(e.Segments), strings.Join(segs, " "))
+ return str
+}
+func (e *SEG6Encap) Equal(x Encap) bool {
+ o, ok := x.(*SEG6Encap)
+ if !ok {
+ return false
+ }
+ if e == o {
+ return true
+ }
+ if e == nil || o == nil {
+ return false
+ }
+ if e.Mode != o.Mode {
+ return false
+ }
+ if len(e.Segments) != len(o.Segments) {
+ return false
+ }
+ for i := range e.Segments {
+ if !e.Segments[i].Equal(o.Segments[i]) {
+ return false
+ }
+ }
+ return true
+}
+
// RouteAdd will add a route to the system.
// Equivalent to: `ip route add $route`
func RouteAdd(route *Route) error {
@@ -138,8 +268,8 @@ func RouteAdd(route *Route) error {
// RouteAdd will add a route to the system.
// Equivalent to: `ip route add $route`
func (h *Handle) RouteAdd(route *Route) error {
- flags := syscall.NLM_F_CREATE | syscall.NLM_F_EXCL | syscall.NLM_F_ACK
- req := h.newNetlinkRequest(syscall.RTM_NEWROUTE, flags)
+ flags := unix.NLM_F_CREATE | unix.NLM_F_EXCL | unix.NLM_F_ACK
+ req := h.newNetlinkRequest(unix.RTM_NEWROUTE, flags)
return h.routeHandle(route, req, nl.NewRtMsg())
}
@@ -152,8 +282,8 @@ func RouteReplace(route *Route) error {
// RouteReplace will add a route to the system.
// Equivalent to: `ip route replace $route`
func (h *Handle) RouteReplace(route *Route) error {
- flags := syscall.NLM_F_CREATE | syscall.NLM_F_REPLACE | syscall.NLM_F_ACK
- req := h.newNetlinkRequest(syscall.RTM_NEWROUTE, flags)
+ flags := unix.NLM_F_CREATE | unix.NLM_F_REPLACE | unix.NLM_F_ACK
+ req := h.newNetlinkRequest(unix.RTM_NEWROUTE, flags)
return h.routeHandle(route, req, nl.NewRtMsg())
}
@@ -166,7 +296,7 @@ func RouteDel(route *Route) error {
// RouteDel will delete a route from the system.
// Equivalent to: `ip route del $route`
func (h *Handle) RouteDel(route *Route) error {
- req := h.newNetlinkRequest(syscall.RTM_DELROUTE, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_DELROUTE, unix.NLM_F_ACK)
return h.routeHandle(route, req, nl.NewRtDelMsg())
}
@@ -189,12 +319,12 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
} else {
dstData = route.Dst.IP.To16()
}
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_DST, dstData))
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_DST, dstData))
} else if route.MPLSDst != nil {
family = nl.FAMILY_MPLS
msg.Dst_len = uint8(20)
- msg.Type = syscall.RTN_UNICAST
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_DST, nl.EncodeMPLSStack(*route.MPLSDst)))
+ msg.Type = unix.RTN_UNICAST
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_DST, nl.EncodeMPLSStack(*route.MPLSDst)))
}
if route.NewDst != nil {
@@ -232,7 +362,7 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
srcData = route.Src.To16()
}
// The commonly used src ip for routes is actually PREFSRC
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_PREFSRC, srcData))
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_PREFSRC, srcData))
}
if route.Gw != nil {
@@ -247,14 +377,14 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
} else {
gwData = route.Gw.To16()
}
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_GATEWAY, gwData))
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_GATEWAY, gwData))
}
if len(route.MultiPath) > 0 {
buf := []byte{}
for _, nh := range route.MultiPath {
rtnh := &nl.RtNexthop{
- RtNexthop: syscall.RtNexthop{
+ RtNexthop: unix.RtNexthop{
Hops: uint8(nh.Hops),
Ifindex: int32(nh.LinkIndex),
Flags: uint8(nh.Flags),
@@ -267,9 +397,9 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
return fmt.Errorf("gateway, source, and destination ip are not the same IP family")
}
if gwFamily == FAMILY_V4 {
- children = append(children, nl.NewRtAttr(syscall.RTA_GATEWAY, []byte(nh.Gw.To4())))
+ children = append(children, nl.NewRtAttr(unix.RTA_GATEWAY, []byte(nh.Gw.To4())))
} else {
- children = append(children, nl.NewRtAttr(syscall.RTA_GATEWAY, []byte(nh.Gw.To16())))
+ children = append(children, nl.NewRtAttr(unix.RTA_GATEWAY, []byte(nh.Gw.To16())))
}
}
if nh.NewDst != nil {
@@ -295,15 +425,15 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
rtnh.Children = children
buf = append(buf, rtnh.Serialize()...)
}
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_MULTIPATH, buf))
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_MULTIPATH, buf))
}
if route.Table > 0 {
if route.Table >= 256 {
- msg.Table = syscall.RT_TABLE_UNSPEC
+ msg.Table = unix.RT_TABLE_UNSPEC
b := make([]byte, 4)
native.PutUint32(b, uint32(route.Table))
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_TABLE, b))
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_TABLE, b))
} else {
msg.Table = uint8(route.Table)
}
@@ -312,7 +442,7 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
if route.Priority > 0 {
b := make([]byte, 4)
native.PutUint32(b, uint32(route.Priority))
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_PRIORITY, b))
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_PRIORITY, b))
}
if route.Tos > 0 {
msg.Tos = uint8(route.Tos)
@@ -324,6 +454,25 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
msg.Type = uint8(route.Type)
}
+ var metrics []*nl.RtAttr
+ // TODO: support other rta_metric values
+ if route.MTU > 0 {
+ b := nl.Uint32Attr(uint32(route.MTU))
+ metrics = append(metrics, nl.NewRtAttr(unix.RTAX_MTU, b))
+ }
+ if route.AdvMSS > 0 {
+ b := nl.Uint32Attr(uint32(route.AdvMSS))
+ metrics = append(metrics, nl.NewRtAttr(unix.RTAX_ADVMSS, b))
+ }
+
+ if metrics != nil {
+ attr := nl.NewRtAttr(unix.RTA_METRICS, nil)
+ for _, metric := range metrics {
+ attr.AddChild(metric)
+ }
+ rtAttrs = append(rtAttrs, attr)
+ }
+
msg.Flags = uint32(route.Flags)
msg.Scope = uint8(route.Scope)
msg.Family = uint8(family)
@@ -338,9 +487,9 @@ func (h *Handle) routeHandle(route *Route, req *nl.NetlinkRequest, msg *nl.RtMsg
)
native.PutUint32(b, uint32(route.LinkIndex))
- req.AddData(nl.NewRtAttr(syscall.RTA_OIF, b))
+ req.AddData(nl.NewRtAttr(unix.RTA_OIF, b))
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -373,11 +522,11 @@ func RouteListFiltered(family int, filter *Route, filterMask uint64) ([]Route, e
// RouteListFiltered gets a list of routes in the system filtered with specified rules.
// All rules must be defined in RouteFilter struct
func (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64) ([]Route, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETROUTE, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(unix.RTM_GETROUTE, unix.NLM_F_DUMP)
infmsg := nl.NewIfInfomsg(family)
req.AddData(infmsg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWROUTE)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWROUTE)
if err != nil {
return nil, err
}
@@ -385,11 +534,11 @@ func (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64)
var res []Route
for _, m := range msgs {
msg := nl.DeserializeRtMsg(m)
- if msg.Flags&syscall.RTM_F_CLONED != 0 {
+ if msg.Flags&unix.RTM_F_CLONED != 0 {
// Ignore cloned routes
continue
}
- if msg.Table != syscall.RT_TABLE_MAIN {
+ if msg.Table != unix.RT_TABLE_MAIN {
if filter == nil || filter != nil && filterMask&RT_FILTER_TABLE == 0 {
// Ignore non-main tables
continue
@@ -401,7 +550,7 @@ func (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64)
}
if filter != nil {
switch {
- case filterMask&RT_FILTER_TABLE != 0 && filter.Table != syscall.RT_TABLE_UNSPEC && route.Table != filter.Table:
+ case filterMask&RT_FILTER_TABLE != 0 && filter.Table != unix.RT_TABLE_UNSPEC && route.Table != filter.Table:
continue
case filterMask&RT_FILTER_PROTOCOL != 0 && route.Protocol != filter.Protocol:
continue
@@ -421,19 +570,8 @@ func (h *Handle) RouteListFiltered(family int, filter *Route, filterMask uint64)
continue
case filterMask&RT_FILTER_DST != 0:
if filter.MPLSDst == nil || route.MPLSDst == nil || (*filter.MPLSDst) != (*route.MPLSDst) {
- if filter.Dst == nil {
- if route.Dst != nil {
- continue
- }
- } else {
- if route.Dst == nil {
- continue
- }
- aMaskLen, aMaskBits := route.Dst.Mask.Size()
- bMaskLen, bMaskBits := filter.Dst.Mask.Size()
- if !(route.Dst.IP.Equal(filter.Dst.IP) && aMaskLen == bMaskLen && aMaskBits == bMaskBits) {
- continue
- }
+ if !ipNetEqual(route.Dst, filter.Dst) {
+ continue
}
}
}
@@ -463,11 +601,11 @@ func deserializeRoute(m []byte) (Route, error) {
var encap, encapType syscall.NetlinkRouteAttr
for _, attr := range attrs {
switch attr.Attr.Type {
- case syscall.RTA_GATEWAY:
+ case unix.RTA_GATEWAY:
route.Gw = net.IP(attr.Value)
- case syscall.RTA_PREFSRC:
+ case unix.RTA_PREFSRC:
route.Src = net.IP(attr.Value)
- case syscall.RTA_DST:
+ case unix.RTA_DST:
if msg.Family == nl.FAMILY_MPLS {
stack := nl.DecodeMPLSStack(attr.Value)
if len(stack) == 0 || len(stack) > 1 {
@@ -480,36 +618,36 @@ func deserializeRoute(m []byte) (Route, error) {
Mask: net.CIDRMask(int(msg.Dst_len), 8*len(attr.Value)),
}
}
- case syscall.RTA_OIF:
+ case unix.RTA_OIF:
route.LinkIndex = int(native.Uint32(attr.Value[0:4]))
- case syscall.RTA_IIF:
+ case unix.RTA_IIF:
route.ILinkIndex = int(native.Uint32(attr.Value[0:4]))
- case syscall.RTA_PRIORITY:
+ case unix.RTA_PRIORITY:
route.Priority = int(native.Uint32(attr.Value[0:4]))
- case syscall.RTA_TABLE:
+ case unix.RTA_TABLE:
route.Table = int(native.Uint32(attr.Value[0:4]))
- case syscall.RTA_MULTIPATH:
+ case unix.RTA_MULTIPATH:
parseRtNexthop := func(value []byte) (*NexthopInfo, []byte, error) {
- if len(value) < syscall.SizeofRtNexthop {
- return nil, nil, fmt.Errorf("Lack of bytes")
+ if len(value) < unix.SizeofRtNexthop {
+ return nil, nil, fmt.Errorf("lack of bytes")
}
nh := nl.DeserializeRtNexthop(value)
if len(value) < int(nh.RtNexthop.Len) {
- return nil, nil, fmt.Errorf("Lack of bytes")
+ return nil, nil, fmt.Errorf("lack of bytes")
}
info := &NexthopInfo{
LinkIndex: int(nh.RtNexthop.Ifindex),
Hops: int(nh.RtNexthop.Hops),
Flags: int(nh.RtNexthop.Flags),
}
- attrs, err := nl.ParseRouteAttr(value[syscall.SizeofRtNexthop:int(nh.RtNexthop.Len)])
+ attrs, err := nl.ParseRouteAttr(value[unix.SizeofRtNexthop:int(nh.RtNexthop.Len)])
if err != nil {
return nil, nil, err
}
var encap, encapType syscall.NetlinkRouteAttr
for _, attr := range attrs {
switch attr.Attr.Type {
- case syscall.RTA_GATEWAY:
+ case unix.RTA_GATEWAY:
info.Gw = net.IP(attr.Value)
case nl.RTA_NEWDST:
var d Destination
@@ -566,6 +704,19 @@ func deserializeRoute(m []byte) (Route, error) {
encapType = attr
case nl.RTA_ENCAP:
encap = attr
+ case unix.RTA_METRICS:
+ metrics, err := nl.ParseRouteAttr(attr.Value)
+ if err != nil {
+ return route, err
+ }
+ for _, metric := range metrics {
+ switch metric.Attr.Type {
+ case unix.RTAX_MTU:
+ route.MTU = int(native.Uint32(metric.Value[0:4]))
+ case unix.RTAX_ADVMSS:
+ route.AdvMSS = int(native.Uint32(metric.Value[0:4]))
+ }
+ }
}
}
@@ -578,6 +729,11 @@ func deserializeRoute(m []byte) (Route, error) {
if err := e.Decode(encap.Value); err != nil {
return route, err
}
+ case nl.LWTUNNEL_ENCAP_SEG6:
+ e = &SEG6Encap{}
+ if err := e.Decode(encap.Value); err != nil {
+ return route, err
+ }
}
route.Encap = e
}
@@ -594,7 +750,7 @@ func RouteGet(destination net.IP) ([]Route, error) {
// RouteGet gets a route to a specific destination from the host system.
// Equivalent to: 'ip route get'.
func (h *Handle) RouteGet(destination net.IP) ([]Route, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETROUTE, syscall.NLM_F_REQUEST)
+ req := h.newNetlinkRequest(unix.RTM_GETROUTE, unix.NLM_F_REQUEST)
family := nl.GetIPFamily(destination)
var destinationData []byte
var bitlen uint8
@@ -610,10 +766,10 @@ func (h *Handle) RouteGet(destination net.IP) ([]Route, error) {
msg.Dst_len = bitlen
req.AddData(msg)
- rtaDst := nl.NewRtAttr(syscall.RTA_DST, destinationData)
+ rtaDst := nl.NewRtAttr(unix.RTA_DST, destinationData)
req.AddData(rtaDst)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWROUTE)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWROUTE)
if err != nil {
return nil, err
}
@@ -633,17 +789,35 @@ func (h *Handle) RouteGet(destination net.IP) ([]Route, error) {
// RouteSubscribe takes a chan down which notifications will be sent
// when routes are added or deleted. Close the 'done' chan to stop subscription.
func RouteSubscribe(ch chan<- RouteUpdate, done <-chan struct{}) error {
- return routeSubscribeAt(netns.None(), netns.None(), ch, done)
+ return routeSubscribeAt(netns.None(), netns.None(), ch, done, nil)
}
// RouteSubscribeAt works like RouteSubscribe plus it allows the caller
// to choose the network namespace in which to subscribe (ns).
func RouteSubscribeAt(ns netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}) error {
- return routeSubscribeAt(ns, netns.None(), ch, done)
+ return routeSubscribeAt(ns, netns.None(), ch, done, nil)
}
-func routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}) error {
- s, err := nl.SubscribeAt(newNs, curNs, syscall.NETLINK_ROUTE, syscall.RTNLGRP_IPV4_ROUTE, syscall.RTNLGRP_IPV6_ROUTE)
+// RouteSubscribeOptions contains a set of options to use with
+// RouteSubscribeWithOptions.
+type RouteSubscribeOptions struct {
+ Namespace *netns.NsHandle
+ ErrorCallback func(error)
+}
+
+// RouteSubscribeWithOptions work like RouteSubscribe but enable to
+// provide additional options to modify the behavior. Currently, the
+// namespace can be provided as well as an error callback.
+func RouteSubscribeWithOptions(ch chan<- RouteUpdate, done <-chan struct{}, options RouteSubscribeOptions) error {
+ if options.Namespace == nil {
+ none := netns.None()
+ options.Namespace = &none
+ }
+ return routeSubscribeAt(*options.Namespace, netns.None(), ch, done, options.ErrorCallback)
+}
+
+func routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <-chan struct{}, cberr func(error)) error {
+ s, err := nl.SubscribeAt(newNs, curNs, unix.NETLINK_ROUTE, unix.RTNLGRP_IPV4_ROUTE, unix.RTNLGRP_IPV6_ROUTE)
if err != nil {
return err
}
@@ -658,11 +832,17 @@ func routeSubscribeAt(newNs, curNs netns.NsHandle, ch chan<- RouteUpdate, done <
for {
msgs, err := s.Receive()
if err != nil {
+ if cberr != nil {
+ cberr(err)
+ }
return
}
for _, m := range msgs {
route, err := deserializeRoute(m.Data)
if err != nil {
+ if cberr != nil {
+ cberr(err)
+ }
return
}
ch <- RouteUpdate{Type: m.Header.Type, Route: route}
diff --git a/vendor/github.com/vishvananda/netlink/rule.go b/vendor/github.com/vishvananda/netlink/rule.go
index f0243defd7d0..7fc8ae5df15e 100644
--- a/vendor/github.com/vishvananda/netlink/rule.go
+++ b/vendor/github.com/vishvananda/netlink/rule.go
@@ -8,6 +8,7 @@ import (
// Rule represents a netlink rule.
type Rule struct {
Priority int
+ Family int
Table int
Mark int
Mask int
@@ -20,6 +21,7 @@ type Rule struct {
OifName string
SuppressIfgroup int
SuppressPrefixlen int
+ Invert bool
}
func (r Rule) String() string {
diff --git a/vendor/github.com/vishvananda/netlink/rule_linux.go b/vendor/github.com/vishvananda/netlink/rule_linux.go
index f9cdc855f1fc..6238ae458642 100644
--- a/vendor/github.com/vishvananda/netlink/rule_linux.go
+++ b/vendor/github.com/vishvananda/netlink/rule_linux.go
@@ -3,11 +3,13 @@ package netlink
import (
"fmt"
"net"
- "syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
+const FibRuleInvert = 0x2
+
// RuleAdd adds a rule to the system.
// Equivalent to: ip rule add
func RuleAdd(rule *Rule) error {
@@ -17,7 +19,7 @@ func RuleAdd(rule *Rule) error {
// RuleAdd adds a rule to the system.
// Equivalent to: ip rule add
func (h *Handle) RuleAdd(rule *Rule) error {
- req := h.newNetlinkRequest(syscall.RTM_NEWRULE, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_NEWRULE, unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
return ruleHandle(rule, req)
}
@@ -30,15 +32,31 @@ func RuleDel(rule *Rule) error {
// RuleDel deletes a rule from the system.
// Equivalent to: ip rule del
func (h *Handle) RuleDel(rule *Rule) error {
- req := h.newNetlinkRequest(syscall.RTM_DELRULE, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(unix.RTM_DELRULE, unix.NLM_F_ACK)
return ruleHandle(rule, req)
}
func ruleHandle(rule *Rule, req *nl.NetlinkRequest) error {
msg := nl.NewRtMsg()
- msg.Family = syscall.AF_INET
- var dstFamily uint8
+ msg.Family = unix.AF_INET
+ msg.Protocol = unix.RTPROT_BOOT
+ msg.Scope = unix.RT_SCOPE_UNIVERSE
+ msg.Table = unix.RT_TABLE_UNSPEC
+ msg.Type = unix.RTN_UNSPEC
+ if req.NlMsghdr.Flags&unix.NLM_F_CREATE > 0 {
+ msg.Type = unix.RTN_UNICAST
+ }
+ if rule.Invert {
+ msg.Flags |= FibRuleInvert
+ }
+ if rule.Family != 0 {
+ msg.Family = uint8(rule.Family)
+ }
+ if rule.Table >= 0 && rule.Table < 256 {
+ msg.Table = uint8(rule.Table)
+ }
+ var dstFamily uint8
var rtAttrs []*nl.RtAttr
if rule.Dst != nil && rule.Dst.IP != nil {
dstLen, _ := rule.Dst.Mask.Size()
@@ -46,12 +64,12 @@ func ruleHandle(rule *Rule, req *nl.NetlinkRequest) error {
msg.Family = uint8(nl.GetIPFamily(rule.Dst.IP))
dstFamily = msg.Family
var dstData []byte
- if msg.Family == syscall.AF_INET {
+ if msg.Family == unix.AF_INET {
dstData = rule.Dst.IP.To4()
} else {
dstData = rule.Dst.IP.To16()
}
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_DST, dstData))
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_DST, dstData))
}
if rule.Src != nil && rule.Src.IP != nil {
@@ -62,19 +80,12 @@ func ruleHandle(rule *Rule, req *nl.NetlinkRequest) error {
srcLen, _ := rule.Src.Mask.Size()
msg.Src_len = uint8(srcLen)
var srcData []byte
- if msg.Family == syscall.AF_INET {
+ if msg.Family == unix.AF_INET {
srcData = rule.Src.IP.To4()
} else {
srcData = rule.Src.IP.To16()
}
- rtAttrs = append(rtAttrs, nl.NewRtAttr(syscall.RTA_SRC, srcData))
- }
-
- if rule.Table >= 0 {
- msg.Table = uint8(rule.Table)
- if rule.Table >= 256 {
- msg.Table = syscall.RT_TABLE_UNSPEC
- }
+ rtAttrs = append(rtAttrs, nl.NewRtAttr(unix.RTA_SRC, srcData))
}
req.AddData(msg)
@@ -139,7 +150,7 @@ func ruleHandle(rule *Rule, req *nl.NetlinkRequest) error {
req.AddData(nl.NewRtAttr(nl.FRA_GOTO, b))
}
- _, err := req.Execute(syscall.NETLINK_ROUTE, 0)
+ _, err := req.Execute(unix.NETLINK_ROUTE, 0)
return err
}
@@ -152,11 +163,11 @@ func RuleList(family int) ([]Rule, error) {
// RuleList lists rules in the system.
// Equivalent to: ip rule list
func (h *Handle) RuleList(family int) ([]Rule, error) {
- req := h.newNetlinkRequest(syscall.RTM_GETRULE, syscall.NLM_F_DUMP|syscall.NLM_F_REQUEST)
+ req := h.newNetlinkRequest(unix.RTM_GETRULE, unix.NLM_F_DUMP|unix.NLM_F_REQUEST)
msg := nl.NewIfInfomsg(family)
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_ROUTE, syscall.RTM_NEWRULE)
+ msgs, err := req.Execute(unix.NETLINK_ROUTE, unix.RTM_NEWRULE)
if err != nil {
return nil, err
}
@@ -172,9 +183,11 @@ func (h *Handle) RuleList(family int) ([]Rule, error) {
rule := NewRule()
+ rule.Invert = msg.Flags&FibRuleInvert > 0
+
for j := range attrs {
switch attrs[j].Attr.Type {
- case syscall.RTA_TABLE:
+ case unix.RTA_TABLE:
rule.Table = int(native.Uint32(attrs[j].Value[0:4]))
case nl.FRA_SRC:
rule.Src = &net.IPNet{
diff --git a/vendor/github.com/vishvananda/netlink/socket_linux.go b/vendor/github.com/vishvananda/netlink/socket_linux.go
index b42b84f0cfe4..99e9fb4d8979 100644
--- a/vendor/github.com/vishvananda/netlink/socket_linux.go
+++ b/vendor/github.com/vishvananda/netlink/socket_linux.go
@@ -4,9 +4,9 @@ import (
"errors"
"fmt"
"net"
- "syscall"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
const (
@@ -123,15 +123,15 @@ func SocketGet(local, remote net.Addr) (*Socket, error) {
return nil, ErrNotImplemented
}
- s, err := nl.Subscribe(syscall.NETLINK_INET_DIAG)
+ s, err := nl.Subscribe(unix.NETLINK_INET_DIAG)
if err != nil {
return nil, err
}
defer s.Close()
req := nl.NewNetlinkRequest(nl.SOCK_DIAG_BY_FAMILY, 0)
req.AddData(&socketRequest{
- Family: syscall.AF_INET,
- Protocol: syscall.IPPROTO_TCP,
+ Family: unix.AF_INET,
+ Protocol: unix.IPPROTO_TCP,
ID: SocketID{
SourcePort: uint16(localTCP.Port),
DestinationPort: uint16(remoteTCP.Port),
diff --git a/vendor/github.com/vishvananda/netlink/xfrm.go b/vendor/github.com/vishvananda/netlink/xfrm.go
index 9962dcf7006d..02b41842e102 100644
--- a/vendor/github.com/vishvananda/netlink/xfrm.go
+++ b/vendor/github.com/vishvananda/netlink/xfrm.go
@@ -2,19 +2,20 @@ package netlink
import (
"fmt"
- "syscall"
+
+ "golang.org/x/sys/unix"
)
// Proto is an enum representing an ipsec protocol.
type Proto uint8
const (
- XFRM_PROTO_ROUTE2 Proto = syscall.IPPROTO_ROUTING
- XFRM_PROTO_ESP Proto = syscall.IPPROTO_ESP
- XFRM_PROTO_AH Proto = syscall.IPPROTO_AH
- XFRM_PROTO_HAO Proto = syscall.IPPROTO_DSTOPTS
+ XFRM_PROTO_ROUTE2 Proto = unix.IPPROTO_ROUTING
+ XFRM_PROTO_ESP Proto = unix.IPPROTO_ESP
+ XFRM_PROTO_AH Proto = unix.IPPROTO_AH
+ XFRM_PROTO_HAO Proto = unix.IPPROTO_DSTOPTS
XFRM_PROTO_COMP Proto = 0x6c // NOTE not defined on darwin
- XFRM_PROTO_IPSEC_ANY Proto = syscall.IPPROTO_RAW
+ XFRM_PROTO_IPSEC_ANY Proto = unix.IPPROTO_RAW
)
func (p Proto) String() string {
diff --git a/vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go b/vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go
index 7b98c9cb6d3b..efe72ddf29ce 100644
--- a/vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go
+++ b/vendor/github.com/vishvananda/netlink/xfrm_monitor_linux.go
@@ -2,11 +2,10 @@ package netlink
import (
"fmt"
- "syscall"
-
- "github.com/vishvananda/netns"
"github.com/vishvananda/netlink/nl"
+ "github.com/vishvananda/netns"
+ "golang.org/x/sys/unix"
)
type XfrmMsg interface {
@@ -39,7 +38,7 @@ func XfrmMonitor(ch chan<- XfrmMsg, done <-chan struct{}, errorChan chan<- error
if err != nil {
return nil
}
- s, err := nl.SubscribeAt(netns.None(), netns.None(), syscall.NETLINK_XFRM, groups...)
+ s, err := nl.SubscribeAt(netns.None(), netns.None(), unix.NETLINK_XFRM, groups...)
if err != nil {
return err
}
diff --git a/vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go b/vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go
index c3d4e4222724..fde0c2ca5ad0 100644
--- a/vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go
+++ b/vendor/github.com/vishvananda/netlink/xfrm_policy_linux.go
@@ -1,9 +1,8 @@
package netlink
import (
- "syscall"
-
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
func selFromPolicy(sel *nl.XfrmSelector, policy *XfrmPolicy) {
@@ -55,7 +54,7 @@ func (h *Handle) XfrmPolicyUpdate(policy *XfrmPolicy) error {
}
func (h *Handle) xfrmPolicyAddOrUpdate(policy *XfrmPolicy, nlProto int) error {
- req := h.newNetlinkRequest(nlProto, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(nlProto, unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
msg := &nl.XfrmUserpolicyInfo{}
selFromPolicy(&msg.Sel, policy)
@@ -91,7 +90,7 @@ func (h *Handle) xfrmPolicyAddOrUpdate(policy *XfrmPolicy, nlProto int) error {
req.AddData(out)
}
- _, err := req.Execute(syscall.NETLINK_XFRM, 0)
+ _, err := req.Execute(unix.NETLINK_XFRM, 0)
return err
}
@@ -121,12 +120,12 @@ func XfrmPolicyList(family int) ([]XfrmPolicy, error) {
// Equivalent to: `ip xfrm policy show`.
// The list can be filtered by ip family.
func (h *Handle) XfrmPolicyList(family int) ([]XfrmPolicy, error) {
- req := h.newNetlinkRequest(nl.XFRM_MSG_GETPOLICY, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(nl.XFRM_MSG_GETPOLICY, unix.NLM_F_DUMP)
msg := nl.NewIfInfomsg(family)
req.AddData(msg)
- msgs, err := req.Execute(syscall.NETLINK_XFRM, nl.XFRM_MSG_NEWPOLICY)
+ msgs, err := req.Execute(unix.NETLINK_XFRM, nl.XFRM_MSG_NEWPOLICY)
if err != nil {
return nil, err
}
@@ -165,13 +164,13 @@ func XfrmPolicyFlush() error {
// XfrmPolicyFlush will flush the policies on the system.
// Equivalent to: `ip xfrm policy flush`
func (h *Handle) XfrmPolicyFlush() error {
- req := h.newNetlinkRequest(nl.XFRM_MSG_FLUSHPOLICY, syscall.NLM_F_ACK)
- _, err := req.Execute(syscall.NETLINK_XFRM, 0)
+ req := h.newNetlinkRequest(nl.XFRM_MSG_FLUSHPOLICY, unix.NLM_F_ACK)
+ _, err := req.Execute(unix.NETLINK_XFRM, 0)
return err
}
func (h *Handle) xfrmPolicyGetOrDelete(policy *XfrmPolicy, nlProto int) (*XfrmPolicy, error) {
- req := h.newNetlinkRequest(nlProto, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(nlProto, unix.NLM_F_ACK)
msg := &nl.XfrmUserpolicyId{}
selFromPolicy(&msg.Sel, policy)
@@ -189,7 +188,7 @@ func (h *Handle) xfrmPolicyGetOrDelete(policy *XfrmPolicy, nlProto int) (*XfrmPo
resType = 0
}
- msgs, err := req.Execute(syscall.NETLINK_XFRM, uint16(resType))
+ msgs, err := req.Execute(unix.NETLINK_XFRM, uint16(resType))
if err != nil {
return nil, err
}
diff --git a/vendor/github.com/vishvananda/netlink/xfrm_state.go b/vendor/github.com/vishvananda/netlink/xfrm_state.go
index 368a9b986d61..d14740dc55b3 100644
--- a/vendor/github.com/vishvananda/netlink/xfrm_state.go
+++ b/vendor/github.com/vishvananda/netlink/xfrm_state.go
@@ -3,6 +3,7 @@ package netlink
import (
"fmt"
"net"
+ "time"
)
// XfrmStateAlgo represents the algorithm to use for the ipsec encryption.
@@ -67,6 +68,19 @@ type XfrmStateLimits struct {
TimeUseHard uint64
}
+// XfrmStateStats represents the current number of bytes/packets
+// processed by this State, the State's installation and first use
+// time and the replay window counters.
+type XfrmStateStats struct {
+ ReplayWindow uint32
+ Replay uint32
+ Failed uint32
+ Bytes uint64
+ Packets uint64
+ AddTime uint64
+ UseTime uint64
+}
+
// XfrmState represents the state of an ipsec policy. It optionally
// contains an XfrmStateAlgo for encryption and one for authentication.
type XfrmState struct {
@@ -78,6 +92,7 @@ type XfrmState struct {
Reqid int
ReplayWindow int
Limits XfrmStateLimits
+ Statistics XfrmStateStats
Mark *XfrmMark
Auth *XfrmStateAlgo
Crypt *XfrmStateAlgo
@@ -94,10 +109,16 @@ func (sa XfrmState) Print(stats bool) string {
if !stats {
return sa.String()
}
-
- return fmt.Sprintf("%s, ByteSoft: %s, ByteHard: %s, PacketSoft: %s, PacketHard: %s, TimeSoft: %d, TimeHard: %d, TimeUseSoft: %d, TimeUseHard: %d",
+ at := time.Unix(int64(sa.Statistics.AddTime), 0).Format(time.UnixDate)
+ ut := "-"
+ if sa.Statistics.UseTime > 0 {
+ ut = time.Unix(int64(sa.Statistics.UseTime), 0).Format(time.UnixDate)
+ }
+ return fmt.Sprintf("%s, ByteSoft: %s, ByteHard: %s, PacketSoft: %s, PacketHard: %s, TimeSoft: %d, TimeHard: %d, TimeUseSoft: %d, TimeUseHard: %d, Bytes: %d, Packets: %d, "+
+ "AddTime: %s, UseTime: %s, ReplayWindow: %d, Replay: %d, Failed: %d",
sa.String(), printLimit(sa.Limits.ByteSoft), printLimit(sa.Limits.ByteHard), printLimit(sa.Limits.PacketSoft), printLimit(sa.Limits.PacketHard),
- sa.Limits.TimeSoft, sa.Limits.TimeHard, sa.Limits.TimeUseSoft, sa.Limits.TimeUseHard)
+ sa.Limits.TimeSoft, sa.Limits.TimeHard, sa.Limits.TimeUseSoft, sa.Limits.TimeUseHard, sa.Statistics.Bytes, sa.Statistics.Packets, at, ut,
+ sa.Statistics.ReplayWindow, sa.Statistics.Replay, sa.Statistics.Failed)
}
func printLimit(lmt uint64) string {
diff --git a/vendor/github.com/vishvananda/netlink/xfrm_state_linux.go b/vendor/github.com/vishvananda/netlink/xfrm_state_linux.go
index 6a7bc0deca24..7fc92900c058 100644
--- a/vendor/github.com/vishvananda/netlink/xfrm_state_linux.go
+++ b/vendor/github.com/vishvananda/netlink/xfrm_state_linux.go
@@ -2,10 +2,10 @@ package netlink
import (
"fmt"
- "syscall"
"unsafe"
"github.com/vishvananda/netlink/nl"
+ "golang.org/x/sys/unix"
)
func writeStateAlgo(a *XfrmStateAlgo) []byte {
@@ -111,7 +111,7 @@ func (h *Handle) xfrmStateAddOrUpdate(state *XfrmState, nlProto int) error {
if state.Spi == 0 {
return fmt.Errorf("Spi must be set when adding xfrm state.")
}
- req := h.newNetlinkRequest(nlProto, syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(nlProto, unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
msg := xfrmUsersaInfoFromXfrmState(state)
@@ -157,13 +157,13 @@ func (h *Handle) xfrmStateAddOrUpdate(state *XfrmState, nlProto int) error {
req.AddData(out)
}
- _, err := req.Execute(syscall.NETLINK_XFRM, 0)
+ _, err := req.Execute(unix.NETLINK_XFRM, 0)
return err
}
func (h *Handle) xfrmStateAllocSpi(state *XfrmState) (*XfrmState, error) {
req := h.newNetlinkRequest(nl.XFRM_MSG_ALLOCSPI,
- syscall.NLM_F_CREATE|syscall.NLM_F_EXCL|syscall.NLM_F_ACK)
+ unix.NLM_F_CREATE|unix.NLM_F_EXCL|unix.NLM_F_ACK)
msg := &nl.XfrmUserSpiInfo{}
msg.XfrmUsersaInfo = *(xfrmUsersaInfoFromXfrmState(state))
@@ -177,7 +177,7 @@ func (h *Handle) xfrmStateAllocSpi(state *XfrmState) (*XfrmState, error) {
req.AddData(out)
}
- msgs, err := req.Execute(syscall.NETLINK_XFRM, 0)
+ msgs, err := req.Execute(unix.NETLINK_XFRM, 0)
if err != nil {
return nil, err
}
@@ -216,9 +216,9 @@ func XfrmStateList(family int) ([]XfrmState, error) {
// Equivalent to: `ip xfrm state show`.
// The list can be filtered by ip family.
func (h *Handle) XfrmStateList(family int) ([]XfrmState, error) {
- req := h.newNetlinkRequest(nl.XFRM_MSG_GETSA, syscall.NLM_F_DUMP)
+ req := h.newNetlinkRequest(nl.XFRM_MSG_GETSA, unix.NLM_F_DUMP)
- msgs, err := req.Execute(syscall.NETLINK_XFRM, nl.XFRM_MSG_NEWSA)
+ msgs, err := req.Execute(unix.NETLINK_XFRM, nl.XFRM_MSG_NEWSA)
if err != nil {
return nil, err
}
@@ -255,7 +255,7 @@ func (h *Handle) XfrmStateGet(state *XfrmState) (*XfrmState, error) {
}
func (h *Handle) xfrmStateGetOrDelete(state *XfrmState, nlProto int) (*XfrmState, error) {
- req := h.newNetlinkRequest(nlProto, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(nlProto, unix.NLM_F_ACK)
msg := &nl.XfrmUsersaId{}
msg.Family = uint16(nl.GetIPFamily(state.Dst))
@@ -278,7 +278,7 @@ func (h *Handle) xfrmStateGetOrDelete(state *XfrmState, nlProto int) (*XfrmState
resType = 0
}
- msgs, err := req.Execute(syscall.NETLINK_XFRM, uint16(resType))
+ msgs, err := req.Execute(unix.NETLINK_XFRM, uint16(resType))
if err != nil {
return nil, err
}
@@ -308,6 +308,7 @@ func xfrmStateFromXfrmUsersaInfo(msg *nl.XfrmUsersaInfo) *XfrmState {
state.Reqid = int(msg.Reqid)
state.ReplayWindow = int(msg.ReplayWindow)
lftToLimits(&msg.Lft, &state.Limits)
+ curToStats(&msg.Curlft, &msg.Stats, &state.Statistics)
return &state
}
@@ -386,11 +387,11 @@ func XfrmStateFlush(proto Proto) error {
// proto = 0 means any transformation protocols
// Equivalent to: `ip xfrm state flush [ proto XFRM-PROTO ]`
func (h *Handle) XfrmStateFlush(proto Proto) error {
- req := h.newNetlinkRequest(nl.XFRM_MSG_FLUSHSA, syscall.NLM_F_ACK)
+ req := h.newNetlinkRequest(nl.XFRM_MSG_FLUSHSA, unix.NLM_F_ACK)
req.AddData(&nl.XfrmUsersaFlush{Proto: uint8(proto)})
- _, err := req.Execute(syscall.NETLINK_XFRM, 0)
+ _, err := req.Execute(unix.NETLINK_XFRM, 0)
if err != nil {
return err
}
@@ -429,6 +430,16 @@ func lftToLimits(lft *nl.XfrmLifetimeCfg, lmts *XfrmStateLimits) {
*lmts = *(*XfrmStateLimits)(unsafe.Pointer(lft))
}
+func curToStats(cur *nl.XfrmLifetimeCur, wstats *nl.XfrmStats, stats *XfrmStateStats) {
+ stats.Bytes = cur.Bytes
+ stats.Packets = cur.Packets
+ stats.AddTime = cur.AddTime
+ stats.UseTime = cur.UseTime
+ stats.ReplayWindow = wstats.ReplayWindow
+ stats.Replay = wstats.Replay
+ stats.Failed = wstats.IntegrityFailed
+}
+
func xfrmUsersaInfoFromXfrmState(state *XfrmState) *nl.XfrmUsersaInfo {
msg := &nl.XfrmUsersaInfo{}
msg.Family = uint16(nl.GetIPFamily(state.Dst))
diff --git a/vendor/github.com/vishvananda/netns/netns_linux.go b/vendor/github.com/vishvananda/netns/netns_linux.go
index a267c7105954..34af6e28b309 100644
--- a/vendor/github.com/vishvananda/netns/netns_linux.go
+++ b/vendor/github.com/vishvananda/netns/netns_linux.go
@@ -188,6 +188,8 @@ func getPidForContainer(id string) (int, error) {
filepath.Join(cgroupRoot, "system.slice", "docker-"+id+".scope", "tasks"),
// Even more recent docker versions under cgroup/systemd/docker//
filepath.Join(cgroupRoot, "..", "systemd", "docker", id, "tasks"),
+ // Kubernetes with docker and CNI is even more different
+ filepath.Join(cgroupRoot, "..", "systemd", "kubepods", "*", "pod*", id, "tasks"),
}
var filename string
diff --git a/vendor/github.com/vmware/govmomi/.drone.sec b/vendor/github.com/vmware/govmomi/.drone.sec
deleted file mode 100644
index ad52e59ac874..000000000000
--- a/vendor/github.com/vmware/govmomi/.drone.sec
+++ /dev/null
@@ -1 +0,0 @@
-eyJhbGciOiJSU0EtT0FFUCIsImVuYyI6IkExMjhHQ00ifQ.kK6pryC8R-O1R0Gj9ydLvQuIZlcYLGze23WdW7xbpiEEKdz6nweJrMm7ysy8lgu1tM47JVo19p2_b26bNKSQshCUOETvd7Hb2UMZOjnyUnqdyAAyoi6UkIquXfUUbHTNS0iMxwSxxW9KMp2GXNq8-o6T8xQZTDirBJFKKd8ZNUasTaoa5j8U9IfdR1aCavTBuOhvk8IVs-jSbY5TVJMJiE0IOPXois7aRJ6uAiANQBk9VKLegEcZD_qAewecXHDsHi-u0jbmg3o3PPaJaK_Qv5dsPlR2M-E2kE3AGUn0-zn5zYRngoAZ8WZr2O4GvLdltJKq9i2z7jOrdOzzRcDRow.96qvwl_E1Hj15u7Q.hWs-jQ8FsqQFD7pE9N-UEP1BWQ9rsJIcCaPvQRIp8Fukm_vvlw9YEaEq0ERLrsUWsJWpd1ca8_h8x7xD6f_d5YppwRqRHIeGIsdBOTMhNs0lG8ikkQXLat-UroCpy8EC17nuUtDE2E2Kdxrk4Cdd6Bk-dKk0Ta4w3Ud0YBKa.P8zrO7xizgv0i98eVWWzEg
\ No newline at end of file
diff --git a/vendor/github.com/vmware/govmomi/.drone.yml b/vendor/github.com/vmware/govmomi/.drone.yml
deleted file mode 100644
index dee4bf5b389d..000000000000
--- a/vendor/github.com/vmware/govmomi/.drone.yml
+++ /dev/null
@@ -1,17 +0,0 @@
-clone:
- tags: true
- path: github.com/vmware/govmomi
-build:
- image: golang:1.7
- pull: true
- environment:
- - GOVC_TEST_URL=$$GOVC_TEST_URL
- - GOVC_INSECURE=1
- - VCA=1
- commands:
- - make all install
- - git clone https://github.com/sstephenson/bats.git /tmp/bats
- - /tmp/bats/install.sh /usr/local
- - apt-get -qq update && apt-get install -yqq uuid-runtime bsdmainutils jq
- - govc/test/images/update.sh
- - bats govc/test
diff --git a/vendor/github.com/vmware/govmomi/.mailmap b/vendor/github.com/vmware/govmomi/.mailmap
index 31a0bd55aadd..c0e235c57838 100644
--- a/vendor/github.com/vmware/govmomi/.mailmap
+++ b/vendor/github.com/vmware/govmomi/.mailmap
@@ -13,4 +13,7 @@ Pieter Noordhuis
Takaaki Furukawa takaaki.furukawa
Takaaki Furukawa tkak
Vadim Egorov
+Anfernee Yongkun Gui
+Anfernee Yongkun Gui Yongkun Anfernee Gui
+Zach Tucker
Zee Yang
diff --git a/vendor/github.com/vmware/govmomi/.travis.yml b/vendor/github.com/vmware/govmomi/.travis.yml
index a7fba0350b8e..773ef660927a 100644
--- a/vendor/github.com/vmware/govmomi/.travis.yml
+++ b/vendor/github.com/vmware/govmomi/.travis.yml
@@ -3,10 +3,11 @@ sudo: false
language: go
go:
- - 1.7
+ - 1.8
before_install:
- make vendor
script:
- make check test
+ - GOOS=windows make install
diff --git a/vendor/github.com/vmware/govmomi/CHANGELOG.md b/vendor/github.com/vmware/govmomi/CHANGELOG.md
index ea4dd68db020..42c7cc113bb5 100644
--- a/vendor/github.com/vmware/govmomi/CHANGELOG.md
+++ b/vendor/github.com/vmware/govmomi/CHANGELOG.md
@@ -1,5 +1,36 @@
# changelog
+### 0.16.0 (2017-11-08)
+
+* Add support for SOAP request operation ID header
+
+* Moved ovf helpers from govc import.ovf command to ovf and nfc packages
+
+* Added guest/toolbox (client) package
+
+* Added toolbox package and toolbox command
+
+* Added simulator package and vcsim command
+
+### 0.15.0 (2017-06-19)
+
+* WaitOptions.MaxWaitSeconds is now optional
+
+* Support removal of ExtraConfig entries
+
+* GuestPosixFileAttributes OwnerId and GroupId fields are now pointers,
+ rather than omitempty ints to allow chown with root uid:gid
+
+* Updated examples/ using view package
+
+* Add DatastoreFile.TailFunc method
+
+* Export VirtualMachine.FindSnapshot method
+
+* Add AuthorizationManager {Enable,Disable}Methods
+
+* Add PBM client
+
### 0.14.0 (2017-04-08)
* Add view.ContainerView type and methods
diff --git a/vendor/github.com/vmware/govmomi/CONTRIBUTING.md b/vendor/github.com/vmware/govmomi/CONTRIBUTING.md
index f87c60610297..f6645cbf4f10 100644
--- a/vendor/github.com/vmware/govmomi/CONTRIBUTING.md
+++ b/vendor/github.com/vmware/govmomi/CONTRIBUTING.md
@@ -17,6 +17,16 @@ git remote add $USER git@github.com:$USER/govmomi.git
git fetch $USER
```
+## Installing from source
+
+Compile the govmomi libraries and install govc using:
+
+``` shell
+go install -v github.com/vmware/govmomi/govc
+```
+
+Note that **govc/build.sh** is only used for building release binaries.
+
## Contribution flow
This is a rough outline of what a contributor's workflow looks like:
diff --git a/vendor/github.com/vmware/govmomi/CONTRIBUTORS b/vendor/github.com/vmware/govmomi/CONTRIBUTORS
index 6afdb9f56f01..c37dc9398498 100644
--- a/vendor/github.com/vmware/govmomi/CONTRIBUTORS
+++ b/vendor/github.com/vmware/govmomi/CONTRIBUTORS
@@ -3,12 +3,20 @@
# This script is generated by contributors.sh
#
+Abhijeet Kasurde
abrarshivani
+Adam Shannon
Alvaro Miranda
+amandahla
Amit Bathla
+amit bezalel
Andrew Chin
+Anfernee Yongkun Gui
+aniketGslab
Arran Walker
+Aryeh Weinreb
Austin Parker
+Balu Dontu
bastienbc
Bob Killen
Brad Fitzpatrick
@@ -35,8 +43,10 @@ gthombare
Hasan Mahmood
Henrik Hodne
Isaac Rodman
+Ivan Porto Carrero
Jason Kincl
Jeremy Canady
+João Pereira
Louie Jiang
Marc Carmier
Mevan Samaratunga
@@ -47,7 +57,9 @@ S.Çağlar Onur
Sergey Ignatov
Steve Purcell
Takaaki Furukawa
+tanishi
Ted Zlatanov
+Thibaut Ackermann
Vadim Egorov
Yang Yang
Yuya Kusakabe
diff --git a/vendor/github.com/vmware/govmomi/Makefile b/vendor/github.com/vmware/govmomi/Makefile
index cbaa36249948..e0e03ecd3f5f 100644
--- a/vendor/github.com/vmware/govmomi/Makefile
+++ b/vendor/github.com/vmware/govmomi/Makefile
@@ -11,13 +11,19 @@ goimports:
govet:
@echo checking go vet...
- @go tool vet -structtags=false -methods=false .
-
-test:
- go test -v $(TEST_OPTS) ./...
+ @go tool vet -structtags=false -methods=false $$(find . -mindepth 1 -maxdepth 1 -type d -not -name vendor)
install:
- go install github.com/vmware/govmomi/govc
+ go install -v github.com/vmware/govmomi/govc
+ go install -v github.com/vmware/govmomi/vcsim
+
+go-test:
+ go test -race -v $(TEST_OPTS) ./...
+
+govc-test: install
+ (cd govc/test && ./vendor/github.com/sstephenson/bats/libexec/bats -t .)
+
+test: go-test govc-test
doc: install
./govc/usage.sh > ./govc/USAGE.md
diff --git a/vendor/github.com/vmware/govmomi/README.md b/vendor/github.com/vmware/govmomi/README.md
index 7ebdf1b17c89..02901ea4fba2 100644
--- a/vendor/github.com/vmware/govmomi/README.md
+++ b/vendor/github.com/vmware/govmomi/README.md
@@ -5,14 +5,19 @@
A Go library for interacting with VMware vSphere APIs (ESXi and/or vCenter).
-For `govc`, a CLI built on top of govmomi, check out the [govc](./govc) directory and [USAGE](./govc/USAGE.md) document.
+In addition to the vSphere API client, this repository includes:
+
+* [govc](./govc) - vSphere CLI
+
+* [vcsim](./vcsim) - vSphere API mock framework
+
+* [toolbox](./toolbox) - VM guest tools framework
## Compatibility
-This library is built for and tested against ESXi and vCenter 5.5, 6.0 and 6.5.
+This library is built for and tested against ESXi and vCenter 6.0 and 6.5.
-If you're able to use it against older versions of ESXi and/or vCenter, please
-leave a note and we'll include it in this compatibility list.
+It should work with versions 5.5 and 5.1, but neither are officially supported.
## Documentation
@@ -23,19 +28,14 @@ The code in the `govmomi` package is a wrapper for the code that is generated fr
It primarily provides convenience functions for working with the vSphere API.
See [godoc.org][godoc] for documentation.
-[apiref]:http://pubs.vmware.com/vsphere-60/index.jsp#com.vmware.wssdk.apiref.doc/right-pane.html
+[apiref]:http://pubs.vmware.com/vsphere-6-5/index.jsp#com.vmware.wssdk.apiref.doc/right-pane.html
[godoc]:http://godoc.org/github.com/vmware/govmomi
-[drone]:https://drone.io
-[dronesrc]:https://github.com/drone/drone
-[dronecli]:http://readme.drone.io/devs/cli/
-#### Building with CI
-Merges to this repository will trigger builds in both Travis and [Drone][drone].
+## Installation
-To build locally with Drone:
-- Ensure that you have Docker 1.6 or higher installed.
-- Install the [Drone command line tools][dronecli].
-- Run `drone exec` from within the root directory of the govmomi repository.
+```sh
+go get -u github.com/vmware/govmomi
+```
## Discussion
@@ -53,9 +53,17 @@ Refer to the [CHANGELOG](CHANGELOG.md) for version to version changes.
* [Docker Machine](https://github.com/docker/machine/tree/master/drivers/vmwarevsphere)
+* [Docker InfraKit](https://github.com/docker/infrakit/tree/master/pkg/provider/vsphere)
+
+* [Docker LinuxKit](https://github.com/linuxkit/linuxkit/tree/master/src/cmd/linuxkit)
+
* [Kubernetes](https://github.com/kubernetes/kubernetes/tree/master/pkg/cloudprovider/providers/vsphere)
-* [Terraform](https://github.com/hashicorp/terraform/tree/master/builtin/providers/vsphere)
+* [Kubernetes kops](https://github.com/kubernetes/kops/tree/master/upup/pkg/fi/cloudup/vsphere)
+
+* [Terraform](https://github.com/terraform-providers/terraform-provider-vsphere)
+
+* [Packer](https://github.com/jetbrains-infra/packer-builder-vsphere)
* [VMware VIC Engine](https://github.com/vmware/vic)
diff --git a/vendor/github.com/vmware/govmomi/find/finder.go b/vendor/github.com/vmware/govmomi/find/finder.go
index 04d0e891a9b1..2e9727e48447 100644
--- a/vendor/github.com/vmware/govmomi/find/finder.go
+++ b/vendor/github.com/vmware/govmomi/find/finder.go
@@ -625,6 +625,15 @@ func (f *Finder) ClusterComputeResourceList(ctx context.Context, path string) ([
return ccrs, nil
}
+func (f *Finder) DefaultClusterComputeResource(ctx context.Context) (*object.ClusterComputeResource, error) {
+ cr, err := f.ClusterComputeResource(ctx, "*")
+ if err != nil {
+ return nil, toDefaultError(err)
+ }
+
+ return cr, nil
+}
+
func (f *Finder) ClusterComputeResource(ctx context.Context, path string) (*object.ClusterComputeResource, error) {
ccrs, err := f.ClusterComputeResourceList(ctx, path)
if err != nil {
@@ -638,6 +647,18 @@ func (f *Finder) ClusterComputeResource(ctx context.Context, path string) (*obje
return ccrs[0], nil
}
+func (f *Finder) ClusterComputeResourceOrDefault(ctx context.Context, path string) (*object.ClusterComputeResource, error) {
+ if path != "" {
+ cr, err := f.ClusterComputeResource(ctx, path)
+ if err != nil {
+ return nil, err
+ }
+ return cr, nil
+ }
+
+ return f.DefaultClusterComputeResource(ctx)
+}
+
func (f *Finder) HostSystemList(ctx context.Context, path string) ([]*object.HostSystem, error) {
s := &spec{
Relative: f.hostFolder,
diff --git a/vendor/github.com/vmware/govmomi/find/recurser.go b/vendor/github.com/vmware/govmomi/find/recurser.go
index b62e93a6f827..80d958a264f4 100644
--- a/vendor/github.com/vmware/govmomi/find/recurser.go
+++ b/vendor/github.com/vmware/govmomi/find/recurser.go
@@ -20,6 +20,7 @@ import (
"context"
"os"
"path"
+ "strings"
"github.com/vmware/govmomi/list"
"github.com/vmware/govmomi/object"
@@ -177,6 +178,7 @@ func (r recurser) List(ctx context.Context, s *spec, root list.Element, parts []
return in, nil
}
+ all := parts
pattern := parts[0]
parts = parts[1:]
@@ -188,6 +190,12 @@ func (r recurser) List(ctx context.Context, s *spec, root list.Element, parts []
}
if !matched {
+ matched = strings.HasSuffix(e.Path, "/"+path.Join(all...))
+ if matched {
+ // name contains a '/'
+ out = append(out, e)
+ }
+
continue
}
diff --git a/vendor/github.com/vmware/govmomi/nfc/lease.go b/vendor/github.com/vmware/govmomi/nfc/lease.go
new file mode 100644
index 000000000000..3fb85ee6f6e1
--- /dev/null
+++ b/vendor/github.com/vmware/govmomi/nfc/lease.go
@@ -0,0 +1,238 @@
+/*
+Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved.
+
+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 nfc
+
+import (
+ "context"
+ "errors"
+ "fmt"
+ "io"
+ "path"
+
+ "github.com/vmware/govmomi/property"
+ "github.com/vmware/govmomi/vim25"
+ "github.com/vmware/govmomi/vim25/methods"
+ "github.com/vmware/govmomi/vim25/mo"
+ "github.com/vmware/govmomi/vim25/progress"
+ "github.com/vmware/govmomi/vim25/soap"
+ "github.com/vmware/govmomi/vim25/types"
+)
+
+type Lease struct {
+ types.ManagedObjectReference
+
+ c *vim25.Client
+}
+
+func NewLease(c *vim25.Client, ref types.ManagedObjectReference) *Lease {
+ return &Lease{ref, c}
+}
+
+// Abort wraps methods.Abort
+func (l *Lease) Abort(ctx context.Context, fault *types.LocalizedMethodFault) error {
+ req := types.HttpNfcLeaseAbort{
+ This: l.Reference(),
+ Fault: fault,
+ }
+
+ _, err := methods.HttpNfcLeaseAbort(ctx, l.c, &req)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// Complete wraps methods.Complete
+func (l *Lease) Complete(ctx context.Context) error {
+ req := types.HttpNfcLeaseComplete{
+ This: l.Reference(),
+ }
+
+ _, err := methods.HttpNfcLeaseComplete(ctx, l.c, &req)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// GetManifest wraps methods.GetManifest
+func (l *Lease) GetManifest(ctx context.Context) error {
+ req := types.HttpNfcLeaseGetManifest{
+ This: l.Reference(),
+ }
+
+ _, err := methods.HttpNfcLeaseGetManifest(ctx, l.c, &req)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+// Progress wraps methods.Progress
+func (l *Lease) Progress(ctx context.Context, percent int32) error {
+ req := types.HttpNfcLeaseProgress{
+ This: l.Reference(),
+ Percent: percent,
+ }
+
+ _, err := methods.HttpNfcLeaseProgress(ctx, l.c, &req)
+ if err != nil {
+ return err
+ }
+
+ return nil
+}
+
+type LeaseInfo struct {
+ types.HttpNfcLeaseInfo
+
+ Items []FileItem
+}
+
+func (l *Lease) newLeaseInfo(li *types.HttpNfcLeaseInfo, items []types.OvfFileItem) (*LeaseInfo, error) {
+ info := &LeaseInfo{
+ HttpNfcLeaseInfo: *li,
+ }
+
+ for _, device := range li.DeviceUrl {
+ u, err := l.c.ParseURL(device.Url)
+ if err != nil {
+ return nil, err
+ }
+
+ if device.SslThumbprint != "" {
+ // TODO: prefer host management IP
+ l.c.SetThumbprint(u.Host, device.SslThumbprint)
+ }
+
+ if len(items) == 0 {
+ // this is an export
+ item := types.OvfFileItem{
+ DeviceId: device.Key,
+ Path: device.TargetId,
+ Size: device.FileSize,
+ }
+
+ if item.Size == 0 {
+ item.Size = li.TotalDiskCapacityInKB * 1024
+ }
+
+ if item.Path == "" {
+ item.Path = path.Base(device.Url)
+ }
+
+ info.Items = append(info.Items, NewFileItem(u, item))
+
+ continue
+ }
+
+ // this is an import
+ for _, item := range items {
+ if device.ImportKey == item.DeviceId {
+ info.Items = append(info.Items, NewFileItem(u, item))
+ break
+ }
+ }
+ }
+
+ return info, nil
+}
+
+func (l *Lease) Wait(ctx context.Context, items []types.OvfFileItem) (*LeaseInfo, error) {
+ var lease mo.HttpNfcLease
+
+ pc := property.DefaultCollector(l.c)
+ err := property.Wait(ctx, pc, l.Reference(), []string{"state", "info", "error"}, func(pc []types.PropertyChange) bool {
+ done := false
+
+ for _, c := range pc {
+ if c.Val == nil {
+ continue
+ }
+
+ switch c.Name {
+ case "error":
+ val := c.Val.(types.LocalizedMethodFault)
+ lease.Error = &val
+ done = true
+ case "info":
+ val := c.Val.(types.HttpNfcLeaseInfo)
+ lease.Info = &val
+ case "state":
+ lease.State = c.Val.(types.HttpNfcLeaseState)
+ if lease.State != types.HttpNfcLeaseStateInitializing {
+ done = true
+ }
+ }
+ }
+
+ return done
+ })
+
+ if err != nil {
+ return nil, err
+ }
+
+ if lease.State == types.HttpNfcLeaseStateReady {
+ return l.newLeaseInfo(lease.Info, items)
+ }
+
+ if lease.Error != nil {
+ return nil, errors.New(lease.Error.LocalizedMessage)
+ }
+
+ return nil, fmt.Errorf("unexpected nfc lease state: %s", lease.State)
+}
+
+func (l *Lease) StartUpdater(ctx context.Context, info *LeaseInfo) *LeaseUpdater {
+ return newLeaseUpdater(ctx, l, info)
+}
+
+func (l *Lease) Upload(ctx context.Context, item FileItem, f io.Reader, opts soap.Upload) error {
+ if opts.Progress == nil {
+ opts.Progress = item
+ } else {
+ opts.Progress = progress.Tee(item, opts.Progress)
+ }
+
+ // Non-disk files (such as .iso) use the PUT method.
+ // Overwrite: t header is also required in this case (ovftool does the same)
+ if item.Create {
+ opts.Method = "PUT"
+ opts.Headers = map[string]string{
+ "Overwrite": "t",
+ }
+ } else {
+ opts.Method = "POST"
+ opts.Type = "application/x-vnd.vmware-streamVmdk"
+ }
+
+ return l.c.Upload(ctx, f, item.URL, &opts)
+}
+
+func (l *Lease) DownloadFile(ctx context.Context, file string, item FileItem, opts soap.Download) error {
+ if opts.Progress == nil {
+ opts.Progress = item
+ } else {
+ opts.Progress = progress.Tee(item, opts.Progress)
+ }
+
+ return l.c.DownloadFile(ctx, file, item.URL, &opts)
+}
diff --git a/vendor/github.com/vmware/govmomi/nfc/lease_updater.go b/vendor/github.com/vmware/govmomi/nfc/lease_updater.go
new file mode 100644
index 000000000000..d3face81a4c4
--- /dev/null
+++ b/vendor/github.com/vmware/govmomi/nfc/lease_updater.go
@@ -0,0 +1,146 @@
+/*
+Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved.
+
+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 nfc
+
+import (
+ "context"
+ "log"
+ "net/url"
+ "sync"
+ "sync/atomic"
+ "time"
+
+ "github.com/vmware/govmomi/vim25/progress"
+ "github.com/vmware/govmomi/vim25/types"
+)
+
+type FileItem struct {
+ types.OvfFileItem
+ URL *url.URL
+
+ ch chan progress.Report
+}
+
+func NewFileItem(u *url.URL, item types.OvfFileItem) FileItem {
+ return FileItem{
+ OvfFileItem: item,
+ URL: u,
+ ch: make(chan progress.Report),
+ }
+}
+
+func (o FileItem) Sink() chan<- progress.Report {
+ return o.ch
+}
+
+// File converts the FileItem.OvfFileItem to an OvfFile
+func (o FileItem) File() types.OvfFile {
+ return types.OvfFile{
+ DeviceId: o.DeviceId,
+ Path: o.Path,
+ Size: o.Size,
+ }
+}
+
+type LeaseUpdater struct {
+ lease *Lease
+
+ pos int64 // Number of bytes
+ total int64 // Total number of bytes
+
+ done chan struct{} // When lease updater should stop
+
+ wg sync.WaitGroup // Track when update loop is done
+}
+
+func newLeaseUpdater(ctx context.Context, lease *Lease, info *LeaseInfo) *LeaseUpdater {
+ l := LeaseUpdater{
+ lease: lease,
+
+ done: make(chan struct{}),
+ }
+
+ for _, item := range info.Items {
+ l.total += item.Size
+ go l.waitForProgress(item)
+ }
+
+ // Kickstart update loop
+ l.wg.Add(1)
+ go l.run()
+
+ return &l
+}
+
+func (l *LeaseUpdater) waitForProgress(item FileItem) {
+ var pos, total int64
+
+ total = item.Size
+
+ for {
+ select {
+ case <-l.done:
+ return
+ case p, ok := <-item.ch:
+ // Return in case of error
+ if ok && p.Error() != nil {
+ return
+ }
+
+ if !ok {
+ // Last element on the channel, add to total
+ atomic.AddInt64(&l.pos, total-pos)
+ return
+ }
+
+ // Approximate progress in number of bytes
+ x := int64(float32(total) * (p.Percentage() / 100.0))
+ atomic.AddInt64(&l.pos, x-pos)
+ pos = x
+ }
+ }
+}
+
+func (l *LeaseUpdater) run() {
+ defer l.wg.Done()
+
+ tick := time.NewTicker(2 * time.Second)
+ defer tick.Stop()
+
+ for {
+ select {
+ case <-l.done:
+ return
+ case <-tick.C:
+ // From the vim api HttpNfcLeaseProgress(percent) doc, percent ==
+ // "Completion status represented as an integer in the 0-100 range."
+ // Always report the current value of percent, as it will renew the
+ // lease even if the value hasn't changed or is 0.
+ percent := int32(float32(100*atomic.LoadInt64(&l.pos)) / float32(l.total))
+ err := l.lease.Progress(context.TODO(), percent)
+ if err != nil {
+ log.Printf("NFC lease progress: %s", err)
+ return
+ }
+ }
+ }
+}
+
+func (l *LeaseUpdater) Done() {
+ close(l.done)
+ l.wg.Wait()
+}
diff --git a/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go b/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go
index 225f41b6d19c..c9fe3aa035b1 100644
--- a/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go
+++ b/vendor/github.com/vmware/govmomi/object/cluster_compute_resource.go
@@ -21,6 +21,7 @@ import (
"github.com/vmware/govmomi/vim25"
"github.com/vmware/govmomi/vim25/methods"
+ "github.com/vmware/govmomi/vim25/mo"
"github.com/vmware/govmomi/vim25/types"
)
@@ -34,19 +35,15 @@ func NewClusterComputeResource(c *vim25.Client, ref types.ManagedObjectReference
}
}
-func (c ClusterComputeResource) ReconfigureCluster(ctx context.Context, spec types.ClusterConfigSpec) (*Task, error) {
- req := types.ReconfigureCluster_Task{
- This: c.Reference(),
- Spec: spec,
- Modify: true,
- }
+func (c ClusterComputeResource) Configuration(ctx context.Context) (*types.ClusterConfigInfoEx, error) {
+ var obj mo.ClusterComputeResource
- res, err := methods.ReconfigureCluster_Task(ctx, c.c, &req)
+ err := c.Properties(ctx, c.Reference(), []string{"configurationEx"}, &obj)
if err != nil {
return nil, err
}
- return NewTask(c.c, res.Returnval), nil
+ return obj.ConfigurationEx.(*types.ClusterConfigInfoEx), nil
}
func (c ClusterComputeResource) AddHost(ctx context.Context, spec types.HostConnectSpec, asConnected bool, license *string, resourcePool *types.ManagedObjectReference) (*Task, error) {
@@ -71,16 +68,3 @@ func (c ClusterComputeResource) AddHost(ctx context.Context, spec types.HostConn
return NewTask(c.c, res.Returnval), nil
}
-
-func (c ClusterComputeResource) Destroy(ctx context.Context) (*Task, error) {
- req := types.Destroy_Task{
- This: c.Reference(),
- }
-
- res, err := methods.Destroy_Task(ctx, c.c, &req)
- if err != nil {
- return nil, err
- }
-
- return NewTask(c.c, res.Returnval), nil
-}
diff --git a/vendor/github.com/vmware/govmomi/object/common.go b/vendor/github.com/vmware/govmomi/object/common.go
index 52feeed6503e..dfeee4a365ed 100644
--- a/vendor/github.com/vmware/govmomi/object/common.go
+++ b/vendor/github.com/vmware/govmomi/object/common.go
@@ -80,17 +80,24 @@ func (c *Common) SetInventoryPath(p string) {
func (c Common) ObjectName(ctx context.Context) (string, error) {
var o mo.ManagedEntity
- name := c.Name()
- if name != "" {
- return name, nil
+ err := c.Properties(ctx, c.Reference(), []string{"name"}, &o)
+ if err != nil {
+ return "", err
}
- err := c.Properties(ctx, c.Reference(), []string{"name"}, &o)
+ if o.Name != "" {
+ return o.Name, nil
+ }
+
+ // Network has its own "name" field...
+ var n mo.Network
+
+ err = c.Properties(ctx, c.Reference(), []string{"name"}, &n)
if err != nil {
return "", err
}
- return o.Name, nil
+ return n.Name, nil
}
func (c Common) Properties(ctx context.Context, r types.ManagedObjectReference, ps []string, dst interface{}) error {
diff --git a/vendor/github.com/vmware/govmomi/object/compute_resource.go b/vendor/github.com/vmware/govmomi/object/compute_resource.go
index ac1c73019fcd..7645fddaf313 100644
--- a/vendor/github.com/vmware/govmomi/object/compute_resource.go
+++ b/vendor/github.com/vmware/govmomi/object/compute_resource.go
@@ -109,16 +109,3 @@ func (c ComputeResource) Reconfigure(ctx context.Context, spec types.BaseCompute
return NewTask(c.c, res.Returnval), nil
}
-
-func (c ComputeResource) Destroy(ctx context.Context) (*Task, error) {
- req := types.Destroy_Task{
- This: c.Reference(),
- }
-
- res, err := methods.Destroy_Task(ctx, c.c, &req)
- if err != nil {
- return nil, err
- }
-
- return NewTask(c.c, res.Returnval), nil
-}
diff --git a/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go b/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go
index 60b78df2b4b6..ef748ef2c131 100644
--- a/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go
+++ b/vendor/github.com/vmware/govmomi/object/custom_fields_manager.go
@@ -102,7 +102,9 @@ func (m CustomFieldsManager) Set(ctx context.Context, entity types.ManagedObject
return err
}
-func (m CustomFieldsManager) Field(ctx context.Context) ([]types.CustomFieldDef, error) {
+type CustomFieldDefList []types.CustomFieldDef
+
+func (m CustomFieldsManager) Field(ctx context.Context) (CustomFieldDefList, error) {
var fm mo.CustomFieldsManager
err := m.Properties(ctx, m.Reference(), []string{"field"}, &fm)
@@ -113,19 +115,19 @@ func (m CustomFieldsManager) Field(ctx context.Context) ([]types.CustomFieldDef,
return fm.Field, nil
}
-func (m CustomFieldsManager) FindKey(ctx context.Context, key string) (int32, error) {
+func (m CustomFieldsManager) FindKey(ctx context.Context, name string) (int32, error) {
field, err := m.Field(ctx)
if err != nil {
return -1, err
}
for _, def := range field {
- if def.Name == key {
+ if def.Name == name {
return def.Key, nil
}
}
- k, err := strconv.Atoi(key)
+ k, err := strconv.Atoi(name)
if err == nil {
// assume literal int key
return int32(k), nil
@@ -133,3 +135,12 @@ func (m CustomFieldsManager) FindKey(ctx context.Context, key string) (int32, er
return -1, ErrKeyNameNotFound
}
+
+func (l CustomFieldDefList) ByKey(key int32) *types.CustomFieldDef {
+ for _, def := range l {
+ if def.Key == key {
+ return &def
+ }
+ }
+ return nil
+}
diff --git a/vendor/github.com/vmware/govmomi/object/datacenter.go b/vendor/github.com/vmware/govmomi/object/datacenter.go
index adddc5ffa5de..41fa3526571b 100644
--- a/vendor/github.com/vmware/govmomi/object/datacenter.go
+++ b/vendor/github.com/vmware/govmomi/object/datacenter.go
@@ -88,3 +88,42 @@ func (d Datacenter) Destroy(ctx context.Context) (*Task, error) {
return NewTask(d.c, res.Returnval), nil
}
+
+// PowerOnVM powers on multiple virtual machines with a single vCenter call.
+// If called against ESX, serially powers on the list of VMs and the returned *Task will always be nil.
+func (d Datacenter) PowerOnVM(ctx context.Context, vm []types.ManagedObjectReference, option ...types.BaseOptionValue) (*Task, error) {
+ if d.Client().IsVC() {
+ req := types.PowerOnMultiVM_Task{
+ This: d.Reference(),
+ Vm: vm,
+ Option: option,
+ }
+
+ res, err := methods.PowerOnMultiVM_Task(ctx, d.c, &req)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewTask(d.c, res.Returnval), nil
+ }
+
+ for _, ref := range vm {
+ obj := NewVirtualMachine(d.Client(), ref)
+ task, err := obj.PowerOn(ctx)
+ if err != nil {
+ return nil, err
+ }
+
+ err = task.Wait(ctx)
+ if err != nil {
+ // Ignore any InvalidPowerState fault, as it indicates the VM is already powered on
+ if f, ok := err.(types.HasFault); ok {
+ if _, ok = f.Fault().(*types.InvalidPowerState); !ok {
+ return nil, err
+ }
+ }
+ }
+ }
+
+ return nil, nil
+}
diff --git a/vendor/github.com/vmware/govmomi/object/datastore.go b/vendor/github.com/vmware/govmomi/object/datastore.go
index fc696cdf2131..dfe6603aa5c8 100644
--- a/vendor/github.com/vmware/govmomi/object/datastore.go
+++ b/vendor/github.com/vmware/govmomi/object/datastore.go
@@ -284,7 +284,7 @@ func (d Datastore) Upload(ctx context.Context, f io.Reader, path string, param *
if err != nil {
return err
}
- return d.Client().Upload(f, u, p)
+ return d.Client().Upload(ctx, f, u, p)
}
// UploadFile via soap.Upload with an http service ticket
@@ -293,7 +293,7 @@ func (d Datastore) UploadFile(ctx context.Context, file string, path string, par
if err != nil {
return err
}
- return d.Client().UploadFile(file, u, p)
+ return d.Client().UploadFile(ctx, file, u, p)
}
// Download via soap.Download with an http service ticket
@@ -302,7 +302,7 @@ func (d Datastore) Download(ctx context.Context, path string, param *soap.Downlo
if err != nil {
return nil, 0, err
}
- return d.Client().Download(u, p)
+ return d.Client().Download(ctx, u, p)
}
// DownloadFile via soap.Download with an http service ticket
@@ -311,7 +311,7 @@ func (d Datastore) DownloadFile(ctx context.Context, path string, file string, p
if err != nil {
return err
}
- return d.Client().DownloadFile(file, u, p)
+ return d.Client().DownloadFile(ctx, file, u, p)
}
// AttachedHosts returns hosts that have this Datastore attached, accessible and writable.
@@ -406,12 +406,9 @@ func (d Datastore) Stat(ctx context.Context, file string) (types.BaseFileInfo, e
info, err := task.WaitForResult(ctx, nil)
if err != nil {
- if info == nil || info.Error != nil {
- _, ok := info.Error.Fault.(*types.FileNotFound)
- if ok {
- // FileNotFound means the base path doesn't exist.
- return nil, DatastoreNoSuchDirectoryError{"stat", dsPath}
- }
+ if types.IsFileNotFound(err) {
+ // FileNotFound means the base path doesn't exist.
+ return nil, DatastoreNoSuchDirectoryError{"stat", dsPath}
}
return nil, err
diff --git a/vendor/github.com/vmware/govmomi/object/datastore_file.go b/vendor/github.com/vmware/govmomi/object/datastore_file.go
index 36c952348552..bc010fc36e81 100644
--- a/vendor/github.com/vmware/govmomi/object/datastore_file.go
+++ b/vendor/github.com/vmware/govmomi/object/datastore_file.go
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2016 VMware, Inc. All Rights Reserved.
+Copyright (c) 2016-2017 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -25,6 +25,7 @@ import (
"net/http"
"os"
"path"
+ "sync"
"time"
"github.com/vmware/govmomi/vim25/soap"
@@ -171,7 +172,7 @@ func (f *DatastoreFile) Stat() (os.FileInfo, error) {
return nil, err
}
- res, err := f.d.Client().DownloadRequest(u, p)
+ res, err := f.d.Client().DownloadRequest(f.ctx, u, p)
if err != nil {
return nil, err
}
@@ -201,7 +202,7 @@ func (f *DatastoreFile) get() (io.Reader, error) {
}
}
- res, err := f.d.Client().DownloadRequest(u, p)
+ res, err := f.d.Client().DownloadRequest(f.ctx, u, p)
if err != nil {
return nil, err
}
@@ -232,8 +233,9 @@ func (f *DatastoreFile) get() (io.Reader, error) {
return f.body, nil
}
-func lastIndexLines(s []byte, n *int) int64 {
+func lastIndexLines(s []byte, line *int, include func(l int, m string) bool) (int64, bool) {
i := len(s) - 1
+ done := false
for i > 0 {
o := bytes.LastIndexByte(s[:i], '\n')
@@ -241,18 +243,27 @@ func lastIndexLines(s []byte, n *int) int64 {
break
}
- i = o
- *n--
- if *n == 0 {
+ msg := string(s[o+1 : i+1])
+ if !include(*line, msg) {
+ done = true
break
+ } else {
+ i = o
+ *line++
}
}
- return int64(i)
+ return int64(i), done
}
// Tail seeks to the position of the last N lines of the file.
func (f *DatastoreFile) Tail(n int) error {
+ return f.TailFunc(n, func(line int, _ string) bool { return n > line })
+}
+
+// TailFunc will seek backwards in the datastore file until it hits a line that does
+// not satisfy the supplied `include` function.
+func (f *DatastoreFile) TailFunc(lines int, include func(line int, message string) bool) error {
// Read the file in reverse using bsize chunks
const bsize = int64(1024 * 16)
@@ -261,13 +272,14 @@ func (f *DatastoreFile) Tail(n int) error {
return err
}
- if n == 0 {
+ if lines == 0 {
return nil
}
chunk := int64(-1)
buf := bytes.NewBuffer(make([]byte, 0, bsize))
+ line := 0
for {
var eof bool
@@ -298,19 +310,19 @@ func (f *DatastoreFile) Tail(n int) error {
}
b := buf.Bytes()
- idx := lastIndexLines(b, &n) + 1
+ idx, done := lastIndexLines(b, &line, include)
- if n == 0 {
+ if done {
if chunk == -1 {
// We found all N lines in the last chunk of the file.
// The seek offset is also now at the current end of file.
// Save this buffer to avoid another GET request when Read() is called.
- buf.Next(int(idx))
+ buf.Next(int(idx + 1))
f.buf = buf
return nil
}
- if _, err = f.Seek(pos+idx, io.SeekStart); err != nil {
+ if _, err = f.Seek(pos+idx+1, io.SeekStart); err != nil {
return err
}
@@ -336,6 +348,7 @@ type followDatastoreFile struct {
r *DatastoreFile
c chan struct{}
i time.Duration
+ o sync.Once
}
// Read reads up to len(b) bytes from the DatastoreFile being followed.
@@ -387,11 +400,15 @@ func (f *followDatastoreFile) Read(p []byte) (int, error) {
// Close will stop Follow polling and close the underlying DatastoreFile.
func (f *followDatastoreFile) Close() error {
- close(f.c)
+ f.o.Do(func() { close(f.c) })
return nil
}
// Follow returns an io.ReadCloser to stream the file contents as data is appended.
func (f *DatastoreFile) Follow(interval time.Duration) io.ReadCloser {
- return &followDatastoreFile{f, make(chan struct{}), interval}
+ return &followDatastoreFile{
+ r: f,
+ c: make(chan struct{}),
+ i: interval,
+ }
}
diff --git a/vendor/github.com/vmware/govmomi/object/datastore_file_manager.go b/vendor/github.com/vmware/govmomi/object/datastore_file_manager.go
index 7164fbbed7d0..a6e29c2c5634 100644
--- a/vendor/github.com/vmware/govmomi/object/datastore_file_manager.go
+++ b/vendor/github.com/vmware/govmomi/object/datastore_file_manager.go
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2017 VMware, Inc. All Rights Reserved.
+Copyright (c) 2017-2018 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -26,6 +26,7 @@ import (
"path"
"strings"
+ "github.com/vmware/govmomi/vim25/progress"
"github.com/vmware/govmomi/vim25/soap"
)
@@ -36,7 +37,8 @@ type DatastoreFileManager struct {
FileManager *FileManager
VirtualDiskManager *VirtualDiskManager
- Force bool
+ Force bool
+ DatacenterTarget *Datacenter
}
// NewFileManager creates a new instance of DatastoreFileManager
@@ -49,11 +51,25 @@ func (d Datastore) NewFileManager(dc *Datacenter, force bool) *DatastoreFileMana
FileManager: NewFileManager(c),
VirtualDiskManager: NewVirtualDiskManager(c),
Force: force,
+ DatacenterTarget: dc,
}
return m
}
+func (m *DatastoreFileManager) WithProgress(ctx context.Context, s progress.Sinker) context.Context {
+ return context.WithValue(ctx, m, s)
+}
+
+func (m *DatastoreFileManager) wait(ctx context.Context, task *Task) error {
+ var logger progress.Sinker
+ if s, ok := ctx.Value(m).(progress.Sinker); ok {
+ logger = s
+ }
+ _, err := task.WaitForResult(ctx, logger)
+ return err
+}
+
// Delete dispatches to the appropriate Delete method based on file name extension
func (m *DatastoreFileManager) Delete(ctx context.Context, name string) error {
switch path.Ext(name) {
@@ -73,7 +89,7 @@ func (m *DatastoreFileManager) DeleteFile(ctx context.Context, name string) erro
return err
}
- return task.Wait(ctx)
+ return m.wait(ctx, task)
}
// DeleteVirtualDisk calls VirtualDiskManager.DeleteVirtualDisk
@@ -94,7 +110,74 @@ func (m *DatastoreFileManager) DeleteVirtualDisk(ctx context.Context, name strin
return err
}
- return task.Wait(ctx)
+ return m.wait(ctx, task)
+}
+
+// CopyFile calls FileManager.CopyDatastoreFile
+func (m *DatastoreFileManager) CopyFile(ctx context.Context, src string, dst string) error {
+ srcp := m.Path(src)
+ dstp := m.Path(dst)
+
+ task, err := m.FileManager.CopyDatastoreFile(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force)
+ if err != nil {
+ return err
+ }
+
+ return m.wait(ctx, task)
+}
+
+// Copy dispatches to the appropriate FileManager or VirtualDiskManager Copy method based on file name extension
+func (m *DatastoreFileManager) Copy(ctx context.Context, src string, dst string) error {
+ srcp := m.Path(src)
+ dstp := m.Path(dst)
+
+ f := m.FileManager.CopyDatastoreFile
+
+ if srcp.IsVMDK() {
+ // types.VirtualDiskSpec=nil as it is not implemented by vCenter
+ f = func(ctx context.Context, src string, srcDC *Datacenter, dst string, dstDC *Datacenter, force bool) (*Task, error) {
+ return m.VirtualDiskManager.CopyVirtualDisk(ctx, src, srcDC, dst, dstDC, nil, force)
+ }
+ }
+
+ task, err := f(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force)
+ if err != nil {
+ return err
+ }
+
+ return m.wait(ctx, task)
+}
+
+// MoveFile calls FileManager.MoveDatastoreFile
+func (m *DatastoreFileManager) MoveFile(ctx context.Context, src string, dst string) error {
+ srcp := m.Path(src)
+ dstp := m.Path(dst)
+
+ task, err := m.FileManager.MoveDatastoreFile(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force)
+ if err != nil {
+ return err
+ }
+
+ return m.wait(ctx, task)
+}
+
+// Move dispatches to the appropriate FileManager or VirtualDiskManager Move method based on file name extension
+func (m *DatastoreFileManager) Move(ctx context.Context, src string, dst string) error {
+ srcp := m.Path(src)
+ dstp := m.Path(dst)
+
+ f := m.FileManager.MoveDatastoreFile
+
+ if srcp.IsVMDK() {
+ f = m.VirtualDiskManager.MoveVirtualDisk
+ }
+
+ task, err := f(ctx, srcp.String(), m.Datacenter, dstp.String(), m.DatacenterTarget, m.Force)
+ if err != nil {
+ return err
+ }
+
+ return m.wait(ctx, task)
}
// Path converts path name to a DatastorePath
diff --git a/vendor/github.com/vmware/govmomi/object/datastore_path.go b/vendor/github.com/vmware/govmomi/object/datastore_path.go
index ea152103df50..1563ee1e11db 100644
--- a/vendor/github.com/vmware/govmomi/object/datastore_path.go
+++ b/vendor/github.com/vmware/govmomi/object/datastore_path.go
@@ -18,6 +18,7 @@ package object
import (
"fmt"
+ "path"
"strings"
)
@@ -63,3 +64,8 @@ func (p *DatastorePath) String() string {
return strings.Join([]string{s, p.Path}, " ")
}
+
+// IsVMDK returns true if Path has a ".vmdk" extension
+func (p *DatastorePath) IsVMDK() bool {
+ return path.Ext(p.Path) == ".vmdk"
+}
diff --git a/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go b/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go
index 864bb783f385..86c9fc1c7a88 100644
--- a/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go
+++ b/vendor/github.com/vmware/govmomi/object/distributed_virtual_portgroup.go
@@ -38,7 +38,7 @@ func NewDistributedVirtualPortgroup(c *vim25.Client, ref types.ManagedObjectRefe
// EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this DistributedVirtualPortgroup
func (p DistributedVirtualPortgroup) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) {
var dvp mo.DistributedVirtualPortgroup
- var dvs mo.VmwareDistributedVirtualSwitch // TODO: should be mo.BaseDistributedVirtualSwitch
+ var dvs mo.DistributedVirtualSwitch
if err := p.Properties(ctx, p.Reference(), []string{"key", "config.distributedVirtualSwitch"}, &dvp); err != nil {
return nil, err
diff --git a/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go b/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go
index 29ee52d95013..7a41258799d8 100644
--- a/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go
+++ b/vendor/github.com/vmware/govmomi/object/distributed_virtual_switch.go
@@ -65,3 +65,15 @@ func (s DistributedVirtualSwitch) AddPortgroup(ctx context.Context, spec []types
return NewTask(s.Client(), res.Returnval), nil
}
+
+func (s DistributedVirtualSwitch) FetchDVPorts(ctx context.Context) ([]types.DistributedVirtualPort, error) {
+ req := &types.FetchDVPorts{
+ This: s.Reference(),
+ }
+
+ res, err := methods.FetchDVPorts(ctx, s.Client(), req)
+ if err != nil {
+ return nil, err
+ }
+ return res.Returnval, nil
+}
diff --git a/vendor/github.com/vmware/govmomi/object/host_storage_system.go b/vendor/github.com/vmware/govmomi/object/host_storage_system.go
index 2a433ff2a886..5990a1d4e6bb 100644
--- a/vendor/github.com/vmware/govmomi/object/host_storage_system.go
+++ b/vendor/github.com/vmware/govmomi/object/host_storage_system.go
@@ -88,6 +88,24 @@ func (s HostStorageSystem) RescanAllHba(ctx context.Context) error {
return err
}
+func (s HostStorageSystem) Refresh(ctx context.Context) error {
+ req := types.RefreshStorageSystem{
+ This: s.Reference(),
+ }
+
+ _, err := methods.RefreshStorageSystem(ctx, s.c, &req)
+ return err
+}
+
+func (s HostStorageSystem) RescanVmfs(ctx context.Context) error {
+ req := types.RescanVmfs{
+ This: s.Reference(),
+ }
+
+ _, err := methods.RescanVmfs(ctx, s.c, &req)
+ return err
+}
+
func (s HostStorageSystem) MarkAsSsd(ctx context.Context, uuid string) (*Task, error) {
req := types.MarkAsSsd_Task{
This: s.Reference(),
@@ -143,3 +161,14 @@ func (s HostStorageSystem) MarkAsNonLocal(ctx context.Context, uuid string) (*Ta
return NewTask(s.c, res.Returnval), nil
}
+
+func (s HostStorageSystem) AttachScsiLun(ctx context.Context, uuid string) error {
+ req := types.AttachScsiLun{
+ This: s.Reference(),
+ LunUuid: uuid,
+ }
+
+ _, err := methods.AttachScsiLun(ctx, s.c, &req)
+
+ return err
+}
diff --git a/vendor/github.com/vmware/govmomi/object/host_vsan_internal_system.go b/vendor/github.com/vmware/govmomi/object/host_vsan_internal_system.go
index 65e4587f6c80..1430e8a88221 100644
--- a/vendor/github.com/vmware/govmomi/object/host_vsan_internal_system.go
+++ b/vendor/github.com/vmware/govmomi/object/host_vsan_internal_system.go
@@ -42,7 +42,7 @@ func (m HostVsanInternalSystem) QueryVsanObjectUuidsByFilter(ctx context.Context
req := types.QueryVsanObjectUuidsByFilter{
This: m.Reference(),
Uuids: uuids,
- Limit: limit,
+ Limit: &limit,
Version: version,
}
diff --git a/vendor/github.com/vmware/govmomi/object/http_nfc_lease.go b/vendor/github.com/vmware/govmomi/object/http_nfc_lease.go
deleted file mode 100644
index 3ca53558b3fc..000000000000
--- a/vendor/github.com/vmware/govmomi/object/http_nfc_lease.go
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
-Copyright (c) 2015 VMware, Inc. All Rights Reserved.
-
-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 object
-
-import (
- "context"
- "errors"
- "fmt"
-
- "github.com/vmware/govmomi/property"
- "github.com/vmware/govmomi/vim25"
- "github.com/vmware/govmomi/vim25/methods"
- "github.com/vmware/govmomi/vim25/mo"
- "github.com/vmware/govmomi/vim25/types"
-)
-
-type HttpNfcLease struct {
- Common
-}
-
-func NewHttpNfcLease(c *vim25.Client, ref types.ManagedObjectReference) *HttpNfcLease {
- return &HttpNfcLease{
- Common: NewCommon(c, ref),
- }
-}
-
-// HttpNfcLeaseAbort wraps methods.HttpNfcLeaseAbort
-func (o HttpNfcLease) HttpNfcLeaseAbort(ctx context.Context, fault *types.LocalizedMethodFault) error {
- req := types.HttpNfcLeaseAbort{
- This: o.Reference(),
- Fault: fault,
- }
-
- _, err := methods.HttpNfcLeaseAbort(ctx, o.c, &req)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-// HttpNfcLeaseComplete wraps methods.HttpNfcLeaseComplete
-func (o HttpNfcLease) HttpNfcLeaseComplete(ctx context.Context) error {
- req := types.HttpNfcLeaseComplete{
- This: o.Reference(),
- }
-
- _, err := methods.HttpNfcLeaseComplete(ctx, o.c, &req)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-// HttpNfcLeaseGetManifest wraps methods.HttpNfcLeaseGetManifest
-func (o HttpNfcLease) HttpNfcLeaseGetManifest(ctx context.Context) error {
- req := types.HttpNfcLeaseGetManifest{
- This: o.Reference(),
- }
-
- _, err := methods.HttpNfcLeaseGetManifest(ctx, o.c, &req)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-// HttpNfcLeaseProgress wraps methods.HttpNfcLeaseProgress
-func (o HttpNfcLease) HttpNfcLeaseProgress(ctx context.Context, percent int32) error {
- req := types.HttpNfcLeaseProgress{
- This: o.Reference(),
- Percent: percent,
- }
-
- _, err := methods.HttpNfcLeaseProgress(ctx, o.c, &req)
- if err != nil {
- return err
- }
-
- return nil
-}
-
-func (o HttpNfcLease) Wait(ctx context.Context) (*types.HttpNfcLeaseInfo, error) {
- var lease mo.HttpNfcLease
-
- pc := property.DefaultCollector(o.c)
- err := property.Wait(ctx, pc, o.Reference(), []string{"state", "info", "error"}, func(pc []types.PropertyChange) bool {
- done := false
-
- for _, c := range pc {
- if c.Val == nil {
- continue
- }
-
- switch c.Name {
- case "error":
- val := c.Val.(types.LocalizedMethodFault)
- lease.Error = &val
- done = true
- case "info":
- val := c.Val.(types.HttpNfcLeaseInfo)
- lease.Info = &val
- case "state":
- lease.State = c.Val.(types.HttpNfcLeaseState)
- if lease.State != types.HttpNfcLeaseStateInitializing {
- done = true
- }
- }
- }
-
- return done
- })
-
- if err != nil {
- return nil, err
- }
-
- if lease.State == types.HttpNfcLeaseStateReady {
- return lease.Info, nil
- }
-
- if lease.Error != nil {
- return nil, errors.New(lease.Error.LocalizedMessage)
- }
-
- return nil, fmt.Errorf("unexpected nfc lease state: %s", lease.State)
-}
diff --git a/vendor/github.com/vmware/govmomi/object/network.go b/vendor/github.com/vmware/govmomi/object/network.go
index a76b17d91c25..d1dc7ce01f61 100644
--- a/vendor/github.com/vmware/govmomi/object/network.go
+++ b/vendor/github.com/vmware/govmomi/object/network.go
@@ -20,6 +20,7 @@ import (
"context"
"github.com/vmware/govmomi/vim25"
+ "github.com/vmware/govmomi/vim25/mo"
"github.com/vmware/govmomi/vim25/types"
)
@@ -34,12 +35,20 @@ func NewNetwork(c *vim25.Client, ref types.ManagedObjectReference) *Network {
}
// EthernetCardBackingInfo returns the VirtualDeviceBackingInfo for this Network
-func (n Network) EthernetCardBackingInfo(_ context.Context) (types.BaseVirtualDeviceBackingInfo, error) {
- name := n.Name()
+func (n Network) EthernetCardBackingInfo(ctx context.Context) (types.BaseVirtualDeviceBackingInfo, error) {
+ var e mo.Network
+
+ // Use Network.Name rather than Common.Name as the latter does not return the complete name if it contains a '/'
+ // We can't use Common.ObjectName here either as we need the ManagedEntity.Name field is not set since mo.Network
+ // has its own Name field.
+ err := n.Properties(ctx, n.Reference(), []string{"name"}, &e)
+ if err != nil {
+ return nil, err
+ }
backing := &types.VirtualEthernetCardNetworkBackingInfo{
VirtualDeviceDeviceBackingInfo: types.VirtualDeviceDeviceBackingInfo{
- DeviceName: name,
+ DeviceName: e.Name,
},
}
diff --git a/vendor/github.com/vmware/govmomi/object/ovf_manager.go b/vendor/github.com/vmware/govmomi/object/ovf_manager.go
deleted file mode 100644
index 7fedf689ff38..000000000000
--- a/vendor/github.com/vmware/govmomi/object/ovf_manager.go
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-Copyright (c) 2015 VMware, Inc. All Rights Reserved.
-
-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 object
-
-import (
- "context"
-
- "github.com/vmware/govmomi/vim25"
- "github.com/vmware/govmomi/vim25/methods"
- "github.com/vmware/govmomi/vim25/types"
-)
-
-type OvfManager struct {
- Common
-}
-
-func NewOvfManager(c *vim25.Client) *OvfManager {
- o := OvfManager{
- Common: NewCommon(c, *c.ServiceContent.OvfManager),
- }
-
- return &o
-}
-
-// CreateDescriptor wraps methods.CreateDescriptor
-func (o OvfManager) CreateDescriptor(ctx context.Context, obj Reference, cdp types.OvfCreateDescriptorParams) (*types.OvfCreateDescriptorResult, error) {
- req := types.CreateDescriptor{
- This: o.Reference(),
- Obj: obj.Reference(),
- Cdp: cdp,
- }
-
- res, err := methods.CreateDescriptor(ctx, o.c, &req)
- if err != nil {
- return nil, err
- }
-
- return &res.Returnval, nil
-}
-
-// CreateImportSpec wraps methods.CreateImportSpec
-func (o OvfManager) CreateImportSpec(ctx context.Context, ovfDescriptor string, resourcePool Reference, datastore Reference, cisp types.OvfCreateImportSpecParams) (*types.OvfCreateImportSpecResult, error) {
- req := types.CreateImportSpec{
- This: o.Reference(),
- OvfDescriptor: ovfDescriptor,
- ResourcePool: resourcePool.Reference(),
- Datastore: datastore.Reference(),
- Cisp: cisp,
- }
-
- res, err := methods.CreateImportSpec(ctx, o.c, &req)
- if err != nil {
- return nil, err
- }
-
- return &res.Returnval, nil
-}
-
-// ParseDescriptor wraps methods.ParseDescriptor
-func (o OvfManager) ParseDescriptor(ctx context.Context, ovfDescriptor string, pdp types.OvfParseDescriptorParams) (*types.OvfParseDescriptorResult, error) {
- req := types.ParseDescriptor{
- This: o.Reference(),
- OvfDescriptor: ovfDescriptor,
- Pdp: pdp,
- }
-
- res, err := methods.ParseDescriptor(ctx, o.c, &req)
- if err != nil {
- return nil, err
- }
-
- return &res.Returnval, nil
-}
-
-// ValidateHost wraps methods.ValidateHost
-func (o OvfManager) ValidateHost(ctx context.Context, ovfDescriptor string, host Reference, vhp types.OvfValidateHostParams) (*types.OvfValidateHostResult, error) {
- req := types.ValidateHost{
- This: o.Reference(),
- OvfDescriptor: ovfDescriptor,
- Host: host.Reference(),
- Vhp: vhp,
- }
-
- res, err := methods.ValidateHost(ctx, o.c, &req)
- if err != nil {
- return nil, err
- }
-
- return &res.Returnval, nil
-}
diff --git a/vendor/github.com/vmware/govmomi/object/resource_pool.go b/vendor/github.com/vmware/govmomi/object/resource_pool.go
index 791fd38229db..55c2e2b2fdea 100644
--- a/vendor/github.com/vmware/govmomi/object/resource_pool.go
+++ b/vendor/github.com/vmware/govmomi/object/resource_pool.go
@@ -19,6 +19,7 @@ package object
import (
"context"
+ "github.com/vmware/govmomi/nfc"
"github.com/vmware/govmomi/vim25"
"github.com/vmware/govmomi/vim25/methods"
"github.com/vmware/govmomi/vim25/types"
@@ -34,7 +35,7 @@ func NewResourcePool(c *vim25.Client, ref types.ManagedObjectReference) *Resourc
}
}
-func (p ResourcePool) ImportVApp(ctx context.Context, spec types.BaseImportSpec, folder *Folder, host *HostSystem) (*HttpNfcLease, error) {
+func (p ResourcePool) ImportVApp(ctx context.Context, spec types.BaseImportSpec, folder *Folder, host *HostSystem) (*nfc.Lease, error) {
req := types.ImportVApp{
This: p.Reference(),
Spec: spec,
@@ -55,7 +56,7 @@ func (p ResourcePool) ImportVApp(ctx context.Context, spec types.BaseImportSpec,
return nil, err
}
- return NewHttpNfcLease(p.c, res.Returnval), nil
+ return nfc.NewLease(p.c, res.Returnval), nil
}
func (p ResourcePool) Create(ctx context.Context, name string, spec types.ResourceConfigSpec) (*ResourcePool, error) {
diff --git a/vendor/github.com/vmware/govmomi/object/task.go b/vendor/github.com/vmware/govmomi/object/task.go
index 8572b4363bd0..2b66aa93b7f7 100644
--- a/vendor/github.com/vmware/govmomi/object/task.go
+++ b/vendor/github.com/vmware/govmomi/object/task.go
@@ -22,6 +22,7 @@ import (
"github.com/vmware/govmomi/property"
"github.com/vmware/govmomi/task"
"github.com/vmware/govmomi/vim25"
+ "github.com/vmware/govmomi/vim25/methods"
"github.com/vmware/govmomi/vim25/progress"
"github.com/vmware/govmomi/vim25/types"
)
@@ -51,3 +52,11 @@ func (t *Task) WaitForResult(ctx context.Context, s progress.Sinker) (*types.Tas
p := property.DefaultCollector(t.c)
return task.Wait(ctx, t.Reference(), p, s)
}
+
+func (t *Task) Cancel(ctx context.Context) error {
+ _, err := methods.CancelTask(ctx, t.Client(), &types.CancelTask{
+ This: t.Reference(),
+ })
+
+ return err
+}
diff --git a/vendor/github.com/vmware/govmomi/object/types.go b/vendor/github.com/vmware/govmomi/object/types.go
index aefb611fded6..4eb8d1b8bbf7 100644
--- a/vendor/github.com/vmware/govmomi/object/types.go
+++ b/vendor/github.com/vmware/govmomi/object/types.go
@@ -47,8 +47,10 @@ func NewReference(c *vim25.Client, e types.ManagedObjectReference) Reference {
return NewClusterComputeResource(c, e)
case "HostSystem":
return NewHostSystem(c, e)
- case "Network", "OpaqueNetwork":
+ case "Network":
return NewNetwork(c, e)
+ case "OpaqueNetwork":
+ return NewOpaqueNetwork(c, e)
case "ResourcePool":
return NewResourcePool(c, e)
case "DistributedVirtualSwitch":
diff --git a/vendor/github.com/vmware/govmomi/object/virtual_device_list.go b/vendor/github.com/vmware/govmomi/object/virtual_device_list.go
index 24821aa6b9c8..6fe083561586 100644
--- a/vendor/github.com/vmware/govmomi/object/virtual_device_list.go
+++ b/vendor/github.com/vmware/govmomi/object/virtual_device_list.go
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2015 VMware, Inc. All Rights Reserved.
+Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -30,6 +30,7 @@ import (
// Type values for use in BootOrder
const (
+ DeviceTypeNone = "-"
DeviceTypeCdrom = "cdrom"
DeviceTypeDisk = "disk"
DeviceTypeEthernet = "ethernet"
@@ -754,6 +755,9 @@ func (l VirtualDeviceList) PrimaryMacAddress() string {
// convert a BaseVirtualDevice to a BaseVirtualMachineBootOptionsBootableDevice
var bootableDevices = map[string]func(device types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice{
+ DeviceTypeNone: func(types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice {
+ return &types.VirtualMachineBootOptionsBootableDevice{}
+ },
DeviceTypeCdrom: func(types.BaseVirtualDevice) types.BaseVirtualMachineBootOptionsBootableDevice {
return &types.VirtualMachineBootOptionsBootableCdromDevice{}
},
@@ -773,17 +777,23 @@ var bootableDevices = map[string]func(device types.BaseVirtualDevice) types.Base
}
// BootOrder returns a list of devices which can be used to set boot order via VirtualMachine.SetBootOptions.
-// The order can any of "ethernet", "cdrom", "floppy" or "disk" or by specific device name.
+// The order can be any of "ethernet", "cdrom", "floppy" or "disk" or by specific device name.
+// A value of "-" will clear the existing boot order on the VC/ESX side.
func (l VirtualDeviceList) BootOrder(order []string) []types.BaseVirtualMachineBootOptionsBootableDevice {
var devices []types.BaseVirtualMachineBootOptionsBootableDevice
for _, name := range order {
if kind, ok := bootableDevices[name]; ok {
+ if name == DeviceTypeNone {
+ // Not covered in the API docs, nor obvious, but this clears the boot order on the VC/ESX side.
+ devices = append(devices, new(types.VirtualMachineBootOptionsBootableDevice))
+ continue
+ }
+
for _, device := range l {
if l.Type(device) == name {
devices = append(devices, kind(device))
}
-
}
continue
}
diff --git a/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go
index b26e2f71c252..7bea49d51e20 100644
--- a/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go
+++ b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager.go
@@ -145,6 +145,47 @@ func (m VirtualDiskManager) DeleteVirtualDisk(ctx context.Context, name string,
return NewTask(m.c, res.Returnval), nil
}
+// InflateVirtualDisk inflates a virtual disk.
+func (m VirtualDiskManager) InflateVirtualDisk(ctx context.Context, name string, dc *Datacenter) (*Task, error) {
+ req := types.InflateVirtualDisk_Task{
+ This: m.Reference(),
+ Name: name,
+ }
+
+ if dc != nil {
+ ref := dc.Reference()
+ req.Datacenter = &ref
+ }
+
+ res, err := methods.InflateVirtualDisk_Task(ctx, m.c, &req)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewTask(m.c, res.Returnval), nil
+}
+
+// ShrinkVirtualDisk shrinks a virtual disk.
+func (m VirtualDiskManager) ShrinkVirtualDisk(ctx context.Context, name string, dc *Datacenter, copy *bool) (*Task, error) {
+ req := types.ShrinkVirtualDisk_Task{
+ This: m.Reference(),
+ Name: name,
+ Copy: copy,
+ }
+
+ if dc != nil {
+ ref := dc.Reference()
+ req.Datacenter = &ref
+ }
+
+ res, err := methods.ShrinkVirtualDisk_Task(ctx, m.c, &req)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewTask(m.c, res.Returnval), nil
+}
+
// Queries virtual disk uuid
func (m VirtualDiskManager) QueryVirtualDiskUuid(ctx context.Context, name string, dc *Datacenter) (string, error) {
req := types.QueryVirtualDiskUuid{
diff --git a/vendor/github.com/vmware/govmomi/object/virtual_disk_manager_internal.go b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager_internal.go
index 642cd62f6e9c..dc747c121baa 100644
--- a/vendor/github.com/vmware/govmomi/object/virtual_disk_manager_internal.go
+++ b/vendor/github.com/vmware/govmomi/object/virtual_disk_manager_internal.go
@@ -95,3 +95,67 @@ func (m VirtualDiskManager) QueryVirtualDiskInfo(ctx context.Context, name strin
return info.Result.(arrayOfVirtualDiskInfo).VirtualDiskInfo, nil
}
+
+type createChildDiskTaskRequest struct {
+ This types.ManagedObjectReference `xml:"_this"`
+ ChildName string `xml:"childName"`
+ ChildDatacenter *types.ManagedObjectReference `xml:"childDatacenter,omitempty"`
+ ParentName string `xml:"parentName"`
+ ParentDatacenter *types.ManagedObjectReference `xml:"parentDatacenter,omitempty"`
+ IsLinkedClone bool `xml:"isLinkedClone"`
+}
+
+type createChildDiskTaskResponse struct {
+ Returnval types.ManagedObjectReference `xml:"returnval"`
+}
+
+type createChildDiskTaskBody struct {
+ Req *createChildDiskTaskRequest `xml:"urn:internalvim25 CreateChildDisk_Task,omitempty"`
+ Res *createChildDiskTaskResponse `xml:"urn:vim25 CreateChildDisk_TaskResponse,omitempty"`
+ InternalRes *createChildDiskTaskResponse `xml:"urn:internalvim25 CreateChildDisk_TaskResponse,omitempty"`
+ Err *soap.Fault `xml:"http://schemas.xmlsoap.org/soap/envelope/ Fault,omitempty"`
+}
+
+func (b *createChildDiskTaskBody) Fault() *soap.Fault { return b.Err }
+
+func createChildDiskTask(ctx context.Context, r soap.RoundTripper, req *createChildDiskTaskRequest) (*createChildDiskTaskResponse, error) {
+ var reqBody, resBody createChildDiskTaskBody
+
+ reqBody.Req = req
+
+ if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil {
+ return nil, err
+ }
+
+ if resBody.Res != nil {
+ return resBody.Res, nil // vim-version <= 6.5
+ }
+
+ return resBody.InternalRes, nil // vim-version >= 6.7
+}
+
+func (m VirtualDiskManager) CreateChildDisk(ctx context.Context, parent string, pdc *Datacenter, name string, dc *Datacenter, linked bool) (*Task, error) {
+ req := createChildDiskTaskRequest{
+ This: m.Reference(),
+ ChildName: name,
+ ParentName: parent,
+ IsLinkedClone: linked,
+ }
+
+ if dc != nil {
+ ref := dc.Reference()
+ req.ChildDatacenter = &ref
+ }
+
+ if pdc != nil {
+ ref := pdc.Reference()
+ req.ParentDatacenter = &ref
+ }
+
+ res, err := createChildDiskTask(ctx, m.Client(), &req)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewTask(m.Client(), res.Returnval), nil
+}
diff --git a/vendor/github.com/vmware/govmomi/object/virtual_machine.go b/vendor/github.com/vmware/govmomi/object/virtual_machine.go
index 8fd6a421b284..511f55723571 100644
--- a/vendor/github.com/vmware/govmomi/object/virtual_machine.go
+++ b/vendor/github.com/vmware/govmomi/object/virtual_machine.go
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2015 VMware, Inc. All Rights Reserved.
+Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -23,6 +23,7 @@ import (
"net"
"path"
+ "github.com/vmware/govmomi/nfc"
"github.com/vmware/govmomi/property"
"github.com/vmware/govmomi/vim25"
"github.com/vmware/govmomi/vim25/methods"
@@ -464,6 +465,20 @@ func (v VirtualMachine) Answer(ctx context.Context, id, answer string) error {
return nil
}
+func (v VirtualMachine) AcquireTicket(ctx context.Context, kind string) (*types.VirtualMachineTicket, error) {
+ req := types.AcquireTicket{
+ This: v.Reference(),
+ TicketType: kind,
+ }
+
+ res, err := methods.AcquireTicket(ctx, v.c, &req)
+ if err != nil {
+ return nil, err
+ }
+
+ return &res.Returnval, nil
+}
+
// CreateSnapshot creates a new snapshot of a virtual machine.
func (v VirtualMachine) CreateSnapshot(ctx context.Context, name string, description string, memory bool, quiesce bool) (*Task, error) {
req := types.CreateSnapshot_Task{
@@ -497,7 +512,7 @@ func (v VirtualMachine) RemoveAllSnapshot(ctx context.Context, consolidate *bool
return NewTask(v.c, res.Returnval), nil
}
-type snapshotMap map[string][]Reference
+type snapshotMap map[string][]types.ManagedObjectReference
func (m snapshotMap) add(parent string, tree []types.VirtualMachineSnapshotTree) {
for i, st := range tree {
@@ -511,18 +526,18 @@ func (m snapshotMap) add(parent string, tree []types.VirtualMachineSnapshotTree)
}
for _, name := range names {
- m[name] = append(m[name], &tree[i].Snapshot)
+ m[name] = append(m[name], tree[i].Snapshot)
}
m.add(sname, st.ChildSnapshotList)
}
}
-// findSnapshot supports snapshot lookup by name, where name can be:
+// FindSnapshot supports snapshot lookup by name, where name can be:
// 1) snapshot ManagedObjectReference.Value (unique)
// 2) snapshot name (may not be unique)
// 3) snapshot tree path (may not be unique)
-func (v VirtualMachine) findSnapshot(ctx context.Context, name string) (Reference, error) {
+func (v VirtualMachine) FindSnapshot(ctx context.Context, name string) (*types.ManagedObjectReference, error) {
var o mo.VirtualMachine
err := v.Properties(ctx, v.Reference(), []string{"snapshot"}, &o)
@@ -542,7 +557,7 @@ func (v VirtualMachine) findSnapshot(ctx context.Context, name string) (Referenc
case 0:
return nil, fmt.Errorf("snapshot %q not found", name)
case 1:
- return s[0], nil
+ return &s[0], nil
default:
return nil, fmt.Errorf("%q resolves to %d snapshots", name, len(s))
}
@@ -550,7 +565,7 @@ func (v VirtualMachine) findSnapshot(ctx context.Context, name string) (Referenc
// RemoveSnapshot removes a named snapshot
func (v VirtualMachine) RemoveSnapshot(ctx context.Context, name string, removeChildren bool, consolidate *bool) (*Task, error) {
- snapshot, err := v.findSnapshot(ctx, name)
+ snapshot, err := v.FindSnapshot(ctx, name)
if err != nil {
return nil, err
}
@@ -586,7 +601,7 @@ func (v VirtualMachine) RevertToCurrentSnapshot(ctx context.Context, suppressPow
// RevertToSnapshot reverts to a named snapshot
func (v VirtualMachine) RevertToSnapshot(ctx context.Context, name string, suppressPowerOn bool) (*Task, error) {
- snapshot, err := v.findSnapshot(ctx, name)
+ snapshot, err := v.FindSnapshot(ctx, name)
if err != nil {
return nil, err
}
@@ -757,3 +772,30 @@ func (v VirtualMachine) UpgradeTools(ctx context.Context, options string) (*Task
return NewTask(v.c, res.Returnval), nil
}
+
+func (v VirtualMachine) Export(ctx context.Context) (*nfc.Lease, error) {
+ req := types.ExportVm{
+ This: v.Reference(),
+ }
+
+ res, err := methods.ExportVm(ctx, v.Client(), &req)
+ if err != nil {
+ return nil, err
+ }
+
+ return nfc.NewLease(v.c, res.Returnval), nil
+}
+
+func (v VirtualMachine) UpgradeVM(ctx context.Context, version string) (*Task, error) {
+ req := types.UpgradeVM_Task{
+ This: v.Reference(),
+ Version: version,
+ }
+
+ res, err := methods.UpgradeVM_Task(ctx, v.Client(), &req)
+ if err != nil {
+ return nil, err
+ }
+
+ return NewTask(v.c, res.Returnval), nil
+}
diff --git a/vendor/github.com/vmware/govmomi/property/collector.go b/vendor/github.com/vmware/govmomi/property/collector.go
index e2059d923f91..ccf712cf9d3b 100644
--- a/vendor/github.com/vmware/govmomi/property/collector.go
+++ b/vendor/github.com/vmware/govmomi/property/collector.go
@@ -30,7 +30,7 @@ import (
// Collector models the PropertyCollector managed object.
//
// For more information, see:
-// http://pubs.vmware.com/vsphere-55/index.jsp#com.vmware.wssdk.apiref.doc/vmodl.query.PropertyCollector.html
+// http://pubs.vmware.com/vsphere-60/index.jsp?topic=%2Fcom.vmware.wssdk.apiref.doc%2Fvmodl.query.PropertyCollector.html
//
type Collector struct {
roundTripper soap.RoundTripper
@@ -121,6 +121,10 @@ func (p *Collector) RetrieveProperties(ctx context.Context, req types.RetrievePr
// of the specified managed objects, with the relevant properties filled in. If
// the properties slice is nil, all properties are loaded.
func (p *Collector) Retrieve(ctx context.Context, objs []types.ManagedObjectReference, ps []string, dst interface{}) error {
+ if len(objs) == 0 {
+ return errors.New("object references is empty")
+ }
+
var propSpec *types.PropertySpec
var objectSet []types.ObjectSpec
diff --git a/vendor/github.com/vmware/govmomi/property/filter.go b/vendor/github.com/vmware/govmomi/property/filter.go
index a6fa1de9ffd6..8284b0c7d82b 100644
--- a/vendor/github.com/vmware/govmomi/property/filter.go
+++ b/vendor/github.com/vmware/govmomi/property/filter.go
@@ -18,7 +18,7 @@ package property
import (
"fmt"
- "path/filepath"
+ "path"
"reflect"
"strconv"
"strings"
@@ -103,7 +103,11 @@ func (f Filter) MatchProperty(prop types.DynamicProperty) bool {
switch pval := prop.Val.(type) {
case string:
- m, _ := filepath.Match(match.(string), pval)
+ s := match.(string)
+ if s == "*" {
+ return true // TODO: path.Match fails if s contains a '/'
+ }
+ m, _ := path.Match(s, pval)
return m
default:
return reflect.DeepEqual(match, pval)
diff --git a/vendor/github.com/vmware/govmomi/property/wait.go b/vendor/github.com/vmware/govmomi/property/wait.go
index 689477bfb85d..fe847926ce9c 100644
--- a/vendor/github.com/vmware/govmomi/property/wait.go
+++ b/vendor/github.com/vmware/govmomi/property/wait.go
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2015 VMware, Inc. All Rights Reserved.
+Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -22,73 +22,63 @@ import (
"github.com/vmware/govmomi/vim25/types"
)
-// Wait waits for any of the specified properties of the specified managed
-// object to change. It calls the specified function for every update it
-// receives. If this function returns false, it continues waiting for
-// subsequent updates. If this function returns true, it stops waiting and
-// returns.
-//
-// To only receive updates for the specified managed object, the function
-// creates a new property collector and calls CreateFilter. A new property
-// collector is required because filters can only be added, not removed.
-//
-// The newly created collector is destroyed before this function returns (both
-// in case of success or error).
-//
-func Wait(ctx context.Context, c *Collector, obj types.ManagedObjectReference, ps []string, f func([]types.PropertyChange) bool) error {
- p, err := c.Create(ctx)
- if err != nil {
- return err
- }
+// WaitFilter provides helpers to construct a types.CreateFilter for use with property.Wait
+type WaitFilter struct {
+ types.CreateFilter
+}
- // Attempt to destroy the collector using the background context, as the
- // specified context may have timed out or have been cancelled.
- defer p.Destroy(context.Background())
+// Add a new ObjectSpec and PropertySpec to the WaitFilter
+func (f *WaitFilter) Add(obj types.ManagedObjectReference, kind string, ps []string, set ...types.BaseSelectionSpec) *WaitFilter {
+ spec := types.ObjectSpec{
+ Obj: obj,
+ SelectSet: set,
+ }
- req := types.CreateFilter{
- Spec: types.PropertyFilterSpec{
- ObjectSet: []types.ObjectSpec{
- {
- Obj: obj,
- },
- },
- PropSet: []types.PropertySpec{
- {
- PathSet: ps,
- Type: obj.Type,
- },
- },
- },
+ pset := types.PropertySpec{
+ Type: kind,
+ PathSet: ps,
}
if len(ps) == 0 {
- req.Spec.PropSet[0].All = types.NewBool(true)
+ pset.All = types.NewBool(true)
}
- err = p.CreateFilter(ctx, req)
- if err != nil {
- return err
- }
- return waitLoop(ctx, p, func(_ types.ManagedObjectReference, pc []types.PropertyChange) bool {
- return f(pc)
+ f.Spec.ObjectSet = append(f.Spec.ObjectSet, spec)
+
+ f.Spec.PropSet = append(f.Spec.PropSet, pset)
+
+ return f
+}
+
+// Wait creates a new WaitFilter and calls the specified function for each ObjectUpdate via WaitForUpdates
+func Wait(ctx context.Context, c *Collector, obj types.ManagedObjectReference, ps []string, f func([]types.PropertyChange) bool) error {
+ filter := new(WaitFilter).Add(obj, obj.Type, ps)
+
+ return WaitForUpdates(ctx, c, filter, func(updates []types.ObjectUpdate) bool {
+ for _, update := range updates {
+ if f(update.ChangeSet) {
+ return true
+ }
+ }
+
+ return false
})
}
-// WaitForView waits for any of the specified properties of the managed
-// objects in the View to change. It calls the specified function for every update it
+// WaitForUpdates waits for any of the specified properties of the specified managed
+// object to change. It calls the specified function for every update it
// receives. If this function returns false, it continues waiting for
// subsequent updates. If this function returns true, it stops waiting and
// returns.
//
-// To only receive updates for the View's specified managed objects, the function
+// To only receive updates for the specified managed object, the function
// creates a new property collector and calls CreateFilter. A new property
// collector is required because filters can only be added, not removed.
//
// The newly created collector is destroyed before this function returns (both
// in case of success or error).
//
-// The code assumes that all objects in the View are the same type
-func WaitForView(ctx context.Context, c *Collector, view types.ManagedObjectReference, obj types.ManagedObjectReference, ps []string, f func(types.ManagedObjectReference, []types.PropertyChange) bool) error {
+func WaitForUpdates(ctx context.Context, c *Collector, filter *WaitFilter, f func([]types.ObjectUpdate) bool) error {
p, err := c.Create(ctx)
if err != nil {
return err
@@ -98,38 +88,13 @@ func WaitForView(ctx context.Context, c *Collector, view types.ManagedObjectRefe
// specified context may have timed out or have been cancelled.
defer p.Destroy(context.Background())
- req := types.CreateFilter{
- Spec: types.PropertyFilterSpec{
- ObjectSet: []types.ObjectSpec{
- {
- Obj: view,
- SelectSet: []types.BaseSelectionSpec{
- &types.TraversalSpec{
- SelectionSpec: types.SelectionSpec{
- Name: "traverseEntities",
- },
- Path: "view",
- Type: view.Type}},
- },
- },
- PropSet: []types.PropertySpec{
- {
- Type: obj.Type,
- PathSet: ps,
- },
- },
- }}
-
- err = p.CreateFilter(ctx, req)
+ err = p.CreateFilter(ctx, filter.CreateFilter)
if err != nil {
return err
}
- return waitLoop(ctx, p, f)
-}
-func waitLoop(ctx context.Context, c *Collector, f func(types.ManagedObjectReference, []types.PropertyChange) bool) error {
for version := ""; ; {
- res, err := c.WaitForUpdates(ctx, version)
+ res, err := p.WaitForUpdates(ctx, version)
if err != nil {
return err
}
@@ -142,12 +107,9 @@ func waitLoop(ctx context.Context, c *Collector, f func(types.ManagedObjectRefer
version = res.Version
for _, fs := range res.FilterSet {
- for _, os := range fs.ObjectSet {
- if f(os.Obj, os.ChangeSet) {
- return nil
- }
+ if f(fs.ObjectSet) {
+ return nil
}
}
}
-
}
diff --git a/vendor/github.com/vmware/govmomi/session/manager.go b/vendor/github.com/vmware/govmomi/session/manager.go
index b4591c1c4dc2..3cbfa9384197 100644
--- a/vendor/github.com/vmware/govmomi/session/manager.go
+++ b/vendor/github.com/vmware/govmomi/session/manager.go
@@ -199,3 +199,31 @@ func (sm *Manager) AcquireLocalTicket(ctx context.Context, userName string) (*ty
return &res.Returnval, nil
}
+
+func (sm *Manager) AcquireCloneTicket(ctx context.Context) (string, error) {
+ req := types.AcquireCloneTicket{
+ This: sm.Reference(),
+ }
+
+ res, err := methods.AcquireCloneTicket(ctx, sm.client, &req)
+ if err != nil {
+ return "", err
+ }
+
+ return res.Returnval, nil
+}
+
+func (sm *Manager) CloneSession(ctx context.Context, ticket string) error {
+ req := types.CloneSession{
+ This: sm.Reference(),
+ CloneTicket: ticket,
+ }
+
+ res, err := methods.CloneSession(ctx, sm.client, &req)
+ if err != nil {
+ return err
+ }
+
+ sm.userSession = &res.Returnval
+ return nil
+}
diff --git a/vendor/github.com/vmware/govmomi/vim25/methods/internal.go b/vendor/github.com/vmware/govmomi/vim25/methods/internal.go
deleted file mode 100644
index a79adf3a874f..000000000000
--- a/vendor/github.com/vmware/govmomi/vim25/methods/internal.go
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
-Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved.
-
-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 methods
-
-import (
- "context"
-
- "github.com/vmware/govmomi/vim25/soap"
- "github.com/vmware/govmomi/vim25/types"
-)
-
-type RetrieveDynamicTypeManagerBody struct {
- Req *types.RetrieveDynamicTypeManager `xml:"urn:vim25 RetrieveDynamicTypeManager"`
- Res *types.RetrieveDynamicTypeManagerResponse `xml:"urn:vim25 RetrieveDynamicTypeManagerResponse"`
- Fault_ *soap.Fault
-}
-
-func (b *RetrieveDynamicTypeManagerBody) Fault() *soap.Fault { return b.Fault_ }
-
-func RetrieveDynamicTypeManager(ctx context.Context, r soap.RoundTripper, req *types.RetrieveDynamicTypeManager) (*types.RetrieveDynamicTypeManagerResponse, error) {
- var reqBody, resBody RetrieveDynamicTypeManagerBody
-
- reqBody.Req = req
-
- if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil {
- return nil, err
- }
-
- return resBody.Res, nil
-}
-
-type RetrieveManagedMethodExecuterBody struct {
- Req *types.RetrieveManagedMethodExecuter `xml:"urn:vim25 RetrieveManagedMethodExecuter"`
- Res *types.RetrieveManagedMethodExecuterResponse `xml:"urn:vim25 RetrieveManagedMethodExecuterResponse"`
- Fault_ *soap.Fault
-}
-
-func (b *RetrieveManagedMethodExecuterBody) Fault() *soap.Fault { return b.Fault_ }
-
-func RetrieveManagedMethodExecuter(ctx context.Context, r soap.RoundTripper, req *types.RetrieveManagedMethodExecuter) (*types.RetrieveManagedMethodExecuterResponse, error) {
- var reqBody, resBody RetrieveManagedMethodExecuterBody
-
- reqBody.Req = req
-
- if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil {
- return nil, err
- }
-
- return resBody.Res, nil
-}
-
-type DynamicTypeMgrQueryMoInstancesBody struct {
- Req *types.DynamicTypeMgrQueryMoInstances `xml:"urn:vim25 DynamicTypeMgrQueryMoInstances"`
- Res *types.DynamicTypeMgrQueryMoInstancesResponse `xml:"urn:vim25 DynamicTypeMgrQueryMoInstancesResponse"`
- Fault_ *soap.Fault
-}
-
-func (b *DynamicTypeMgrQueryMoInstancesBody) Fault() *soap.Fault { return b.Fault_ }
-
-func DynamicTypeMgrQueryMoInstances(ctx context.Context, r soap.RoundTripper, req *types.DynamicTypeMgrQueryMoInstances) (*types.DynamicTypeMgrQueryMoInstancesResponse, error) {
- var reqBody, resBody DynamicTypeMgrQueryMoInstancesBody
-
- reqBody.Req = req
-
- if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil {
- return nil, err
- }
-
- return resBody.Res, nil
-}
-
-type DynamicTypeMgrQueryTypeInfoBody struct {
- Req *types.DynamicTypeMgrQueryTypeInfo `xml:"urn:vim25 DynamicTypeMgrQueryTypeInfo"`
- Res *types.DynamicTypeMgrQueryTypeInfoResponse `xml:"urn:vim25 DynamicTypeMgrQueryTypeInfoResponse"`
- Fault_ *soap.Fault
-}
-
-func (b *DynamicTypeMgrQueryTypeInfoBody) Fault() *soap.Fault { return b.Fault_ }
-
-func DynamicTypeMgrQueryTypeInfo(ctx context.Context, r soap.RoundTripper, req *types.DynamicTypeMgrQueryTypeInfo) (*types.DynamicTypeMgrQueryTypeInfoResponse, error) {
- var reqBody, resBody DynamicTypeMgrQueryTypeInfoBody
-
- reqBody.Req = req
-
- if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil {
- return nil, err
- }
-
- return resBody.Res, nil
-}
-
-type ExecuteSoapBody struct {
- Req *types.ExecuteSoap `xml:"urn:vim25 ExecuteSoap"`
- Res *types.ExecuteSoapResponse `xml:"urn:vim25 ExecuteSoapResponse"`
- Fault_ *soap.Fault
-}
-
-func (b *ExecuteSoapBody) Fault() *soap.Fault { return b.Fault_ }
-
-func ExecuteSoap(ctx context.Context, r soap.RoundTripper, req *types.ExecuteSoap) (*types.ExecuteSoapResponse, error) {
- var reqBody, resBody ExecuteSoapBody
-
- reqBody.Req = req
-
- if err := r.RoundTrip(ctx, &reqBody, &resBody); err != nil {
- return nil, err
- }
-
- return resBody.Res, nil
-}
diff --git a/vendor/github.com/vmware/govmomi/vim25/progress/reader.go b/vendor/github.com/vmware/govmomi/vim25/progress/reader.go
index a981cb4e1529..ba8867508227 100644
--- a/vendor/github.com/vmware/govmomi/vim25/progress/reader.go
+++ b/vendor/github.com/vmware/govmomi/vim25/progress/reader.go
@@ -18,6 +18,7 @@ package progress
import (
"container/list"
+ "context"
"fmt"
"io"
"sync/atomic"
@@ -75,16 +76,16 @@ type reader struct {
pos int64
size int64
+ bps uint64
- bps uint64
-
- ch chan<- Report
+ ch chan<- Report
+ ctx context.Context
}
-func NewReader(s Sinker, r io.Reader, size int64) *reader {
+func NewReader(ctx context.Context, s Sinker, r io.Reader, size int64) *reader {
pr := reader{
- r: r,
-
+ r: r,
+ ctx: ctx,
size: size,
}
@@ -111,7 +112,10 @@ func (r *reader) Read(b []byte) (int, error) {
bps: &r.bps,
}
- r.ch <- q
+ select {
+ case r.ch <- q:
+ case <-r.ctx.Done():
+ }
return n, err
}
@@ -127,8 +131,11 @@ func (r *reader) Done(err error) {
err: err,
}
- r.ch <- q
- close(r.ch)
+ select {
+ case r.ch <- q:
+ close(r.ch)
+ case <-r.ctx.Done():
+ }
}
// newBpsLoop returns a sink that monitors and stores throughput.
diff --git a/vendor/github.com/vmware/govmomi/vim25/soap/client.go b/vendor/github.com/vmware/govmomi/vim25/soap/client.go
index 9ac3cc4d6d90..76592493ccd5 100644
--- a/vendor/github.com/vmware/govmomi/vim25/soap/client.go
+++ b/vendor/github.com/vmware/govmomi/vim25/soap/client.go
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2014-2015 VMware, Inc. All Rights Reserved.
+Copyright (c) 2014-2018 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -56,10 +56,12 @@ const (
DefaultVimNamespace = "urn:vim25"
DefaultVimVersion = "6.5"
DefaultMinVimVersion = "5.5"
+ SessionCookieName = "vmware_soap_session"
)
type header struct {
Cookie string `xml:"vcSessionCookie,omitempty"`
+ ID string `xml:"operationID,omitempty"`
}
type Client struct {
@@ -78,7 +80,7 @@ type Client struct {
Version string // Vim version
UserAgent string
- header *header
+ cookie string
}
var schemeMatch = regexp.MustCompile(`^\w+://`)
@@ -167,11 +169,8 @@ func (c *Client) NewServiceClient(path string, namespace string) *Client {
// Set SOAP Header cookie
for _, cookie := range client.Jar.Cookies(u) {
- if cookie.Name == "vmware_soap_session" {
- client.header = &header{
- Cookie: cookie.Value,
- }
-
+ if cookie.Name == SessionCookieName {
+ client.cookie = cookie.Value
break
}
}
@@ -433,7 +432,15 @@ func (c *Client) RoundTrip(ctx context.Context, reqBody, resBody HasFault) error
reqEnv := Envelope{Body: reqBody}
resEnv := Envelope{Body: resBody}
- reqEnv.Header = c.header
+ h := &header{
+ Cookie: c.cookie,
+ }
+
+ if id, ok := ctx.Value(types.ID{}).(string); ok {
+ h.ID = id
+ }
+
+ reqEnv.Header = h
// Create debugging context for this round trip
d := c.d.newRoundTrip()
@@ -452,6 +459,8 @@ func (c *Client) RoundTrip(ctx context.Context, reqBody, resBody HasFault) error
panic(err)
}
+ req = req.WithContext(ctx)
+
req.Header.Set(`Content-Type`, `text/xml; charset="utf-8"`)
soapAction := fmt.Sprintf("%s/%s", c.Namespace, c.Version)
req.Header.Set(`SOAPAction`, soapAction)
@@ -542,11 +551,11 @@ var DefaultUpload = Upload{
}
// Upload PUTs the local file to the given URL
-func (c *Client) Upload(f io.Reader, u *url.URL, param *Upload) error {
+func (c *Client) Upload(ctx context.Context, f io.Reader, u *url.URL, param *Upload) error {
var err error
if param.Progress != nil {
- pr := progress.NewReader(param.Progress, f, param.ContentLength)
+ pr := progress.NewReader(ctx, param.Progress, f, param.ContentLength)
f = pr
// Mark progress reader as done when returning from this function.
@@ -560,6 +569,8 @@ func (c *Client) Upload(f io.Reader, u *url.URL, param *Upload) error {
return err
}
+ req = req.WithContext(ctx)
+
req.ContentLength = param.ContentLength
req.Header.Set("Content-Type", param.Type)
@@ -587,7 +598,7 @@ func (c *Client) Upload(f io.Reader, u *url.URL, param *Upload) error {
}
// UploadFile PUTs the local file to the given URL
-func (c *Client) UploadFile(file string, u *url.URL, param *Upload) error {
+func (c *Client) UploadFile(ctx context.Context, file string, u *url.URL, param *Upload) error {
if param == nil {
p := DefaultUpload // Copy since we set ContentLength
param = &p
@@ -606,7 +617,7 @@ func (c *Client) UploadFile(file string, u *url.URL, param *Upload) error {
param.ContentLength = s.Size()
- return c.Upload(f, u, param)
+ return c.Upload(ctx, f, u, param)
}
type Download struct {
@@ -614,6 +625,7 @@ type Download struct {
Headers map[string]string
Ticket *http.Cookie
Progress progress.Sinker
+ Writer io.Writer
}
var DefaultDownload = Download{
@@ -621,12 +633,14 @@ var DefaultDownload = Download{
}
// DownloadRequest wraps http.Client.Do, returning the http.Response without checking its StatusCode
-func (c *Client) DownloadRequest(u *url.URL, param *Download) (*http.Response, error) {
+func (c *Client) DownloadRequest(ctx context.Context, u *url.URL, param *Download) (*http.Response, error) {
req, err := http.NewRequest(param.Method, u.String(), nil)
if err != nil {
return nil, err
}
+ req = req.WithContext(ctx)
+
for k, v := range param.Headers {
req.Header.Add(k, v)
}
@@ -639,8 +653,8 @@ func (c *Client) DownloadRequest(u *url.URL, param *Download) (*http.Response, e
}
// Download GETs the remote file from the given URL
-func (c *Client) Download(u *url.URL, param *Download) (io.ReadCloser, int64, error) {
- res, err := c.DownloadRequest(u, param)
+func (c *Client) Download(ctx context.Context, u *url.URL, param *Download) (io.ReadCloser, int64, error) {
+ res, err := c.DownloadRequest(ctx, u, param)
if err != nil {
return nil, 0, err
}
@@ -655,33 +669,24 @@ func (c *Client) Download(u *url.URL, param *Download) (io.ReadCloser, int64, er
return nil, 0, err
}
- return res.Body, res.ContentLength, nil
+ r := res.Body
+
+ return r, res.ContentLength, nil
}
-// DownloadFile GETs the given URL to a local file
-func (c *Client) DownloadFile(file string, u *url.URL, param *Download) error {
+func (c *Client) WriteFile(ctx context.Context, file string, src io.Reader, size int64, s progress.Sinker, w io.Writer) error {
var err error
- if param == nil {
- param = &DefaultDownload
- }
- rc, contentLength, err := c.Download(u, param)
- if err != nil {
- return err
- }
- defer rc.Close()
-
- var r io.Reader = rc
+ r := src
fh, err := os.Create(file)
if err != nil {
return err
}
- defer fh.Close()
- if param.Progress != nil {
- pr := progress.NewReader(param.Progress, r, contentLength)
- r = pr
+ if s != nil {
+ pr := progress.NewReader(ctx, s, src, size)
+ src = pr
// Mark progress reader as done when returning from this function.
defer func() {
@@ -689,17 +694,34 @@ func (c *Client) DownloadFile(file string, u *url.URL, param *Download) error {
}()
}
- _, err = io.Copy(fh, r)
- if err != nil {
- return err
+ if w == nil {
+ w = fh
+ } else {
+ w = io.MultiWriter(w, fh)
+ }
+
+ _, err = io.Copy(w, r)
+
+ cerr := fh.Close()
+
+ if err == nil {
+ err = cerr
+ }
+
+ return err
+}
+
+// DownloadFile GETs the given URL to a local file
+func (c *Client) DownloadFile(ctx context.Context, file string, u *url.URL, param *Download) error {
+ var err error
+ if param == nil {
+ param = &DefaultDownload
}
- // Assign error before returning so that it gets picked up by the deferred
- // function marking the progress reader as done.
- err = fh.Close()
+ rc, contentLength, err := c.Download(ctx, u, param)
if err != nil {
return err
}
- return nil
+ return c.WriteFile(ctx, file, rc, contentLength, param.Progress, param.Writer)
}
diff --git a/vendor/github.com/vmware/govmomi/vim25/types/helpers.go b/vendor/github.com/vmware/govmomi/vim25/types/helpers.go
index 2364ed4213cd..7ccfd29b634a 100644
--- a/vendor/github.com/vmware/govmomi/vim25/types/helpers.go
+++ b/vendor/github.com/vmware/govmomi/vim25/types/helpers.go
@@ -1,5 +1,5 @@
/*
-Copyright (c) 2015 VMware, Inc. All Rights Reserved.
+Copyright (c) 2015-2017 VMware, Inc. All Rights Reserved.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
@@ -16,12 +16,28 @@ limitations under the License.
package types
-import "strings"
+import (
+ "reflect"
+ "strings"
+ "time"
+)
func NewBool(v bool) *bool {
return &v
}
+func NewInt32(v int32) *int32 {
+ return &v
+}
+
+func NewInt64(v int64) *int64 {
+ return &v
+}
+
+func NewTime(v time.Time) *time.Time {
+ return &v
+}
+
func NewReference(r ManagedObjectReference) *ManagedObjectReference {
return &r
}
@@ -50,3 +66,30 @@ func (r *ManagedObjectReference) FromString(o string) bool {
func (c *PerfCounterInfo) Name() string {
return c.GroupInfo.GetElementDescription().Key + "." + c.NameInfo.GetElementDescription().Key + "." + string(c.RollupType)
}
+
+func defaultResourceAllocationInfo() ResourceAllocationInfo {
+ return ResourceAllocationInfo{
+ Reservation: NewInt64(0),
+ ExpandableReservation: NewBool(true),
+ Limit: NewInt64(-1),
+ Shares: &SharesInfo{
+ Level: SharesLevelNormal,
+ },
+ }
+}
+
+// DefaultResourceConfigSpec returns a ResourceConfigSpec populated with the same default field values as vCenter.
+// Note that the wsdl marks these fields as optional, but they are required to be set when creating a resource pool.
+// They are only optional when updating a resource pool.
+func DefaultResourceConfigSpec() ResourceConfigSpec {
+ return ResourceConfigSpec{
+ CpuAllocation: defaultResourceAllocationInfo(),
+ MemoryAllocation: defaultResourceAllocationInfo(),
+ }
+}
+
+func init() {
+ // Known 6.5 issue where this event type is sent even though it is internal.
+ // This workaround allows us to unmarshal and avoid NPEs.
+ t["HostSubSpecificationUpdateEvent"] = reflect.TypeOf((*HostEvent)(nil)).Elem()
+}
diff --git a/vendor/github.com/vmware/govmomi/vim25/types/if.go b/vendor/github.com/vmware/govmomi/vim25/types/if.go
index dbf594cfc0a5..5b93cb433f13 100644
--- a/vendor/github.com/vmware/govmomi/vim25/types/if.go
+++ b/vendor/github.com/vmware/govmomi/vim25/types/if.go
@@ -2360,16 +2360,6 @@ func init() {
t["BaseReplicationVmFault"] = reflect.TypeOf((*ReplicationVmFault)(nil)).Elem()
}
-func (b *ResourceAllocationInfo) GetResourceAllocationInfo() *ResourceAllocationInfo { return b }
-
-type BaseResourceAllocationInfo interface {
- GetResourceAllocationInfo() *ResourceAllocationInfo
-}
-
-func init() {
- t["BaseResourceAllocationInfo"] = reflect.TypeOf((*ResourceAllocationInfo)(nil)).Elem()
-}
-
func (b *ResourceInUse) GetResourceInUse() *ResourceInUse { return b }
type BaseResourceInUse interface {
diff --git a/vendor/github.com/vmware/govmomi/vim25/types/internal.go b/vendor/github.com/vmware/govmomi/vim25/types/internal.go
deleted file mode 100644
index 0c2693499b67..000000000000
--- a/vendor/github.com/vmware/govmomi/vim25/types/internal.go
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
-Copyright (c) 2014 VMware, Inc. All Rights Reserved.
-
-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 types
-
-import "reflect"
-
-type DynamicTypeMgrQueryMoInstances struct {
- This ManagedObjectReference `xml:"_this"`
- FilterSpec BaseDynamicTypeMgrFilterSpec `xml:"filterSpec,omitempty,typeattr"`
-}
-
-type DynamicTypeMgrQueryMoInstancesResponse struct {
- Returnval []DynamicTypeMgrMoInstance `xml:"urn:vim25 returnval"`
-}
-
-type DynamicTypeEnumTypeInfo struct {
- DynamicData
-
- Name string `xml:"name"`
- WsdlName string `xml:"wsdlName"`
- Version string `xml:"version"`
- Value []string `xml:"value,omitempty"`
- Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"`
-}
-
-func init() {
- t["DynamicTypeEnumTypeInfo"] = reflect.TypeOf((*DynamicTypeEnumTypeInfo)(nil)).Elem()
-}
-
-type DynamicTypeMgrAllTypeInfo struct {
- DynamicData
-
- ManagedTypeInfo []DynamicTypeMgrManagedTypeInfo `xml:"managedTypeInfo,omitempty"`
- EnumTypeInfo []DynamicTypeEnumTypeInfo `xml:"enumTypeInfo,omitempty"`
- DataTypeInfo []DynamicTypeMgrDataTypeInfo `xml:"dataTypeInfo,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrAllTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrAllTypeInfo)(nil)).Elem()
-}
-
-type DynamicTypeMgrAnnotation struct {
- DynamicData
-
- Name string `xml:"name"`
- Parameter []string `xml:"parameter,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrAnnotation"] = reflect.TypeOf((*DynamicTypeMgrAnnotation)(nil)).Elem()
-}
-
-type DynamicTypeMgrDataTypeInfo struct {
- DynamicData
-
- Name string `xml:"name"`
- WsdlName string `xml:"wsdlName"`
- Version string `xml:"version"`
- Base []string `xml:"base,omitempty"`
- Property []DynamicTypeMgrPropertyTypeInfo `xml:"property,omitempty"`
- Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrDataTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrDataTypeInfo)(nil)).Elem()
-}
-
-func (b *DynamicTypeMgrFilterSpec) GetDynamicTypeMgrFilterSpec() *DynamicTypeMgrFilterSpec { return b }
-
-type BaseDynamicTypeMgrFilterSpec interface {
- GetDynamicTypeMgrFilterSpec() *DynamicTypeMgrFilterSpec
-}
-
-type DynamicTypeMgrFilterSpec struct {
- DynamicData
-}
-
-func init() {
- t["DynamicTypeMgrFilterSpec"] = reflect.TypeOf((*DynamicTypeMgrFilterSpec)(nil)).Elem()
-}
-
-type DynamicTypeMgrManagedTypeInfo struct {
- DynamicData
-
- Name string `xml:"name"`
- WsdlName string `xml:"wsdlName"`
- Version string `xml:"version"`
- Base []string `xml:"base,omitempty"`
- Property []DynamicTypeMgrPropertyTypeInfo `xml:"property,omitempty"`
- Method []DynamicTypeMgrMethodTypeInfo `xml:"method,omitempty"`
- Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrManagedTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrManagedTypeInfo)(nil)).Elem()
-}
-
-type DynamicTypeMgrMethodTypeInfo struct {
- DynamicData
-
- Name string `xml:"name"`
- WsdlName string `xml:"wsdlName"`
- Version string `xml:"version"`
- ParamTypeInfo []DynamicTypeMgrParamTypeInfo `xml:"paramTypeInfo,omitempty"`
- ReturnTypeInfo *DynamicTypeMgrParamTypeInfo `xml:"returnTypeInfo,omitempty"`
- Fault []string `xml:"fault,omitempty"`
- PrivId string `xml:"privId,omitempty"`
- Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrMethodTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrMethodTypeInfo)(nil)).Elem()
-}
-
-type DynamicTypeMgrMoFilterSpec struct {
- DynamicTypeMgrFilterSpec
-
- Id string `xml:"id,omitempty"`
- TypeSubstr string `xml:"typeSubstr,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrMoFilterSpec"] = reflect.TypeOf((*DynamicTypeMgrMoFilterSpec)(nil)).Elem()
-}
-
-type DynamicTypeMgrMoInstance struct {
- DynamicData
-
- Id string `xml:"id"`
- MoType string `xml:"moType"`
-}
-
-func init() {
- t["DynamicTypeMgrMoInstance"] = reflect.TypeOf((*DynamicTypeMgrMoInstance)(nil)).Elem()
-}
-
-type DynamicTypeMgrParamTypeInfo struct {
- DynamicData
-
- Name string `xml:"name"`
- Version string `xml:"version"`
- Type string `xml:"type"`
- PrivId string `xml:"privId,omitempty"`
- Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrParamTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrParamTypeInfo)(nil)).Elem()
-}
-
-type DynamicTypeMgrPropertyTypeInfo struct {
- DynamicData
-
- Name string `xml:"name"`
- Version string `xml:"version"`
- Type string `xml:"type"`
- PrivId string `xml:"privId,omitempty"`
- MsgIdFormat string `xml:"msgIdFormat,omitempty"`
- Annotation []DynamicTypeMgrAnnotation `xml:"annotation,omitempty"`
-}
-
-type DynamicTypeMgrQueryTypeInfo struct {
- This ManagedObjectReference `xml:"_this"`
- FilterSpec BaseDynamicTypeMgrFilterSpec `xml:"filterSpec,omitempty,typeattr"`
-}
-
-type DynamicTypeMgrQueryTypeInfoResponse struct {
- Returnval DynamicTypeMgrAllTypeInfo `xml:"urn:vim25 returnval"`
-}
-
-func init() {
- t["DynamicTypeMgrPropertyTypeInfo"] = reflect.TypeOf((*DynamicTypeMgrPropertyTypeInfo)(nil)).Elem()
-}
-
-type DynamicTypeMgrTypeFilterSpec struct {
- DynamicTypeMgrFilterSpec
-
- TypeSubstr string `xml:"typeSubstr,omitempty"`
-}
-
-func init() {
- t["DynamicTypeMgrTypeFilterSpec"] = reflect.TypeOf((*DynamicTypeMgrTypeFilterSpec)(nil)).Elem()
-}
-
-type ReflectManagedMethodExecuterSoapArgument struct {
- DynamicData
-
- Name string `xml:"name"`
- Val string `xml:"val"`
-}
-
-func init() {
- t["ReflectManagedMethodExecuterSoapArgument"] = reflect.TypeOf((*ReflectManagedMethodExecuterSoapArgument)(nil)).Elem()
-}
-
-type ReflectManagedMethodExecuterSoapFault struct {
- DynamicData
-
- FaultMsg string `xml:"faultMsg"`
- FaultDetail string `xml:"faultDetail,omitempty"`
-}
-
-func init() {
- t["ReflectManagedMethodExecuterSoapFault"] = reflect.TypeOf((*ReflectManagedMethodExecuterSoapFault)(nil)).Elem()
-}
-
-type ReflectManagedMethodExecuterSoapResult struct {
- DynamicData
-
- Response string `xml:"response,omitempty"`
- Fault *ReflectManagedMethodExecuterSoapFault `xml:"fault,omitempty"`
-}
-
-type RetrieveDynamicTypeManager struct {
- This ManagedObjectReference `xml:"_this"`
-}
-
-type RetrieveDynamicTypeManagerResponse struct {
- Returnval *InternalDynamicTypeManager `xml:"urn:vim25 returnval"`
-}
-
-type RetrieveManagedMethodExecuter struct {
- This ManagedObjectReference `xml:"_this"`
-}
-
-func init() {
- t["RetrieveManagedMethodExecuter"] = reflect.TypeOf((*RetrieveManagedMethodExecuter)(nil)).Elem()
-}
-
-type RetrieveManagedMethodExecuterResponse struct {
- Returnval *ReflectManagedMethodExecuter `xml:"urn:vim25 returnval"`
-}
-
-type InternalDynamicTypeManager struct {
- ManagedObjectReference
-}
-
-type ReflectManagedMethodExecuter struct {
- ManagedObjectReference
-}
-
-type ExecuteSoap struct {
- This ManagedObjectReference `xml:"_this"`
- Moid string `xml:"moid"`
- Version string `xml:"version"`
- Method string `xml:"method"`
- Argument []ReflectManagedMethodExecuterSoapArgument `xml:"argument,omitempty"`
-}
-
-type ExecuteSoapResponse struct {
- Returnval *ReflectManagedMethodExecuterSoapResult `xml:"urn:vim25 returnval"`
-}
diff --git a/vendor/github.com/vmware/govmomi/vim25/types/types.go b/vendor/github.com/vmware/govmomi/vim25/types/types.go
index fa62c01815d2..564fd18ea9e5 100644
--- a/vendor/github.com/vmware/govmomi/vim25/types/types.go
+++ b/vendor/github.com/vmware/govmomi/vim25/types/types.go
@@ -11331,7 +11331,7 @@ func init() {
type DVSNetworkResourcePoolAllocationInfo struct {
DynamicData
- Limit int64 `xml:"limit,omitempty"`
+ Limit *int64 `xml:"limit"`
Shares *SharesInfo `xml:"shares,omitempty"`
PriorityTag int32 `xml:"priorityTag,omitempty"`
}
@@ -14165,9 +14165,9 @@ func init() {
type DvsHostInfrastructureTrafficResourceAllocation struct {
DynamicData
- Limit int64 `xml:"limit,omitempty"`
+ Limit *int64 `xml:"limit"`
Shares *SharesInfo `xml:"shares,omitempty"`
- Reservation int64 `xml:"reservation,omitempty"`
+ Reservation *int64 `xml:"reservation"`
}
func init() {
@@ -14846,7 +14846,7 @@ type DvsVnicAllocatedResource struct {
Vm ManagedObjectReference `xml:"vm"`
VnicKey string `xml:"vnicKey"`
- Reservation int64 `xml:"reservation,omitempty"`
+ Reservation *int64 `xml:"reservation"`
}
func init() {
@@ -18341,9 +18341,9 @@ func init() {
type GuestPosixFileAttributes struct {
GuestFileAttributes
- OwnerId int32 `xml:"ownerId,omitempty"`
- GroupId int32 `xml:"groupId,omitempty"`
- Permissions int64 `xml:"permissions,omitempty"`
+ OwnerId *int32 `xml:"ownerId"`
+ GroupId *int32 `xml:"groupId"`
+ Permissions int64 `xml:"permissions,omitempty"`
}
func init() {
@@ -22589,7 +22589,7 @@ type HostPlacedVirtualNicIdentifier struct {
Vm ManagedObjectReference `xml:"vm"`
VnicKey string `xml:"vnicKey"`
- Reservation int32 `xml:"reservation,omitempty"`
+ Reservation *int32 `xml:"reservation"`
}
func init() {
@@ -27456,7 +27456,7 @@ type LimitExceeded struct {
VimFault
Property string `xml:"property,omitempty"`
- Limit int32 `xml:"limit,omitempty"`
+ Limit *int32 `xml:"limit"`
}
func init() {
@@ -27624,7 +27624,7 @@ func init() {
type ListKeysRequestType struct {
This ManagedObjectReference `xml:"_this"`
- Limit int32 `xml:"limit,omitempty"`
+ Limit *int32 `xml:"limit"`
}
func init() {
@@ -27643,7 +27643,7 @@ func init() {
type ListKmipServersRequestType struct {
This ManagedObjectReference `xml:"_this"`
- Limit int32 `xml:"limit,omitempty"`
+ Limit *int32 `xml:"limit"`
}
func init() {
@@ -28546,7 +28546,7 @@ func init() {
type MethodActionArgument struct {
DynamicData
- Value AnyType `xml:"value,omitempty,typeattr"`
+ Value AnyType `xml:"value,typeattr"`
}
func init() {
@@ -29452,7 +29452,7 @@ func init() {
type NamespaceLimitReached struct {
VimFault
- Limit int32 `xml:"limit,omitempty"`
+ Limit *int32 `xml:"limit"`
}
func init() {
@@ -31074,7 +31074,7 @@ type OptionValue struct {
DynamicData
Key string `xml:"key"`
- Value AnyType `xml:"value,omitempty,typeattr"`
+ Value AnyType `xml:"value,typeattr"`
}
func init() {
@@ -34231,7 +34231,7 @@ type PropertyChange struct {
Name string `xml:"name"`
Op PropertyChangeOp `xml:"op"`
- Val AnyType `xml:"val,omitempty,typeattr"`
+ Val AnyType `xml:"val,typeattr"`
}
func init() {
@@ -36332,7 +36332,7 @@ func init() {
type QueryVsanObjectUuidsByFilterRequestType struct {
This ManagedObjectReference `xml:"_this"`
Uuids []string `xml:"uuids,omitempty"`
- Limit int32 `xml:"limit,omitempty"`
+ Limit *int32 `xml:"limit"`
Version int32 `xml:"version,omitempty"`
}
@@ -39065,11 +39065,11 @@ type ResolveMultipleUnresolvedVmfsVolumesResponse struct {
type ResourceAllocationInfo struct {
DynamicData
- Reservation int64 `xml:"reservation,omitempty"`
+ Reservation *int64 `xml:"reservation"`
ExpandableReservation *bool `xml:"expandableReservation"`
- Limit int64 `xml:"limit,omitempty"`
+ Limit *int64 `xml:"limit"`
Shares *SharesInfo `xml:"shares,omitempty"`
- OverheadLimit int64 `xml:"overheadLimit,omitempty"`
+ OverheadLimit *int64 `xml:"overheadLimit"`
}
func init() {
@@ -39100,11 +39100,11 @@ func init() {
type ResourceConfigSpec struct {
DynamicData
- Entity *ManagedObjectReference `xml:"entity,omitempty"`
- ChangeVersion string `xml:"changeVersion,omitempty"`
- LastModified *time.Time `xml:"lastModified"`
- CpuAllocation BaseResourceAllocationInfo `xml:"cpuAllocation,typeattr"`
- MemoryAllocation BaseResourceAllocationInfo `xml:"memoryAllocation,typeattr"`
+ Entity *ManagedObjectReference `xml:"entity,omitempty"`
+ ChangeVersion string `xml:"changeVersion,omitempty"`
+ LastModified *time.Time `xml:"lastModified"`
+ CpuAllocation ResourceAllocationInfo `xml:"cpuAllocation"`
+ MemoryAllocation ResourceAllocationInfo `xml:"memoryAllocation"`
}
func init() {
@@ -42322,9 +42322,9 @@ func init() {
type StorageIOAllocationInfo struct {
DynamicData
- Limit int64 `xml:"limit,omitempty"`
+ Limit *int64 `xml:"limit"`
Shares *SharesInfo `xml:"shares,omitempty"`
- Reservation int32 `xml:"reservation,omitempty"`
+ Reservation *int32 `xml:"reservation"`
}
func init() {
@@ -47957,9 +47957,9 @@ func init() {
type VirtualEthernetCardResourceAllocation struct {
DynamicData
- Reservation int64 `xml:"reservation,omitempty"`
+ Reservation *int64 `xml:"reservation"`
Share SharesInfo `xml:"share"`
- Limit int64 `xml:"limit,omitempty"`
+ Limit *int64 `xml:"limit"`
}
func init() {
@@ -48188,7 +48188,7 @@ func init() {
type VirtualMachineAffinityInfo struct {
DynamicData
- AffinitySet []int32 `xml:"affinitySet,omitempty"`
+ AffinitySet []int32 `xml:"affinitySet"`
}
func init() {
@@ -48356,8 +48356,8 @@ type VirtualMachineConfigInfo struct {
ConsolePreferences *VirtualMachineConsolePreferences `xml:"consolePreferences,omitempty"`
DefaultPowerOps VirtualMachineDefaultPowerOpInfo `xml:"defaultPowerOps"`
Hardware VirtualHardware `xml:"hardware"`
- CpuAllocation BaseResourceAllocationInfo `xml:"cpuAllocation,omitempty,typeattr"`
- MemoryAllocation BaseResourceAllocationInfo `xml:"memoryAllocation,omitempty,typeattr"`
+ CpuAllocation *ResourceAllocationInfo `xml:"cpuAllocation,omitempty"`
+ MemoryAllocation *ResourceAllocationInfo `xml:"memoryAllocation,omitempty"`
LatencySensitivity *LatencySensitivity `xml:"latencySensitivity,omitempty"`
MemoryHotAddEnabled *bool `xml:"memoryHotAddEnabled"`
CpuHotAddEnabled *bool `xml:"cpuHotAddEnabled"`
@@ -48493,8 +48493,8 @@ type VirtualMachineConfigSpec struct {
VirtualICH7MPresent *bool `xml:"virtualICH7MPresent"`
VirtualSMCPresent *bool `xml:"virtualSMCPresent"`
DeviceChange []BaseVirtualDeviceConfigSpec `xml:"deviceChange,omitempty,typeattr"`
- CpuAllocation BaseResourceAllocationInfo `xml:"cpuAllocation,omitempty,typeattr"`
- MemoryAllocation BaseResourceAllocationInfo `xml:"memoryAllocation,omitempty,typeattr"`
+ CpuAllocation *ResourceAllocationInfo `xml:"cpuAllocation,omitempty"`
+ MemoryAllocation *ResourceAllocationInfo `xml:"memoryAllocation,omitempty"`
LatencySensitivity *LatencySensitivity `xml:"latencySensitivity,omitempty"`
CpuAffinity *VirtualMachineAffinityInfo `xml:"cpuAffinity,omitempty"`
MemoryAffinity *VirtualMachineAffinityInfo `xml:"memoryAffinity,omitempty"`
@@ -53154,8 +53154,8 @@ type WaitForUpdatesResponse struct {
type WaitOptions struct {
DynamicData
- MaxWaitSeconds int32 `xml:"maxWaitSeconds,omitempty"`
- MaxObjectUpdates int32 `xml:"maxObjectUpdates,omitempty"`
+ MaxWaitSeconds *int32 `xml:"maxWaitSeconds"`
+ MaxObjectUpdates int32 `xml:"maxObjectUpdates,omitempty"`
}
func init() {
diff --git a/vendor/golang.org/x/sys/windows/svc/event.go b/vendor/golang.org/x/sys/windows/svc/event.go
new file mode 100644
index 000000000000..0508e2288184
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/event.go
@@ -0,0 +1,48 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+package svc
+
+import (
+ "errors"
+
+ "golang.org/x/sys/windows"
+)
+
+// event represents auto-reset, initially non-signaled Windows event.
+// It is used to communicate between go and asm parts of this package.
+type event struct {
+ h windows.Handle
+}
+
+func newEvent() (*event, error) {
+ h, err := windows.CreateEvent(nil, 0, 0, nil)
+ if err != nil {
+ return nil, err
+ }
+ return &event{h: h}, nil
+}
+
+func (e *event) Close() error {
+ return windows.CloseHandle(e.h)
+}
+
+func (e *event) Set() error {
+ return windows.SetEvent(e.h)
+}
+
+func (e *event) Wait() error {
+ s, err := windows.WaitForSingleObject(e.h, windows.INFINITE)
+ switch s {
+ case windows.WAIT_OBJECT_0:
+ break
+ case windows.WAIT_FAILED:
+ return err
+ default:
+ return errors.New("unexpected result from WaitForSingleObject")
+ }
+ return nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/go12.c b/vendor/golang.org/x/sys/windows/svc/go12.c
new file mode 100644
index 000000000000..6f1be1fa3bcb
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/go12.c
@@ -0,0 +1,24 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+// +build !go1.3
+
+// copied from pkg/runtime
+typedef unsigned int uint32;
+typedef unsigned long long int uint64;
+#ifdef _64BIT
+typedef uint64 uintptr;
+#else
+typedef uint32 uintptr;
+#endif
+
+// from sys_386.s or sys_amd64.s
+void ·servicemain(void);
+
+void
+·getServiceMain(uintptr *r)
+{
+ *r = (uintptr)·servicemain;
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/go12.go b/vendor/golang.org/x/sys/windows/svc/go12.go
new file mode 100644
index 000000000000..cd8b913c99d4
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/go12.go
@@ -0,0 +1,11 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+// +build !go1.3
+
+package svc
+
+// from go12.c
+func getServiceMain(r *uintptr)
diff --git a/vendor/golang.org/x/sys/windows/svc/go13.go b/vendor/golang.org/x/sys/windows/svc/go13.go
new file mode 100644
index 000000000000..9d7f3cec54cd
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/go13.go
@@ -0,0 +1,31 @@
+// Copyright 2014 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+// +build go1.3
+
+package svc
+
+import "unsafe"
+
+const ptrSize = 4 << (^uintptr(0) >> 63) // unsafe.Sizeof(uintptr(0)) but an ideal const
+
+// Should be a built-in for unsafe.Pointer?
+func add(p unsafe.Pointer, x uintptr) unsafe.Pointer {
+ return unsafe.Pointer(uintptr(p) + x)
+}
+
+// funcPC returns the entry PC of the function f.
+// It assumes that f is a func value. Otherwise the behavior is undefined.
+func funcPC(f interface{}) uintptr {
+ return **(**uintptr)(add(unsafe.Pointer(&f), ptrSize))
+}
+
+// from sys_386.s and sys_amd64.s
+func servicectlhandler(ctl uint32) uintptr
+func servicemain(argc uint32, argv **uint16)
+
+func getServiceMain(r *uintptr) {
+ *r = funcPC(servicemain)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/security.go b/vendor/golang.org/x/sys/windows/svc/security.go
new file mode 100644
index 000000000000..6fbc9236ed53
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/security.go
@@ -0,0 +1,62 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+package svc
+
+import (
+ "unsafe"
+
+ "golang.org/x/sys/windows"
+)
+
+func allocSid(subAuth0 uint32) (*windows.SID, error) {
+ var sid *windows.SID
+ err := windows.AllocateAndInitializeSid(&windows.SECURITY_NT_AUTHORITY,
+ 1, subAuth0, 0, 0, 0, 0, 0, 0, 0, &sid)
+ if err != nil {
+ return nil, err
+ }
+ return sid, nil
+}
+
+// IsAnInteractiveSession determines if calling process is running interactively.
+// It queries the process token for membership in the Interactive group.
+// http://stackoverflow.com/questions/2668851/how-do-i-detect-that-my-application-is-running-as-service-or-in-an-interactive-s
+func IsAnInteractiveSession() (bool, error) {
+ interSid, err := allocSid(windows.SECURITY_INTERACTIVE_RID)
+ if err != nil {
+ return false, err
+ }
+ defer windows.FreeSid(interSid)
+
+ serviceSid, err := allocSid(windows.SECURITY_SERVICE_RID)
+ if err != nil {
+ return false, err
+ }
+ defer windows.FreeSid(serviceSid)
+
+ t, err := windows.OpenCurrentProcessToken()
+ if err != nil {
+ return false, err
+ }
+ defer t.Close()
+
+ gs, err := t.GetTokenGroups()
+ if err != nil {
+ return false, err
+ }
+ p := unsafe.Pointer(&gs.Groups[0])
+ groups := (*[2 << 20]windows.SIDAndAttributes)(p)[:gs.GroupCount]
+ for _, g := range groups {
+ if windows.EqualSid(g.Sid, interSid) {
+ return true, nil
+ }
+ if windows.EqualSid(g.Sid, serviceSid) {
+ return false, nil
+ }
+ }
+ return false, nil
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/service.go b/vendor/golang.org/x/sys/windows/svc/service.go
new file mode 100644
index 000000000000..903cba3f1213
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/service.go
@@ -0,0 +1,363 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+// Package svc provides everything required to build Windows service.
+//
+package svc
+
+import (
+ "errors"
+ "runtime"
+ "syscall"
+ "unsafe"
+
+ "golang.org/x/sys/windows"
+)
+
+// State describes service execution state (Stopped, Running and so on).
+type State uint32
+
+const (
+ Stopped = State(windows.SERVICE_STOPPED)
+ StartPending = State(windows.SERVICE_START_PENDING)
+ StopPending = State(windows.SERVICE_STOP_PENDING)
+ Running = State(windows.SERVICE_RUNNING)
+ ContinuePending = State(windows.SERVICE_CONTINUE_PENDING)
+ PausePending = State(windows.SERVICE_PAUSE_PENDING)
+ Paused = State(windows.SERVICE_PAUSED)
+)
+
+// Cmd represents service state change request. It is sent to a service
+// by the service manager, and should be actioned upon by the service.
+type Cmd uint32
+
+const (
+ Stop = Cmd(windows.SERVICE_CONTROL_STOP)
+ Pause = Cmd(windows.SERVICE_CONTROL_PAUSE)
+ Continue = Cmd(windows.SERVICE_CONTROL_CONTINUE)
+ Interrogate = Cmd(windows.SERVICE_CONTROL_INTERROGATE)
+ Shutdown = Cmd(windows.SERVICE_CONTROL_SHUTDOWN)
+ ParamChange = Cmd(windows.SERVICE_CONTROL_PARAMCHANGE)
+ NetBindAdd = Cmd(windows.SERVICE_CONTROL_NETBINDADD)
+ NetBindRemove = Cmd(windows.SERVICE_CONTROL_NETBINDREMOVE)
+ NetBindEnable = Cmd(windows.SERVICE_CONTROL_NETBINDENABLE)
+ NetBindDisable = Cmd(windows.SERVICE_CONTROL_NETBINDDISABLE)
+ DeviceEvent = Cmd(windows.SERVICE_CONTROL_DEVICEEVENT)
+ HardwareProfileChange = Cmd(windows.SERVICE_CONTROL_HARDWAREPROFILECHANGE)
+ PowerEvent = Cmd(windows.SERVICE_CONTROL_POWEREVENT)
+ SessionChange = Cmd(windows.SERVICE_CONTROL_SESSIONCHANGE)
+)
+
+// Accepted is used to describe commands accepted by the service.
+// Note that Interrogate is always accepted.
+type Accepted uint32
+
+const (
+ AcceptStop = Accepted(windows.SERVICE_ACCEPT_STOP)
+ AcceptShutdown = Accepted(windows.SERVICE_ACCEPT_SHUTDOWN)
+ AcceptPauseAndContinue = Accepted(windows.SERVICE_ACCEPT_PAUSE_CONTINUE)
+ AcceptParamChange = Accepted(windows.SERVICE_ACCEPT_PARAMCHANGE)
+ AcceptNetBindChange = Accepted(windows.SERVICE_ACCEPT_NETBINDCHANGE)
+ AcceptHardwareProfileChange = Accepted(windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE)
+ AcceptPowerEvent = Accepted(windows.SERVICE_ACCEPT_POWEREVENT)
+ AcceptSessionChange = Accepted(windows.SERVICE_ACCEPT_SESSIONCHANGE)
+)
+
+// Status combines State and Accepted commands to fully describe running service.
+type Status struct {
+ State State
+ Accepts Accepted
+ CheckPoint uint32 // used to report progress during a lengthy operation
+ WaitHint uint32 // estimated time required for a pending operation, in milliseconds
+}
+
+// ChangeRequest is sent to the service Handler to request service status change.
+type ChangeRequest struct {
+ Cmd Cmd
+ EventType uint32
+ EventData uintptr
+ CurrentStatus Status
+}
+
+// Handler is the interface that must be implemented to build Windows service.
+type Handler interface {
+
+ // Execute will be called by the package code at the start of
+ // the service, and the service will exit once Execute completes.
+ // Inside Execute you must read service change requests from r and
+ // act accordingly. You must keep service control manager up to date
+ // about state of your service by writing into s as required.
+ // args contains service name followed by argument strings passed
+ // to the service.
+ // You can provide service exit code in exitCode return parameter,
+ // with 0 being "no error". You can also indicate if exit code,
+ // if any, is service specific or not by using svcSpecificEC
+ // parameter.
+ Execute(args []string, r <-chan ChangeRequest, s chan<- Status) (svcSpecificEC bool, exitCode uint32)
+}
+
+var (
+ // These are used by asm code.
+ goWaitsH uintptr
+ cWaitsH uintptr
+ ssHandle uintptr
+ sName *uint16
+ sArgc uintptr
+ sArgv **uint16
+ ctlHandlerExProc uintptr
+ cSetEvent uintptr
+ cWaitForSingleObject uintptr
+ cRegisterServiceCtrlHandlerExW uintptr
+)
+
+func init() {
+ k := syscall.MustLoadDLL("kernel32.dll")
+ cSetEvent = k.MustFindProc("SetEvent").Addr()
+ cWaitForSingleObject = k.MustFindProc("WaitForSingleObject").Addr()
+ a := syscall.MustLoadDLL("advapi32.dll")
+ cRegisterServiceCtrlHandlerExW = a.MustFindProc("RegisterServiceCtrlHandlerExW").Addr()
+}
+
+// The HandlerEx prototype also has a context pointer but since we don't use
+// it at start-up time we don't have to pass it over either.
+type ctlEvent struct {
+ cmd Cmd
+ eventType uint32
+ eventData uintptr
+ errno uint32
+}
+
+// service provides access to windows service api.
+type service struct {
+ name string
+ h windows.Handle
+ cWaits *event
+ goWaits *event
+ c chan ctlEvent
+ handler Handler
+}
+
+func newService(name string, handler Handler) (*service, error) {
+ var s service
+ var err error
+ s.name = name
+ s.c = make(chan ctlEvent)
+ s.handler = handler
+ s.cWaits, err = newEvent()
+ if err != nil {
+ return nil, err
+ }
+ s.goWaits, err = newEvent()
+ if err != nil {
+ s.cWaits.Close()
+ return nil, err
+ }
+ return &s, nil
+}
+
+func (s *service) close() error {
+ s.cWaits.Close()
+ s.goWaits.Close()
+ return nil
+}
+
+type exitCode struct {
+ isSvcSpecific bool
+ errno uint32
+}
+
+func (s *service) updateStatus(status *Status, ec *exitCode) error {
+ if s.h == 0 {
+ return errors.New("updateStatus with no service status handle")
+ }
+ var t windows.SERVICE_STATUS
+ t.ServiceType = windows.SERVICE_WIN32_OWN_PROCESS
+ t.CurrentState = uint32(status.State)
+ if status.Accepts&AcceptStop != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_STOP
+ }
+ if status.Accepts&AcceptShutdown != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_SHUTDOWN
+ }
+ if status.Accepts&AcceptPauseAndContinue != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_PAUSE_CONTINUE
+ }
+ if status.Accepts&AcceptParamChange != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_PARAMCHANGE
+ }
+ if status.Accepts&AcceptNetBindChange != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_NETBINDCHANGE
+ }
+ if status.Accepts&AcceptHardwareProfileChange != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_HARDWAREPROFILECHANGE
+ }
+ if status.Accepts&AcceptPowerEvent != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_POWEREVENT
+ }
+ if status.Accepts&AcceptSessionChange != 0 {
+ t.ControlsAccepted |= windows.SERVICE_ACCEPT_SESSIONCHANGE
+ }
+ if ec.errno == 0 {
+ t.Win32ExitCode = windows.NO_ERROR
+ t.ServiceSpecificExitCode = windows.NO_ERROR
+ } else if ec.isSvcSpecific {
+ t.Win32ExitCode = uint32(windows.ERROR_SERVICE_SPECIFIC_ERROR)
+ t.ServiceSpecificExitCode = ec.errno
+ } else {
+ t.Win32ExitCode = ec.errno
+ t.ServiceSpecificExitCode = windows.NO_ERROR
+ }
+ t.CheckPoint = status.CheckPoint
+ t.WaitHint = status.WaitHint
+ return windows.SetServiceStatus(s.h, &t)
+}
+
+const (
+ sysErrSetServiceStatusFailed = uint32(syscall.APPLICATION_ERROR) + iota
+ sysErrNewThreadInCallback
+)
+
+func (s *service) run() {
+ s.goWaits.Wait()
+ s.h = windows.Handle(ssHandle)
+ argv := (*[100]*int16)(unsafe.Pointer(sArgv))[:sArgc]
+ args := make([]string, len(argv))
+ for i, a := range argv {
+ args[i] = syscall.UTF16ToString((*[1 << 20]uint16)(unsafe.Pointer(a))[:])
+ }
+
+ cmdsToHandler := make(chan ChangeRequest)
+ changesFromHandler := make(chan Status)
+ exitFromHandler := make(chan exitCode)
+
+ go func() {
+ ss, errno := s.handler.Execute(args, cmdsToHandler, changesFromHandler)
+ exitFromHandler <- exitCode{ss, errno}
+ }()
+
+ status := Status{State: Stopped}
+ ec := exitCode{isSvcSpecific: true, errno: 0}
+ var outch chan ChangeRequest
+ inch := s.c
+ var cmd Cmd
+ var evtype uint32
+ var evdata uintptr
+loop:
+ for {
+ select {
+ case r := <-inch:
+ if r.errno != 0 {
+ ec.errno = r.errno
+ break loop
+ }
+ inch = nil
+ outch = cmdsToHandler
+ cmd = r.cmd
+ evtype = r.eventType
+ evdata = r.eventData
+ case outch <- ChangeRequest{cmd, evtype, evdata, status}:
+ inch = s.c
+ outch = nil
+ case c := <-changesFromHandler:
+ err := s.updateStatus(&c, &ec)
+ if err != nil {
+ // best suitable error number
+ ec.errno = sysErrSetServiceStatusFailed
+ if err2, ok := err.(syscall.Errno); ok {
+ ec.errno = uint32(err2)
+ }
+ break loop
+ }
+ status = c
+ case ec = <-exitFromHandler:
+ break loop
+ }
+ }
+
+ s.updateStatus(&Status{State: Stopped}, &ec)
+ s.cWaits.Set()
+}
+
+func newCallback(fn interface{}) (cb uintptr, err error) {
+ defer func() {
+ r := recover()
+ if r == nil {
+ return
+ }
+ cb = 0
+ switch v := r.(type) {
+ case string:
+ err = errors.New(v)
+ case error:
+ err = v
+ default:
+ err = errors.New("unexpected panic in syscall.NewCallback")
+ }
+ }()
+ return syscall.NewCallback(fn), nil
+}
+
+// BUG(brainman): There is no mechanism to run multiple services
+// inside one single executable. Perhaps, it can be overcome by
+// using RegisterServiceCtrlHandlerEx Windows api.
+
+// Run executes service name by calling appropriate handler function.
+func Run(name string, handler Handler) error {
+ runtime.LockOSThread()
+
+ tid := windows.GetCurrentThreadId()
+
+ s, err := newService(name, handler)
+ if err != nil {
+ return err
+ }
+
+ ctlHandler := func(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr {
+ e := ctlEvent{cmd: Cmd(ctl), eventType: evtype, eventData: evdata}
+ // We assume that this callback function is running on
+ // the same thread as Run. Nowhere in MS documentation
+ // I could find statement to guarantee that. So putting
+ // check here to verify, otherwise things will go bad
+ // quickly, if ignored.
+ i := windows.GetCurrentThreadId()
+ if i != tid {
+ e.errno = sysErrNewThreadInCallback
+ }
+ s.c <- e
+ // Always return NO_ERROR (0) for now.
+ return 0
+ }
+
+ var svcmain uintptr
+ getServiceMain(&svcmain)
+ t := []windows.SERVICE_TABLE_ENTRY{
+ {syscall.StringToUTF16Ptr(s.name), svcmain},
+ {nil, 0},
+ }
+
+ goWaitsH = uintptr(s.goWaits.h)
+ cWaitsH = uintptr(s.cWaits.h)
+ sName = t[0].ServiceName
+ ctlHandlerExProc, err = newCallback(ctlHandler)
+ if err != nil {
+ return err
+ }
+
+ go s.run()
+
+ err = windows.StartServiceCtrlDispatcher(&t[0])
+ if err != nil {
+ return err
+ }
+ return nil
+}
+
+// StatusHandle returns service status handle. It is safe to call this function
+// from inside the Handler.Execute because then it is guaranteed to be set.
+// This code will have to change once multiple services are possible per process.
+func StatusHandle() windows.Handle {
+ return windows.Handle(ssHandle)
+}
diff --git a/vendor/golang.org/x/sys/windows/svc/sys_386.s b/vendor/golang.org/x/sys/windows/svc/sys_386.s
new file mode 100644
index 000000000000..2c82a9d91d7f
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/sys_386.s
@@ -0,0 +1,68 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+// func servicemain(argc uint32, argv **uint16)
+TEXT ·servicemain(SB),7,$0
+ MOVL argc+0(FP), AX
+ MOVL AX, ·sArgc(SB)
+ MOVL argv+4(FP), AX
+ MOVL AX, ·sArgv(SB)
+
+ PUSHL BP
+ PUSHL BX
+ PUSHL SI
+ PUSHL DI
+
+ SUBL $12, SP
+
+ MOVL ·sName(SB), AX
+ MOVL AX, (SP)
+ MOVL $·servicectlhandler(SB), AX
+ MOVL AX, 4(SP)
+ MOVL $0, 8(SP)
+ MOVL ·cRegisterServiceCtrlHandlerExW(SB), AX
+ MOVL SP, BP
+ CALL AX
+ MOVL BP, SP
+ CMPL AX, $0
+ JE exit
+ MOVL AX, ·ssHandle(SB)
+
+ MOVL ·goWaitsH(SB), AX
+ MOVL AX, (SP)
+ MOVL ·cSetEvent(SB), AX
+ MOVL SP, BP
+ CALL AX
+ MOVL BP, SP
+
+ MOVL ·cWaitsH(SB), AX
+ MOVL AX, (SP)
+ MOVL $-1, AX
+ MOVL AX, 4(SP)
+ MOVL ·cWaitForSingleObject(SB), AX
+ MOVL SP, BP
+ CALL AX
+ MOVL BP, SP
+
+exit:
+ ADDL $12, SP
+
+ POPL DI
+ POPL SI
+ POPL BX
+ POPL BP
+
+ MOVL 0(SP), CX
+ ADDL $12, SP
+ JMP CX
+
+// I do not know why, but this seems to be the only way to call
+// ctlHandlerProc on Windows 7.
+
+// func servicectlhandler(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr {
+TEXT ·servicectlhandler(SB),7,$0
+ MOVL ·ctlHandlerExProc(SB), CX
+ JMP CX
diff --git a/vendor/golang.org/x/sys/windows/svc/sys_amd64.s b/vendor/golang.org/x/sys/windows/svc/sys_amd64.s
new file mode 100644
index 000000000000..06b425900df4
--- /dev/null
+++ b/vendor/golang.org/x/sys/windows/svc/sys_amd64.s
@@ -0,0 +1,42 @@
+// Copyright 2012 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build windows
+
+// func servicemain(argc uint32, argv **uint16)
+TEXT ·servicemain(SB),7,$0
+ MOVL CX, ·sArgc(SB)
+ MOVL DX, ·sArgv(SB)
+
+ SUBQ $32, SP // stack for the first 4 syscall params
+
+ MOVQ ·sName(SB), CX
+ MOVQ $·servicectlhandler(SB), DX
+ // BUG(pastarmovj): Figure out a way to pass in context in R8.
+ MOVQ ·cRegisterServiceCtrlHandlerExW(SB), AX
+ CALL AX
+ CMPQ AX, $0
+ JE exit
+ MOVQ AX, ·ssHandle(SB)
+
+ MOVQ ·goWaitsH(SB), CX
+ MOVQ ·cSetEvent(SB), AX
+ CALL AX
+
+ MOVQ ·cWaitsH(SB), CX
+ MOVQ $4294967295, DX
+ MOVQ ·cWaitForSingleObject(SB), AX
+ CALL AX
+
+exit:
+ ADDQ $32, SP
+ RET
+
+// I do not know why, but this seems to be the only way to call
+// ctlHandlerProc on Windows 7.
+
+// func ·servicectlhandler(ctl uint32, evtype uint32, evdata uintptr, context uintptr) uintptr {
+TEXT ·servicectlhandler(SB),7,$0
+ MOVQ ·ctlHandlerExProc(SB), AX
+ JMP AX
diff --git a/vendor/golang.org/x/time/AUTHORS b/vendor/golang.org/x/time/AUTHORS
new file mode 100644
index 000000000000..15167cd746c5
--- /dev/null
+++ b/vendor/golang.org/x/time/AUTHORS
@@ -0,0 +1,3 @@
+# This source code refers to The Go Authors for copyright purposes.
+# The master list of authors is in the main Go distribution,
+# visible at http://tip.golang.org/AUTHORS.
diff --git a/vendor/golang.org/x/time/CONTRIBUTORS b/vendor/golang.org/x/time/CONTRIBUTORS
new file mode 100644
index 000000000000..1c4577e96806
--- /dev/null
+++ b/vendor/golang.org/x/time/CONTRIBUTORS
@@ -0,0 +1,3 @@
+# This source code was written by the Go contributors.
+# The master list of contributors is in the main Go distribution,
+# visible at http://tip.golang.org/CONTRIBUTORS.
diff --git a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD b/vendor/golang.org/x/time/LICENSE
similarity index 95%
rename from vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD
rename to vendor/golang.org/x/time/LICENSE
index 4c056c5ed277..6a66aea5eafe 100644
--- a/vendor/github.com/docker/docker/pkg/symlink/LICENSE.BSD
+++ b/vendor/golang.org/x/time/LICENSE
@@ -1,4 +1,4 @@
-Copyright (c) 2014-2017 The Docker & Go Authors. All rights reserved.
+Copyright (c) 2009 The Go Authors. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are
diff --git a/vendor/google.golang.org/grpc/PATENTS b/vendor/golang.org/x/time/PATENTS
similarity index 75%
rename from vendor/google.golang.org/grpc/PATENTS
rename to vendor/golang.org/x/time/PATENTS
index 69b47959faba..733099041f84 100644
--- a/vendor/google.golang.org/grpc/PATENTS
+++ b/vendor/golang.org/x/time/PATENTS
@@ -1,22 +1,22 @@
Additional IP Rights Grant (Patents)
"This implementation" means the copyrightable works distributed by
-Google as part of the gRPC project.
+Google as part of the Go project.
Google 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,
transfer and otherwise run, modify and propagate the contents of this
-implementation of gRPC, where such license applies only to those patent
+implementation of Go, where such license applies only to those patent
claims, both currently owned or controlled by Google and acquired in
the future, licensable by Google that are necessarily infringed by this
-implementation of gRPC. This grant does not include claims that would be
+implementation of Go. This grant does not include claims that would be
infringed only as a consequence of further modification of this
implementation. If you or your agent or exclusive licensee institute or
order or agree to the institution of patent litigation against any
entity (including a cross-claim or counterclaim in a lawsuit) alleging
-that this implementation of gRPC or any code incorporated within this
-implementation of gRPC constitutes direct or contributory patent
+that this implementation of Go or any code incorporated within this
+implementation of Go constitutes direct or contributory patent
infringement, or inducement of patent infringement, then any patent
-rights granted to you under this License for this implementation of gRPC
+rights granted to you under this License for this implementation of Go
shall terminate as of the date such litigation is filed.
diff --git a/vendor/golang.org/x/time/rate/rate.go b/vendor/golang.org/x/time/rate/rate.go
new file mode 100644
index 000000000000..938feaffe9b2
--- /dev/null
+++ b/vendor/golang.org/x/time/rate/rate.go
@@ -0,0 +1,371 @@
+// Copyright 2015 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// Package rate provides a rate limiter.
+package rate
+
+import (
+ "fmt"
+ "math"
+ "sync"
+ "time"
+
+ "golang.org/x/net/context"
+)
+
+// Limit defines the maximum frequency of some events.
+// Limit is represented as number of events per second.
+// A zero Limit allows no events.
+type Limit float64
+
+// Inf is the infinite rate limit; it allows all events (even if burst is zero).
+const Inf = Limit(math.MaxFloat64)
+
+// Every converts a minimum time interval between events to a Limit.
+func Every(interval time.Duration) Limit {
+ if interval <= 0 {
+ return Inf
+ }
+ return 1 / Limit(interval.Seconds())
+}
+
+// A Limiter controls how frequently events are allowed to happen.
+// It implements a "token bucket" of size b, initially full and refilled
+// at rate r tokens per second.
+// Informally, in any large enough time interval, the Limiter limits the
+// rate to r tokens per second, with a maximum burst size of b events.
+// As a special case, if r == Inf (the infinite rate), b is ignored.
+// See https://en.wikipedia.org/wiki/Token_bucket for more about token buckets.
+//
+// The zero value is a valid Limiter, but it will reject all events.
+// Use NewLimiter to create non-zero Limiters.
+//
+// Limiter has three main methods, Allow, Reserve, and Wait.
+// Most callers should use Wait.
+//
+// Each of the three methods consumes a single token.
+// They differ in their behavior when no token is available.
+// If no token is available, Allow returns false.
+// If no token is available, Reserve returns a reservation for a future token
+// and the amount of time the caller must wait before using it.
+// If no token is available, Wait blocks until one can be obtained
+// or its associated context.Context is canceled.
+//
+// The methods AllowN, ReserveN, and WaitN consume n tokens.
+type Limiter struct {
+ limit Limit
+ burst int
+
+ mu sync.Mutex
+ tokens float64
+ // last is the last time the limiter's tokens field was updated
+ last time.Time
+ // lastEvent is the latest time of a rate-limited event (past or future)
+ lastEvent time.Time
+}
+
+// Limit returns the maximum overall event rate.
+func (lim *Limiter) Limit() Limit {
+ lim.mu.Lock()
+ defer lim.mu.Unlock()
+ return lim.limit
+}
+
+// Burst returns the maximum burst size. Burst is the maximum number of tokens
+// that can be consumed in a single call to Allow, Reserve, or Wait, so higher
+// Burst values allow more events to happen at once.
+// A zero Burst allows no events, unless limit == Inf.
+func (lim *Limiter) Burst() int {
+ return lim.burst
+}
+
+// NewLimiter returns a new Limiter that allows events up to rate r and permits
+// bursts of at most b tokens.
+func NewLimiter(r Limit, b int) *Limiter {
+ return &Limiter{
+ limit: r,
+ burst: b,
+ }
+}
+
+// Allow is shorthand for AllowN(time.Now(), 1).
+func (lim *Limiter) Allow() bool {
+ return lim.AllowN(time.Now(), 1)
+}
+
+// AllowN reports whether n events may happen at time now.
+// Use this method if you intend to drop / skip events that exceed the rate limit.
+// Otherwise use Reserve or Wait.
+func (lim *Limiter) AllowN(now time.Time, n int) bool {
+ return lim.reserveN(now, n, 0).ok
+}
+
+// A Reservation holds information about events that are permitted by a Limiter to happen after a delay.
+// A Reservation may be canceled, which may enable the Limiter to permit additional events.
+type Reservation struct {
+ ok bool
+ lim *Limiter
+ tokens int
+ timeToAct time.Time
+ // This is the Limit at reservation time, it can change later.
+ limit Limit
+}
+
+// OK returns whether the limiter can provide the requested number of tokens
+// within the maximum wait time. If OK is false, Delay returns InfDuration, and
+// Cancel does nothing.
+func (r *Reservation) OK() bool {
+ return r.ok
+}
+
+// Delay is shorthand for DelayFrom(time.Now()).
+func (r *Reservation) Delay() time.Duration {
+ return r.DelayFrom(time.Now())
+}
+
+// InfDuration is the duration returned by Delay when a Reservation is not OK.
+const InfDuration = time.Duration(1<<63 - 1)
+
+// DelayFrom returns the duration for which the reservation holder must wait
+// before taking the reserved action. Zero duration means act immediately.
+// InfDuration means the limiter cannot grant the tokens requested in this
+// Reservation within the maximum wait time.
+func (r *Reservation) DelayFrom(now time.Time) time.Duration {
+ if !r.ok {
+ return InfDuration
+ }
+ delay := r.timeToAct.Sub(now)
+ if delay < 0 {
+ return 0
+ }
+ return delay
+}
+
+// Cancel is shorthand for CancelAt(time.Now()).
+func (r *Reservation) Cancel() {
+ r.CancelAt(time.Now())
+ return
+}
+
+// CancelAt indicates that the reservation holder will not perform the reserved action
+// and reverses the effects of this Reservation on the rate limit as much as possible,
+// considering that other reservations may have already been made.
+func (r *Reservation) CancelAt(now time.Time) {
+ if !r.ok {
+ return
+ }
+
+ r.lim.mu.Lock()
+ defer r.lim.mu.Unlock()
+
+ if r.lim.limit == Inf || r.tokens == 0 || r.timeToAct.Before(now) {
+ return
+ }
+
+ // calculate tokens to restore
+ // The duration between lim.lastEvent and r.timeToAct tells us how many tokens were reserved
+ // after r was obtained. These tokens should not be restored.
+ restoreTokens := float64(r.tokens) - r.limit.tokensFromDuration(r.lim.lastEvent.Sub(r.timeToAct))
+ if restoreTokens <= 0 {
+ return
+ }
+ // advance time to now
+ now, _, tokens := r.lim.advance(now)
+ // calculate new number of tokens
+ tokens += restoreTokens
+ if burst := float64(r.lim.burst); tokens > burst {
+ tokens = burst
+ }
+ // update state
+ r.lim.last = now
+ r.lim.tokens = tokens
+ if r.timeToAct == r.lim.lastEvent {
+ prevEvent := r.timeToAct.Add(r.limit.durationFromTokens(float64(-r.tokens)))
+ if !prevEvent.Before(now) {
+ r.lim.lastEvent = prevEvent
+ }
+ }
+
+ return
+}
+
+// Reserve is shorthand for ReserveN(time.Now(), 1).
+func (lim *Limiter) Reserve() *Reservation {
+ return lim.ReserveN(time.Now(), 1)
+}
+
+// ReserveN returns a Reservation that indicates how long the caller must wait before n events happen.
+// The Limiter takes this Reservation into account when allowing future events.
+// ReserveN returns false if n exceeds the Limiter's burst size.
+// Usage example:
+// r := lim.ReserveN(time.Now(), 1)
+// if !r.OK() {
+// // Not allowed to act! Did you remember to set lim.burst to be > 0 ?
+// return
+// }
+// time.Sleep(r.Delay())
+// Act()
+// Use this method if you wish to wait and slow down in accordance with the rate limit without dropping events.
+// If you need to respect a deadline or cancel the delay, use Wait instead.
+// To drop or skip events exceeding rate limit, use Allow instead.
+func (lim *Limiter) ReserveN(now time.Time, n int) *Reservation {
+ r := lim.reserveN(now, n, InfDuration)
+ return &r
+}
+
+// Wait is shorthand for WaitN(ctx, 1).
+func (lim *Limiter) Wait(ctx context.Context) (err error) {
+ return lim.WaitN(ctx, 1)
+}
+
+// WaitN blocks until lim permits n events to happen.
+// It returns an error if n exceeds the Limiter's burst size, the Context is
+// canceled, or the expected wait time exceeds the Context's Deadline.
+// The burst limit is ignored if the rate limit is Inf.
+func (lim *Limiter) WaitN(ctx context.Context, n int) (err error) {
+ if n > lim.burst && lim.limit != Inf {
+ return fmt.Errorf("rate: Wait(n=%d) exceeds limiter's burst %d", n, lim.burst)
+ }
+ // Check if ctx is already cancelled
+ select {
+ case <-ctx.Done():
+ return ctx.Err()
+ default:
+ }
+ // Determine wait limit
+ now := time.Now()
+ waitLimit := InfDuration
+ if deadline, ok := ctx.Deadline(); ok {
+ waitLimit = deadline.Sub(now)
+ }
+ // Reserve
+ r := lim.reserveN(now, n, waitLimit)
+ if !r.ok {
+ return fmt.Errorf("rate: Wait(n=%d) would exceed context deadline", n)
+ }
+ // Wait
+ t := time.NewTimer(r.DelayFrom(now))
+ defer t.Stop()
+ select {
+ case <-t.C:
+ // We can proceed.
+ return nil
+ case <-ctx.Done():
+ // Context was canceled before we could proceed. Cancel the
+ // reservation, which may permit other events to proceed sooner.
+ r.Cancel()
+ return ctx.Err()
+ }
+}
+
+// SetLimit is shorthand for SetLimitAt(time.Now(), newLimit).
+func (lim *Limiter) SetLimit(newLimit Limit) {
+ lim.SetLimitAt(time.Now(), newLimit)
+}
+
+// SetLimitAt sets a new Limit for the limiter. The new Limit, and Burst, may be violated
+// or underutilized by those which reserved (using Reserve or Wait) but did not yet act
+// before SetLimitAt was called.
+func (lim *Limiter) SetLimitAt(now time.Time, newLimit Limit) {
+ lim.mu.Lock()
+ defer lim.mu.Unlock()
+
+ now, _, tokens := lim.advance(now)
+
+ lim.last = now
+ lim.tokens = tokens
+ lim.limit = newLimit
+}
+
+// reserveN is a helper method for AllowN, ReserveN, and WaitN.
+// maxFutureReserve specifies the maximum reservation wait duration allowed.
+// reserveN returns Reservation, not *Reservation, to avoid allocation in AllowN and WaitN.
+func (lim *Limiter) reserveN(now time.Time, n int, maxFutureReserve time.Duration) Reservation {
+ lim.mu.Lock()
+
+ if lim.limit == Inf {
+ lim.mu.Unlock()
+ return Reservation{
+ ok: true,
+ lim: lim,
+ tokens: n,
+ timeToAct: now,
+ }
+ }
+
+ now, last, tokens := lim.advance(now)
+
+ // Calculate the remaining number of tokens resulting from the request.
+ tokens -= float64(n)
+
+ // Calculate the wait duration
+ var waitDuration time.Duration
+ if tokens < 0 {
+ waitDuration = lim.limit.durationFromTokens(-tokens)
+ }
+
+ // Decide result
+ ok := n <= lim.burst && waitDuration <= maxFutureReserve
+
+ // Prepare reservation
+ r := Reservation{
+ ok: ok,
+ lim: lim,
+ limit: lim.limit,
+ }
+ if ok {
+ r.tokens = n
+ r.timeToAct = now.Add(waitDuration)
+ }
+
+ // Update state
+ if ok {
+ lim.last = now
+ lim.tokens = tokens
+ lim.lastEvent = r.timeToAct
+ } else {
+ lim.last = last
+ }
+
+ lim.mu.Unlock()
+ return r
+}
+
+// advance calculates and returns an updated state for lim resulting from the passage of time.
+// lim is not changed.
+func (lim *Limiter) advance(now time.Time) (newNow time.Time, newLast time.Time, newTokens float64) {
+ last := lim.last
+ if now.Before(last) {
+ last = now
+ }
+
+ // Avoid making delta overflow below when last is very old.
+ maxElapsed := lim.limit.durationFromTokens(float64(lim.burst) - lim.tokens)
+ elapsed := now.Sub(last)
+ if elapsed > maxElapsed {
+ elapsed = maxElapsed
+ }
+
+ // Calculate the new number of tokens, due to time that passed.
+ delta := lim.limit.tokensFromDuration(elapsed)
+ tokens := lim.tokens + delta
+ if burst := float64(lim.burst); tokens > burst {
+ tokens = burst
+ }
+
+ return now, last, tokens
+}
+
+// durationFromTokens is a unit conversion function from the number of tokens to the duration
+// of time it takes to accumulate them at a rate of limit tokens per second.
+func (limit Limit) durationFromTokens(tokens float64) time.Duration {
+ seconds := tokens / float64(limit)
+ return time.Nanosecond * time.Duration(1e9*seconds)
+}
+
+// tokensFromDuration is a unit conversion function from a time duration to the number of tokens
+// which could be accumulated during that duration at a rate of limit tokens per second.
+func (limit Limit) tokensFromDuration(d time.Duration) float64 {
+ return d.Seconds() * float64(limit)
+}
diff --git a/vendor/google.golang.org/api/CONTRIBUTORS b/vendor/google.golang.org/api/CONTRIBUTORS
index 2d4679e398a7..b8928e61641e 100644
--- a/vendor/google.golang.org/api/CONTRIBUTORS
+++ b/vendor/google.golang.org/api/CONTRIBUTORS
@@ -44,6 +44,7 @@ Ivan Krasin
Jason Hall
Johan Euphrosine
Kostik Shtoyk
+Kunpei Sakai
Matthew Whisenhunt
Michael McGreevy
Nick Craig-Wood
diff --git a/vendor/google.golang.org/api/cloudmonitoring/v2beta2/cloudmonitoring-gen.go b/vendor/google.golang.org/api/cloudmonitoring/v2beta2/cloudmonitoring-gen.go
index f2cca47ed2c4..c7127d0dfad6 100644
--- a/vendor/google.golang.org/api/cloudmonitoring/v2beta2/cloudmonitoring-gen.go
+++ b/vendor/google.golang.org/api/cloudmonitoring/v2beta2/cloudmonitoring-gen.go
@@ -141,8 +141,8 @@ type DeleteMetricDescriptorResponse struct {
}
func (s *DeleteMetricDescriptorResponse) MarshalJSON() ([]byte, error) {
- type noMethod DeleteMetricDescriptorResponse
- raw := noMethod(*s)
+ type NoMethod DeleteMetricDescriptorResponse
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -171,8 +171,8 @@ type ListMetricDescriptorsRequest struct {
}
func (s *ListMetricDescriptorsRequest) MarshalJSON() ([]byte, error) {
- type noMethod ListMetricDescriptorsRequest
- raw := noMethod(*s)
+ type NoMethod ListMetricDescriptorsRequest
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -214,8 +214,8 @@ type ListMetricDescriptorsResponse struct {
}
func (s *ListMetricDescriptorsResponse) MarshalJSON() ([]byte, error) {
- type noMethod ListMetricDescriptorsResponse
- raw := noMethod(*s)
+ type NoMethod ListMetricDescriptorsResponse
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -244,8 +244,8 @@ type ListTimeseriesDescriptorsRequest struct {
}
func (s *ListTimeseriesDescriptorsRequest) MarshalJSON() ([]byte, error) {
- type noMethod ListTimeseriesDescriptorsRequest
- raw := noMethod(*s)
+ type NoMethod ListTimeseriesDescriptorsRequest
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -295,8 +295,8 @@ type ListTimeseriesDescriptorsResponse struct {
}
func (s *ListTimeseriesDescriptorsResponse) MarshalJSON() ([]byte, error) {
- type noMethod ListTimeseriesDescriptorsResponse
- raw := noMethod(*s)
+ type NoMethod ListTimeseriesDescriptorsResponse
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -324,8 +324,8 @@ type ListTimeseriesRequest struct {
}
func (s *ListTimeseriesRequest) MarshalJSON() ([]byte, error) {
- type noMethod ListTimeseriesRequest
- raw := noMethod(*s)
+ type NoMethod ListTimeseriesRequest
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -376,8 +376,8 @@ type ListTimeseriesResponse struct {
}
func (s *ListTimeseriesResponse) MarshalJSON() ([]byte, error) {
- type noMethod ListTimeseriesResponse
- raw := noMethod(*s)
+ type NoMethod ListTimeseriesResponse
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -421,8 +421,8 @@ type MetricDescriptor struct {
}
func (s *MetricDescriptor) MarshalJSON() ([]byte, error) {
- type noMethod MetricDescriptor
- raw := noMethod(*s)
+ type NoMethod MetricDescriptor
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -454,8 +454,8 @@ type MetricDescriptorLabelDescriptor struct {
}
func (s *MetricDescriptorLabelDescriptor) MarshalJSON() ([]byte, error) {
- type noMethod MetricDescriptorLabelDescriptor
- raw := noMethod(*s)
+ type NoMethod MetricDescriptorLabelDescriptor
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -489,8 +489,8 @@ type MetricDescriptorTypeDescriptor struct {
}
func (s *MetricDescriptorTypeDescriptor) MarshalJSON() ([]byte, error) {
- type noMethod MetricDescriptorTypeDescriptor
- raw := noMethod(*s)
+ type NoMethod MetricDescriptorTypeDescriptor
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -550,18 +550,18 @@ type Point struct {
}
func (s *Point) MarshalJSON() ([]byte, error) {
- type noMethod Point
- raw := noMethod(*s)
+ type NoMethod Point
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
func (s *Point) UnmarshalJSON(data []byte) error {
- type noMethod Point
+ type NoMethod Point
var s1 struct {
DoubleValue *gensupport.JSONFloat64 `json:"doubleValue"`
- *noMethod
+ *NoMethod
}
- s1.noMethod = (*noMethod)(s)
+ s1.NoMethod = (*NoMethod)(s)
if err := json.Unmarshal(data, &s1); err != nil {
return err
}
@@ -603,8 +603,8 @@ type PointDistribution struct {
}
func (s *PointDistribution) MarshalJSON() ([]byte, error) {
- type noMethod PointDistribution
- raw := noMethod(*s)
+ type NoMethod PointDistribution
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -643,19 +643,19 @@ type PointDistributionBucket struct {
}
func (s *PointDistributionBucket) MarshalJSON() ([]byte, error) {
- type noMethod PointDistributionBucket
- raw := noMethod(*s)
+ type NoMethod PointDistributionBucket
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
func (s *PointDistributionBucket) UnmarshalJSON(data []byte) error {
- type noMethod PointDistributionBucket
+ type NoMethod PointDistributionBucket
var s1 struct {
LowerBound gensupport.JSONFloat64 `json:"lowerBound"`
UpperBound gensupport.JSONFloat64 `json:"upperBound"`
- *noMethod
+ *NoMethod
}
- s1.noMethod = (*noMethod)(s)
+ s1.NoMethod = (*NoMethod)(s)
if err := json.Unmarshal(data, &s1); err != nil {
return err
}
@@ -694,18 +694,18 @@ type PointDistributionOverflowBucket struct {
}
func (s *PointDistributionOverflowBucket) MarshalJSON() ([]byte, error) {
- type noMethod PointDistributionOverflowBucket
- raw := noMethod(*s)
+ type NoMethod PointDistributionOverflowBucket
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
func (s *PointDistributionOverflowBucket) UnmarshalJSON(data []byte) error {
- type noMethod PointDistributionOverflowBucket
+ type NoMethod PointDistributionOverflowBucket
var s1 struct {
LowerBound gensupport.JSONFloat64 `json:"lowerBound"`
- *noMethod
+ *NoMethod
}
- s1.noMethod = (*noMethod)(s)
+ s1.NoMethod = (*NoMethod)(s)
if err := json.Unmarshal(data, &s1); err != nil {
return err
}
@@ -743,18 +743,18 @@ type PointDistributionUnderflowBucket struct {
}
func (s *PointDistributionUnderflowBucket) MarshalJSON() ([]byte, error) {
- type noMethod PointDistributionUnderflowBucket
- raw := noMethod(*s)
+ type NoMethod PointDistributionUnderflowBucket
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
func (s *PointDistributionUnderflowBucket) UnmarshalJSON(data []byte) error {
- type noMethod PointDistributionUnderflowBucket
+ type NoMethod PointDistributionUnderflowBucket
var s1 struct {
UpperBound gensupport.JSONFloat64 `json:"upperBound"`
- *noMethod
+ *NoMethod
}
- s1.noMethod = (*noMethod)(s)
+ s1.NoMethod = (*NoMethod)(s)
if err := json.Unmarshal(data, &s1); err != nil {
return err
}
@@ -792,8 +792,8 @@ type Timeseries struct {
}
func (s *Timeseries) MarshalJSON() ([]byte, error) {
- type noMethod Timeseries
- raw := noMethod(*s)
+ type NoMethod Timeseries
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -828,8 +828,8 @@ type TimeseriesDescriptor struct {
}
func (s *TimeseriesDescriptor) MarshalJSON() ([]byte, error) {
- type noMethod TimeseriesDescriptor
- raw := noMethod(*s)
+ type NoMethod TimeseriesDescriptor
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -858,8 +858,8 @@ type TimeseriesDescriptorLabel struct {
}
func (s *TimeseriesDescriptorLabel) MarshalJSON() ([]byte, error) {
- type noMethod TimeseriesDescriptorLabel
- raw := noMethod(*s)
+ type NoMethod TimeseriesDescriptorLabel
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -891,8 +891,8 @@ type TimeseriesPoint struct {
}
func (s *TimeseriesPoint) MarshalJSON() ([]byte, error) {
- type noMethod TimeseriesPoint
- raw := noMethod(*s)
+ type NoMethod TimeseriesPoint
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -925,8 +925,8 @@ type WriteTimeseriesRequest struct {
}
func (s *WriteTimeseriesRequest) MarshalJSON() ([]byte, error) {
- type noMethod WriteTimeseriesRequest
- raw := noMethod(*s)
+ type NoMethod WriteTimeseriesRequest
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -959,8 +959,8 @@ type WriteTimeseriesResponse struct {
}
func (s *WriteTimeseriesResponse) MarshalJSON() ([]byte, error) {
- type noMethod WriteTimeseriesResponse
- raw := noMethod(*s)
+ type NoMethod WriteTimeseriesResponse
+ raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
@@ -1064,7 +1064,7 @@ func (c *MetricDescriptorsCreateCall) Do(opts ...googleapi.CallOption) (*MetricD
},
}
target := &ret
- if err := json.NewDecoder(res.Body).Decode(target); err != nil {
+ if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
@@ -1194,7 +1194,7 @@ func (c *MetricDescriptorsDeleteCall) Do(opts ...googleapi.CallOption) (*DeleteM
},
}
target := &ret
- if err := json.NewDecoder(res.Body).Decode(target); err != nil {
+ if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
@@ -1373,7 +1373,7 @@ func (c *MetricDescriptorsListCall) Do(opts ...googleapi.CallOption) (*ListMetri
},
}
target := &ret
- if err := json.NewDecoder(res.Body).Decode(target); err != nil {
+ if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
@@ -1651,7 +1651,7 @@ func (c *TimeseriesListCall) Do(opts ...googleapi.CallOption) (*ListTimeseriesRe
},
}
target := &ret
- if err := json.NewDecoder(res.Body).Decode(target); err != nil {
+ if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
@@ -1882,7 +1882,7 @@ func (c *TimeseriesWriteCall) Do(opts ...googleapi.CallOption) (*WriteTimeseries
},
}
target := &ret
- if err := json.NewDecoder(res.Body).Decode(target); err != nil {
+ if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
@@ -2122,7 +2122,7 @@ func (c *TimeseriesDescriptorsListCall) Do(opts ...googleapi.CallOption) (*ListT
},
}
target := &ret
- if err := json.NewDecoder(res.Body).Decode(target); err != nil {
+ if err := gensupport.DecodeResponse(target, res); err != nil {
return nil, err
}
return ret, nil
diff --git a/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json b/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json
index 5b39417753bf..be9d128bef8c 100644
--- a/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json
+++ b/vendor/google.golang.org/api/compute/v0.alpha/compute-api.json
@@ -1,42352 +1,42878 @@
{
- "kind": "discovery#restDescription",
- "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/8LXjCsGzTRkw9pxlAZsYlHn9Eew\"",
- "discoveryVersion": "v1",
- "id": "compute:alpha",
- "name": "compute",
- "version": "alpha",
- "revision": "20171207",
- "title": "Compute Engine API",
- "description": "Creates and runs virtual machines on Google Cloud Platform.",
- "ownerDomain": "google.com",
- "ownerName": "Google",
- "icons": {
- "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
- "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
- },
- "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
- "protocol": "rest",
- "baseUrl": "https://www.googleapis.com/compute/alpha/projects/",
- "basePath": "/compute/alpha/projects/",
- "rootUrl": "https://www.googleapis.com/",
- "servicePath": "compute/alpha/projects/",
- "batchPath": "batch/compute/alpha",
- "parameters": {
- "alt": {
- "type": "string",
- "description": "Data format for the response.",
- "default": "json",
- "enum": [
- "json"
- ],
- "enumDescriptions": [
- "Responses with Content-Type of application/json"
- ],
- "location": "query"
- },
- "fields": {
- "type": "string",
- "description": "Selector specifying which fields to include in a partial response.",
- "location": "query"
- },
- "key": {
- "type": "string",
- "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
- "location": "query"
- },
- "oauth_token": {
- "type": "string",
- "description": "OAuth 2.0 token for the current user.",
- "location": "query"
- },
- "prettyPrint": {
- "type": "boolean",
- "description": "Returns response with indentations and line breaks.",
- "default": "true",
- "location": "query"
- },
- "quotaUser": {
- "type": "string",
- "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
- "location": "query"
- },
- "userIp": {
- "type": "string",
- "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
- "location": "query"
- }
- },
- "auth": {
- "oauth2": {
- "scopes": {
- "https://www.googleapis.com/auth/cloud-platform": {
- "description": "View and manage your data across Google Cloud Platform services"
- },
- "https://www.googleapis.com/auth/compute": {
- "description": "View and manage your Google Compute Engine resources"
- },
- "https://www.googleapis.com/auth/compute.readonly": {
- "description": "View your Google Compute Engine resources"
- },
- "https://www.googleapis.com/auth/devstorage.full_control": {
- "description": "Manage your data and permissions in Google Cloud Storage"
- },
- "https://www.googleapis.com/auth/devstorage.read_only": {
- "description": "View your data in Google Cloud Storage"
- },
- "https://www.googleapis.com/auth/devstorage.read_write": {
- "description": "Manage your data in Google Cloud Storage"
- }
- }
- }
- },
- "schemas": {
- "AcceleratorConfig": {
- "id": "AcceleratorConfig",
- "type": "object",
- "description": "A specification of the type and number of accelerator cards attached to the instance.",
- "properties": {
- "acceleratorCount": {
- "type": "integer",
- "description": "The number of the guest accelerator cards exposed to this instance.",
- "format": "int32"
- },
- "acceleratorType": {
- "type": "string",
- "description": "Full or partial URL of the accelerator type resource to expose to this instance."
- }
- }
- },
- "AcceleratorType": {
- "id": "AcceleratorType",
- "type": "object",
- "description": "An Accelerator Type resource. (== resource_for beta.acceleratorTypes ==) (== resource_for v1.acceleratorTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this accelerator type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#acceleratorType for accelerator types.",
- "default": "compute#acceleratorType"
- },
- "maximumCardsPerInstance": {
- "type": "integer",
- "description": "[Output Only] Maximum accelerator cards allowed per instance.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the accelerator type resides, such as us-central1-a."
- }
- }
- },
- "AcceleratorTypeAggregatedList": {
- "id": "AcceleratorTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AcceleratorTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "AcceleratorTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of accelerator types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#acceleratorTypeAggregatedList for aggregated lists of accelerator types.",
- "default": "compute#acceleratorTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AcceleratorTypeList": {
- "id": "AcceleratorTypeList",
- "type": "object",
- "description": "Contains a list of accelerator types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of AcceleratorType resources.",
- "items": {
- "$ref": "AcceleratorType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#acceleratorTypeList for lists of accelerator types.",
- "default": "compute#acceleratorTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AcceleratorTypesScopedList": {
- "id": "AcceleratorTypesScopedList",
- "type": "object",
- "properties": {
- "acceleratorTypes": {
- "type": "array",
- "description": "[Output Only] List of accelerator types contained in this scope.",
- "items": {
- "$ref": "AcceleratorType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the accelerator types list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "View and manage your data across Google Cloud Platform services"
+ },
+ "https://www.googleapis.com/auth/compute": {
+ "description": "View and manage your Google Compute Engine resources"
+ },
+ "https://www.googleapis.com/auth/compute.readonly": {
+ "description": "View your Google Compute Engine resources"
+ },
+ "https://www.googleapis.com/auth/devstorage.full_control": {
+ "description": "Manage your data and permissions in Google Cloud Storage"
+ },
+ "https://www.googleapis.com/auth/devstorage.read_only": {
+ "description": "View your data in Google Cloud Storage"
+ },
+ "https://www.googleapis.com/auth/devstorage.read_write": {
+ "description": "Manage your data in Google Cloud Storage"
+ }
}
- }
- }
- }
- },
- "AccessConfig": {
- "id": "AccessConfig",
- "type": "object",
- "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#accessConfig for access configs.",
- "default": "compute#accessConfig"
- },
- "name": {
- "type": "string",
- "description": "The name of this access configuration. The default and recommended name is External NAT but you can use any arbitrary string you would like. For example, My external IP or Network Access."
- },
- "natIP": {
- "type": "string",
- "description": "An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
- },
- "networkTier": {
- "type": "string",
- "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD.\n\nIf an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier.\n\nIf an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP.",
- "enum": [
- "PREMIUM",
- "SELECT",
- "STANDARD"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "publicDnsName": {
- "type": "string",
- "description": "[Output Only] The public DNS domain name for the instance."
- },
- "publicPtrDomainName": {
- "type": "string",
- "description": "The DNS domain name for the public PTR record. This field can only be set when the set_public_ptr field is enabled."
- },
- "setPublicDns": {
- "type": "boolean",
- "description": "Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration."
- },
- "setPublicPtr": {
- "type": "boolean",
- "description": "Specifies whether a public DNS ?PTR? record should be created to map the external IP address of the instance to a DNS domain name."
- },
- "type": {
- "type": "string",
- "description": "The type of configuration. The default and only option is ONE_TO_ONE_NAT.",
- "default": "ONE_TO_ONE_NAT",
- "enum": [
- "ONE_TO_ONE_NAT"
- ],
- "enumDescriptions": [
- ""
- ]
}
- }
},
- "Address": {
- "id": "Address",
- "type": "object",
- "description": "A reserved address resource. (== resource_for beta.addresses ==) (== resource_for v1.addresses ==) (== resource_for beta.globalAddresses ==) (== resource_for v1.globalAddresses ==)",
- "properties": {
- "address": {
- "type": "string",
- "description": "The static IP address represented by this resource."
- },
- "addressType": {
- "type": "string",
- "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
- "enum": [
- "DNS_FORWARDING",
- "EXTERNAL",
- "INTERNAL",
- "UNSPECIFIED_TYPE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipVersion": {
- "type": "string",
- "description": "The IP Version that will be used by this address. Valid options are IPV4 or IPV6. This can only be specified for a global address.",
- "enum": [
- "IPV4",
- "IPV6",
- "UNSPECIFIED_VERSION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#address for addresses.",
- "default": "compute#address"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an Address.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.addresses.insert"
- ]
- }
- },
- "networkTier": {
- "type": "string",
- "description": "This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD.\n\nIf this field is not specified, it is assumed to be PREMIUM.",
- "enum": [
- "PREMIUM",
- "SELECT",
- "STANDARD"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
- "enum": [
- "IN_USE",
- "RESERVED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with GCE_ENDPOINT/DNS_RESOLVER purposes."
- },
- "users": {
- "type": "array",
- "description": "[Output Only] The URLs of the resources that are using this address.",
- "items": {
+ "basePath": "/compute/alpha/projects/",
+ "baseUrl": "https://www.googleapis.com/compute/alpha/projects/",
+ "batchPath": "batch/compute/alpha",
+ "description": "Creates and runs virtual machines on Google Cloud Platform.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
+ "etag": "\"-iA1DTNe4s-I6JZXPt1t1Ypy8IU/N-OFBDyIh2rjB3cbDrFel2ULy4k\"",
+ "icons": {
+ "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
+ "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
+ },
+ "id": "compute:alpha",
+ "kind": "discovery#restDescription",
+ "name": "compute",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "alt": {
+ "default": "json",
+ "description": "Data format for the response.",
+ "enum": [
+ "json"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json"
+ ],
+ "location": "query",
"type": "string"
- }
- }
- }
- },
- "AddressAggregatedList": {
- "id": "AddressAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AddressesScopedList resources.",
- "additionalProperties": {
- "$ref": "AddressesScopedList",
- "description": "[Output Only] Name of the scope containing this set of addresses."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#addressAggregatedList for aggregated lists of addresses.",
- "default": "compute#addressAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AddressList": {
- "id": "AddressList",
- "type": "object",
- "description": "Contains a list of addresses.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Address resources.",
- "items": {
- "$ref": "Address"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#addressList for lists of addresses.",
- "default": "compute#addressList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AddressesScopedList": {
- "id": "AddressesScopedList",
- "type": "object",
- "properties": {
- "addresses": {
- "type": "array",
- "description": "[Output Only] List of addresses contained in this scope.",
- "items": {
- "$ref": "Address"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AliasIpRange": {
- "id": "AliasIpRange",
- "type": "object",
- "description": "An alias IP range attached to an instance's network interface.",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24)."
- },
- "subnetworkRangeName": {
- "type": "string",
- "description": "Optional subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used."
- }
- }
- },
- "AttachedDisk": {
- "id": "AttachedDisk",
- "type": "object",
- "description": "An instance-attached disk resource.",
- "properties": {
- "autoDelete": {
- "type": "boolean",
- "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
- },
- "boot": {
- "type": "boolean",
- "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
- },
- "deviceName": {
- "type": "string",
- "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance.\n\nIf not specified, the server chooses a default device name to apply to this disk, in the form persistent-disks-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
- },
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.",
- "format": "int64"
- },
- "guestOsFeatures": {
- "type": "array",
- "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
- "items": {
- "$ref": "GuestOsFeature"
- }
- },
- "index": {
- "type": "integer",
- "description": "[Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
- "format": "int32"
- },
- "initializeParams": {
- "$ref": "AttachedDiskInitializeParams",
- "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both."
- },
- "interface": {
- "type": "string",
- "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
- "enum": [
- "NVME",
- "SCSI"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#attachedDisk for attached disks.",
- "default": "compute#attachedDisk"
},
- "licenses": {
- "type": "array",
- "description": "[Output Only] Any valid publicly visible licenses.",
- "items": {
- "type": "string"
- }
- },
- "mode": {
- "type": "string",
- "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
- "enum": [
- "READ_ONLY",
- "READ_WRITE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "savedState": {
- "type": "string",
- "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED iff the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api.",
- "enum": [
- "DISK_SAVED_STATE_UNSPECIFIED",
- "PRESERVED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "source": {
- "type": "string",
- "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk."
- },
- "type": {
- "type": "string",
- "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
- "enum": [
- "PERSISTENT",
- "SCRATCH"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "AttachedDiskInitializeParams": {
- "id": "AttachedDiskInitializeParams",
- "type": "object",
- "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both.",
- "properties": {
- "diskName": {
- "type": "string",
- "description": "Specifies the disk name. If not specified, the default is to use the name of the instance."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "Specifies the size of the disk in base-2 GB.",
- "format": "int64"
- },
- "diskStorageType": {
- "type": "string",
- "description": "[Deprecated] Storage type of the disk.",
- "enum": [
- "HDD",
- "SSD"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "diskType": {
- "type": "string",
- "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:\n\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard \n\nOther values include pd-ssd and local-ssd. If you define this field, you can provide either the full or partial URL. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType \n- projects/project/zones/zone/diskTypes/diskType \n- zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is the name of the disk type, not URL."
- },
- "sourceImage": {
- "type": "string",
- "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a custom image that you created, specify the image name in the following format:\n\nglobal/images/my-custom-image \n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-image-family \n\nIf the source image is deleted later, this field will not be set."
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys."
- }
- }
- },
- "AuditConfig": {
- "id": "AuditConfig",
- "type": "object",
- "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n{ \"audit_configs\": [ { \"service\": \"allServices\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", }, { \"log_type\": \"ADMIN_READ\", } ] }, { \"service\": \"fooservice.googleapis.com\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:bar@gmail.com\" ] } ] } ] }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts foo@gmail.com from DATA_READ logging, and bar@gmail.com from DATA_WRITE logging.",
- "properties": {
- "auditLogConfigs": {
- "type": "array",
- "description": "The configuration for logging of each type of permission.",
- "items": {
- "$ref": "AuditLogConfig"
- }
- },
- "exemptedMembers": {
- "type": "array",
- "description": "",
- "items": {
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
"type": "string"
- }
},
- "service": {
- "type": "string",
- "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
- }
- }
- },
- "AuditLogConfig": {
- "id": "AuditLogConfig",
- "type": "object",
- "description": "Provides the configuration for logging a type of permissions. Example:\n\n{ \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", } ] }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting foo@gmail.com from DATA_READ logging.",
- "properties": {
- "exemptedMembers": {
- "type": "array",
- "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of [Binding.members][].",
- "items": {
- "type": "string"
- }
- },
- "logType": {
- "type": "string",
- "description": "The log type that this config enables.",
- "enum": [
- "ADMIN_READ",
- "DATA_READ",
- "DATA_WRITE",
- "LOG_TYPE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "AuthorizationLoggingOptions": {
- "id": "AuthorizationLoggingOptions",
- "type": "object",
- "description": "Authorization-related information used by Cloud Audit Logging.",
- "properties": {
- "permissionType": {
- "type": "string",
- "description": "The type of the permission that was checked.",
- "enum": [
- "ADMIN_READ",
- "ADMIN_WRITE",
- "DATA_READ",
- "DATA_WRITE",
- "PERMISSION_TYPE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "Autoscaler": {
- "id": "Autoscaler",
- "type": "object",
- "description": "Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances. (== resource_for beta.autoscalers ==) (== resource_for v1.autoscalers ==) (== resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==)",
- "properties": {
- "autoscalingPolicy": {
- "$ref": "AutoscalingPolicy",
- "description": "The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#autoscaler for autoscalers.",
- "default": "compute#autoscaler"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroups.insert"
- ]
- }
- },
- "recommendedSize": {
- "type": "integer",
- "description": "[Output Only] Target recommended MIG size computed by autoscaler. Autoscaler calculates recommended MIG size even when autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to the existing managed instance group or autoscaler did not generate its first prediction.",
- "format": "int32"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the autoscaler configuration.",
- "enum": [
- "ACTIVE",
- "DELETING",
- "ERROR",
- "PENDING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "statusDetails": {
- "type": "array",
- "description": "[Output Only] Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
- "items": {
- "$ref": "AutoscalerStatusDetails"
- }
- },
- "target": {
- "type": "string",
- "description": "URL of the managed instance group that this autoscaler will scale."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope)."
- }
- }
- },
- "AutoscalerAggregatedList": {
- "id": "AutoscalerAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AutoscalersScopedList resources.",
- "additionalProperties": {
- "$ref": "AutoscalersScopedList",
- "description": "[Output Only] Name of the scope containing this set of autoscalers."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#autoscalerAggregatedList for aggregated lists of autoscalers.",
- "default": "compute#autoscalerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalerList": {
- "id": "AutoscalerList",
- "type": "object",
- "description": "Contains a list of Autoscaler resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Autoscaler resources.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#autoscalerList for lists of autoscalers.",
- "default": "compute#autoscalerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalerStatusDetails": {
- "id": "AutoscalerStatusDetails",
- "type": "object",
- "properties": {
- "message": {
- "type": "string",
- "description": "The status message."
- },
- "type": {
- "type": "string",
- "description": "The type of error returned.",
- "enum": [
- "ALL_INSTANCES_UNHEALTHY",
- "BACKEND_SERVICE_DOES_NOT_EXIST",
- "CAPPED_AT_MAX_NUM_REPLICAS",
- "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE",
- "CUSTOM_METRIC_INVALID",
- "MIN_EQUALS_MAX",
- "MISSING_CUSTOM_METRIC_DATA_POINTS",
- "MISSING_LOAD_BALANCING_DATA_POINTS",
- "MORE_THAN_ONE_BACKEND_SERVICE",
- "NOT_ENOUGH_QUOTA_AVAILABLE",
- "REGION_RESOURCE_STOCKOUT",
- "SCALING_TARGET_DOES_NOT_EXIST",
- "UNKNOWN",
- "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION",
- "ZONE_RESOURCE_STOCKOUT"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "AutoscalersScopedList": {
- "id": "AutoscalersScopedList",
- "type": "object",
- "properties": {
- "autoscalers": {
- "type": "array",
- "description": "[Output Only] List of autoscalers contained in this scope.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of autoscalers when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalingPolicy": {
- "id": "AutoscalingPolicy",
- "type": "object",
- "description": "Cloud Autoscaler policy.",
- "properties": {
- "coolDownPeriodSec": {
- "type": "integer",
- "description": "The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.",
- "format": "int32"
- },
- "cpuUtilization": {
- "$ref": "AutoscalingPolicyCpuUtilization",
- "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
- },
- "customMetricUtilizations": {
- "type": "array",
- "description": "Configuration parameters of autoscaling based on a custom metric.",
- "items": {
- "$ref": "AutoscalingPolicyCustomMetricUtilization"
- }
- },
- "loadBalancingUtilization": {
- "$ref": "AutoscalingPolicyLoadBalancingUtilization",
- "description": "Configuration parameters of autoscaling based on load balancer."
- },
- "maxNumReplicas": {
- "type": "integer",
- "description": "The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.",
- "format": "int32"
- },
- "minNumReplicas": {
- "type": "integer",
- "description": "The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.",
- "format": "int32"
- },
- "mode": {
- "type": "string",
- "description": "Defines operating mode for this policy.",
- "enum": [
- "OFF",
- "ON",
- "ONLY_DOWN",
- "ONLY_UP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "queueBasedScaling": {
- "$ref": "AutoscalingPolicyQueueBasedScaling",
- "description": "Configuration parameters of autoscaling based on queuing system."
- }
- }
- },
- "AutoscalingPolicyCpuUtilization": {
- "id": "AutoscalingPolicyCpuUtilization",
- "type": "object",
- "description": "CPU utilization policy.",
- "properties": {
- "utilizationTarget": {
- "type": "number",
- "description": "The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.",
- "format": "double"
- }
- }
- },
- "AutoscalingPolicyCustomMetricUtilization": {
- "id": "AutoscalingPolicyCustomMetricUtilization",
- "type": "object",
- "description": "Custom utilization metric policy.",
- "properties": {
- "filter": {
- "type": "string",
- "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data.\n\nFor the filter to be valid for autoscaling purposes, the following rules apply: \n- You can only use the AND operator for joining selectors. \n- You can only use direct equality comparison operator (=) without any functions for each selector. \n- You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. \n- The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels.\nIf the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a per-group metric for the purpose of autoscaling.\n\nIf not specified, the type defaults to gce_instance. \n\nYou should provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
- },
- "metric": {
- "type": "string",
- "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE."
- },
- "singleInstanceAssignment": {
- "type": "number",
- "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler will keep the number of instances proportional to the value of this metric, the metric itself should not change value due to group resizing.\n\nA good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances.\n\nA bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead.",
- "format": "double"
- },
- "utilizationTarget": {
- "type": "number",
- "description": "The target value of the metric that autoscaler should maintain. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
- "format": "double"
- },
- "utilizationTargetType": {
- "type": "string",
- "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.",
- "enum": [
- "DELTA_PER_MINUTE",
- "DELTA_PER_SECOND",
- "GAUGE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "AutoscalingPolicyLoadBalancingUtilization": {
- "id": "AutoscalingPolicyLoadBalancingUtilization",
- "type": "object",
- "description": "Configuration parameters of autoscaling based on load balancing.",
- "properties": {
- "utilizationTarget": {
- "type": "number",
- "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
- "format": "double"
- }
- }
- },
- "AutoscalingPolicyQueueBasedScaling": {
- "id": "AutoscalingPolicyQueueBasedScaling",
- "type": "object",
- "description": "Configuration parameters of autoscaling based on queuing system.",
- "properties": {
- "acceptableBacklogPerInstance": {
- "type": "number",
- "description": "Scaling based on the average number of tasks in the queue per each active instance. The autoscaler keeps the average number of tasks per instance below this number, based on data collected in the last couple of minutes. The autoscaler will also take into account incoming tasks when calculating when to scale.",
- "format": "double"
- },
- "cloudPubSub": {
- "$ref": "AutoscalingPolicyQueueBasedScalingCloudPubSub",
- "description": "Configuration for Cloud Pub/Sub subscription queue."
- },
- "singleWorkerThroughputPerSec": {
- "type": "number",
- "description": "The scaling algorithm will also calculate throughput estimates on its own; if you explicitly provide this value, the autoscaler will take into account your value as well as automatic estimates when deciding how to scale.",
- "format": "double"
- }
- }
- },
- "AutoscalingPolicyQueueBasedScalingCloudPubSub": {
- "id": "AutoscalingPolicyQueueBasedScalingCloudPubSub",
- "type": "object",
- "description": "Configuration parameters for scaling based on Cloud Pub/Sub subscription queue.",
- "properties": {
- "subscription": {
- "type": "string",
- "description": "Cloud Pub/Sub subscription used for scaling. Provide the partial URL (starting with projects/) or just the subscription name. The subscription must be assigned to the topic specified in topicName and must be in a pull configuration. The subscription must belong to the same project as the Autoscaler."
- },
- "topic": {
- "type": "string",
- "description": "Cloud Pub/Sub topic used for scaling. Provide the partial URL or partial URL (starting with projects/) or just the topic name. The topic must belong to the same project as the Autoscaler resource."
- }
- }
- },
- "Backend": {
- "id": "Backend",
- "type": "object",
- "description": "Message containing information of one individual backend.",
- "properties": {
- "balancingMode": {
- "type": "string",
- "description": "Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).\n\nFor Internal Load Balancing, the default and only supported mode is CONNECTION.",
- "enum": [
- "CONNECTION",
- "RATE",
- "UTILIZATION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "capacityScaler": {
- "type": "number",
- "description": "A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "failover": {
- "type": "boolean",
- "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService."
- },
- "group": {
- "type": "string",
- "description": "The fully-qualified URL of a Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.\n\nNote that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.\n\nWhen the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService."
- },
- "maxConnections": {
- "type": "integer",
- "description": "The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxConnectionsPerEndpoint": {
- "type": "integer",
- "description": "The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxConnectionsPerInstance": {
- "type": "integer",
- "description": "The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxRate": {
- "type": "integer",
- "description": "The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxRatePerEndpoint": {
- "type": "number",
- "description": "The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- },
- "maxRatePerInstance": {
- "type": "number",
- "description": "The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- },
- "maxUtilization": {
- "type": "number",
- "description": "Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- }
- }
- },
- "BackendBucket": {
- "id": "BackendBucket",
- "type": "object",
- "description": "A BackendBucket resource. This resource defines a Cloud Storage bucket.",
- "properties": {
- "bucketName": {
- "type": "string",
- "description": "Cloud Storage bucket name."
- },
- "cdnPolicy": {
- "$ref": "BackendBucketCdnPolicy",
- "description": "Cloud CDN Coniguration for this BackendBucket."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource; provided by the client when the resource is created."
- },
- "enableCdn": {
- "type": "boolean",
- "description": "If true, enable Cloud CDN for this BackendBucket."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#backendBucket"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "BackendBucketCdnPolicy": {
- "id": "BackendBucketCdnPolicy",
- "type": "object",
- "description": "Message containing Cloud CDN configuration for a backend bucket.",
- "properties": {
- "signedUrlCacheMaxAgeSec": {
- "type": "string",
- "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this bucket had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
- "format": "int64"
- },
- "signedUrlKeyNames": {
- "type": "array",
- "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend bucket.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "BackendBucketList": {
- "id": "BackendBucketList",
- "type": "object",
- "description": "Contains a list of BackendBucket resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of BackendBucket resources.",
- "items": {
- "$ref": "BackendBucket"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#backendBucketList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendService": {
- "id": "BackendService",
- "type": "object",
- "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)",
- "properties": {
- "affinityCookieTtlSec": {
- "type": "integer",
- "description": "Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
- "format": "int32"
- },
- "appEngineBackend": {
- "$ref": "BackendServiceAppEngineBackend",
- "description": "Directs request to an App Engine app. cloudFunctionBackend and backends[] must be empty if this is set."
- },
- "backends": {
- "type": "array",
- "description": "The list of backends that serve this BackendService.",
- "items": {
- "$ref": "Backend"
- }
- },
- "cdnPolicy": {
- "$ref": "BackendServiceCdnPolicy",
- "description": "Cloud CDN configuration for this BackendService."
- },
- "cloudFunctionBackend": {
- "$ref": "BackendServiceCloudFunctionBackend",
- "description": "Directs request to a cloud function. appEngineBackend and backends[] must be empty if this is set."
- },
- "connectionDraining": {
- "$ref": "ConnectionDraining"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customRequestHeaders": {
- "type": "array",
- "description": "Headers that the HTTP/S load balancer should add to proxied requests.",
- "items": {
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
"type": "string"
- }
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
},
- "enableCDN": {
- "type": "boolean",
- "description": "If true, enable Cloud CDN for this BackendService.\n\nWhen the load balancing scheme is INTERNAL, this field is not used."
- },
- "failoverPolicy": {
- "$ref": "BackendServiceFailoverPolicy"
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.",
- "format": "byte"
- },
- "healthChecks": {
- "type": "array",
- "description": "The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.\n\nFor internal load balancing, a URL to a HealthCheck resource must be specified instead.",
- "items": {
- "type": "string"
- }
- },
- "iap": {
- "$ref": "BackendServiceIAP"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendService for backend services.",
- "default": "compute#backendService"
- },
- "loadBalancingScheme": {
- "type": "string",
- "description": "Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "INVALID_LOAD_BALANCING_SCHEME"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.\n\nWhen the load balancing scheme is INTERNAL, this field is not used."
- },
- "protocol": {
- "type": "string",
- "description": "The protocol this BackendService uses to communicate with backends.\n\nPossible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.\n\nFor internal load balancing, the possible values are TCP and UDP, and the default is TCP.",
- "enum": [
- "HTTP",
- "HTTP2",
- "HTTPS",
- "SSL",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services."
- },
- "securityPolicy": {
- "type": "string",
- "description": "[Output Only] The resource URL for the security policy associated with this backend service."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sessionAffinity": {
- "type": "string",
- "description": "Type of session affinity to use. The default is NONE.\n\nWhen the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.\n\nWhen the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.\n\nWhen the protocol is UDP, this field is not used.",
- "enum": [
- "CLIENT_IP",
- "CLIENT_IP_PORT_PROTO",
- "CLIENT_IP_PROTO",
- "GENERATED_COOKIE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
- "format": "int32"
- }
- }
- },
- "BackendServiceAggregatedList": {
- "id": "BackendServiceAggregatedList",
- "type": "object",
- "description": "Contains a list of BackendServicesScopedList.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of BackendServicesScopedList resources.",
- "additionalProperties": {
- "$ref": "BackendServicesScopedList",
- "description": "Name of the scope containing this set of BackendServices."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#backendServiceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendServiceAppEngineBackend": {
- "id": "BackendServiceAppEngineBackend",
- "type": "object",
- "description": "Configuration of a App Engine backend.",
- "properties": {
- "appEngineService": {
- "type": "string",
- "description": "Optional. App Engine app service name."
- },
- "targetProject": {
- "type": "string",
- "description": "Required. Project ID of the project hosting the app. This is the project ID of this project. Reference to another project is not allowed."
- },
- "version": {
- "type": "string",
- "description": "Optional. Version of App Engine app service. When empty, App Engine will do its normal traffic split."
- }
- }
- },
- "BackendServiceCdnPolicy": {
- "id": "BackendServiceCdnPolicy",
- "type": "object",
- "description": "Message containing Cloud CDN configuration for a backend service.",
- "properties": {
- "cacheKeyPolicy": {
- "$ref": "CacheKeyPolicy",
- "description": "The CacheKeyPolicy for this CdnPolicy."
- },
- "signedUrlCacheMaxAgeSec": {
- "type": "string",
- "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this backend had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
- "format": "int64"
- },
- "signedUrlKeyNames": {
- "type": "array",
- "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend service.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "BackendServiceCloudFunctionBackend": {
- "id": "BackendServiceCloudFunctionBackend",
- "type": "object",
- "description": "Configuration of a Cloud Function backend.",
- "properties": {
- "functionName": {
- "type": "string",
- "description": "Required. A cloud function name. Special value ?*? represents all cloud functions in the project."
- },
- "targetProject": {
- "type": "string",
- "description": "Required. Project ID of the project hosting the cloud function."
- }
- }
- },
- "BackendServiceFailoverPolicy": {
- "id": "BackendServiceFailoverPolicy",
- "type": "object",
- "properties": {
- "disableConnectionDrainOnFailover": {
- "type": "boolean",
- "description": "On failover or failback, this field indicates whether connection drain will be honored. Setting this to true has the following effect: connections to the old active pool are not drained. Connections to the new active pool use the timeout of 10 min (currently fixed). Setting to false has the following effect: both old and new connections will have a drain timeout of 10 min.\n\nThis can be set to true only if the protocol is TCP.\n\nThe default is false."
- },
- "dropTrafficIfUnhealthy": {
- "type": "boolean",
- "description": "This option is used only when no healthy VMs are detected in the primary and backup instance groups. When set to true, traffic is dropped. When set to false, new connections are sent across all VMs in the primary group.\n\nThe default is false."
- },
- "failoverRatio": {
- "type": "number",
- "description": "The value of the field must be in [0, 1]. If the ratio of the healthy VMs in the primary backend is at or below this number, traffic arriving at the load-balanced IP will be directed to the failover backend.\n\nIn case where 'failoverRatio' is not set or all the VMs in the backup backend are unhealthy, the traffic will be directed back to the primary backend in the \"force\" mode, where traffic will be spread to the healthy VMs with the best effort, or to all VMs when no VM is healthy.\n\nThis field is only used with l4 load balancing.",
- "format": "float"
- }
- }
- },
- "BackendServiceGroupHealth": {
- "id": "BackendServiceGroupHealth",
- "type": "object",
- "properties": {
- "healthStatus": {
- "type": "array",
- "items": {
- "$ref": "HealthStatus"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.",
- "default": "compute#backendServiceGroupHealth"
- }
- }
- },
- "BackendServiceIAP": {
- "id": "BackendServiceIAP",
- "type": "object",
- "description": "Identity-Aware Proxy",
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "oauth2ClientId": {
- "type": "string"
- },
- "oauth2ClientSecret": {
- "type": "string"
- },
- "oauth2ClientSecretSha256": {
- "type": "string",
- "description": "[Output Only] SHA256 hash value for the field oauth2_client_secret above."
- }
- }
- },
- "BackendServiceList": {
- "id": "BackendServiceList",
- "type": "object",
- "description": "Contains a list of BackendService resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of BackendService resources.",
- "items": {
- "$ref": "BackendService"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.",
- "default": "compute#backendServiceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendServiceReference": {
- "id": "BackendServiceReference",
- "type": "object",
- "properties": {
- "backendService": {
- "type": "string"
- }
- }
- },
- "BackendServicesScopedList": {
- "id": "BackendServicesScopedList",
- "type": "object",
- "properties": {
- "backendServices": {
- "type": "array",
- "description": "List of BackendServices contained in this scope.",
- "items": {
- "$ref": "BackendService"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of backend services when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "Binding": {
- "id": "Binding",
- "type": "object",
- "description": "Associates `members` with a `role`.",
- "properties": {
- "condition": {
- "$ref": "Expr",
- "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently. This field is GOOGLE_INTERNAL."
- },
- "members": {
- "type": "array",
- "description": "Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.\n\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.",
- "items": {
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
"type": "string"
- }
},
- "role": {
- "type": "string",
- "description": "Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
- }
- }
- },
- "CacheInvalidationRule": {
- "id": "CacheInvalidationRule",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "If set, this invalidation rule will only apply to requests with a Host header matching host."
- },
- "path": {
- "type": "string"
- }
- }
- },
- "CacheKeyPolicy": {
- "id": "CacheKeyPolicy",
- "type": "object",
- "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
- "properties": {
- "includeHost": {
- "type": "boolean",
- "description": "If true, requests to different hosts will be cached separately."
- },
- "includeProtocol": {
- "type": "boolean",
- "description": "If true, http and https requests will be cached separately."
- },
- "includeQueryString": {
- "type": "boolean",
- "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
- },
- "queryStringBlacklist": {
- "type": "array",
- "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.",
- "items": {
- "type": "string"
- }
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
},
- "queryStringWhitelist": {
- "type": "array",
- "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "Commitment": {
- "id": "Commitment",
- "type": "object",
- "description": "Represents a Commitment resource. Creating a Commitment resource means that you are purchasing a committed use contract with an explicit start and end time. You can create commitments based on vCPUs and memory usage and receive discounted rates. For full details, read Signing Up for Committed Use Discounts.\n\nCommitted use discounts are subject to Google Cloud Platform's Service Specific Terms. By purchasing a committed use discount, you agree to these terms. Committed use discounts will not renew, so you must purchase a new commitment to continue receiving discounts. (== resource_for beta.commitments ==) (== resource_for v1.commitments ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "endTimestamp": {
- "type": "string",
- "description": "[Output Only] Commitment end time in RFC3339 text format."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#commitment for commitments.",
- "default": "compute#commitment"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "plan": {
- "type": "string",
- "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
- "enum": [
- "INVALID",
- "THIRTY_SIX_MONTH",
- "TWELVE_MONTH"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where this commitment may be used."
- },
- "resources": {
- "type": "array",
- "description": "List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
- "items": {
- "$ref": "ResourceCommitment"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "startTimestamp": {
- "type": "string",
- "description": "[Output Only] Commitment start time in RFC3339 text format."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
- "enum": [
- "ACTIVE",
- "CREATING",
- "EXPIRED",
- "NOT_YET_ACTIVE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable explanation of the status."
- }
- }
- },
- "CommitmentAggregatedList": {
- "id": "CommitmentAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of CommitmentsScopedList resources.",
- "additionalProperties": {
- "$ref": "CommitmentsScopedList",
- "description": "[Output Only] Name of the scope containing this set of commitments."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#commitmentAggregatedList for aggregated lists of commitments.",
- "default": "compute#commitmentAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "CommitmentList": {
- "id": "CommitmentList",
- "type": "object",
- "description": "Contains a list of Commitment resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Commitment resources.",
- "items": {
- "$ref": "Commitment"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#commitmentList for lists of commitments.",
- "default": "compute#commitmentList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "CommitmentsScopedList": {
- "id": "CommitmentsScopedList",
- "type": "object",
- "properties": {
- "commitments": {
- "type": "array",
- "description": "[Output Only] List of commitments contained in this scope.",
- "items": {
- "$ref": "Commitment"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of commitments when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "Condition": {
- "id": "Condition",
- "type": "object",
- "description": "A condition to be met.",
- "properties": {
- "iam": {
- "type": "string",
- "description": "Trusted attributes supplied by the IAM system.",
- "enum": [
- "APPROVER",
- "ATTRIBUTION",
- "AUTHORITY",
- "JUSTIFICATION_TYPE",
- "NO_ATTR",
- "SECURITY_REALM"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "op": {
- "type": "string",
- "description": "An operator to apply the subject with.",
- "enum": [
- "DISCHARGED",
- "EQUALS",
- "IN",
- "NOT_EQUALS",
- "NOT_IN",
- "NO_OP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "svc": {
- "type": "string",
- "description": "Trusted attributes discharged by the service."
- },
- "sys": {
- "type": "string",
- "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
- "enum": [
- "IP",
- "NAME",
- "NO_ATTR",
- "REGION",
- "SERVICE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "value": {
- "type": "string",
- "description": "DEPRECATED. Use 'values' instead."
- },
- "values": {
- "type": "array",
- "description": "The objects of the condition. This is mutually exclusive with 'value'.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "ConnectionDraining": {
- "id": "ConnectionDraining",
- "type": "object",
- "description": "Message containing connection draining configuration.",
- "properties": {
- "drainingTimeoutSec": {
- "type": "integer",
- "description": "Time for which instance will be drained (not accept new connections, but still work to finish started).",
- "format": "int32"
- }
- }
- },
- "CustomerEncryptionKey": {
- "id": "CustomerEncryptionKey",
- "type": "object",
- "description": "Represents a customer-supplied encryption key",
- "properties": {
- "kmsKeyName": {
- "type": "string",
- "description": "The name of the encryption key that is stored in Google Cloud KMS."
- },
- "rawKey": {
- "type": "string",
- "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource."
- },
- "rsaEncryptedKey": {
- "type": "string",
- "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource.\n\nThe key must meet the following requirements before you can provide it to Compute Engine: \n- The key is wrapped using a RSA public key certificate provided by Google. \n- After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Get the RSA public key certificate provided by Google at:\nhttps://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem"
- },
- "sha256": {
- "type": "string",
- "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource."
- }
- }
- },
- "CustomerEncryptionKeyProtectedDisk": {
- "id": "CustomerEncryptionKeyProtectedDisk",
- "type": "object",
- "properties": {
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Decrypts data associated with the disk with a customer-supplied encryption key."
- },
- "source": {
- "type": "string",
- "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks."
- }
- }
- },
- "DailyMaintenanceWindow": {
- "id": "DailyMaintenanceWindow",
- "type": "object",
- "description": "Time window specified for daily maintenance operations.",
- "properties": {
- "daysInCycle": {
- "type": "integer",
- "description": "Allows to define schedule that runs every nth day of the month.",
- "format": "int32"
- },
- "duration": {
- "type": "string",
- "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
- },
- "startTime": {
- "type": "string",
- "description": "Time within the maintenance window to start the maintenance operations. It must be in format \"HH:MM?, where HH : [00-23] and MM : [00-59] GMT."
- }
- }
- },
- "DeprecationStatus": {
- "id": "DeprecationStatus",
- "type": "object",
- "description": "Deprecation status for a public resource.",
- "properties": {
- "deleted": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "deprecated": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "obsolete": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "replacement": {
- "type": "string",
- "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
- },
- "state": {
- "type": "string",
- "description": "The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
- "enum": [
- "DELETED",
- "DEPRECATED",
- "OBSOLETE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "Disk": {
- "id": "Disk",
- "type": "object",
- "description": "A Disk resource. (== resource_for beta.disks ==) (== resource_for v1.disks ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later."
- },
- "guestOsFeatures": {
- "type": "array",
- "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
- "items": {
- "$ref": "GuestOsFeature"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#disk for disks.",
- "default": "compute#disk"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a disk.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
- "additionalProperties": {
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
+ "location": "query",
"type": "string"
- }
- },
- "lastAttachTimestamp": {
- "type": "string",
- "description": "[Output Only] Last attach timestamp in RFC3339 text format."
- },
- "lastDetachTimestamp": {
- "type": "string",
- "description": "[Output Only] Last detach timestamp in RFC3339 text format."
},
- "licenseCodes": {
- "type": "array",
- "description": "Integer license codes indicating which licenses are attached to this disk.",
- "items": {
- "type": "string",
- "format": "int64"
- }
- },
- "licenses": {
- "type": "array",
- "description": "Any applicable publicly visible licenses.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.disks.insert"
- ]
- }
- },
- "options": {
- "type": "string",
- "description": "Internal use only."
- },
- "physicalBlockSizeBytes": {
- "type": "string",
- "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. Initially only 4096 is supported, but other powers of two may be added. If an unsupported value is requested, the error message will list the supported values, but even a supported value may be allowed for only some projects.",
- "format": "int64"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the disk resides. Only applicable for regional resources."
- },
- "replicaZones": {
- "type": "array",
- "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
- "items": {
+ "userIp": {
+ "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
+ "location": "query",
"type": "string"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "sizeGb": {
- "type": "string",
- "description": "Size of the persistent disk, specified in GB. You can specify this field when creating a persistent disk using the sourceImage or sourceSnapshot parameter, or specify it alone to create an empty persistent disk.\n\nIf you specify this field along with sourceImage or sourceSnapshot, the value of sizeGb must not be less than the size of the sourceImage or the size of the snapshot. Acceptable values are 1 to 65536, inclusive.",
- "format": "int64"
- },
- "sourceImage": {
- "type": "string",
- "description": "The source image used to create this disk. If the source image is deleted, this field will not be set.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a custom image that you created, specify the image name in the following format:\n\nglobal/images/my-custom-image \n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-image-family"
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
- },
- "sourceImageId": {
- "type": "string",
- "description": "[Output Only] The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
- },
- "sourceSnapshot": {
- "type": "string",
- "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot \n- projects/project/global/snapshots/snapshot \n- global/snapshots/snapshot"
- },
- "sourceSnapshotEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
- },
- "sourceSnapshotId": {
- "type": "string",
- "description": "[Output Only] The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of disk creation.",
- "enum": [
- "CREATING",
- "FAILED",
- "READY",
- "RESTORING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "storageType": {
- "type": "string",
- "description": "[Deprecated] Storage type of the persistent disk.",
- "enum": [
- "HDD",
- "SSD"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "type": {
- "type": "string",
- "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk."
- },
- "users": {
- "type": "array",
- "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
- "items": {
- "type": "string"
- }
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the disk resides."
- }
- }
- },
- "DiskAggregatedList": {
- "id": "DiskAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of DisksScopedList resources.",
- "additionalProperties": {
- "$ref": "DisksScopedList",
- "description": "[Output Only] Name of the scope containing this set of disks."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskAggregatedList for aggregated lists of persistent disks.",
- "default": "compute#diskAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskInstantiationConfig": {
- "id": "DiskInstantiationConfig",
- "type": "object",
- "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
- "properties": {
- "autoDelete": {
- "type": "boolean",
- "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
- },
- "deviceName": {
- "type": "string",
- "description": "Specifies the device name of the disk to which the configurations apply to."
- },
- "instantiateFrom": {
- "type": "string",
- "description": "Specifies whether to include the disk and what image to use.",
- "enum": [
- "ATTACH_READ_ONLY",
- "BLANK",
- "DEFAULT",
- "DO_NOT_INCLUDE",
- "IMAGE_URL",
- "SOURCE_IMAGE",
- "SOURCE_IMAGE_FAMILY"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "sourceImage": {
- "type": "string",
- "description": "The custom source image to be used to restore this disk when instantiating this instance template."
- }
- }
- },
- "DiskList": {
- "id": "DiskList",
- "type": "object",
- "description": "A list of Disk resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Disk resources.",
- "items": {
- "$ref": "Disk"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskList for lists of disks.",
- "default": "compute#diskList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskMoveRequest": {
- "id": "DiskMoveRequest",
- "type": "object",
- "properties": {
- "destinationZone": {
- "type": "string",
- "description": "The URL of the destination zone to move the disk. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone"
- },
- "targetDisk": {
- "type": "string",
- "description": "The URL of the target disk to move. This can be a full or partial URL. For example, the following are all valid URLs to a disk: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk"
- }
- }
- },
- "DiskType": {
- "id": "DiskType",
- "type": "object",
- "description": "A DiskType resource. (== resource_for beta.diskTypes ==) (== resource_for v1.diskTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultDiskSizeGb": {
- "type": "string",
- "description": "[Output Only] Server-defined default disk size in GB.",
- "format": "int64"
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this disk type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional description of this resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#diskType for disk types.",
- "default": "compute#diskType"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "validDiskSize": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the valid disk size, such as \"10GB-10TB\"."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the disk type resides."
}
- }
},
- "DiskTypeAggregatedList": {
- "id": "DiskTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of DiskTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "DiskTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of disk types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskTypeAggregatedList.",
- "default": "compute#diskTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskTypeList": {
- "id": "DiskTypeList",
- "type": "object",
- "description": "Contains a list of disk types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of DiskType resources.",
- "items": {
- "$ref": "DiskType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskTypeList for disk types.",
- "default": "compute#diskTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskTypesScopedList": {
- "id": "DiskTypesScopedList",
- "type": "object",
- "properties": {
- "diskTypes": {
- "type": "array",
- "description": "[Output Only] List of disk types contained in this scope.",
- "items": {
- "$ref": "DiskType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of disk types when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DisksResizeRequest": {
- "id": "DisksResizeRequest",
- "type": "object",
- "properties": {
- "sizeGb": {
- "type": "string",
- "description": "The new size of the persistent disk, which is specified in GB.",
- "format": "int64"
- }
- }
- },
- "DisksScopedList": {
- "id": "DisksScopedList",
- "type": "object",
- "properties": {
- "disks": {
- "type": "array",
- "description": "[Output Only] List of disks contained in this scope.",
- "items": {
- "$ref": "Disk"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of disks when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DistributionPolicy": {
- "id": "DistributionPolicy",
- "type": "object",
- "properties": {
- "zones": {
- "type": "array",
- "items": {
- "$ref": "DistributionPolicyZoneConfiguration"
- }
- }
- }
- },
- "DistributionPolicyZoneConfiguration": {
- "id": "DistributionPolicyZoneConfiguration",
- "type": "object",
- "properties": {
- "zone": {
- "type": "string",
- "description": "URL of the zone where managed instance group is spawning instances (for regional resources). Zone has to belong to the region where managed instance group is located.",
- "annotations": {
- "required": [
- "compute.regionInstanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.update"
- ]
- }
- }
- }
- },
- "Expr": {
- "id": "Expr",
- "type": "object",
- "description": "Represents an expression text. Example:\n\ntitle: \"User account presence\" description: \"Determines whether the request has a user account\" expression: \"size(request.user) \u003e 0\"",
- "properties": {
- "description": {
- "type": "string",
- "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI."
- },
- "expression": {
- "type": "string",
- "description": "Textual representation of an expression in Common Expression Language syntax.\n\nThe application context of the containing message determines which well-known feature set of CEL is supported."
- },
- "location": {
- "type": "string",
- "description": "An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file."
- },
- "title": {
- "type": "string",
- "description": "An optional title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression."
- }
- }
- },
- "Firewall": {
- "id": "Firewall",
- "type": "object",
- "description": "Represents a Firewall resource.",
- "properties": {
- "allowed": {
- "type": "array",
- "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
- "items": {
- "type": "object",
- "properties": {
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
- },
- "ports": {
- "type": "array",
- "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
- "items": {
- "type": "string"
+ "protocol": "rest",
+ "resources": {
+ "acceleratorTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of accelerator types.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/acceleratorTypes",
+ "response": {
+ "$ref": "AcceleratorTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified accelerator type. Get a list of available accelerator types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "acceleratorType"
+ ],
+ "parameters": {
+ "acceleratorType": {
+ "description": "Name of the accelerator type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/acceleratorTypes/{acceleratorType}",
+ "response": {
+ "$ref": "AcceleratorType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of accelerator types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/acceleratorTypes",
+ "response": {
+ "$ref": "AcceleratorTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
}
- }
}
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "denied": {
- "type": "array",
- "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
- "items": {
- "type": "object",
- "properties": {
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
- },
- "ports": {
- "type": "array",
- "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
- "items": {
- "type": "string"
+ },
+ "addresses": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of addresses.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/addresses",
+ "response": {
+ "$ref": "AddressAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified address resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.addresses.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{address}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified address resource.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{address}",
+ "response": {
+ "$ref": "Address"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an address resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.addresses.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses",
+ "request": {
+ "$ref": "Address"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of addresses contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses",
+ "response": {
+ "$ref": "AddressList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an Address. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.addresses.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.addresses.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
}
- }
}
- }
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
},
- "destinationRanges": {
- "type": "array",
- "description": "If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "direction": {
- "type": "string",
- "description": "Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.",
- "enum": [
- "EGRESS",
- "INGRESS"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "disabled": {
- "type": "boolean",
- "description": "Denotes whether the firewall rule is disabled, i.e not applied to the network it is associated with. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled."
- },
- "enableLogging": {
- "type": "boolean",
- "description": "This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported to the configured export destination for all firewall logs in the network. Logs may be exported to BigQuery or Pub/Sub."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#firewall for firewall rules.",
- "default": "compute#firewall"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.firewalls.insert",
- "compute.firewalls.patch"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default"
- },
- "priority": {
- "type": "integer",
- "description": "Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.",
- "format": "int32"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sourceRanges": {
- "type": "array",
- "description": "If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "sourceServiceAccounts": {
- "type": "array",
- "description": "If source service accounts are specified, the firewall will apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both properties for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
- "items": {
- "type": "string"
- }
- },
- "sourceTags": {
- "type": "array",
- "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.",
- "items": {
- "type": "string"
- }
- },
- "targetServiceAccounts": {
- "type": "array",
- "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
- "items": {
- "type": "string"
- }
- },
- "targetTags": {
- "type": "array",
- "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "FirewallList": {
- "id": "FirewallList",
- "type": "object",
- "description": "Contains a list of firewalls.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Firewall resources.",
- "items": {
- "$ref": "Firewall"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#firewallList for lists of firewalls.",
- "default": "compute#firewallList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "autoscalers": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of autoscalers.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/autoscalers",
+ "response": {
+ "$ref": "AutoscalerAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified autoscaler.",
+ "httpMethod": "DELETE",
+ "id": "compute.autoscalers.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified autoscaler resource. Get a list of available autoscalers by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Autoscaler"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.autoscalers.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of autoscalers contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "response": {
+ "$ref": "AutoscalerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.autoscalers.patch",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to patch.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.autoscalers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.autoscalers.update",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to update.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "FixedOrPercent": {
- "id": "FixedOrPercent",
- "type": "object",
- "description": "Encapsulates numeric value that can be either absolute or relative.",
- "properties": {
- "calculated": {
- "type": "integer",
- "description": "[Output Only] Absolute value of VM instances calculated based on the specific mode.\n\n \n- If the value is fixed, then the caculated value is equal to the fixed value. \n- If the value is a percent, then the calculated value is percent/100 * targetSize. For example, the calculated value of a 80% of a managed instance group with 150 instances would be (80/100 * 150) = 120 VM instances. If there is a remainder, the number is rounded up.",
- "format": "int32"
- },
- "fixed": {
- "type": "integer",
- "description": "Specifies a fixed number of VM instances. This must be a positive integer.",
- "format": "int32"
- },
- "percent": {
- "type": "integer",
- "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%.",
- "format": "int32"
- }
- }
- },
- "ForwardingRule": {
- "id": "ForwardingRule",
- "type": "object",
- "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, ports] tuple. (== resource_for beta.forwardingRules ==) (== resource_for v1.forwardingRules ==) (== resource_for beta.globalForwardingRules ==) (== resource_for v1.globalForwardingRules ==) (== resource_for beta.regionForwardingRules ==) (== resource_for v1.regionForwardingRules ==)",
- "properties": {
- "IPAddress": {
- "type": "string",
- "description": "The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing scheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, and for regional forwarding rules, the address must live in the same region as the forwarding rule. If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral internal IP address will be automatically allocated from the IP range of the subnet or network configured for this forwarding rule.\n\nAn address can be specified either by a literal IP address or a URL reference to an existing Address resource. The following examples are all valid: \n- 100.1.2.3 \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address \n- projects/project/regions/region/addresses/address \n- regions/region/addresses/address \n- global/addresses/address \n- address"
- },
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.\n\nWhen the load balancing scheme is INTERNAL, only TCP and UDP are valid.",
- "enum": [
- "AH",
- "ESP",
- "ICMP",
- "SCTP",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "backendService": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the BackendService resource to receive the matched traffic."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request.\n\nTo see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipVersion": {
- "type": "string",
- "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6. This can only be specified for a global forwarding rule.",
- "enum": [
- "IPV4",
- "IPV6",
- "UNSPECIFIED_VERSION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
- "default": "compute#forwardingRule"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "loadBalancingScheme": {
- "type": "string",
- "description": "This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "INVALID"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "network": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used."
- },
- "networkTier": {
- "type": "string",
- "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD.\n\nFor regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM.\n\nIf this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
- "enum": [
- "PREMIUM",
- "SELECT",
- "STANDARD"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "portRange": {
- "type": "string",
- "description": "This field is used along with the target field for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable ports: \n- TargetHttpProxy: 80, 8080 \n- TargetHttpsProxy: 443 \n- TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 \n- TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 \n- TargetVpnGateway: 500, 4500\n-"
- },
- "ports": {
- "type": "array",
- "description": "This field is used along with the backend_service field for internal load balancing.\n\nWhen the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule.\n\nYou may specify a maximum of up to 5 ports.",
- "items": {
- "type": "string"
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules."
},
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
+ "backendBuckets": {
+ "methods": {
+ "addSignedUrlKey": {
+ "description": "Adds the given Signed URL Key to the backend bucket.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.addSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey",
+ "request": {
+ "$ref": "SignedUrlKey"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified BackendBucket resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.backendBuckets.delete",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteSignedUrlKey": {
+ "description": "Deletes the given Signed URL Key from the backend bucket.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.deleteSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendBucket",
+ "keyName"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "keyName": {
+ "description": "The name of the Signed URL Key to delete.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.backendBuckets.get",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "response": {
+ "$ref": "BackendBucket"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.backendBuckets.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of BackendBucket resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendBuckets.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets",
+ "response": {
+ "$ref": "BackendBucketList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified BackendBucket resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.backendBuckets.patch",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified BackendBucket resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.backendBuckets.update",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "serviceLabel": {
- "type": "string",
- "description": "An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.\n\nThe label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.\n\nThis field is only used for internal load balancing.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
+ "backendServices": {
+ "methods": {
+ "addSignedUrlKey": {
+ "description": "Adds the given Signed URL Key to the specified backend service.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.addSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/addSignedUrlKey",
+ "request": {
+ "$ref": "SignedUrlKey"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of all BackendService resources, regional and global, available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Name of the project scoping this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/backendServices",
+ "response": {
+ "$ref": "BackendServiceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified BackendService resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.backendServices.delete",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteSignedUrlKey": {
+ "description": "Deletes the given Signed URL Key from the specified backend service.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.deleteSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendService",
+ "keyName"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "keyName": {
+ "description": "The name of the Signed URL Key to delete.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/deleteSignedUrlKey",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified BackendService resource. Get a list of available backend services by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.get",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "response": {
+ "$ref": "BackendService"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for this BackendService.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.getHealth",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the queried instance belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/getHealth",
+ "request": {
+ "$ref": "ResourceGroupReference"
+ },
+ "response": {
+ "$ref": "BackendServiceGroupHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of BackendService resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices",
+ "response": {
+ "$ref": "BackendServiceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.backendServices.patch",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSecurityPolicy": {
+ "description": "Sets the security policy for the specified backend service.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.setSecurityPolicy",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the security policy should be set. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/setSecurityPolicy",
+ "request": {
+ "$ref": "SecurityPolicyReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "PUT",
+ "id": "compute.backendServices.update",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "serviceName": {
- "type": "string",
- "description": "[Output Only] The internal fully qualified service name for this Forwarding Rule.\n\nThis field is only used for internal load balancing."
+ "clientSslPolicies": {
+ "methods": {
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.clientSslPolicies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/clientSslPolicies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "subnetwork": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.\n\nIf the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified."
+ "diskTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of disk types.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/diskTypes",
+ "response": {
+ "$ref": "DiskTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified disk type. Get a list of available disk types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "diskType"
+ ],
+ "parameters": {
+ "diskType": {
+ "description": "Name of the disk type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/diskTypes/{diskType}",
+ "response": {
+ "$ref": "DiskType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of disk types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/diskTypes",
+ "response": {
+ "$ref": "DiskTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "target": {
- "type": "string",
- "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object.\n\nThis field is not used for internal load balancing."
- }
- }
- },
- "ForwardingRuleAggregatedList": {
- "id": "ForwardingRuleAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of ForwardingRulesScopedList resources.",
- "additionalProperties": {
- "$ref": "ForwardingRulesScopedList",
- "description": "Name of the scope containing this set of addresses."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#forwardingRuleAggregatedList for lists of forwarding rules.",
- "default": "compute#forwardingRuleAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "disks": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of persistent disks.",
+ "httpMethod": "GET",
+ "id": "compute.disks.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/disks",
+ "response": {
+ "$ref": "DiskAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "createSnapshot": {
+ "description": "Creates a snapshot of a specified persistent disk.",
+ "httpMethod": "POST",
+ "id": "compute.disks.createSnapshot",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to snapshot.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "guestFlush": {
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}/createSnapshot",
+ "request": {
+ "$ref": "Snapshot"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified persistent disk. Deleting a disk removes its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
+ "httpMethod": "DELETE",
+ "id": "compute.disks.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns a specified persistent disk. Get a list of available persistent disks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.disks.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}",
+ "response": {
+ "$ref": "Disk"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.disks.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk with a sourceImage, a sourceSnapshot, or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
+ "httpMethod": "POST",
+ "id": "compute.disks.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "Optional. Source image to restore onto a disk.",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks",
+ "request": {
+ "$ref": "Disk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of persistent disks contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.disks.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks",
+ "response": {
+ "$ref": "DiskList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the specified persistent disk. You can only increase the size of the disk.",
+ "httpMethod": "POST",
+ "id": "compute.disks.resize",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "The name of the persistent disk.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}/resize",
+ "request": {
+ "$ref": "DisksResizeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.disks.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a disk. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.disks.setLabels",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{resource}/setLabels",
+ "request": {
+ "$ref": "ZoneSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.disks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "ForwardingRuleList": {
- "id": "ForwardingRuleList",
- "type": "object",
- "description": "Contains a list of ForwardingRule resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of ForwardingRule resources.",
- "items": {
- "$ref": "ForwardingRule"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#forwardingRuleList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "firewalls": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified firewall.",
+ "httpMethod": "DELETE",
+ "id": "compute.firewalls.delete",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified firewall.",
+ "httpMethod": "GET",
+ "id": "compute.firewalls.get",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "response": {
+ "$ref": "Firewall"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a firewall rule in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.firewalls.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of firewall rules available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.firewalls.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls",
+ "response": {
+ "$ref": "FirewallList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified firewall rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.firewalls.patch",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.firewalls.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified firewall rule with the data included in the request. The PUT method can only update the following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
+ "httpMethod": "PUT",
+ "id": "compute.firewalls.update",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "ForwardingRuleReference": {
- "id": "ForwardingRuleReference",
- "type": "object",
- "properties": {
- "forwardingRule": {
- "type": "string"
- }
- }
- },
- "ForwardingRulesScopedList": {
- "id": "ForwardingRulesScopedList",
- "type": "object",
- "properties": {
+ },
"forwardingRules": {
- "type": "array",
- "description": "List of forwarding rules contained in this scope.",
- "items": {
- "$ref": "ForwardingRule"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of forwarding rules when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "GlobalSetLabelsRequest": {
- "id": "GlobalSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "A list of labels to apply for this resource. Each label key & value must comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For example, \"webserver-frontend\": \"images\". A label value can also be empty (e.g. \"my-label\": \"\").",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "GuestAttributes": {
- "id": "GuestAttributes",
- "type": "object",
- "description": "A guest attributes entry.",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#guestAttributes for guest attributes entry.",
- "default": "compute#guestAttributes"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "variableKey": {
- "type": "string",
- "description": "The key to search for."
- },
- "variableValue": {
- "type": "string",
- "description": "[Output Only] The value found for the requested key."
- }
- }
- },
- "GuestOsFeature": {
- "id": "GuestOsFeature",
- "type": "object",
- "description": "Guest OS features.",
- "properties": {
- "type": {
- "type": "string",
- "description": "The ID of a supported feature. Read Enabling guest operating system features to see a list of available options.",
- "enum": [
- "FEATURE_TYPE_UNSPECIFIED",
- "MULTI_IP_SUBNET",
- "SECURE_BOOT",
- "UEFI_COMPATIBLE",
- "VIRTIO_SCSI_MULTIQUEUE",
- "WINDOWS"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "HTTP2HealthCheck": {
- "id": "HTTP2HealthCheck",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used."
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "portSpecification": {
- "type": "string",
- "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTP2 health check follows behavior specified in\nport\nand\nportName\nfields.",
- "enum": [
- "USE_FIXED_PORT",
- "USE_NAMED_PORT",
- "USE_SERVING_PORT"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTP/2 health check request. The default value is /."
- },
- "response": {
- "type": "string",
- "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII."
- }
- }
- },
- "HTTPHealthCheck": {
- "id": "HTTPHealthCheck",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTP health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used."
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "portSpecification": {
- "type": "string",
- "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTP health check follows behavior specified in\nport\nand\nportName\nfields.",
- "enum": [
- "USE_FIXED_PORT",
- "USE_NAMED_PORT",
- "USE_SERVING_PORT"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTP health check request. The default value is /."
- },
- "response": {
- "type": "string",
- "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII."
- }
- }
- },
- "HTTPSHealthCheck": {
- "id": "HTTPSHealthCheck",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used."
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "portSpecification": {
- "type": "string",
- "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTPS health check follows behavior specified in\nport\nand\nportName\nfields.",
- "enum": [
- "USE_FIXED_PORT",
- "USE_NAMED_PORT",
- "USE_SERVING_PORT"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTPS health check request. The default value is /."
- },
- "response": {
- "type": "string",
- "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII."
- }
- }
- },
- "HealthCheck": {
- "id": "HealthCheck",
- "type": "object",
- "description": "An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in 3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "http2HealthCheck": {
- "$ref": "HTTP2HealthCheck"
- },
- "httpHealthCheck": {
- "$ref": "HTTPHealthCheck"
- },
- "httpsHealthCheck": {
- "$ref": "HTTPSHealthCheck"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#healthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sslHealthCheck": {
- "$ref": "SSLHealthCheck"
- },
- "tcpHealthCheck": {
- "$ref": "TCPHealthCheck"
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
- "format": "int32"
- },
- "type": {
- "type": "string",
- "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.",
- "enum": [
- "HTTP",
- "HTTP2",
- "HTTPS",
- "INVALID",
- "SSL",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "udpHealthCheck": {
- "$ref": "UDPHealthCheck"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HealthCheckList": {
- "id": "HealthCheckList",
- "type": "object",
- "description": "Contains a list of HealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HealthCheck resources.",
- "items": {
- "$ref": "HealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#healthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of forwarding rules.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified ForwardingRule resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.forwardingRules.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified ForwardingRule resource.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "ForwardingRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified forwarding rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules. Currently, you can only patch the network_tier field.",
+ "httpMethod": "PATCH",
+ "id": "compute.forwardingRules.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTarget": {
+ "description": "Changes target URL for forwarding rule. The new target should be of the same type as the old target.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.setTarget",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource in which target is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "HealthCheckReference": {
- "id": "HealthCheckReference",
- "type": "object",
- "description": "A full or valid partial URL to a health check. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check \n- projects/project-id/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
- "properties": {
- "healthCheck": {
- "type": "string"
- }
- }
- },
- "HealthStatus": {
- "id": "HealthStatus",
- "type": "object",
- "properties": {
- "healthState": {
- "type": "string",
- "description": "Health state of the instance.",
- "enum": [
- "HEALTHY",
- "UNHEALTHY"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "instance": {
- "type": "string",
- "description": "URL of the instance resource."
- },
- "ipAddress": {
- "type": "string",
- "description": "The IP address represented by this resource."
- },
- "port": {
- "type": "integer",
- "description": "The port on the instance.",
- "format": "int32"
- }
- }
- },
- "HealthStatusForNetworkEndpoint": {
- "id": "HealthStatusForNetworkEndpoint",
- "type": "object",
- "properties": {
- "backendService": {
- "$ref": "BackendServiceReference",
- "description": "URL of the backend service associated with the health state of the network endpoint."
- },
- "forwardingRule": {
- "$ref": "ForwardingRuleReference",
- "description": "URL of the forwarding rule associated with the health state of the network endpoint."
- },
- "healthCheck": {
- "$ref": "HealthCheckReference",
- "description": "URL of the health check associated with the health state of the network endpoint."
- },
- "healthState": {
- "type": "string",
- "description": "Health state of the network endpoint determined based on the health checks configured.",
- "enum": [
- "DRAINING",
- "HEALTHY",
- "UNHEALTHY",
- "UNKNOWN"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "Host": {
- "id": "Host",
- "type": "object",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "hostType": {
- "type": "string",
- "description": "Full or partial URL of the host type resource to use for this host, in the format: zones/zone/hostTypes/host-type. This is provided by the client when the host is created. For example, the following is a valid partial url to a predefined host type:\n\nzones/us-central1-b/hostTypes/n1-host-64-416"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
},
- "instances": {
- "type": "array",
- "description": "A list of resource URLs to the virtual machine instances in this host. They must live in zones contained in the same region as this host.",
- "items": {
- "type": "string"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#host for host.",
- "default": "compute#host"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the host.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this host.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the host. One of the following values: CREATING, READY, REPAIR, and DELETING.",
- "enum": [
- "CREATING",
- "DELETING",
- "INVALID",
- "READY",
- "REPAIR"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable explanation of the status."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the host resides, such as us-central1-a."
- }
- }
- },
- "HostAggregatedList": {
- "id": "HostAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of HostsScopedList resources.",
- "additionalProperties": {
- "$ref": "HostsScopedList",
- "description": "[Output Only] Name of the scope containing this set of hosts."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#hostAggregatedList for aggregated lists of hosts.",
- "default": "compute#hostAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "HostList": {
- "id": "HostList",
- "type": "object",
- "description": "Contains a list of hosts.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Host resources.",
- "items": {
- "$ref": "Host"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#hostList for lists of hosts.",
- "default": "compute#hostList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "globalAddresses": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified address resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalAddresses.delete",
+ "parameterOrder": [
+ "project",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{address}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified address resource. Get a list of available addresses by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalAddresses.get",
+ "parameterOrder": [
+ "project",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{address}",
+ "response": {
+ "$ref": "Address"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an address resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.globalAddresses.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses",
+ "request": {
+ "$ref": "Address"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of global addresses.",
+ "httpMethod": "GET",
+ "id": "compute.globalAddresses.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses",
+ "response": {
+ "$ref": "AddressList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a GlobalAddress. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.globalAddresses.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.globalAddresses.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "HostRule": {
- "id": "HostRule",
- "type": "object",
- "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
- "properties": {
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "hosts": {
- "type": "array",
- "description": "The list of host patterns to match. They must be valid hostnames, except * will match any string of ([a-z0-9-.]*). In that case, * must be the first character and must be followed in the pattern by either - or ..",
- "items": {
- "type": "string"
- }
},
- "pathMatcher": {
- "type": "string",
- "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
- }
- }
- },
- "HostType": {
- "id": "HostType",
- "type": "object",
- "description": "A Host Type resource.",
- "properties": {
- "cpuPlatform": {
- "type": "string",
- "description": "[Output Only] The CPU platform used by this host type."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this host type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "guestCpus": {
- "type": "integer",
- "description": "[Output Only] The number of virtual CPUs that are available to the host type.",
- "format": "int32"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#hostType for host types.",
- "default": "compute#hostType"
- },
- "localSsdGb": {
- "type": "integer",
- "description": "[Output Only] Local SSD available to the host type, defined in GB.",
- "format": "int32"
- },
- "memoryMb": {
- "type": "integer",
- "description": "[Output Only] The amount of physical memory available to the host type, defined in MB.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the host type resides, such as us-central1-a."
- }
- }
- },
- "HostTypeAggregatedList": {
- "id": "HostTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of HostTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "HostTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of host types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource.Always compute#hostTypeAggregatedList for aggregated lists of host types.",
- "default": "compute#hostTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "globalForwardingRules": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified GlobalForwardingRule resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalForwardingRules.delete",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified GlobalForwardingRule resource. Get a list of available forwarding rules by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalForwardingRules.get",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "ForwardingRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of GlobalForwardingRule resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.globalForwardingRules.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified forwarding rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules. Currently, you can only patch the network_tier field.",
+ "httpMethod": "PATCH",
+ "id": "compute.globalForwardingRules.patch",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTarget": {
+ "description": "Changes target URL for the GlobalForwardingRule resource. The new target should be of the same type as the old target.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.setTarget",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource in which target is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}/setTarget",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "HostTypeList": {
- "id": "HostTypeList",
- "type": "object",
- "description": "Contains a list of host types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HostType resources.",
- "items": {
- "$ref": "HostType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource.Always compute#hostTypeList for lists of host types.",
- "default": "compute#hostTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "globalOperations": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of all operations.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/operations",
+ "response": {
+ "$ref": "OperationAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalOperations.delete",
+ "parameterOrder": [
+ "project",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified Operations resource. Get a list of operations by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.get",
+ "parameterOrder": [
+ "project",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "HostTypesScopedList": {
- "id": "HostTypesScopedList",
- "type": "object",
- "properties": {
+ },
+ "healthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.healthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HealthCheck resource. Get a list of available health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.healthChecks.get",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "response": {
+ "$ref": "HealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.healthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.healthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks",
+ "response": {
+ "$ref": "HealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.healthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.healthChecks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.healthChecks.update",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
+ },
"hostTypes": {
- "type": "array",
- "description": "[Output Only] List of host types contained in this scope.",
- "items": {
- "$ref": "HostType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the host types list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of host types.",
+ "httpMethod": "GET",
+ "id": "compute.hostTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/hostTypes",
+ "response": {
+ "$ref": "HostTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified host type. Get a list of available host types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.hostTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "hostType"
+ ],
+ "parameters": {
+ "hostType": {
+ "description": "Name of the host type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hostTypes/{hostType}",
+ "response": {
+ "$ref": "HostType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of host types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.hostTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hostTypes",
+ "response": {
+ "$ref": "HostTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "HostsScopedList": {
- "id": "HostsScopedList",
- "type": "object",
- "properties": {
+ },
"hosts": {
- "type": "array",
- "description": "[Output Only] List of hosts contained in this scope.",
- "items": {
- "$ref": "Host"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the host list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "HourlyMaintenanceWindow": {
- "id": "HourlyMaintenanceWindow",
- "type": "object",
- "description": "Time window specified for hourly maintenance operations.",
- "properties": {
- "duration": {
- "type": "string",
- "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario."
- },
- "hoursInCycle": {
- "type": "integer",
- "description": "Allows to define schedule that runs every nth hour.",
- "format": "int32"
- },
- "startTime": {
- "type": "string",
- "description": "Time within the maintenance window to start the maintenance operations. It must be in format \"HH:MM?, where HH : [00-23] and MM : [00-59] GMT."
- }
- }
- },
- "HttpHealthCheck": {
- "id": "HttpHealthCheck",
- "type": "object",
- "description": "An HttpHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTP.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
- "default": "compute#httpHealthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the HTTP health check request. The default value is 80.",
- "format": "int32"
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTP health check request. The default value is /."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
- "format": "int32"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HttpHealthCheckList": {
- "id": "HttpHealthCheckList",
- "type": "object",
- "description": "Contains a list of HttpHealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HttpHealthCheck resources.",
- "items": {
- "$ref": "HttpHealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#httpHealthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "HttpsHealthCheck": {
- "id": "HttpsHealthCheck",
- "type": "object",
- "description": "An HttpsHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTPS.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#httpsHealthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
- "format": "int32"
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTPS health check request. The default value is \"/\"."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
- "format": "int32"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HttpsHealthCheckList": {
- "id": "HttpsHealthCheckList",
- "type": "object",
- "description": "Contains a list of HttpsHealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HttpsHealthCheck resources.",
- "items": {
- "$ref": "HttpsHealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#httpsHealthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of hosts.",
+ "httpMethod": "GET",
+ "id": "compute.hosts.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/hosts",
+ "response": {
+ "$ref": "HostAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Host resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.hosts.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "host"
+ ],
+ "parameters": {
+ "host": {
+ "description": "Name of the Host resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hosts/{host}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified host. Get a list of available hosts by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.hosts.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "host"
+ ],
+ "parameters": {
+ "host": {
+ "description": "Name of the host to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hosts/{host}",
+ "response": {
+ "$ref": "Host"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.hosts.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hosts/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a host resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.hosts.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hosts",
+ "request": {
+ "$ref": "Host"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of hosts available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.hosts.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hosts",
+ "response": {
+ "$ref": "HostList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.hosts.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hosts/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.hosts.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/hosts/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "Image": {
- "id": "Image",
- "type": "object",
- "description": "An Image resource. (== resource_for beta.images ==) (== resource_for v1.images ==)",
- "properties": {
- "archiveSizeBytes": {
- "type": "string",
- "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
- "format": "int64"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "The deprecation status associated with this image."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "Size of the image when restored onto a persistent disk (in GB).",
- "format": "int64"
- },
- "family": {
- "type": "string",
- "description": "The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
- },
- "guestOsFeatures": {
- "type": "array",
- "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
- "items": {
- "$ref": "GuestOsFeature"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "imageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the image using a customer-supplied encryption key.\n\nAfter you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#image for images.",
- "default": "compute#image"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an image.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "licenseCodes": {
- "type": "array",
- "description": "Integer license codes indicating which licenses are attached to this image.",
- "items": {
- "type": "string",
- "format": "int64"
- }
},
- "licenses": {
- "type": "array",
- "description": "Any applicable license URI.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- },
- "rawDisk": {
- "type": "object",
- "description": "The parameters of the raw disk image.",
- "properties": {
- "containerType": {
- "type": "string",
- "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
- "enum": [
- "TAR"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "sha1Checksum": {
- "type": "string",
- "description": "An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.",
- "pattern": "[a-f0-9]{40}"
- },
- "source": {
- "type": "string",
- "description": "The full Google Cloud Storage URL where the disk image is stored. You must provide either this property or the sourceDisk property but not both.",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- }
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sourceDisk": {
- "type": "string",
- "description": "URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk"
- },
- "sourceDiskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
- },
- "sourceDiskId": {
- "type": "string",
- "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name."
- },
- "sourceImage": {
- "type": "string",
- "description": "URL of the source image used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image."
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
- },
- "sourceImageId": {
- "type": "string",
- "description": "[Output Only] The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name."
- },
- "sourceSnapshot": {
- "type": "string",
- "description": "URL of the source snapshot used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the sourceImage property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image."
- },
- "sourceSnapshotEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
- },
- "sourceSnapshotId": {
- "type": "string",
- "description": "[Output Only] The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name."
- },
- "sourceType": {
- "type": "string",
- "description": "The type of the image used to create this disk. The default and only value is RAW",
- "default": "RAW",
- "enum": [
- "RAW"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
- "enum": [
- "FAILED",
- "PENDING",
- "READY"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "ImageList": {
- "id": "ImageList",
- "type": "object",
- "description": "Contains a list of images.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Image resources.",
- "items": {
- "$ref": "Image"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#imageList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "httpHealthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HttpHealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.httpHealthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HttpHealthCheck resource. Get a list of available HTTP health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.httpHealthChecks.get",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "response": {
+ "$ref": "HttpHealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.httpHealthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HttpHealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.httpHealthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks",
+ "response": {
+ "$ref": "HttpHealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.httpHealthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.httpHealthChecks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.httpHealthChecks.update",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "Instance": {
- "id": "Instance",
- "type": "object",
- "description": "An Instance resource. (== resource_for beta.instances ==) (== resource_for v1.instances ==)",
- "properties": {
- "canIpForward": {
- "type": "boolean",
- "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding."
- },
- "cpuPlatform": {
- "type": "string",
- "description": "[Output Only] The CPU platform used by this instance."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deletionProtection": {
- "type": "boolean",
- "description": "Whether the resource should be protected against deletion."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "disks": {
- "type": "array",
- "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
- "items": {
- "$ref": "AttachedDisk"
- }
- },
- "guestAccelerators": {
- "type": "array",
- "description": "List of the type and count of accelerator cards attached to the instance.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- },
- "host": {
- "type": "string",
- "description": "Full or partial URL of the host resource that the instance should be placed on, in the format: zones/zone/hosts/host.\n\nOptional, sole-tenant Host (physical machine) that the instance will be placed on when it's created. The instance is guaranteed to be placed on the same machine as other instances with the same sole-tenant host.\n\nThe request will be rejected if the sole-tenant host has run out of resources."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "instanceEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts or decrypts data for an instance with a customer-supplied encryption key.\n\nIf you are creating a new instance, this field encrypts the local SSD and in-memory contents of the instance using a key that you provide.\n\nIf you are restarting an instance protected with a customer-supplied encryption key, you must provide the correct key in order to successfully restart the instance.\n\nIf you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key and you do not need to provide a key to start the instance later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt local SSDs and in-memory content in a managed instance group."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#instance for instances.",
- "default": "compute#instance"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "machineType": {
- "type": "string",
- "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type:\n\nzones/us-central1-f/machineTypes/n1-standard-1 \n\nTo create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):\n\nzones/zone/machineTypes/custom-CPUS-MEMORY \n\nFor example: zones/us-central1-f/machineTypes/custom-4-5120 \n\nFor a full list of restrictions, read the Specifications for custom machine types.",
- "annotations": {
- "required": [
- "compute.instances.insert"
- ]
- }
},
- "maintenancePolicies": {
- "type": "array",
- "description": "Maintenance policies applied to this instance.",
- "items": {
- "type": "string"
- }
- },
- "metadata": {
- "$ref": "Metadata",
- "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
- },
- "minCpuPlatform": {
- "type": "string",
- "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instances.insert"
- ]
- }
- },
- "networkInterfaces": {
- "type": "array",
- "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
- "items": {
- "$ref": "NetworkInterface"
- }
- },
- "scheduling": {
- "$ref": "Scheduling",
- "description": "Sets the scheduling options for this instance."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "serviceAccounts": {
- "type": "array",
- "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.\n\nService accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
- "items": {
- "$ref": "ServiceAccount"
- }
- },
- "shieldedVmConfig": {
- "$ref": "ShieldedVmConfig"
- },
- "startRestricted": {
- "type": "boolean",
- "description": "[Output Only] Whether a VM has been restricted for start because Compute Engine has detected suspicious activity."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING, SUSPENDED, and TERMINATED.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable explanation of the status."
- },
- "tags": {
- "$ref": "Tags",
- "description": "A list of tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the instance resides."
- }
- }
- },
- "InstanceAggregatedList": {
- "id": "InstanceAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstancesScopedList resources.",
- "additionalProperties": {
- "$ref": "InstancesScopedList",
- "description": "[Output Only] Name of the scope containing this set of instances."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceAggregatedList for aggregated lists of Instance resources.",
- "default": "compute#instanceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroup": {
- "id": "InstanceGroup",
- "type": "object",
- "description": "InstanceGroups (== resource_for beta.instanceGroups ==) (== resource_for v1.instanceGroups ==) (== resource_for beta.regionInstanceGroups ==) (== resource_for v1.regionInstanceGroups ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this instance group in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "[Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this instance group, generated by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroup for instance groups.",
- "default": "compute#instanceGroup"
- },
- "name": {
- "type": "string",
- "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert"
- ]
- }
- },
- "namedPorts": {
- "type": "array",
- "description": "Assigns a name to a port number. For example: {name: \"http\", port: 80}\n\nThis allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] \n\nNamed ports apply to all instances in this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "network": {
- "type": "string",
- "description": "The URL of the network to which all instances in the instance group belong."
- },
- "region": {
- "type": "string",
- "description": "The URL of the region where the instance group is located (for regional resources)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this instance group. The server generates this URL."
- },
- "size": {
- "type": "integer",
- "description": "[Output Only] The total number of instances in the instance group.",
- "format": "int32"
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the subnetwork to which all instances in the instance group belong."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the instance group is located (for zonal resources)."
- }
- }
- },
- "InstanceGroupAggregatedList": {
- "id": "InstanceGroupAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstanceGroupsScopedList resources.",
- "additionalProperties": {
- "$ref": "InstanceGroupsScopedList",
- "description": "The name of the scope that contains this set of instance groups."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupAggregatedList for aggregated lists of instance groups.",
- "default": "compute#instanceGroupAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupList": {
- "id": "InstanceGroupList",
- "type": "object",
- "description": "A list of InstanceGroup resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroup resources.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupList for instance group lists.",
- "default": "compute#instanceGroupList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "httpsHealthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HttpsHealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.httpsHealthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HttpsHealthCheck resource. Get a list of available HTTPS health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.httpsHealthChecks.get",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "response": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.httpsHealthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HttpsHealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.httpsHealthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks",
+ "response": {
+ "$ref": "HttpsHealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.httpsHealthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.httpsHealthChecks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.httpsHealthChecks.update",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManager": {
- "id": "InstanceGroupManager",
- "type": "object",
- "description": "An Instance Group Manager resource. (== resource_for beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers ==) (== resource_for beta.regionInstanceGroupManagers ==) (== resource_for v1.regionInstanceGroupManagers ==)",
- "properties": {
- "activities": {
- "$ref": "InstanceGroupManagerActivities"
- },
- "autoHealingPolicies": {
- "type": "array",
- "description": "The autohealing policy for this managed instance group. You can specify only one value.",
- "items": {
- "$ref": "InstanceGroupManagerAutoHealingPolicy"
- }
- },
- "baseInstanceName": {
- "type": "string",
- "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
- "pattern": "[a-z][-a-z0-9]{0,57}",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert"
- ]
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this managed instance group in RFC3339 text format."
- },
- "currentActions": {
- "$ref": "InstanceGroupManagerActionsSummary",
- "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "distributionPolicy": {
- "$ref": "DistributionPolicy",
- "description": "Policy valid only for regional managed instance groups."
- },
- "failoverAction": {
- "type": "string",
- "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
- "enum": [
- "NO_FAILOVER",
- "UNKNOWN"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "fingerprint": {
- "type": "string",
- "description": "[Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this resource type. The server generates this identifier.",
- "format": "uint64"
- },
- "instanceGroup": {
- "type": "string",
- "description": "[Output Only] The URL of the Instance Group resource."
- },
- "instanceTemplate": {
- "type": "string",
- "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.",
- "default": "compute#instanceGroupManager"
- },
- "name": {
- "type": "string",
- "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.insert"
- ]
- }
- },
- "namedPorts": {
- "type": "array",
- "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "pendingActions": {
- "$ref": "InstanceGroupManagerPendingActionsSummary",
- "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] The URL of the region where the managed instance group resides (for regional resources)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this managed instance group. The server defines this URL."
- },
- "serviceAccount": {
- "type": "string",
- "description": "[Output Only] The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
- },
- "statefulPolicy": {
- "$ref": "StatefulPolicy",
- "description": "Stateful configuration for this Instanced Group Manager"
},
- "targetPools": {
- "type": "array",
- "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
- "items": {
- "type": "string"
- }
- },
- "targetSize": {
- "type": "integer",
- "description": "The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.",
- "format": "int32",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.insert"
- ]
- }
- },
- "updatePolicy": {
- "$ref": "InstanceGroupManagerUpdatePolicy",
- "description": "The update policy for this managed instance group."
- },
- "versions": {
- "type": "array",
- "description": "Specifies the instance templates used by this managed instance group to create instances.\n\nEach version is defined by an instanceTemplate. Every template can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
- "items": {
- "$ref": "InstanceGroupManagerVersion"
- }
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the managed instance group is located (for zonal resources)."
- }
- }
- },
- "InstanceGroupManagerActionsSummary": {
- "id": "InstanceGroupManagerActionsSummary",
- "type": "object",
- "properties": {
- "abandoning": {
- "type": "integer",
- "description": "[Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.",
- "format": "int32"
- },
- "creating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.\n\nIf you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.",
- "format": "int32"
- },
- "creatingWithoutRetries": {
- "type": "integer",
- "description": "[Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.",
- "format": "int32"
- },
- "deleting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.",
- "format": "int32"
- },
- "none": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.",
- "format": "int32"
- },
- "recreating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.",
- "format": "int32"
- },
- "refreshing": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.",
- "format": "int32"
- },
- "restarting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.",
- "format": "int32"
- },
- "verifying": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are being verified. More details regarding verification process are covered in the documentation of ManagedInstance.InstanceAction.VERIFYING enum field.",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagerActivities": {
- "id": "InstanceGroupManagerActivities",
- "type": "object",
- "properties": {
- "autohealing": {
- "type": "string",
- "enum": [
- "PERMITTED",
- "PROHIBITED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "autohealingHealthCheckBased": {
- "type": "string",
- "enum": [
- "PERMITTED",
- "PROHIBITED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "autoscalingDown": {
- "type": "string",
- "enum": [
- "PERMITTED",
- "PROHIBITED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "autoscalingUp": {
- "type": "string",
- "enum": [
- "PERMITTED",
- "PROHIBITED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "creatingInstances": {
- "type": "string",
- "enum": [
- "PERMITTED",
- "PROHIBITED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "deletingInstances": {
- "type": "string",
- "enum": [
- "PERMITTED",
- "PROHIBITED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "recreatingInstances": {
- "type": "string",
- "enum": [
- "PERMITTED",
- "PROHIBITED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupManagerAggregatedList": {
- "id": "InstanceGroupManagerAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstanceGroupManagersScopedList resources.",
- "additionalProperties": {
- "$ref": "InstanceGroupManagersScopedList",
- "description": "[Output Only] The name of the scope that contains this set of managed instance groups."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerAggregatedList for an aggregated list of managed instance groups.",
- "default": "compute#instanceGroupManagerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupManagerAutoHealingPolicy": {
- "id": "InstanceGroupManagerAutoHealingPolicy",
- "type": "object",
- "properties": {
- "healthCheck": {
- "type": "string",
- "description": "The URL for the health check that signals autohealing."
- },
- "initialDelaySec": {
- "type": "integer",
- "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].",
- "format": "int32"
- },
- "maxUnavailable": {
- "$ref": "FixedOrPercent",
- "description": "Maximum number of instances that can be unavailable when autohealing. The instance is considered available if all of the following conditions are satisfied: 1. Instance's status is RUNNING. 2. Instance's liveness health check result was observed to be HEALTHY at least once. By default, a percent value of 100% is used."
- },
- "mode": {
- "type": "string",
- "description": "Defines operating mode for this policy.",
- "enum": [
- "OFF",
- "ON"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupManagerList": {
- "id": "InstanceGroupManagerList",
- "type": "object",
- "description": "[Output Only] A list of managed instance groups.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroupManager resources.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups.",
- "default": "compute#instanceGroupManagerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupManagerPendingActionsSummary": {
- "id": "InstanceGroupManagerPendingActionsSummary",
- "type": "object",
- "properties": {
- "creating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be created.",
- "format": "int32"
- },
- "deleting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be deleted.",
- "format": "int32"
- },
- "recreating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be recreated.",
- "format": "int32"
- },
- "restarting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be restarted.",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagerUpdatePolicy": {
- "id": "InstanceGroupManagerUpdatePolicy",
- "type": "object",
- "properties": {
- "maxSurge": {
- "$ref": "FixedOrPercent",
- "description": "The maximum number of instances that can be created above the specified targetSize during the update process. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
- },
- "maxUnavailable": {
- "$ref": "FixedOrPercent",
- "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied:\n\n \n- The instance's status is RUNNING. \n- If there is a health check on the instance group, the instance's liveness health check result must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
- },
- "minReadySec": {
- "type": "integer",
- "description": "Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].",
- "format": "int32"
- },
- "minimalAction": {
- "type": "string",
- "description": "Minimal action to be taken on an instance. You can specify either RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a code\u003eRESTART, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.",
- "enum": [
- "NONE",
- "REFRESH",
- "REPLACE",
- "RESTART"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "type": {
- "type": "string",
- "enum": [
- "OPPORTUNISTIC",
- "PROACTIVE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupManagerVersion": {
- "id": "InstanceGroupManagerVersion",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string"
- },
- "name": {
- "type": "string",
- "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
- },
- "tag": {
- "type": "string",
- "description": "Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged. Deprecated in favor of 'name'."
- },
- "targetSize": {
- "$ref": "FixedOrPercent",
- "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: \n- If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. \n- if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded up. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
- }
- }
- },
- "InstanceGroupManagersAbandonInstancesRequest": {
- "id": "InstanceGroupManagersAbandonInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersApplyUpdatesRequest": {
- "id": "InstanceGroupManagersApplyUpdatesRequest",
- "type": "object",
- "description": "InstanceGroupManagers.applyUpdatesToInstances",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of URLs of one or more instances for which we want to apply updates on this managed instance group. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- },
- "maximalAction": {
- "type": "string",
- "description": "The maximal action that should be perfomed on the instances. By default REPLACE.",
- "enum": [
- "NONE",
- "REFRESH",
- "REPLACE",
- "RESTART"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "minimalAction": {
- "type": "string",
- "description": "The minimal action that should be perfomed on the instances. By default NONE.",
- "enum": [
- "NONE",
- "REFRESH",
- "REPLACE",
- "RESTART"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupManagersDeleteInstancesRequest": {
- "id": "InstanceGroupManagersDeleteInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersDeletePerInstanceConfigsReq": {
- "id": "InstanceGroupManagersDeletePerInstanceConfigsReq",
- "type": "object",
- "description": "InstanceGroupManagers.deletePerInstanceConfigs",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances for which we want to delete per-instance configs on this managed instance group.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersListManagedInstancesResponse": {
- "id": "InstanceGroupManagersListManagedInstancesResponse",
- "type": "object",
- "properties": {
- "managedInstances": {
- "type": "array",
- "description": "[Output Only] The list of instances in the managed instance group.",
- "items": {
- "$ref": "ManagedInstance"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- }
- }
- },
- "InstanceGroupManagersListPerInstanceConfigsResp": {
- "id": "InstanceGroupManagersListPerInstanceConfigsResp",
- "type": "object",
- "properties": {
- "items": {
- "type": "array",
- "description": "[Output Only] The list of PerInstanceConfig.",
- "items": {
- "$ref": "PerInstanceConfig"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "images": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified image.",
+ "httpMethod": "DELETE",
+ "id": "compute.images.delete",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Name of the image resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deprecate": {
+ "description": "Sets the deprecation status of an image.\n\nIf an empty request body is given, clears the deprecation status instead.",
+ "httpMethod": "POST",
+ "id": "compute.images.deprecate",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Image name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}/deprecate",
+ "request": {
+ "$ref": "DeprecationStatus"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified image. Get a list of available images by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.images.get",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Name of the image resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}",
+ "response": {
+ "$ref": "Image"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getFromFamily": {
+ "description": "Returns the latest image that is part of an image family and is not deprecated.",
+ "httpMethod": "GET",
+ "id": "compute.images.getFromFamily",
+ "parameterOrder": [
+ "project",
+ "family"
+ ],
+ "parameters": {
+ "family": {
+ "description": "Name of the image family to search for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/family/{family}",
+ "response": {
+ "$ref": "Image"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.images.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an image in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.images.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "forceCreate": {
+ "description": "Force image creation if true.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images",
+ "request": {
+ "$ref": "Image"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of custom images available to the specified project. Custom images are images you create that belong to your project. This method does not get any images that belong to other projects, including publicly-available images, like Debian 8. If you want to get a list of publicly-available images, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
+ "httpMethod": "GET",
+ "id": "compute.images.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images",
+ "response": {
+ "$ref": "ImageList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.images.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an image. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.images.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.images.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManagersRecreateInstancesRequest": {
- "id": "InstanceGroupManagersRecreateInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersResizeAdvancedRequest": {
- "id": "InstanceGroupManagersResizeAdvancedRequest",
- "type": "object",
- "properties": {
- "noCreationRetries": {
- "type": "boolean",
- "description": "If this flag is true, the managed instance group attempts to create all instances initiated by this resize request only once. If there is an error during creation, the managed instance group does not retry create this instance, and we will decrease the targetSize of the request instead. If the flag is false, the group attemps to recreate each instance continuously until it succeeds.\n\nThis flag matters only in the first attempt of creation of an instance. After an instance is successfully created while this flag is enabled, the instance behaves the same way as all the other instances created with a regular resize request. In particular, if a running instance dies unexpectedly at a later time and needs to be recreated, this mode does not affect the recreation behavior in that scenario.\n\nThis flag is applicable only to the current resize request. It does not influence other resize requests in any way.\n\nYou can see which instances is being creating in which mode by calling the get or listManagedInstances API."
- },
- "targetSize": {
- "type": "integer",
- "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagersScopedList": {
- "id": "InstanceGroupManagersScopedList",
- "type": "object",
- "properties": {
+ },
"instanceGroupManagers": {
- "type": "array",
- "description": "[Output Only] The list of managed instance groups that are contained in the specified project and zone.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] The warning that replaces the list of managed instance groups when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "abandonInstances": {
+ "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.abandonInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersAbandonInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of managed instance groups and groups them by zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instanceGroupManagers",
+ "response": {
+ "$ref": "InstanceGroupManagerAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "applyUpdatesToInstances": {
+ "description": "Apply changes to selected instances on the managed instance group. This method can be used to apply new overrides and/or new versions.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.applyUpdatesToInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group, should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located. Should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersApplyUpdatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read Deleting an instance group for more information.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceGroupManagers.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteInstances": {
+ "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.deleteInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersDeleteInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deletePerInstanceConfigs": {
+ "description": "Delete selected per-instance configs for the managed instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.deletePerInstanceConfigs",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs",
+ "request": {
+ "$ref": "InstanceGroupManagersDeletePerInstanceConfigsReq"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns all of the details about the specified managed instance group. Get a list of available managed instance groups by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "InstanceGroupManager"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of managed instance groups that are contained within the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers",
+ "response": {
+ "$ref": "InstanceGroupManagerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listManagedInstances": {
+ "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.listManagedInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
+ "response": {
+ "$ref": "InstanceGroupManagersListManagedInstancesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listPerInstanceConfigs": {
+ "description": "Lists all of the per-instance configs defined for the managed instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.listPerInstanceConfigs",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs",
+ "response": {
+ "$ref": "InstanceGroupManagersListPerInstanceConfigsResp"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listManagedInstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.instanceGroupManagers.patch",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "recreateInstances": {
+ "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.recreateInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersRecreateInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the managed instance group. If you increase the size, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.resize",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager",
+ "size"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "size": {
+ "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
+ "format": "int32",
+ "location": "query",
+ "required": true,
+ "type": "integer"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resizeAdvanced": {
+ "description": "Resizes the managed instance group with advanced configuration options like disabling creation retries. This is an extended version of the resize method.\n\nIf you increase the size of the instance group, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating, creatingWithoutRetries, or deleting actions with the get or listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.resizeAdvanced",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeAdvanced",
+ "request": {
+ "$ref": "InstanceGroupManagersResizeAdvancedRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setAutoHealingPolicies": {
+ "description": "Modifies the autohealing policies.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setAutoHealingPolicies",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
+ "request": {
+ "$ref": "InstanceGroupManagersSetAutoHealingRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setInstanceTemplate": {
+ "description": "Specifies the instance template to use when creating new instances in this group. The templates for existing instances in the group do not change unless you recreate them.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setInstanceTemplate",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
+ "request": {
+ "$ref": "InstanceGroupManagersSetInstanceTemplateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTargetPools": {
+ "description": "Modifies the target pools to which all instances in this managed instance group are assigned. The target pools automatically apply to all of the instances in the managed instance group. This operation is marked DONE when you make the request even if the instances have not yet been added to their target pools. The change might take some time to apply to all of the instances in the group depending on the size of the group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setTargetPools",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
+ "request": {
+ "$ref": "InstanceGroupManagersSetTargetPoolsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listManagedInstances method.",
+ "httpMethod": "PUT",
+ "id": "compute.instanceGroupManagers.update",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "updatePerInstanceConfigs": {
+ "description": "Insert or patch (for the ones that already exist) per-instance configs for the managed instance group. perInstanceConfig.instance serves as a key used to distinguish whether to perform insert or patch.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.updatePerInstanceConfigs",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs",
+ "request": {
+ "$ref": "InstanceGroupManagersUpdatePerInstanceConfigsReq"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManagersSetAutoHealingRequest": {
- "id": "InstanceGroupManagersSetAutoHealingRequest",
- "type": "object",
- "properties": {
- "autoHealingPolicies": {
- "type": "array",
- "items": {
- "$ref": "InstanceGroupManagerAutoHealingPolicy"
- }
- }
- }
- },
- "InstanceGroupManagersSetInstanceTemplateRequest": {
- "id": "InstanceGroupManagersSetInstanceTemplateRequest",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group."
- }
- }
- },
- "InstanceGroupManagersSetTargetPoolsRequest": {
- "id": "InstanceGroupManagersSetTargetPoolsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the target pools information. Use this optional property to prevent conflicts when multiple users change the target pools settings concurrently. Obtain the fingerprint with the instanceGroupManagers.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
},
- "targetPools": {
- "type": "array",
- "description": "The list of target pool URLs that instances in this managed instance group belong to. The managed instance group applies these target pools to all of the instances in the group. Existing instances and new instances in the group all receive these target pool settings.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersUpdatePerInstanceConfigsReq": {
- "id": "InstanceGroupManagersUpdatePerInstanceConfigsReq",
- "type": "object",
- "description": "InstanceGroupManagers.updatePerInstanceConfigs",
- "properties": {
- "perInstanceConfigs": {
- "type": "array",
- "description": "The list of per-instance configs to insert or patch on this managed instance group.",
- "items": {
- "$ref": "PerInstanceConfig"
- }
- }
- }
- },
- "InstanceGroupsAddInstancesRequest": {
- "id": "InstanceGroupsAddInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances to add to the instance group.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "InstanceGroupsListInstances": {
- "id": "InstanceGroupsListInstances",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceWithNamedPorts resources.",
- "items": {
- "$ref": "InstanceWithNamedPorts"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupsListInstances for the list of instances in the specified instance group.",
- "default": "compute#instanceGroupsListInstances"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupsListInstancesRequest": {
- "id": "InstanceGroupsListInstancesRequest",
- "type": "object",
- "properties": {
- "instanceState": {
- "type": "string",
- "description": "A filter for the state of the instances in the instance group. Valid options are ALL or RUNNING. If you do not specify this parameter the list includes all instances regardless of their state.",
- "enum": [
- "ALL",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupsRemoveInstancesRequest": {
- "id": "InstanceGroupsRemoveInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances to remove from the instance group.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "InstanceGroupsScopedList": {
- "id": "InstanceGroupsScopedList",
- "type": "object",
- "properties": {
"instanceGroups": {
- "type": "array",
- "description": "[Output Only] The list of instance groups that are contained in this scope.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that replaces the list of instance groups when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupsSetNamedPortsRequest": {
- "id": "InstanceGroupsSetNamedPortsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
- },
- "namedPorts": {
- "type": "array",
- "description": "The list of named ports to set for this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- }
- }
- },
- "InstanceList": {
- "id": "InstanceList",
- "type": "object",
- "description": "Contains a list of instances.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Instance resources.",
- "items": {
- "$ref": "Instance"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceList for lists of Instance resources.",
- "default": "compute#instanceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceListReferrers": {
- "id": "InstanceListReferrers",
- "type": "object",
- "description": "Contains a list of instance referrers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Reference resources.",
- "items": {
- "$ref": "Reference"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceListReferrers for lists of Instance referrers.",
- "default": "compute#instanceListReferrers"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceMoveRequest": {
- "id": "InstanceMoveRequest",
- "type": "object",
- "properties": {
- "destinationZone": {
- "type": "string",
- "description": "The URL of the destination zone to move the instance. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone"
- },
- "targetInstance": {
- "type": "string",
- "description": "The URL of the target instance to move. This can be a full or partial URL. For example, the following are all valid URLs to an instance: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance"
- }
- }
- },
- "InstanceProperties": {
- "id": "InstanceProperties",
- "type": "object",
- "description": "",
- "properties": {
- "canIpForward": {
- "type": "boolean",
- "description": "Enables instances created based on this template to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
- },
- "description": {
- "type": "string",
- "description": "An optional text description for the instances that are created from this instance template."
- },
- "disks": {
- "type": "array",
- "description": "An array of disks that are associated with the instances that are created from this template.",
- "items": {
- "$ref": "AttachedDisk"
- }
- },
- "guestAccelerators": {
- "type": "array",
- "description": "A list of guest accelerator cards' type and count to use for instances created from the instance template.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to instances that are created from this template.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "machineType": {
- "type": "string",
- "description": "The machine type to use for instances that are created from this template.",
- "annotations": {
- "required": [
- "compute.instanceTemplates.insert"
- ]
- }
- },
- "metadata": {
- "$ref": "Metadata",
- "description": "The metadata key/value pairs to assign to instances that are created from this template. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
- },
- "minCpuPlatform": {
- "type": "string",
- "description": "Minimum cpu/platform to be used by this instance. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
- },
- "networkInterfaces": {
- "type": "array",
- "description": "An array of network access configurations for this interface.",
- "items": {
- "$ref": "NetworkInterface"
- }
- },
- "scheduling": {
- "$ref": "Scheduling",
- "description": "Specifies the scheduling options for the instances that are created from this template."
- },
- "serviceAccounts": {
- "type": "array",
- "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this template. Use metadata queries to obtain the access tokens for these instances.",
- "items": {
- "$ref": "ServiceAccount"
- }
- },
- "tags": {
- "$ref": "Tags",
- "description": "A list of tags to apply to the instances that are created from this template. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
- }
- }
- },
- "InstanceReference": {
- "id": "InstanceReference",
- "type": "object",
- "properties": {
- "instance": {
- "type": "string",
- "description": "The URL for a specific instance."
- }
- }
- },
- "InstanceTemplate": {
- "id": "InstanceTemplate",
- "type": "object",
- "description": "An Instance Template resource. (== resource_for beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this instance template in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this instance template. The server defines this identifier.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceTemplate for instance templates.",
- "default": "compute#instanceTemplate"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceTemplates.insert"
- ]
- }
- },
- "properties": {
- "$ref": "InstanceProperties",
- "description": "The instance properties for this instance template."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this instance template. The server defines this URL."
- },
- "sourceInstance": {
- "type": "string",
- "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance"
- },
- "sourceInstanceParams": {
- "$ref": "SourceInstanceParams",
- "description": "The source instance params to use to create this instance template."
- }
- }
- },
- "InstanceTemplateList": {
- "id": "InstanceTemplateList",
- "type": "object",
- "description": "A list of instance templates.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceTemplate resources.",
- "items": {
- "$ref": "InstanceTemplate"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceTemplatesListResponse for instance template lists.",
- "default": "compute#instanceTemplateList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceWithNamedPorts": {
- "id": "InstanceWithNamedPorts",
- "type": "object",
- "properties": {
- "instance": {
- "type": "string",
- "description": "[Output Only] The URL of the instance."
- },
- "namedPorts": {
- "type": "array",
- "description": "[Output Only] The named ports that belong to this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the instance.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "InstancesAddMaintenancePoliciesRequest": {
- "id": "InstancesAddMaintenancePoliciesRequest",
- "type": "object",
- "properties": {
- "maintenancePolicies": {
- "type": "array",
- "description": "Maintenance policies to be added to this instance.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstancesRemoveMaintenancePoliciesRequest": {
- "id": "InstancesRemoveMaintenancePoliciesRequest",
- "type": "object",
- "properties": {
- "maintenancePolicies": {
- "type": "array",
- "description": "Maintenance policies to be removed from this instance.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstancesResumeRequest": {
- "id": "InstancesResumeRequest",
- "type": "object",
- "properties": {
- "disks": {
- "type": "array",
- "description": "Array of disks associated with this instance that are protected with a customer-supplied encryption key.\n\nIn order to resume the instance, the disk url and its corresponding key must be provided.\n\nIf the disk is not protected with a customer-supplied encryption key it should not be specified.",
- "items": {
- "$ref": "CustomerEncryptionKeyProtectedDisk"
- }
- },
- "instanceEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Decrypts data associated with an instance that is protected with a customer-supplied encryption key.\n\nIf the instance you are starting is protected with a customer-supplied encryption key, the correct key must be provided otherwise the instance resume will not succeed."
- }
- }
- },
- "InstancesScopedList": {
- "id": "InstancesScopedList",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "[Output Only] List of instances contained in this scope.",
- "items": {
- "$ref": "Instance"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of instances when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "addInstances": {
+ "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork. Read Adding instances for more information.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.addInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where you are adding instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
+ "request": {
+ "$ref": "InstanceGroupsAddInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of instance groups and sorts them by zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instanceGroups",
+ "response": {
+ "$ref": "InstanceGroupAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read Deleting an instance group for more information.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceGroups.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified instance group. Get a list of available instance groups by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "InstanceGroup"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups",
+ "request": {
+ "$ref": "InstanceGroup"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instance groups that are located in the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups",
+ "response": {
+ "$ref": "InstanceGroupList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listInstances": {
+ "description": "Lists the instances in the specified instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.listInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "The name of the instance group from which you want to generate a list of included instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances",
+ "request": {
+ "$ref": "InstanceGroupsListInstancesRequest"
+ },
+ "response": {
+ "$ref": "InstanceGroupsListInstances"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "removeInstances": {
+ "description": "Removes one or more instances from the specified instance group, but does not delete those instances.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.removeInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where the specified instances will be removed.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances",
+ "request": {
+ "$ref": "InstanceGroupsRemoveInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setNamedPorts": {
+ "description": "Sets the named ports for the specified instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.setNamedPorts",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where the named ports are updated.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts",
+ "request": {
+ "$ref": "InstanceGroupsSetNamedPortsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InstancesSetLabelsRequest": {
- "id": "InstancesSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "Fingerprint of the previous set of labels for this resource, used to prevent conflicts. Provide the latest fingerprint value when making a request to add or change labels.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "InstancesSetMachineResourcesRequest": {
- "id": "InstancesSetMachineResourcesRequest",
- "type": "object",
- "properties": {
- "guestAccelerators": {
- "type": "array",
- "description": "List of the type and count of accelerator cards attached to the instance.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- }
- }
- },
- "InstancesSetMachineTypeRequest": {
- "id": "InstancesSetMachineTypeRequest",
- "type": "object",
- "properties": {
- "machineType": {
- "type": "string",
- "description": "Full or partial URL of the machine type resource. See Machine Types for a full list of machine types. For example: zones/us-central1-f/machineTypes/n1-standard-1"
- }
- }
- },
- "InstancesSetMinCpuPlatformRequest": {
- "id": "InstancesSetMinCpuPlatformRequest",
- "type": "object",
- "properties": {
- "minCpuPlatform": {
- "type": "string",
- "description": "Minimum cpu/platform this instance should be started at."
- }
- }
- },
- "InstancesSetServiceAccountRequest": {
- "id": "InstancesSetServiceAccountRequest",
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "description": "Email address of the service account."
- },
- "scopes": {
- "type": "array",
- "description": "The list of scopes to be made available for this service account.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstancesStartWithEncryptionKeyRequest": {
- "id": "InstancesStartWithEncryptionKeyRequest",
- "type": "object",
- "properties": {
- "disks": {
- "type": "array",
- "description": "Array of disks associated with this instance that are protected with a customer-supplied encryption key.\n\nIn order to start the instance, the disk url and its corresponding key must be provided.\n\nIf the disk is not protected with a customer-supplied encryption key it should not be specified.",
- "items": {
- "$ref": "CustomerEncryptionKeyProtectedDisk"
- }
- },
- "instanceEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Decrypts data associated with an instance that is protected with a customer-supplied encryption key.\n\nIf the instance you are starting is protected with a customer-supplied encryption key, the correct key must be provided otherwise the instance start will not succeed."
- }
- }
- },
- "Interconnect": {
- "id": "Interconnect",
- "type": "object",
- "description": "Represents an Interconnects resource. The Interconnects resource is a dedicated connection between Google's network and your on-premises network. For more information, see the Dedicated overview page. (== resource_for v1.interconnects ==) (== resource_for beta.interconnects ==)",
- "properties": {
- "adminEnabled": {
- "type": "boolean",
- "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
- },
- "circuitInfos": {
- "type": "array",
- "description": "[Output Only] List of CircuitInfo objects, that describe the individual circuits in this LAG.",
- "items": {
- "$ref": "InterconnectCircuitInfo"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customerName": {
- "type": "string",
- "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "expectedOutages": {
- "type": "array",
- "description": "[Output Only] List of outages expected for this Interconnect.",
- "items": {
- "$ref": "InterconnectOutageNotification"
- }
- },
- "googleIpAddress": {
- "type": "string",
- "description": "[Output Only] IP address configured on the Google side of the Interconnect link. This can be used only for ping tests."
- },
- "googleReferenceId": {
- "type": "string",
- "description": "[Output Only] Google reference ID; to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
},
- "interconnectAttachments": {
- "type": "array",
- "description": "[Output Only] A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
- "items": {
- "type": "string"
- }
- },
- "interconnectType": {
- "type": "string",
- "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
- "enum": [
- "DEDICATED",
- "IT_PRIVATE",
- "PARTNER"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnect for interconnects.",
- "default": "compute#interconnect"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an Interconnect.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this Interconnect resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "linkType": {
- "type": "string",
- "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
- "enum": [
- "LINK_TYPE_ETHERNET_10G_LR"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "location": {
- "type": "string",
- "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.interconnects.insert"
- ]
- }
- },
- "nocContactEmail": {
- "type": "string",
- "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Stackdriver logs alerting and Cloud Notifications."
- },
- "operationalStatus": {
- "type": "string",
- "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
- "enum": [
- "OS_ACTIVE",
- "OS_UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "peerIpAddress": {
- "type": "string",
- "description": "[Output Only] IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests."
- },
- "provisionedLinkCount": {
- "type": "integer",
- "description": "[Output Only] Number of links actually provisioned in this interconnect.",
- "format": "int32"
- },
- "requestedLinkCount": {
- "type": "integer",
- "description": "Target number of physical links in the link bundle, as requested by the customer.",
- "format": "int32"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "state": {
- "type": "string",
- "description": "[Output Only] The current state of whether or not this Interconnect is functional.",
- "enum": [
- "ACTIVE",
- "UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InterconnectAttachment": {
- "id": "InterconnectAttachment",
- "type": "object",
- "description": "Represents an InterconnectAttachment (VLAN attachment) resource. For more information, see Creating VLAN Attachments. (== resource_for beta.interconnectAttachments ==) (== resource_for v1.interconnectAttachments ==)",
- "properties": {
- "adminEnabled": {
- "type": "boolean",
- "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER."
- },
- "availabilityZone": {
- "type": "string",
- "enum": [
- "ZONE_1",
- "ZONE_2",
- "ZONE_ANY"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "bandwidth": {
- "type": "string",
- "enum": [
- "BPS_100M",
- "BPS_10G",
- "BPS_1G",
- "BPS_200M",
- "BPS_2G",
- "BPS_300M",
- "BPS_400M",
- "BPS_500M",
- "BPS_50M",
- "BPS_5G"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "candidateSubnets": {
- "type": "array",
- "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google?s edge. If not supplied, Google will randomly select an unused /29 from all of link-local space.",
- "items": {
- "type": "string"
- }
- },
- "cloudRouterIpAddress": {
- "type": "string",
- "description": "[Output Only] IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customerRouterIpAddress": {
- "type": "string",
- "description": "[Output Only] IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource."
- },
- "googleReferenceId": {
- "type": "string",
- "description": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "interconnect": {
- "type": "string",
- "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
- "default": "compute#interconnectAttachment"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this InterconnectAttachment resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "operationalStatus": {
- "type": "string",
- "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
- "enum": [
- "OS_ACTIVE",
- "OS_UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "pairingKey": {
- "type": "string",
- "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. Opaque string identifying an PARTNER attachment. Of the form ?cloud-region/XXXXXX?."
- },
- "partnerAsn": {
- "type": "string",
- "description": "[Output only for PARTNER. Input for PARTNER_PROVIDER. Not present for DEDICATED] BGP ASN of the Partner. A layer 3 Partner should supply this if they configured BGP on behalf of the customer.",
- "format": "int64"
- },
- "partnerMetadata": {
- "$ref": "InterconnectAttachmentPartnerMetadata"
- },
- "privateInterconnectInfo": {
- "$ref": "InterconnectAttachmentPrivateInfo",
- "description": "[Output Only] Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional interconnect attachment resides."
- },
- "router": {
- "type": "string",
- "description": "URL of the cloud router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "state": {
- "type": "string",
- "description": "[Output Only] The current state of whether or not this interconnect attachment is functional.",
- "enum": [
- "ACTIVE",
- "DEFUNCT",
- "PARTNER_REQUEST_RECEIVED",
- "PENDING_CUSTOMER",
- "PENDING_PARTNER",
- "STATE_UNSPECIFIED",
- "UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "type": {
- "type": "string",
- "enum": [
- "DEDICATED",
- "PARTNER",
- "PARTNER_PROVIDER"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "vlanTag8021q": {
- "type": "integer",
- "description": "Available only for DEDICATED and PARTNER_PROVIDER. Desired VLAN tag for this attachment, in the range 2-4094. This field refers to 802.1q VLAN tag, also known as IEEE 802.1Q Only specified at creation time.",
- "format": "int32"
- }
- }
- },
- "InterconnectAttachmentAggregatedList": {
- "id": "InterconnectAttachmentAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InterconnectAttachmentsScopedList resources.",
- "additionalProperties": {
- "$ref": "InterconnectAttachmentsScopedList",
- "description": "Name of the scope containing this set of interconnect attachments."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentAggregatedList for aggregated lists of interconnect attachments.",
- "default": "compute#interconnectAttachmentAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectAttachmentList": {
- "id": "InterconnectAttachmentList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnect attachments.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InterconnectAttachment resources.",
- "items": {
- "$ref": "InterconnectAttachment"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentList for lists of interconnect attachments.",
- "default": "compute#interconnectAttachmentList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectAttachmentPartnerMetadata": {
- "id": "InterconnectAttachmentPartnerMetadata",
- "type": "object",
- "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments. Only mutable for PARTNER_PROVIDER type, output-only for PARTNER, not available for DEDICATED.",
- "properties": {
- "interconnectName": {
- "type": "string",
- "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner?s portal. For instance ?Chicago 1?. This value may be validated to match approved Partner values."
- },
- "partnerName": {
- "type": "string",
- "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values."
- },
- "portalUrl": {
- "type": "string",
- "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep-link to the specific resource on the Partner portal. This value may be validated to match approved Partner values."
- }
- }
- },
- "InterconnectAttachmentPrivateInfo": {
- "id": "InterconnectAttachmentPrivateInfo",
- "type": "object",
- "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
- "properties": {
- "tag8021q": {
- "type": "integer",
- "description": "[Output Only] 802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region.",
- "format": "uint32"
- }
- }
- },
- "InterconnectAttachmentsScopedList": {
- "id": "InterconnectAttachmentsScopedList",
- "type": "object",
- "properties": {
- "interconnectAttachments": {
- "type": "array",
- "description": "List of interconnect attachments contained in this scope.",
- "items": {
- "$ref": "InterconnectAttachment"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectCircuitInfo": {
- "id": "InterconnectCircuitInfo",
- "type": "object",
- "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only. Next id: 4",
- "properties": {
- "customerDemarcId": {
- "type": "string",
- "description": "Customer-side demarc ID for this circuit."
- },
- "googleCircuitId": {
- "type": "string",
- "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up."
- },
- "googleDemarcId": {
- "type": "string",
- "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA."
- }
- }
- },
- "InterconnectList": {
- "id": "InterconnectList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnects.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Interconnect resources.",
- "items": {
- "$ref": "Interconnect"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectList for lists of interconnects.",
- "default": "compute#interconnectList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectLocation": {
- "id": "InterconnectLocation",
- "type": "object",
- "description": "Represents an InterconnectLocations resource. The InterconnectLocations resource describes the locations where you can connect to Google's networks. For more information, see Colocation Facilities.",
- "properties": {
- "address": {
- "type": "string",
- "description": "[Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character."
- },
- "availabilityZone": {
- "type": "string",
- "description": "[Output Only] Availability zone for this location. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: \"zone1\" or \"zone2\"."
- },
- "city": {
- "type": "string",
- "description": "[Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: \"Chicago, IL\", \"Amsterdam, Netherlands\"."
- },
- "continent": {
- "type": "string",
- "description": "[Output Only] Continent for this location.",
- "enum": [
- "AFRICA",
- "ASIA_PAC",
- "C_AFRICA",
- "C_ASIA_PAC",
- "C_EUROPE",
- "C_NORTH_AMERICA",
- "C_SOUTH_AMERICA",
- "EUROPE",
- "NORTH_AMERICA",
- "SOUTH_AMERICA"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional description of the resource."
- },
- "facilityProvider": {
- "type": "string",
- "description": "[Output Only] The name of the provider for this facility (e.g., EQUINIX)."
- },
- "facilityProviderFacilityId": {
- "type": "string",
- "description": "[Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1)."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnectLocation for interconnect locations.",
- "default": "compute#interconnectLocation"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "peeringdbFacilityId": {
- "type": "string",
- "description": "[Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb)."
- },
- "regionInfos": {
- "type": "array",
- "description": "[Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.",
- "items": {
- "$ref": "InterconnectLocationRegionInfo"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "InterconnectLocationList": {
- "id": "InterconnectLocationList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnect locations.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InterconnectLocation resources.",
- "items": {
- "$ref": "InterconnectLocation"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectLocationList for lists of interconnect locations.",
- "default": "compute#interconnectLocationList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "instanceTemplates": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceTemplates.delete",
+ "parameterOrder": [
+ "project",
+ "instanceTemplate"
+ ],
+ "parameters": {
+ "instanceTemplate": {
+ "description": "The name of the instance template to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{instanceTemplate}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified instance template. Get a list of available instance templates by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceTemplates.get",
+ "parameterOrder": [
+ "project",
+ "instanceTemplate"
+ ],
+ "parameters": {
+ "instanceTemplate": {
+ "description": "The name of the instance template.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{instanceTemplate}",
+ "response": {
+ "$ref": "InstanceTemplate"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
+ "httpMethod": "POST",
+ "id": "compute.instanceTemplates.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates",
+ "request": {
+ "$ref": "InstanceTemplate"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceTemplates.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates",
+ "response": {
+ "$ref": "InstanceTemplateList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instanceTemplates.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InterconnectLocationRegionInfo": {
- "id": "InterconnectLocationRegionInfo",
- "type": "object",
- "description": "Information about any potential InterconnectAttachments between an Interconnect at a specific InterconnectLocation, and a specific Cloud Region.",
- "properties": {
- "expectedRttMs": {
- "type": "string",
- "description": "Expected round-trip time in milliseconds, from this InterconnectLocation to a VM in this region.",
- "format": "int64"
- },
- "locationPresence": {
- "type": "string",
- "description": "Identifies the network presence of this location.",
- "enum": [
- "GLOBAL",
- "LOCAL_REGION",
- "LP_GLOBAL",
- "LP_LOCAL_REGION"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "URL for the region of this location."
- }
- }
- },
- "InterconnectOutageNotification": {
- "id": "InterconnectOutageNotification",
- "type": "object",
- "description": "Description of a planned outage on this Interconnect. Next id: 9",
- "properties": {
- "affectedCircuits": {
- "type": "array",
- "description": "Iff issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected.",
- "items": {
- "type": "string"
- }
- },
- "description": {
- "type": "string",
- "description": "A description about the purpose of the outage."
- },
- "endTime": {
- "type": "string",
- "description": "Scheduled end time for the outage (milliseconds since Unix epoch).",
- "format": "int64"
- },
- "issueType": {
- "type": "string",
- "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
- "enum": [
- "IT_OUTAGE",
- "IT_PARTIAL_OUTAGE",
- "OUTAGE",
- "PARTIAL_OUTAGE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Unique identifier for this outage notification."
- },
- "source": {
- "type": "string",
- "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
- "enum": [
- "GOOGLE",
- "NSRC_GOOGLE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "startTime": {
- "type": "string",
- "description": "Scheduled start time for the outage (milliseconds since Unix epoch).",
- "format": "int64"
- },
- "state": {
- "type": "string",
- "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
- "enum": [
- "ACTIVE",
- "CANCELLED",
- "NS_ACTIVE",
- "NS_CANCELED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "InternalIpOwner": {
- "id": "InternalIpOwner",
- "type": "object",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "IP CIDR range being owned."
- },
- "owners": {
- "type": "array",
- "description": "URLs of the IP owners of the IP CIDR range.",
- "items": {
- "type": "string"
- }
},
- "systemOwned": {
- "type": "boolean",
- "description": "Whether this IP CIDR range is reserved for system use."
- }
- }
- },
- "IpOwnerList": {
- "id": "IpOwnerList",
- "type": "object",
- "description": "Contains a list of IP owners.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InternalIpOwner resources.",
- "items": {
- "$ref": "InternalIpOwner"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#ipOwnerList for lists of IP owners.",
- "default": "compute#ipOwnerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "License": {
- "id": "License",
- "type": "object",
- "description": "A license resource.",
- "properties": {
- "chargesUseFee": {
- "type": "boolean",
- "description": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource; provided by the client when the resource is created."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#license for licenses.",
- "default": "compute#license"
- },
- "licenseCode": {
- "type": "string",
- "description": "[Output Only] The unique code used to attach this license to images, snapshots, and disks.",
- "format": "uint64"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource. The name is 1-63 characters long and complies with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- },
- "resourceRequirements": {
- "$ref": "LicenseResourceRequirements"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "transferable": {
- "type": "boolean",
- "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
- }
- }
- },
- "LicenseCode": {
- "id": "LicenseCode",
- "type": "object",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Description of this License Code."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#licenseCode for licenses.",
- "default": "compute#licenseCode"
- },
- "licenseAlias": {
- "type": "array",
- "description": "[Output Only] URL and description aliases of Licenses with the same License Code.",
- "items": {
- "$ref": "LicenseCodeLicenseAlias"
- }
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource. The name is 1-20 characters long and must be a valid 64 bit integer.",
- "pattern": "[0-9]{0,20}?",
- "annotations": {
- "required": [
- "compute.licenses.insert"
- ]
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "state": {
- "type": "string",
- "description": "[Output Only] Current state of this License Code.",
- "enum": [
- "DISABLED",
- "ENABLED",
- "RESTRICTED",
- "STATE_UNSPECIFIED",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "transferable": {
- "type": "boolean",
- "description": "[Output Only] If true, the license will remain attached when creating images or snapshots from disks. Otherwise, the license is not transferred."
- }
- }
- },
- "LicenseCodeLicenseAlias": {
- "id": "LicenseCodeLicenseAlias",
- "type": "object",
- "properties": {
- "description": {
- "type": "string",
- "description": "[Output Only] Description of this License Code."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] URL of license corresponding to this License Code."
- }
- }
- },
- "LicenseResourceRequirements": {
- "id": "LicenseResourceRequirements",
- "type": "object",
- "properties": {
- "minGuestCpuCount": {
- "type": "integer",
- "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start.",
- "format": "int32"
- },
- "minMemoryMb": {
- "type": "integer",
- "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start.",
- "format": "int32"
- }
- }
- },
- "LicensesListResponse": {
- "id": "LicensesListResponse",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of License resources.",
- "items": {
- "$ref": "License"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "LogConfig": {
- "id": "LogConfig",
- "type": "object",
- "description": "Specifies what kind of log the caller must write",
- "properties": {
- "cloudAudit": {
- "$ref": "LogConfigCloudAuditOptions",
- "description": "Cloud audit options."
- },
- "counter": {
- "$ref": "LogConfigCounterOptions",
- "description": "Counter options."
- },
- "dataAccess": {
- "$ref": "LogConfigDataAccessOptions",
- "description": "Data access options."
- }
- }
- },
- "LogConfigCloudAuditOptions": {
- "id": "LogConfigCloudAuditOptions",
- "type": "object",
- "description": "Write a Cloud Audit log",
- "properties": {
- "authorizationLoggingOptions": {
- "$ref": "AuthorizationLoggingOptions",
- "description": "Information used by the Cloud Audit Logging pipeline."
- },
- "logName": {
- "type": "string",
- "description": "The log_name to populate in the Cloud Audit Record.",
- "enum": [
- "ADMIN_ACTIVITY",
- "DATA_ACCESS",
- "UNSPECIFIED_LOG_NAME"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "LogConfigCounterOptions": {
- "id": "LogConfigCounterOptions",
- "type": "object",
- "description": "Increment a streamz counter with the specified metric and field names.\n\nMetric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended.\n\nField names correspond to IAM request parameters and field values are their respective values.\n\nAt present the only supported field names are - \"iam_principal\", corresponding to IAMContext.principal; - \"\" (empty string), resulting in one aggretated counter with no field.\n\nExamples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==\u003e increment counter /iam/policy/backend_debug_access_count {iam_principal=[value of IAMContext.principal]}\n\nAt this time we do not support: * multiple field names (though this may be supported in the future) * decrementing the counter * incrementing it by anything other than 1",
- "properties": {
- "field": {
- "type": "string",
- "description": "The field value to attribute."
- },
- "metric": {
- "type": "string",
- "description": "The metric to update."
- }
- }
- },
- "LogConfigDataAccessOptions": {
- "id": "LogConfigDataAccessOptions",
- "type": "object",
- "description": "Write a Data Access (Gin) log",
- "properties": {
- "logMode": {
- "type": "string",
- "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.",
- "enum": [
- "LOG_FAIL_CLOSED",
- "LOG_MODE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "MachineType": {
- "id": "MachineType",
- "type": "object",
- "description": "A Machine Type resource. (== resource_for v1.machineTypes ==) (== resource_for beta.machineTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this machine type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "guestCpus": {
- "type": "integer",
- "description": "[Output Only] The number of virtual CPUs that are available to the instance.",
- "format": "int32"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "isSharedCpu": {
- "type": "boolean",
- "description": "[Output Only] Whether this machine type has a shared CPU. See Shared-core machine types for more information."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#machineType for machine types.",
- "default": "compute#machineType"
- },
- "maximumPersistentDisks": {
- "type": "integer",
- "description": "[Output Only] Maximum persistent disks allowed.",
- "format": "int32"
- },
- "maximumPersistentDisksSizeGb": {
- "type": "string",
- "description": "[Output Only] Maximum total persistent disks size (GB) allowed.",
- "format": "int64"
- },
- "memoryMb": {
- "type": "integer",
- "description": "[Output Only] The amount of physical memory available to the instance, defined in MB.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the machine type resides, such as us-central1-a."
- }
- }
- },
- "MachineTypeAggregatedList": {
- "id": "MachineTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of MachineTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "MachineTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of machine types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#machineTypeAggregatedList for aggregated lists of machine types.",
- "default": "compute#machineTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "MachineTypeList": {
- "id": "MachineTypeList",
- "type": "object",
- "description": "Contains a list of machine types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of MachineType resources.",
- "items": {
- "$ref": "MachineType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#machineTypeList for lists of machine types.",
- "default": "compute#machineTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "MachineTypesScopedList": {
- "id": "MachineTypesScopedList",
- "type": "object",
- "properties": {
- "machineTypes": {
- "type": "array",
- "description": "[Output Only] List of machine types contained in this scope.",
- "items": {
- "$ref": "MachineType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the machine types list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "MaintenancePoliciesList": {
- "id": "MaintenancePoliciesList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output Only] A list of MaintenancePolicy resources.",
- "items": {
- "$ref": "MaintenancePolicy"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource.Always compute#maintenancePoliciesList for listsof maintenancePolicies",
- "default": "compute#maintenancePoliciesList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "instances": {
+ "methods": {
+ "addAccessConfig": {
+ "description": "Adds an access config to an instance's network interface.",
+ "httpMethod": "POST",
+ "id": "compute.instances.addAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface to add to this instance.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/addAccessConfig",
+ "request": {
+ "$ref": "AccessConfig"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "addMaintenancePolicies": {
+ "description": "Adds existing maintenance policies to an instance. You can only add one policy right now which will be applied to this instance for scheduling live migrations.",
+ "httpMethod": "POST",
+ "id": "compute.instances.addMaintenancePolicies",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/addMaintenancePolicies",
+ "request": {
+ "$ref": "InstancesAddMaintenancePoliciesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves aggregated list of instances.",
+ "httpMethod": "GET",
+ "id": "compute.instances.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instances",
+ "response": {
+ "$ref": "InstanceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "attachDisk": {
+ "description": "Attaches an existing Disk resource to an instance. You must first create the disk before you can attach it. It is not possible to create and attach a disk at the same time. For more information, read Adding a persistent disk to your instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.attachDisk",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "forceAttach": {
+ "description": "Whether to force attach the disk even if it's currently attached to another instance. This is only available for regional disks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/attachDisk",
+ "request": {
+ "$ref": "AttachedDisk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Instance resource. For more information, see Stopping or Deleting an Instance.",
+ "httpMethod": "DELETE",
+ "id": "compute.instances.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteAccessConfig": {
+ "description": "Deletes an access config from an instance's network interface.",
+ "httpMethod": "POST",
+ "id": "compute.instances.deleteAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "accessConfig",
+ "networkInterface"
+ ],
+ "parameters": {
+ "accessConfig": {
+ "description": "The name of the access config to delete.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/deleteAccessConfig",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "detachDisk": {
+ "description": "Detaches a disk from an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.detachDisk",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "deviceName"
+ ],
+ "parameters": {
+ "deviceName": {
+ "description": "Disk device name to detach.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "Instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/detachDisk",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Instance resource. Get a list of available instances by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instances.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}",
+ "response": {
+ "$ref": "Instance"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getGuestAttributes": {
+ "description": "Returns the specified guest attributes entry.",
+ "httpMethod": "GET",
+ "id": "compute.instances.getGuestAttributes",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "variableKey": {
+ "description": "Specifies the key for the guest attributes entry.",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/getGuestAttributes",
+ "response": {
+ "$ref": "GuestAttributes"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.instances.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getSerialPortOutput": {
+ "description": "Returns the specified instance's serial port output.",
+ "httpMethod": "GET",
+ "id": "compute.instances.getSerialPortOutput",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "port": {
+ "default": "1",
+ "description": "Specifies which COM or serial port to retrieve data from.",
+ "format": "int32",
+ "location": "query",
+ "maximum": "4",
+ "minimum": "1",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "start": {
+ "description": "Returns output starting from a specific byte position. Use this to page through output when the output is too large to return in a single request. For the initial request, leave this field unspecified. For subsequent calls, this field should be set to the next value returned in the previous call.",
+ "format": "int64",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/serialPort",
+ "response": {
+ "$ref": "SerialPortOutput"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sourceInstanceTemplate": {
+ "description": "Specifies instance template to create the instance.\n\nThis field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: \n- https://www.googleapis.com/compute/v1/projects/project/global/global/instanceTemplates/instanceTemplate \n- projects/project/global/global/instanceTemplates/instanceTemplate \n- global/instancesTemplates/instanceTemplate",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances",
+ "request": {
+ "$ref": "Instance"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instances contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.instances.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances",
+ "response": {
+ "$ref": "InstanceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listReferrers": {
+ "description": "Retrieves the list of referrers to instances contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.instances.listReferrers",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instance": {
+ "description": "Name of the target instance scoping this request, or '-' if the request should span over all instances in the container.",
+ "location": "path",
+ "pattern": "-|[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/referrers",
+ "response": {
+ "$ref": "InstanceListReferrers"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "removeMaintenancePolicies": {
+ "description": "Removes maintenance policies from an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.removeMaintenancePolicies",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/removeMaintenancePolicies",
+ "request": {
+ "$ref": "InstancesRemoveMaintenancePoliciesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "reset": {
+ "description": "Performs a reset on the instance. For more information, see Resetting an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.reset",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/reset",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resume": {
+ "description": "Resumes an instance that was suspended using the instances().suspend method.",
+ "httpMethod": "POST",
+ "id": "compute.instances.resume",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to resume.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/resume",
+ "request": {
+ "$ref": "InstancesResumeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDeletionProtection": {
+ "description": "Sets deletion protection on the instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setDeletionProtection",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "deletionProtection": {
+ "default": "true",
+ "description": "Whether the resource should be protected against deletion.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDiskAutoDelete": {
+ "description": "Sets the auto-delete flag for a disk attached to an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setDiskAutoDelete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "autoDelete",
+ "deviceName"
+ ],
+ "parameters": {
+ "autoDelete": {
+ "description": "Whether to auto-delete the disk when the instance is deleted.",
+ "location": "query",
+ "required": true,
+ "type": "boolean"
+ },
+ "deviceName": {
+ "description": "The device name of the disk to modify.",
+ "location": "query",
+ "pattern": "\\w[\\w.-]{0,254}",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "The instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets labels on an instance. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setLabels",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setLabels",
+ "request": {
+ "$ref": "InstancesSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMachineResources": {
+ "description": "Changes the number and/or type of accelerator for a stopped instance to the values specified in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMachineResources",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMachineResources",
+ "request": {
+ "$ref": "InstancesSetMachineResourcesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMachineType": {
+ "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMachineType",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
+ "request": {
+ "$ref": "InstancesSetMachineTypeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMetadata": {
+ "description": "Sets metadata for the specified instance to the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMetadata",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMetadata",
+ "request": {
+ "$ref": "Metadata"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMinCpuPlatform": {
+ "description": "Changes the minimum CPU platform that this instance should use. This method can only be called on a stopped instance. For more information, read Specifying a Minimum CPU Platform.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMinCpuPlatform",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform",
+ "request": {
+ "$ref": "InstancesSetMinCpuPlatformRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setScheduling": {
+ "description": "Sets an instance's scheduling options.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setScheduling",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setScheduling",
+ "request": {
+ "$ref": "Scheduling"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setServiceAccount": {
+ "description": "Sets the service account on the instance. For more information, read Changing the service account and access scopes for an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setServiceAccount",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setServiceAccount",
+ "request": {
+ "$ref": "InstancesSetServiceAccountRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTags": {
+ "description": "Sets tags for the specified instance to the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setTags",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setTags",
+ "request": {
+ "$ref": "Tags"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "simulateMaintenanceEvent": {
+ "description": "Simulates a maintenance event on the instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.simulateMaintenanceEvent",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "start": {
+ "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.start",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/start",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "startWithEncryptionKey": {
+ "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.startWithEncryptionKey",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey",
+ "request": {
+ "$ref": "InstancesStartWithEncryptionKeyRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "stop": {
+ "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur VM usage charges while they are stopped. However, resources that the VM is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.stop",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "discardLocalSsd": {
+ "description": "If true, discard the contents of any attached localSSD partitions. Default value is false (== preserve localSSD data).",
+ "location": "query",
+ "type": "boolean"
+ },
+ "instance": {
+ "description": "Name of the instance resource to stop.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/stop",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "suspend": {
+ "description": "This method suspends a running instance, saving its state to persistent storage, and allows you to resume the instance at a later time. Suspended instances incur reduced per-minute, virtual machine usage charges while they are suspended. Any resources the virtual machine is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instances.suspend",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "discardLocalSsd": {
+ "description": "If true, discard the contents of any attached localSSD partitions. Default value is false (== preserve localSSD data).",
+ "location": "query",
+ "type": "boolean"
+ },
+ "instance": {
+ "description": "Name of the instance resource to suspend.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/suspend",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instances.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "updateAccessConfig": {
+ "description": "Updates the specified access config from an instance's network interface with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "POST",
+ "id": "compute.instances.updateAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface where the access config is attached.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/updateAccessConfig",
+ "request": {
+ "$ref": "AccessConfig"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "updateNetworkInterface": {
+ "description": "Updates an instance's network interface. This method follows PATCH semantics.",
+ "httpMethod": "PATCH",
+ "id": "compute.instances.updateNetworkInterface",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface to update.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/updateNetworkInterface",
+ "request": {
+ "$ref": "NetworkInterface"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "updateShieldedVmConfig": {
+ "description": "Updates the Shielded VM config for an instance. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.instances.updateShieldedVmConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/updateShieldedVmConfig",
+ "request": {
+ "$ref": "ShieldedVmConfig"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "MaintenancePoliciesScopedList": {
- "id": "MaintenancePoliciesScopedList",
- "type": "object",
- "properties": {
- "maintenancePolicies": {
- "type": "array",
- "description": "List of maintenancePolicies contained in this scope.",
- "items": {
- "$ref": "MaintenancePolicy"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of maintenancePolicies when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "interconnectAttachments": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of interconnect attachments.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/interconnectAttachments",
+ "response": {
+ "$ref": "InterconnectAttachmentAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified interconnect attachment.",
+ "httpMethod": "DELETE",
+ "id": "compute.interconnectAttachments.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified interconnect attachment.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "response": {
+ "$ref": "InterconnectAttachment"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments",
+ "request": {
+ "$ref": "InterconnectAttachment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect attachments contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments",
+ "response": {
+ "$ref": "InterconnectAttachmentList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified interconnect attachment with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.interconnectAttachments.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "request": {
+ "$ref": "InterconnectAttachment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an InterconnectAttachment. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "MaintenancePolicy": {
- "id": "MaintenancePolicy",
- "type": "object",
- "description": "A maintenance policy for an instance. This specifies what kind of maintenance operations our infrastructure may perform on this instance and when.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#maintenance_policies for maintenance policies.",
- "default": "compute#maintenancePolicy"
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instances.insert"
- ]
- }
- },
- "region": {
- "type": "string"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "vmMaintenancePolicy": {
- "$ref": "VmMaintenancePolicy",
- "description": "Maintenance policy applicable to VMs for infrastructure maintenance."
- }
- }
- },
- "MaintenancePolicyAggregatedList": {
- "id": "MaintenancePolicyAggregatedList",
- "type": "object",
- "description": "Contains a list of maintenancePolicies.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of MaintenancePolicy resources.",
- "additionalProperties": {
- "$ref": "MaintenancePoliciesScopedList",
- "description": "Name of the scope containing this set of maintenancePolicies."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#maintenancePolicyAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "interconnectLocations": {
+ "methods": {
+ "get": {
+ "description": "Returns the details for the specified interconnect location. Get a list of available interconnect locations by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectLocations.get",
+ "parameterOrder": [
+ "project",
+ "interconnectLocation"
+ ],
+ "parameters": {
+ "interconnectLocation": {
+ "description": "Name of the interconnect location to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnectLocations/{interconnectLocation}",
+ "response": {
+ "$ref": "InterconnectLocation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect locations available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectLocations.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnectLocations",
+ "response": {
+ "$ref": "InterconnectLocationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectLocations.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnectLocations/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "MaintenanceWindow": {
- "id": "MaintenanceWindow",
- "type": "object",
- "description": "A maintenance window for VMs and disks. When set, we restrict our maintenance operations to this window.",
- "properties": {
- "dailyMaintenanceWindow": {
- "$ref": "DailyMaintenanceWindow"
- },
- "hourlyMaintenanceWindow": {
- "$ref": "HourlyMaintenanceWindow"
- }
- }
- },
- "ManagedInstance": {
- "id": "ManagedInstance",
- "type": "object",
- "properties": {
- "currentAction": {
- "type": "string",
- "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful. \n- CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's targetSize value is decreased instead. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.",
- "enum": [
- "ABANDONING",
- "CREATING",
- "CREATING_WITHOUT_RETRIES",
- "DELETING",
- "NONE",
- "RECREATING",
- "REFRESHING",
- "RESTARTING",
- "VERIFYING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "id": {
- "type": "string",
- "description": "[Output only] The unique identifier for this resource. This field is empty when instance does not exist.",
- "format": "uint64"
- },
- "instance": {
- "type": "string",
- "description": "[Output Only] The URL of the instance. The URL can exist even if the instance has not yet been created."
- },
- "instanceStatus": {
- "type": "string",
- "description": "[Output Only] The status of the instance. This field is empty when the instance does not exist.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "instanceTemplate": {
- "type": "string",
- "description": "[Output Only] The intended template of the instance. This field is empty when current_action is one of { DELETING, ABANDONING }."
- },
- "lastAttempt": {
- "$ref": "ManagedInstanceLastAttempt",
- "description": "[Output Only] Information about the last attempt to create or delete the instance."
- },
- "override": {
- "$ref": "ManagedInstanceOverride",
- "description": "[Output Only] Override defined for this instance."
- },
- "standbyMode": {
- "type": "string",
- "description": "[Output Only] Standby mode of the instance. This field is non-empty iff the instance is a standby.",
- "enum": [
- "DRAINED"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "tag": {
- "type": "string",
- "description": "[Output Only] Tag describing the version."
- },
- "version": {
- "$ref": "ManagedInstanceVersion",
- "description": "[Output Only] Intended version of this instance."
- }
- }
- },
- "ManagedInstanceLastAttempt": {
- "id": "ManagedInstanceLastAttempt",
- "type": "object",
- "properties": {
- "errors": {
- "type": "object",
- "description": "[Output Only] Encountered errors during the last attempt to create or delete the instance.",
- "properties": {
- "errors": {
- "type": "array",
- "description": "[Output Only] The array of errors encountered while processing this operation.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] The error type identifier for this error."
- },
- "location": {
- "type": "string",
- "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional."
- },
- "message": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable error message."
- }
- }
- }
+ },
+ "interconnects": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified interconnect.",
+ "httpMethod": "DELETE",
+ "id": "compute.interconnects.delete",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified interconnect. Get a list of available interconnects by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.interconnects.get",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "response": {
+ "$ref": "Interconnect"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.interconnects.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Interconnect in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects",
+ "request": {
+ "$ref": "Interconnect"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.interconnects.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects",
+ "response": {
+ "$ref": "InterconnectList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified interconnect with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.interconnects.patch",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "request": {
+ "$ref": "Interconnect"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an Interconnect. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "ManagedInstanceOverride": {
- "id": "ManagedInstanceOverride",
- "type": "object",
- "description": "Overrides of stateful properties for a given instance",
- "properties": {
- "disks": {
- "type": "array",
- "description": "Disk overrides defined for this instance",
- "items": {
- "$ref": "ManagedInstanceOverrideDiskOverride"
- }
- },
- "origin": {
- "type": "string",
- "description": "[Output Only] Indicates where does the override come from.",
- "enum": [
- "AUTO_GENERATED",
- "USER_PROVIDED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "ManagedInstanceOverrideDiskOverride": {
- "id": "ManagedInstanceOverrideDiskOverride",
- "type": "object",
- "properties": {
- "deviceName": {
- "type": "string",
- "description": "The name of the device on the VM"
- },
- "mode": {
- "type": "string",
- "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
- "enum": [
- "READ_ONLY",
- "READ_WRITE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "source": {
- "type": "string",
- "description": "The disk that is/will be mounted"
- }
- }
- },
- "ManagedInstanceVersion": {
- "id": "ManagedInstanceVersion",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "[Output Only] The intended template of the instance. This field is empty when current_action is one of { DELETING, ABANDONING }."
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the version."
- }
- }
- },
- "Metadata": {
- "id": "Metadata",
- "type": "object",
- "description": "A metadata key/value entry.",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.",
- "format": "byte"
- },
- "items": {
- "type": "array",
- "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB.",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.",
- "pattern": "[a-zA-Z0-9-_]{1,128}",
- "annotations": {
- "required": [
- "compute.instances.insert",
- "compute.projects.setCommonInstanceMetadata"
- ]
- }
- },
- "value": {
- "type": "string",
- "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB).",
- "annotations": {
- "required": [
- "compute.instances.insert",
- "compute.projects.setCommonInstanceMetadata"
- ]
- }
- }
+ },
+ "licenseCodes": {
+ "methods": {
+ "get": {
+ "description": "Return a specified license code. License codes are mirrored across all projects that have permissions to read the License Code.",
+ "httpMethod": "GET",
+ "id": "compute.licenseCodes.get",
+ "parameterOrder": [
+ "project",
+ "licenseCode"
+ ],
+ "parameters": {
+ "licenseCode": {
+ "description": "Number corresponding to the License code resource to return.",
+ "location": "path",
+ "pattern": "[0-9]{0,61}?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenseCodes/{licenseCode}",
+ "response": {
+ "$ref": "LicenseCode"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.licenseCodes.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenseCodes/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.licenseCodes.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenseCodes/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.licenseCodes.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenseCodes/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
},
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#metadata for metadata.",
- "default": "compute#metadata"
- }
- }
- },
- "NamedPort": {
- "id": "NamedPort",
- "type": "object",
- "description": "The named port. For example: .",
- "properties": {
- "name": {
- "type": "string",
- "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
- },
- "port": {
- "type": "integer",
- "description": "The port number, which can be a value between 1 and 65535.",
- "format": "int32"
- }
- }
- },
- "Network": {
- "id": "Network",
- "type": "object",
- "description": "Represents a Network resource. Read Networks and Firewalls for more information. (== resource_for v1.networks ==) (== resource_for beta.networks ==)",
- "properties": {
- "IPv4Range": {
- "type": "string",
- "description": "The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
- "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}/[0-9]{1,2}"
- },
- "autoCreateSubnetworks": {
- "type": "boolean",
- "description": "When set to true, the network is created in \"auto subnet mode\". When set to false, the network is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "crossVmEncryption": {
- "type": "string",
- "description": "[Output Only] Type of VM-to-VM traffic encryption for this network.",
- "enum": [
- "ENCRYPTED",
- "UNENCRYPTED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "gatewayIPv4": {
- "type": "string",
- "description": "A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.",
- "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#network for networks.",
- "default": "compute#network"
- },
- "loadBalancerVmEncryption": {
- "type": "string",
- "description": "[Output Only] Type of LB-to-VM traffic encryption for this network.",
- "enum": [
- "ENCRYPTED",
- "UNENCRYPTED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.networks.insert"
- ]
- }
- },
- "peerings": {
- "type": "array",
- "description": "[Output Only] List of network peerings for the resource.",
- "items": {
- "$ref": "NetworkPeering"
- }
- },
- "routingConfig": {
- "$ref": "NetworkRoutingConfig",
- "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
+ "licenses": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified license.",
+ "httpMethod": "DELETE",
+ "id": "compute.licenses.delete",
+ "parameterOrder": [
+ "project",
+ "license"
+ ],
+ "parameters": {
+ "license": {
+ "description": "Name of the license resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{license}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified License resource.",
+ "httpMethod": "GET",
+ "id": "compute.licenses.get",
+ "parameterOrder": [
+ "project",
+ "license"
+ ],
+ "parameters": {
+ "license": {
+ "description": "Name of the License resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{license}",
+ "response": {
+ "$ref": "License"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.licenses.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Create a License resource in the specified project.",
+ "httpMethod": "POST",
+ "id": "compute.licenses.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses",
+ "request": {
+ "$ref": "License"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of licenses available in the specified project. This method does not get any licenses that belong to other projects, including licenses attached to publicly-available images, like Debian 8. If you want to get a list of publicly-available licenses, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
+ "httpMethod": "GET",
+ "id": "compute.licenses.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses",
+ "response": {
+ "$ref": "LicensesListResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.licenses.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.licenses.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "subnetworks": {
- "type": "array",
- "description": "[Output Only] Server-defined fully-qualified URLs for all subnetworks in this network.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "NetworkEndpoint": {
- "id": "NetworkEndpoint",
- "type": "object",
- "description": "The network endpoint.",
- "properties": {
- "instance": {
- "type": "string",
- "description": "The name for a specific VM instance that the IP address belongs to. This is required for network endpoints of type GCE_VM_IP and GCE_VM_IP_PORT. The instance must be in the same zone of network endpoint group.\n\nThe name must be 1-63 characters long, and comply with RFC1035."
- },
- "ipAddress": {
- "type": "string",
- "description": "Optional IPv4 address of network endpoint. The IP address must belong to a VM in GCE (either the primary IP or as part of an aliased IP range). If the IP address is not specified, then the primary IP address for the VM instance in the network that the network endpoint group belongs to will be used."
- },
- "port": {
- "type": "integer",
- "description": "Optional port number of network endpoint. If not specified and the NetworkEndpointGroup.network_endpoint_type is GCE_IP_PORT, the defaultPort for the network endpoint group will be used.",
- "format": "int32"
- }
- }
- },
- "NetworkEndpointGroup": {
- "id": "NetworkEndpointGroup",
- "type": "object",
- "description": "Represents a collection of network endpoints.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
- "default": "compute#networkEndpointGroup"
- },
- "loadBalancer": {
- "$ref": "NetworkEndpointGroupLbNetworkEndpointGroup",
- "description": "This field is only valid when the network endpoint group type is LOAD_BALANCING."
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
- },
- "networkEndpointType": {
- "type": "string",
- "description": "Type of network endpoints in this network endpoint group. Only supported values for LOAD_BALANCING are GCE_VM_IP or GCE_VM_IP_PORT.",
- "enum": [
- "GCE_VM_IP_PORT"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "size": {
- "type": "integer",
- "description": "[Output only] Number of network endpoints in the network endpoint group.",
- "format": "int32"
- },
- "type": {
- "type": "string",
- "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
- "enum": [
- "LOAD_BALANCING"
- ],
- "enumDescriptions": [
- ""
- ]
- }
- }
- },
- "NetworkEndpointGroupAggregatedList": {
- "id": "NetworkEndpointGroupAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of NetworkEndpointGroupsScopedList resources.",
- "additionalProperties": {
- "$ref": "NetworkEndpointGroupsScopedList",
- "description": "The name of the scope that contains this set of network endpoint groups."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupAggregatedList for aggregated lists of network endpoint groups.",
- "default": "compute#networkEndpointGroupAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "machineTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of machine types.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/machineTypes",
+ "response": {
+ "$ref": "MachineTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified machine type. Get a list of available machine types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "machineType"
+ ],
+ "parameters": {
+ "machineType": {
+ "description": "Name of the machine type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/machineTypes/{machineType}",
+ "response": {
+ "$ref": "MachineType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of machine types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/machineTypes",
+ "response": {
+ "$ref": "MachineTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "NetworkEndpointGroupLbNetworkEndpointGroup": {
- "id": "NetworkEndpointGroupLbNetworkEndpointGroup",
- "type": "object",
- "description": "Load balancing specific fields for network endpoint group of type LOAD_BALANCING.",
- "properties": {
- "defaultPort": {
- "type": "integer",
- "description": "The default port used if the port number is not specified in the network endpoint. If the network endpoint type is GCE_VM_IP, this field must not be specified.",
- "format": "int32"
- },
- "network": {
- "type": "string",
- "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified."
- },
- "subnetwork": {
- "type": "string",
- "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the network endpoint group is located."
- }
- }
- },
- "NetworkEndpointGroupList": {
- "id": "NetworkEndpointGroupList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of NetworkEndpointGroup resources.",
- "items": {
- "$ref": "NetworkEndpointGroup"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupList for network endpoint group lists.",
- "default": "compute#networkEndpointGroupList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "NetworkEndpointGroupsAttachEndpointsRequest": {
- "id": "NetworkEndpointGroupsAttachEndpointsRequest",
- "type": "object",
- "properties": {
- "networkEndpoints": {
- "type": "array",
- "description": "The list of network endpoints to be attached.",
- "items": {
- "$ref": "NetworkEndpoint"
- }
- }
- }
- },
- "NetworkEndpointGroupsDetachEndpointsRequest": {
- "id": "NetworkEndpointGroupsDetachEndpointsRequest",
- "type": "object",
- "properties": {
- "networkEndpoints": {
- "type": "array",
- "description": "The list of network endpoints to be detached.",
- "items": {
- "$ref": "NetworkEndpoint"
- }
- }
- }
- },
- "NetworkEndpointGroupsListEndpointsRequest": {
- "id": "NetworkEndpointGroupsListEndpointsRequest",
- "type": "object",
- "properties": {
- "healthStatus": {
- "type": "string",
- "description": "Optional query parameter for showing the health status of each network endpoint. Valid options are SKIP or SHOW. If you don't specifiy this parameter, the health status of network endpoints will not be provided.",
- "enum": [
- "SHOW",
- "SKIP"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "NetworkEndpointGroupsListNetworkEndpoints": {
- "id": "NetworkEndpointGroupsListNetworkEndpoints",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of NetworkEndpointWithHealthStatus resources.",
- "items": {
- "$ref": "NetworkEndpointWithHealthStatus"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupsListNetworkEndpoints for the list of network endpoints in the specified network endpoint group.",
- "default": "compute#networkEndpointGroupsListNetworkEndpoints"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "maintenancePolicies": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of maintenance policies.",
+ "httpMethod": "GET",
+ "id": "compute.maintenancePolicies.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/maintenancePolicies",
+ "response": {
+ "$ref": "MaintenancePolicyAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified maintenance policy.",
+ "httpMethod": "DELETE",
+ "id": "compute.maintenancePolicies.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "maintenancePolicy"
+ ],
+ "parameters": {
+ "maintenancePolicy": {
+ "description": "Name of the maintenance policy to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/maintenancePolicies/{maintenancePolicy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves all information of the specified maintenance policy.",
+ "httpMethod": "GET",
+ "id": "compute.maintenancePolicies.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "maintenancePolicy"
+ ],
+ "parameters": {
+ "maintenancePolicy": {
+ "description": "Name of the maintenance policy to retrieve.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/maintenancePolicies/{maintenancePolicy}",
+ "response": {
+ "$ref": "MaintenancePolicy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.maintenancePolicies.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/maintenancePolicies/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a new maintenance policy.",
+ "httpMethod": "POST",
+ "id": "compute.maintenancePolicies.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/maintenancePolicies",
+ "request": {
+ "$ref": "MaintenancePolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "List all the maintenance policies that have been configured for the specified project in specified region.",
+ "httpMethod": "GET",
+ "id": "compute.maintenancePolicies.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/maintenancePolicies",
+ "response": {
+ "$ref": "MaintenancePoliciesList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.maintenancePolicies.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/maintenancePolicies/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.maintenancePolicies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/maintenancePolicies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "NetworkEndpointGroupsScopedList": {
- "id": "NetworkEndpointGroupsScopedList",
- "type": "object",
- "properties": {
+ },
"networkEndpointGroups": {
- "type": "array",
- "description": "[Output Only] The list of network endpoint groups that are contained in this scope.",
- "items": {
- "$ref": "NetworkEndpointGroup"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that replaces the list of network endpoint groups when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "NetworkEndpointWithHealthStatus": {
- "id": "NetworkEndpointWithHealthStatus",
- "type": "object",
- "properties": {
- "healths": {
- "type": "array",
- "description": "[Output only] The health status of network endpoint;",
- "items": {
- "$ref": "HealthStatusForNetworkEndpoint"
- }
- },
- "networkEndpoint": {
- "$ref": "NetworkEndpoint",
- "description": "[Output only] The network endpoint;"
- }
- }
- },
- "NetworkInterface": {
- "id": "NetworkInterface",
- "type": "object",
- "description": "A network interface resource attached to an instance.",
- "properties": {
- "accessConfigs": {
- "type": "array",
- "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access.",
- "items": {
- "$ref": "AccessConfig"
- }
- },
- "aliasIpRanges": {
- "type": "array",
- "description": "An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks.",
- "items": {
- "$ref": "AliasIpRange"
- }
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint hash of contents stored in this network interface. This field will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface.",
- "format": "byte"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#networkInterface for network interfaces.",
- "default": "compute#networkInterface"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] The name of the network interface, generated by the server. For network devices, these are eth0, eth1, etc."
- },
- "network": {
- "type": "string",
- "description": "URL of the network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used; if the network is not specified but the subnetwork is specified, the network is inferred.\n\nThis field is optional when creating a firewall rule. If not specified when creating a firewall rule, the default network global/networks/default is used.\n\nIf you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/global/networks/network \n- projects/project/global/networks/network \n- global/networks/default"
- },
- "networkIP": {
- "type": "string",
- "description": "An IPv4 internal network address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not provide this property. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode, then this field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork \n- regions/region/subnetworks/subnetwork"
- }
- }
- },
- "NetworkList": {
- "id": "NetworkList",
- "type": "object",
- "description": "Contains a list of networks.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Network resources.",
- "items": {
- "$ref": "Network"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#networkList for lists of networks.",
- "default": "compute#networkList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "NetworkPeering": {
- "id": "NetworkPeering",
- "type": "object",
- "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
- "properties": {
- "autoCreateRoutes": {
- "type": "boolean",
- "description": "Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network."
- },
- "name": {
- "type": "string",
- "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
- },
- "network": {
- "type": "string",
- "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
- },
- "state": {
- "type": "string",
- "description": "[Output Only] State for the peering.",
- "enum": [
- "ACTIVE",
- "INACTIVE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "stateDetails": {
- "type": "string",
- "description": "[Output Only] Details about the current state of the peering."
- }
- }
- },
- "NetworkRoutingConfig": {
- "id": "NetworkRoutingConfig",
- "type": "object",
- "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
- "properties": {
- "routingMode": {
- "type": "string",
- "description": "The network-wide routing mode to use. If set to REGIONAL, this network's cloud routers will only advertise routes with subnetworks of this network in the same region as the router. If set to GLOBAL, this network's cloud routers will advertise routes with all subnetworks of this network, across regions.",
- "enum": [
- "GLOBAL",
- "REGIONAL"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "NetworksAddPeeringRequest": {
- "id": "NetworksAddPeeringRequest",
- "type": "object",
- "properties": {
- "autoCreateRoutes": {
- "type": "boolean",
- "description": "Whether Google Compute Engine manages the routes automatically."
- },
- "name": {
- "type": "string",
- "description": "Name of the peering, which should conform to RFC1035.",
- "annotations": {
- "required": [
- "compute.networks.addPeering"
- ]
- }
- },
- "peerNetwork": {
- "type": "string",
- "description": "URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
- }
- }
- },
- "NetworksRemovePeeringRequest": {
- "id": "NetworksRemovePeeringRequest",
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Name of the peering, which should conform to RFC1035."
- }
- }
- },
- "Operation": {
- "id": "Operation",
- "type": "object",
- "description": "An Operation resource, used to manage asynchronous API requests. (== resource_for v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)",
- "properties": {
- "clientOperationId": {
- "type": "string",
- "description": "[Output Only] Reserved for future use."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Deprecated] This field is deprecated."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] A textual description of the operation, which is set when the operation is created."
- },
- "endTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was completed. This value is in RFC3339 text format."
- },
- "error": {
- "type": "object",
- "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
- "properties": {
- "errors": {
- "type": "array",
- "description": "[Output Only] The array of errors encountered while processing this operation.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] The error type identifier for this error."
- },
- "location": {
- "type": "string",
- "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional."
- },
- "message": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable error message."
- }
- }
- }
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves the list of network endpoint groups and sorts them by zone.",
+ "httpMethod": "GET",
+ "id": "compute.networkEndpointGroups.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/networkEndpointGroups",
+ "response": {
+ "$ref": "NetworkEndpointGroupAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "attachNetworkEndpoints": {
+ "description": "Attach a list of network endpoints to the specified network endpoint group.",
+ "httpMethod": "POST",
+ "id": "compute.networkEndpointGroups.attachNetworkEndpoints",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "networkEndpointGroup"
+ ],
+ "parameters": {
+ "networkEndpointGroup": {
+ "description": "The name of the network endpoint group where you are attaching network endpoints to. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints",
+ "request": {
+ "$ref": "NetworkEndpointGroupsAttachEndpointsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified network endpoint group. The network endpoints in the NEG and the VM instances they belong to are not terminated when the NEG is deleted. Note that the NEG cannot be deleted if there are backend services referencing it.",
+ "httpMethod": "DELETE",
+ "id": "compute.networkEndpointGroups.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "networkEndpointGroup"
+ ],
+ "parameters": {
+ "networkEndpointGroup": {
+ "description": "The name of the network endpoint group to delete. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "detachNetworkEndpoints": {
+ "description": "Detach a list of network endpoints from the specified network endpoint group.",
+ "httpMethod": "POST",
+ "id": "compute.networkEndpointGroups.detachNetworkEndpoints",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "networkEndpointGroup"
+ ],
+ "parameters": {
+ "networkEndpointGroup": {
+ "description": "The name of the network endpoint group where you are removing network endpoints. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints",
+ "request": {
+ "$ref": "NetworkEndpointGroupsDetachEndpointsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified network endpoint group. Get a list of available network endpoint groups by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.networkEndpointGroups.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "networkEndpointGroup"
+ ],
+ "parameters": {
+ "networkEndpointGroup": {
+ "description": "The name of the network endpoint group. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}",
+ "response": {
+ "$ref": "NetworkEndpointGroup"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.networkEndpointGroups.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the network endpoint group. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups",
+ "request": {
+ "$ref": "NetworkEndpointGroup"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of network endpoint groups that are located in the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.networkEndpointGroups.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups",
+ "response": {
+ "$ref": "NetworkEndpointGroupList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listNetworkEndpoints": {
+ "description": "List the network endpoints in the specified network endpoint group.",
+ "httpMethod": "POST",
+ "id": "compute.networkEndpointGroups.listNetworkEndpoints",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "networkEndpointGroup"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "networkEndpointGroup": {
+ "description": "The name of the network endpoint group from which you want to generate a list of included network endpoints. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints",
+ "request": {
+ "$ref": "NetworkEndpointGroupsListEndpointsRequest"
+ },
+ "response": {
+ "$ref": "NetworkEndpointGroupsListNetworkEndpoints"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.networkEndpointGroups.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/networkEndpointGroups/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- },
- "httpErrorMessage": {
- "type": "string",
- "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND."
- },
- "httpErrorStatusCode": {
- "type": "integer",
- "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
- "format": "int32"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "insertTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was requested. This value is in RFC3339 text format."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#operation for Operation resources.",
- "default": "compute#operation"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "operationType": {
- "type": "string",
- "description": "[Output Only] The type of operation, such as insert, update, or delete, and so on."
- },
- "progress": {
- "type": "integer",
- "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
- "format": "int32"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] The URL of the region where the operation resides. Only available when performing regional operations."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "startTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was started by the server. This value is in RFC3339 text format."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.",
- "enum": [
- "DONE",
- "PENDING",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the current status of the operation."
- },
- "targetId": {
- "type": "string",
- "description": "[Output Only] The unique target ID, which identifies a specific incarnation of the target resource.",
- "format": "uint64"
- },
- "targetLink": {
- "type": "string",
- "description": "[Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from."
- },
- "user": {
- "type": "string",
- "description": "[Output Only] User who requested the operation, for example: user@example.com."
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If warning messages are generated during processing of the operation, this field will be populated.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
+ },
+ "networks": {
+ "methods": {
+ "addPeering": {
+ "description": "Adds a peering to the specified network.",
+ "httpMethod": "POST",
+ "id": "compute.networks.addPeering",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network resource to add peering to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/addPeering",
+ "request": {
+ "$ref": "NetworksAddPeeringRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified network.",
+ "httpMethod": "DELETE",
+ "id": "compute.networks.delete",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified network. Get a list of available networks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.networks.get",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "response": {
+ "$ref": "Network"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a network in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.networks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks",
+ "request": {
+ "$ref": "Network"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of networks available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.networks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks",
+ "response": {
+ "$ref": "NetworkList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listIpOwners": {
+ "description": "List the internal IP owners in the specified network.",
+ "httpMethod": "GET",
+ "id": "compute.networks.listIpOwners",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "ipCidrRange": {
+ "description": "(Optional) IP CIDR range filter, example: \"10.128.10.0/30\".",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "network": {
+ "description": "Name of the network to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "ownerProjects": {
+ "description": "(Optional) Project IDs filter, example: \"project-1,project-2\".",
+ "location": "query",
+ "type": "string"
+ },
+ "ownerTypes": {
+ "description": "(Optional) Owner types filter, example: \"instance,forwardingRule\".",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "subnetName": {
+ "description": "(Optional) Subnetwork name filter.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "subnetRegion": {
+ "description": "(Optional) Subnetwork region filter.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/listIpOwners",
+ "response": {
+ "$ref": "IpOwnerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified network with the data included in the request. Only the following fields can be modified: routingConfig.routingMode.",
+ "httpMethod": "PATCH",
+ "id": "compute.networks.patch",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "request": {
+ "$ref": "Network"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removePeering": {
+ "description": "Removes a peering from the specified network.",
+ "httpMethod": "POST",
+ "id": "compute.networks.removePeering",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network resource to remove peering from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/removePeering",
+ "request": {
+ "$ref": "NetworksRemovePeeringRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "switchToCustomMode": {
+ "description": "Switches the network mode from auto subnet mode to custom subnet mode.",
+ "httpMethod": "POST",
+ "id": "compute.networks.switchToCustomMode",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to be updated.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/switchToCustomMode",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.networks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
},
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations."
- }
- }
- },
- "OperationAggregatedList": {
- "id": "OperationAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "object",
- "description": "[Output Only] A map of scoped operation lists.",
- "additionalProperties": {
- "$ref": "OperationsScopedList",
- "description": "[Output Only] Name of the scope containing this set of operations."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#operationAggregatedList for aggregated lists of operations.",
- "default": "compute#operationAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "nodeGroups": {
+ "methods": {
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.nodeGroups.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.nodeGroups.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.nodeGroups.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/nodeGroups/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "OperationList": {
- "id": "OperationList",
- "type": "object",
- "description": "Contains a list of Operation resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output Only] A list of Operation resources.",
- "items": {
- "$ref": "Operation"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#operations for Operations resource.",
- "default": "compute#operationList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "nodeTemplates": {
+ "methods": {
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.nodeTemplates.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/nodeTemplates/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.nodeTemplates.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/nodeTemplates/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.nodeTemplates.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/nodeTemplates/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "OperationsScopedList": {
- "id": "OperationsScopedList",
- "type": "object",
- "properties": {
- "operations": {
- "type": "array",
- "description": "[Output Only] List of operations contained in this scope.",
- "items": {
- "$ref": "Operation"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of operations when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "projects": {
+ "methods": {
+ "disableXpnHost": {
+ "description": "Disable this project as a shared VPC host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.disableXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/disableXpnHost",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "disableXpnResource": {
+ "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.disableXpnResource",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/disableXpnResource",
+ "request": {
+ "$ref": "ProjectsDisableXpnResourceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "enableXpnHost": {
+ "description": "Enable this project as a shared VPC host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.enableXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/enableXpnHost",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "enableXpnResource": {
+ "description": "Enable service resource (a.k.a service project) for a host project, so that subnets in the host project can be used by instances in the service project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.enableXpnResource",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/enableXpnResource",
+ "request": {
+ "$ref": "ProjectsEnableXpnResourceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Project resource.",
+ "httpMethod": "GET",
+ "id": "compute.projects.get",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}",
+ "response": {
+ "$ref": "Project"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getXpnHost": {
+ "description": "Get the shared VPC host project that this project links to. May be empty if no link exists.",
+ "httpMethod": "GET",
+ "id": "compute.projects.getXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/getXpnHost",
+ "response": {
+ "$ref": "Project"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "getXpnResources": {
+ "description": "Get service resources (a.k.a service project) associated with this host project.",
+ "httpMethod": "GET",
+ "id": "compute.projects.getXpnResources",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/getXpnResources",
+ "response": {
+ "$ref": "ProjectsGetXpnResources"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "listXpnHosts": {
+ "description": "List all shared VPC host projects visible to the user in an organization.",
+ "httpMethod": "POST",
+ "id": "compute.projects.listXpnHosts",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/listXpnHosts",
+ "request": {
+ "$ref": "ProjectsListXpnHostsRequest"
+ },
+ "response": {
+ "$ref": "XpnHostList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "moveDisk": {
+ "description": "Moves a persistent disk from one zone to another.",
+ "httpMethod": "POST",
+ "id": "compute.projects.moveDisk",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/moveDisk",
+ "request": {
+ "$ref": "DiskMoveRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "moveInstance": {
+ "description": "Moves an instance and its attached persistent disks from one zone to another.",
+ "httpMethod": "POST",
+ "id": "compute.projects.moveInstance",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/moveInstance",
+ "request": {
+ "$ref": "InstanceMoveRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setCommonInstanceMetadata": {
+ "description": "Sets metadata common to all instances within the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setCommonInstanceMetadata",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setCommonInstanceMetadata",
+ "request": {
+ "$ref": "Metadata"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDefaultNetworkTier": {
+ "description": "Sets the default network tier of the project. The default network tier is used when an address/forwardingRule/instance is created without specifying the network tier field.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setDefaultNetworkTier",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setDefaultNetworkTier",
+ "request": {
+ "$ref": "ProjectsSetDefaultNetworkTierRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDefaultServiceAccount": {
+ "description": "Sets the default service account of the project. The default service account is used when a VM instance is created with the service account email address set to \"default\".",
+ "httpMethod": "POST",
+ "id": "compute.projects.setDefaultServiceAccount",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setDefaultServiceAccount",
+ "request": {
+ "$ref": "ProjectsSetDefaultServiceAccountRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setUsageExportBucket": {
+ "description": "Enables the usage export feature and sets the usage export bucket where reports are stored. If you provide an empty request body using this method, the usage export feature will be disabled.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setUsageExportBucket",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setUsageExportBucket",
+ "request": {
+ "$ref": "UsageExportLocation"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ }
}
- }
- }
- }
- },
- "PathMatcher": {
- "id": "PathMatcher",
- "type": "object",
- "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service will be used.",
- "properties": {
- "defaultService": {
- "type": "string",
- "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is matched by the URL's path portion. For example, the following are all valid URLs to a BackendService resource: \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService"
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "name": {
- "type": "string",
- "description": "The name to which this PathMatcher is referred by the HostRule."
- },
- "pathRules": {
- "type": "array",
- "description": "The list of path rules.",
- "items": {
- "$ref": "PathRule"
- }
- }
- }
- },
- "PathRule": {
- "id": "PathRule",
- "type": "object",
- "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
- "properties": {
- "paths": {
- "type": "array",
- "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here.",
- "items": {
- "type": "string"
- }
},
- "service": {
- "type": "string",
- "description": "The URL of the BackendService resource if this rule is matched."
- }
- }
- },
- "PerInstanceConfig": {
- "id": "PerInstanceConfig",
- "type": "object",
- "properties": {
- "instance": {
- "type": "string",
- "description": "The URL of the instance. Serves as a merge key during UpdatePerInstanceConfigs operation."
- },
- "override": {
- "$ref": "ManagedInstanceOverride"
- }
- }
- },
- "Policy": {
- "id": "Policy",
- "type": "object",
- "description": "Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.\n\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.\n\n**Example**\n\n{ \"bindings\": [ { \"role\": \"roles/owner\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-other-app@appspot.gserviceaccount.com\", ] }, { \"role\": \"roles/viewer\", \"members\": [\"user:sean@example.com\"] } ] }\n\nFor a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).",
- "properties": {
- "auditConfigs": {
- "type": "array",
- "description": "Specifies cloud audit logging configuration for this policy.",
- "items": {
- "$ref": "AuditConfig"
- }
- },
- "bindings": {
- "type": "array",
- "description": "Associates a list of `members` to a `role`. `bindings` with no members will result in an error.",
- "items": {
- "$ref": "Binding"
- }
- },
- "etag": {
- "type": "string",
- "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.",
- "format": "byte"
- },
- "iamOwned": {
- "type": "boolean",
- "description": ""
- },
- "rules": {
- "type": "array",
- "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.",
- "items": {
- "$ref": "Rule"
- }
- },
- "version": {
- "type": "integer",
- "description": "Version of the `Policy`. The default version is 0.",
- "format": "int32"
- }
- }
- },
- "Project": {
- "id": "Project",
- "type": "object",
- "description": "A Project resource. Projects can only be created in the Google Cloud Platform Console. Unless marked otherwise, values can only be modified in the console. (== resource_for v1.projects ==) (== resource_for beta.projects ==)",
- "properties": {
- "commonInstanceMetadata": {
- "$ref": "Metadata",
- "description": "Metadata key/value pairs available to all instances contained in this project. See Custom metadata for more information."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultNetworkTier": {
- "type": "string",
- "description": "This signifies the default network tier used for configuring resources of the project and can only take the following values: PREMIUM, STANDARD. Initially the default network tier is PREMIUM.",
- "enum": [
- "PREMIUM",
- "SELECT",
- "STANDARD"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "defaultServiceAccount": {
- "type": "string",
- "description": "[Output Only] Default service account used by VMs running in this project."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource."
- },
- "enabledFeatures": {
- "type": "array",
- "description": "Restricted features enabled for use on this project.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#project for projects.",
- "default": "compute#project"
- },
- "name": {
- "type": "string",
- "description": "The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine."
- },
- "quotas": {
- "type": "array",
- "description": "[Output Only] Quotas assigned to this project.",
- "items": {
- "$ref": "Quota"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "usageExportLocation": {
- "$ref": "UsageExportLocation",
- "description": "The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored."
- },
- "xpnProjectStatus": {
- "type": "string",
- "description": "[Output Only] The role this project has in a shared VPC configuration. Currently only HOST projects are differentiated.",
- "enum": [
- "HOST",
- "UNSPECIFIED_XPN_PROJECT_STATUS"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "ProjectsDisableXpnResourceRequest": {
- "id": "ProjectsDisableXpnResourceRequest",
- "type": "object",
- "properties": {
- "xpnResource": {
- "$ref": "XpnResourceId",
- "description": "Service resource (a.k.a service project) ID."
- }
- }
- },
- "ProjectsEnableXpnResourceRequest": {
- "id": "ProjectsEnableXpnResourceRequest",
- "type": "object",
- "properties": {
- "xpnResource": {
- "$ref": "XpnResourceId",
- "description": "Service resource (a.k.a service project) ID."
- }
- }
- },
- "ProjectsGetXpnResources": {
- "id": "ProjectsGetXpnResources",
- "type": "object",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#projectsGetXpnResources for lists of service resources (a.k.a service projects)",
- "default": "compute#projectsGetXpnResources"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "resources": {
- "type": "array",
- "description": "Service resources (a.k.a service projects) attached to this project as their shared VPC host.",
- "items": {
- "$ref": "XpnResourceId"
- }
- }
- }
- },
- "ProjectsListXpnHostsRequest": {
- "id": "ProjectsListXpnHostsRequest",
- "type": "object",
- "properties": {
- "organization": {
- "type": "string",
- "description": "Optional organization ID managed by Cloud Resource Manager, for which to list shared VPC host projects. If not specified, the organization will be inferred from the project."
- }
- }
- },
- "ProjectsSetDefaultNetworkTierRequest": {
- "id": "ProjectsSetDefaultNetworkTierRequest",
- "type": "object",
- "properties": {
- "networkTier": {
- "type": "string",
- "description": "Default network tier to be set.",
- "enum": [
- "PREMIUM",
- "SELECT",
- "STANDARD"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "ProjectsSetDefaultServiceAccountRequest": {
- "id": "ProjectsSetDefaultServiceAccountRequest",
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "description": "Email address of the service account."
- }
- }
- },
- "Quota": {
- "id": "Quota",
- "type": "object",
- "description": "A quotas entry.",
- "properties": {
- "limit": {
- "type": "number",
- "description": "[Output Only] Quota limit for this metric.",
- "format": "double"
- },
- "metric": {
- "type": "string",
- "description": "[Output Only] Name of the quota metric.",
- "enum": [
- "AMD_S9300_GPUS",
- "AUTOSCALERS",
- "BACKEND_BUCKETS",
- "BACKEND_SERVICES",
- "COMMITMENTS",
- "CPUS",
- "CPUS_ALL_REGIONS",
- "DISKS_TOTAL_GB",
- "FIREWALLS",
- "FORWARDING_RULES",
- "HEALTH_CHECKS",
- "IMAGES",
- "INSTANCES",
- "INSTANCE_GROUPS",
- "INSTANCE_GROUP_MANAGERS",
- "INSTANCE_TEMPLATES",
- "INTERCONNECTS",
- "INTERNAL_ADDRESSES",
- "IN_USE_ADDRESSES",
- "LOCAL_SSD_TOTAL_GB",
- "MAINTENANCE_POLICIES",
- "NETWORKS",
- "NVIDIA_K80_GPUS",
- "NVIDIA_P100_GPUS",
- "PREEMPTIBLE_CPUS",
- "PREEMPTIBLE_LOCAL_SSD_GB",
- "PREEMPTIBLE_NVIDIA_K80_GPUS",
- "PREEMPTIBLE_NVIDIA_P100_GPUS",
- "REGIONAL_AUTOSCALERS",
- "REGIONAL_INSTANCE_GROUP_MANAGERS",
- "ROUTERS",
- "ROUTES",
- "SECURITY_POLICIES",
- "SECURITY_POLICY_RULES",
- "SNAPSHOTS",
- "SSD_TOTAL_GB",
- "SSL_CERTIFICATES",
- "STATIC_ADDRESSES",
- "SUBNETWORKS",
- "TARGET_HTTPS_PROXIES",
- "TARGET_HTTP_PROXIES",
- "TARGET_INSTANCES",
- "TARGET_POOLS",
- "TARGET_SSL_PROXIES",
- "TARGET_TCP_PROXIES",
- "TARGET_VPN_GATEWAYS",
- "URL_MAPS",
- "VPN_TUNNELS"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "usage": {
- "type": "number",
- "description": "[Output Only] Current usage of this metric.",
- "format": "double"
- }
- }
- },
- "Reference": {
- "id": "Reference",
- "type": "object",
- "description": "Represents a reference to a resource.",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#reference for references.",
- "default": "compute#reference"
- },
- "referenceType": {
- "type": "string",
- "description": "A description of the reference type with no implied semantics. Possible values include: \n- MEMBER_OF"
- },
- "referrer": {
- "type": "string",
- "description": "URL of the resource which refers to the target."
- },
- "target": {
- "type": "string",
- "description": "URL of the resource to which this reference points."
- }
- }
- },
- "Region": {
- "id": "Region",
- "type": "object",
- "description": "Region resource. (== resource_for beta.regions ==) (== resource_for v1.regions ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this region."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#region for regions.",
- "default": "compute#region"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "quotas": {
- "type": "array",
- "description": "[Output Only] Quotas assigned to this region.",
- "items": {
- "$ref": "Quota"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the region, either UP or DOWN.",
- "enum": [
- "DOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
+ "regionAutoscalers": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified autoscaler.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionAutoscalers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified autoscaler.",
+ "httpMethod": "GET",
+ "id": "compute.regionAutoscalers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Autoscaler"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionAutoscalers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of autoscalers contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionAutoscalers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "response": {
+ "$ref": "RegionAutoscalerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionAutoscalers.patch",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to patch.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionAutoscalers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.regionAutoscalers.update",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to update.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "zones": {
- "type": "array",
- "description": "[Output Only] A list of zones available in this region, in the form of resource URLs.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionAutoscalerList": {
- "id": "RegionAutoscalerList",
- "type": "object",
- "description": "Contains a list of autoscalers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Autoscaler resources.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#regionAutoscalerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "regionBackendServices": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified regional BackendService resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionBackendServices.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified regional BackendService resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionBackendServices.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "response": {
+ "$ref": "BackendService"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for this regional BackendService.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.getHealth",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource for which to get health.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}/getHealth",
+ "request": {
+ "$ref": "ResourceGroupReference"
+ },
+ "response": {
+ "$ref": "BackendServiceGroupHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of regional BackendService resources available to the specified project in the given region.",
+ "httpMethod": "GET",
+ "id": "compute.regionBackendServices.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices",
+ "response": {
+ "$ref": "BackendServiceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionBackendServices.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "PUT",
+ "id": "compute.regionBackendServices.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "RegionDiskTypeList": {
- "id": "RegionDiskTypeList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of DiskType resources.",
- "items": {
- "$ref": "DiskType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#regionDiskTypeList for region disk types.",
- "default": "compute#regionDiskTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionDisksResizeRequest": {
- "id": "RegionDisksResizeRequest",
- "type": "object",
- "properties": {
- "sizeGb": {
- "type": "string",
- "description": "The new size of the regional persistent disk, which is specified in GB.",
- "format": "int64"
- }
- }
- },
- "RegionInstanceGroupList": {
- "id": "RegionInstanceGroupList",
- "type": "object",
- "description": "Contains a list of InstanceGroup resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroup resources.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "kind": {
- "type": "string",
- "description": "The resource type.",
- "default": "compute#regionInstanceGroupList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupManagerDeleteInstanceConfigReq": {
- "id": "RegionInstanceGroupManagerDeleteInstanceConfigReq",
- "type": "object",
- "description": "RegionInstanceGroupManagers.deletePerInstanceConfigs",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances for which we want to delete per-instance configs on this managed instance group.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagerList": {
- "id": "RegionInstanceGroupManagerList",
- "type": "object",
- "description": "Contains a list of managed instance groups.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroupManager resources.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups that exist in th regional scope.",
- "default": "compute#regionInstanceGroupManagerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupManagerUpdateInstanceConfigReq": {
- "id": "RegionInstanceGroupManagerUpdateInstanceConfigReq",
- "type": "object",
- "description": "RegionInstanceGroupManagers.updatePerInstanceConfigs",
- "properties": {
- "perInstanceConfigs": {
- "type": "array",
- "description": "The list of per-instance configs to insert or patch on this managed instance group.",
- "items": {
- "$ref": "PerInstanceConfig"
- }
- }
- }
- },
- "RegionInstanceGroupManagersAbandonInstancesRequest": {
- "id": "RegionInstanceGroupManagersAbandonInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersApplyUpdatesRequest": {
- "id": "RegionInstanceGroupManagersApplyUpdatesRequest",
- "type": "object",
- "description": "InstanceGroupManagers.applyUpdatesToInstances",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances for which we want to apply changes on this managed instance group.",
- "items": {
- "type": "string"
- }
- },
- "maximalAction": {
- "type": "string",
- "description": "The maximal action that should be perfomed on the instances. By default REPLACE.",
- "enum": [
- "NONE",
- "REFRESH",
- "REPLACE",
- "RESTART"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "minimalAction": {
- "type": "string",
- "description": "The minimal action that should be perfomed on the instances. By default NONE.",
- "enum": [
- "NONE",
- "REFRESH",
- "REPLACE",
- "RESTART"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "RegionInstanceGroupManagersDeleteInstancesRequest": {
- "id": "RegionInstanceGroupManagersDeleteInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersListInstanceConfigsResp": {
- "id": "RegionInstanceGroupManagersListInstanceConfigsResp",
- "type": "object",
- "properties": {
- "items": {
- "type": "array",
- "description": "[Output Only] The list of PerInstanceConfig.",
- "items": {
- "$ref": "PerInstanceConfig"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupManagersListInstancesResponse": {
- "id": "RegionInstanceGroupManagersListInstancesResponse",
- "type": "object",
- "properties": {
- "managedInstances": {
- "type": "array",
- "description": "List of managed instances.",
- "items": {
- "$ref": "ManagedInstance"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- }
- }
- },
- "RegionInstanceGroupManagersRecreateRequest": {
- "id": "RegionInstanceGroupManagersRecreateRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetAutoHealingRequest": {
- "id": "RegionInstanceGroupManagersSetAutoHealingRequest",
- "type": "object",
- "properties": {
- "autoHealingPolicies": {
- "type": "array",
- "items": {
- "$ref": "InstanceGroupManagerAutoHealingPolicy"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetTargetPoolsRequest": {
- "id": "RegionInstanceGroupManagersSetTargetPoolsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of the target pools information, which is a hash of the contents. This field is used for optimistic locking when you update the target pool entries. This field is optional.",
- "format": "byte"
},
- "targetPools": {
- "type": "array",
- "description": "The URL of all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetTemplateRequest": {
- "id": "RegionInstanceGroupManagersSetTemplateRequest",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "URL of the InstanceTemplate resource from which all new instances will be created."
- }
- }
- },
- "RegionInstanceGroupsListInstances": {
- "id": "RegionInstanceGroupsListInstances",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceWithNamedPorts resources.",
- "items": {
- "$ref": "InstanceWithNamedPorts"
- }
- },
- "kind": {
- "type": "string",
- "description": "The resource type.",
- "default": "compute#regionInstanceGroupsListInstances"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupsListInstancesRequest": {
- "id": "RegionInstanceGroupsListInstancesRequest",
- "type": "object",
- "properties": {
- "instanceState": {
- "type": "string",
- "description": "Instances in which state should be returned. Valid options are: 'ALL', 'RUNNING'. By default, it lists all instances.",
- "enum": [
- "ALL",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "portName": {
- "type": "string",
- "description": "Name of port user is interested in. It is optional. If it is set, only information about this ports will be returned. If it is not set, all the named ports will be returned. Always lists all instances.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- }
- }
- },
- "RegionInstanceGroupsSetNamedPortsRequest": {
- "id": "RegionInstanceGroupsSetNamedPortsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
- },
- "namedPorts": {
- "type": "array",
- "description": "The list of named ports to set for this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- }
- }
- },
- "RegionList": {
- "id": "RegionList",
- "type": "object",
- "description": "Contains a list of region resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Region resources.",
- "items": {
- "$ref": "Region"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#regionList for lists of regions.",
- "default": "compute#regionList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionSetLabelsRequest": {
- "id": "RegionSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "The labels to set for this resource.",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "ResourceCommitment": {
- "id": "ResourceCommitment",
- "type": "object",
- "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
- "properties": {
- "amount": {
- "type": "string",
- "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU.",
- "format": "int64"
- },
- "type": {
- "type": "string",
- "description": "Type of resource for which this commitment applies. Possible values are VCPU and MEMORY",
- "enum": [
- "LOCAL_SSD",
- "MEMORY",
- "UNSPECIFIED",
- "VCPU"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "ResourceGroupReference": {
- "id": "ResourceGroupReference",
- "type": "object",
- "properties": {
- "group": {
- "type": "string",
- "description": "A URI referencing one of the instance groups listed in the backend service."
- }
- }
- },
- "Route": {
- "id": "Route",
- "type": "object",
- "description": "Represents a Route resource. A route specifies how certain packets should be handled by the network. Routes are associated with instances by tags and the set of routes for a particular instance is called its routing table.\n\nFor each packet leaving an instance, the system searches that instance's routing table for a single best matching route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching routes. The packet is then forwarded as specified by the nextHop field of the winning route - either to another instance destination, an instance gateway, or a Google Compute Engine-operated gateway.\n\nPackets that do not match any route in the sending instance's routing table are dropped. (== resource_for beta.routes ==) (== resource_for v1.routes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "destRange": {
- "type": "string",
- "description": "The destination range of outgoing packets that this route applies to. Only IPv4 is supported.",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of this resource. Always compute#routes for Route resources.",
- "default": "compute#route"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "Fully-qualified URL of the network that this route applies to.",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "nextHopGateway": {
- "type": "string",
- "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway"
- },
- "nextHopInstance": {
- "type": "string",
- "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
- },
- "nextHopIp": {
- "type": "string",
- "description": "The network IP address of an instance that should handle matching packets. Only IPv4 is supported."
- },
- "nextHopNetwork": {
- "type": "string",
- "description": "The URL of the local network if it should handle matching packets."
- },
- "nextHopPeering": {
- "type": "string",
- "description": "[Output Only] The network peering name that should handle matching packets, which should conform to RFC1035."
- },
- "nextHopVpnTunnel": {
- "type": "string",
- "description": "The URL to a VpnTunnel that should handle matching packets."
- },
- "priority": {
- "type": "integer",
- "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
- "format": "uint32",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "tags": {
- "type": "array",
- "description": "A list of instance tags to which this route applies.",
- "items": {
- "type": "string"
- },
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
+ "regionCommitments": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of commitments.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/commitments",
+ "response": {
+ "$ref": "CommitmentAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified commitment resource. Get a list of available commitments by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "commitment"
+ ],
+ "parameters": {
+ "commitment": {
+ "description": "Name of the commitment to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments/{commitment}",
+ "response": {
+ "$ref": "Commitment"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a commitment in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionCommitments.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments",
+ "request": {
+ "$ref": "Commitment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of commitments contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments",
+ "response": {
+ "$ref": "CommitmentList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionCommitments.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "RouteList": {
- "id": "RouteList",
- "type": "object",
- "description": "Contains a list of Route resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Route resources.",
- "items": {
- "$ref": "Route"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regionDiskTypes": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified regional disk type. Get a list of available disk types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regionDiskTypes.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "diskType"
+ ],
+ "parameters": {
+ "diskType": {
+ "description": "Name of the disk type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/diskTypes/{diskType}",
+ "response": {
+ "$ref": "DiskType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of regional disk types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.regionDiskTypes.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/diskTypes",
+ "response": {
+ "$ref": "RegionDiskTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "Router": {
- "id": "Router",
- "type": "object",
- "description": "Router resource.",
- "properties": {
- "bgp": {
- "$ref": "RouterBgp",
- "description": "BGP information specific to this router."
- },
- "bgpPeers": {
- "type": "array",
- "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
- "items": {
- "$ref": "RouterBgpPeer"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "interfaces": {
- "type": "array",
- "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
- "items": {
- "$ref": "RouterInterface"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#router for routers.",
- "default": "compute#router"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.routers.insert"
- ]
- }
- },
- "nats": {
- "type": "array",
- "description": "List of Nat services created in this router. The maximum number of Nat services within a Router is 3 for Alpha.",
- "items": {
- "$ref": "RouterNat"
- }
- },
- "network": {
- "type": "string",
- "description": "URI of the network to which this router belongs.",
- "annotations": {
- "required": [
- "compute.routers.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URI of the region where the router resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "RouterAdvertisedIpRange": {
- "id": "RouterAdvertisedIpRange",
- "type": "object",
- "description": "Description-tagged IP ranges for the router to advertise.",
- "properties": {
- "description": {
- "type": "string",
- "description": "User-specified description for the IP range."
- },
- "range": {
- "type": "string",
- "description": "The IP range to advertise. The value must be a CIDR-formatted string."
- }
- }
- },
- "RouterAdvertisedPrefix": {
- "id": "RouterAdvertisedPrefix",
- "type": "object",
- "description": "Description-tagged prefixes for the router to advertise.",
- "properties": {
- "description": {
- "type": "string",
- "description": "User-specified description for the prefix."
- },
- "prefix": {
- "type": "string",
- "description": "The prefix to advertise. The value must be a CIDR-formatted string."
- }
- }
- },
- "RouterAggregatedList": {
- "id": "RouterAggregatedList",
- "type": "object",
- "description": "Contains a list of routers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of Router resources.",
- "additionalProperties": {
- "$ref": "RoutersScopedList",
- "description": "Name of the scope containing this set of routers."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regionDisks": {
+ "methods": {
+ "createSnapshot": {
+ "description": "Creates a snapshot of this regional disk.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.createSnapshot",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk to snapshot.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "guestFlush": {
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}/createSnapshot",
+ "request": {
+ "$ref": "Snapshot"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified regional persistent disk. Deleting a regional disk removes all the replicas of its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionDisks.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns a specified regional persistent disk.",
+ "httpMethod": "GET",
+ "id": "compute.regionDisks.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}",
+ "response": {
+ "$ref": "Disk"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a persistent regional disk in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "Optional. Source image to restore onto a disk.",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks",
+ "request": {
+ "$ref": "Disk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of persistent disks contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionDisks.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks",
+ "response": {
+ "$ref": "DiskList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the specified regional persistent disk.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.resize",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "The project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}/resize",
+ "request": {
+ "$ref": "RegionDisksResizeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on the target regional disk.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "RouterBgp": {
- "id": "RouterBgp",
- "type": "object",
- "properties": {
- "advertiseMode": {
- "type": "string",
- "description": "User-specified flag to indicate which mode to use for advertisement.",
- "enum": [
- "CUSTOM",
- "DEFAULT"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "advertisedGroups": {
- "type": "array",
- "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
- "items": {
- "type": "string",
- "enum": [
- "ALL_SUBNETS"
- ],
- "enumDescriptions": [
- ""
- ]
- }
- },
- "advertisedIpRanges": {
- "type": "array",
- "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
- "items": {
- "$ref": "RouterAdvertisedIpRange"
- }
- },
- "advertisedPrefixs": {
- "type": "array",
- "description": "User-specified list of individual prefixes to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These prefixes will be advertised in addition to any specified groups. Leave this field blank to advertise no custom prefixes.",
- "items": {
- "$ref": "RouterAdvertisedPrefix"
- }
- },
- "asn": {
- "type": "integer",
- "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN.",
- "format": "uint32"
- }
- }
- },
- "RouterBgpPeer": {
- "id": "RouterBgpPeer",
- "type": "object",
- "properties": {
- "advertiseMode": {
- "type": "string",
- "description": "User-specified flag to indicate which mode to use for advertisement.",
- "enum": [
- "CUSTOM",
- "DEFAULT"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "advertisedGroups": {
- "type": "array",
- "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
- "items": {
- "type": "string",
- "enum": [
- "ALL_SUBNETS"
- ],
- "enumDescriptions": [
- ""
- ]
- }
- },
- "advertisedIpRanges": {
- "type": "array",
- "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
- "items": {
- "$ref": "RouterAdvertisedIpRange"
- }
- },
- "advertisedPrefixs": {
- "type": "array",
- "description": "User-specified list of individual prefixes to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These prefixes will be advertised in addition to any specified groups. Leave this field blank to advertise no custom prefixes.",
- "items": {
- "$ref": "RouterAdvertisedPrefix"
- }
- },
- "advertisedRoutePriority": {
- "type": "integer",
- "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
- "format": "uint32"
- },
- "interfaceName": {
- "type": "string",
- "description": "Name of the interface the BGP peer is associated with."
- },
- "ipAddress": {
- "type": "string",
- "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
- },
- "name": {
- "type": "string",
- "description": "Name of this BGP peer. The name must be 1-63 characters long and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "peerAsn": {
- "type": "integer",
- "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
- "format": "uint32"
- },
- "peerIpAddress": {
- "type": "string",
- "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported."
- }
- }
- },
- "RouterInterface": {
- "id": "RouterInterface",
- "type": "object",
- "properties": {
- "ipRange": {
- "type": "string",
- "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
- },
- "linkedInterconnectAttachment": {
- "type": "string",
- "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment."
- },
- "linkedVpnTunnel": {
- "type": "string",
- "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment."
- },
- "name": {
- "type": "string",
- "description": "Name of this interface entry. The name must be 1-63 characters long and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- }
- }
- },
- "RouterList": {
- "id": "RouterList",
- "type": "object",
- "description": "Contains a list of Router resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Router resources.",
- "items": {
- "$ref": "Router"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#router for routers.",
- "default": "compute#routerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regionInstanceGroupManagers": {
+ "methods": {
+ "abandonInstances": {
+ "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.abandonInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "applyUpdatesToInstances": {
+ "description": "Apply updates to selected instances the managed instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.applyUpdatesToInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group, should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request, should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersApplyUpdatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified managed instance group and all of the instances in that group.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionInstanceGroupManagers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteInstances": {
+ "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.deleteInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersDeleteInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deletePerInstanceConfigs": {
+ "description": "Delete selected per-instance configs for the managed instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.deletePerInstanceConfigs",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request, should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs",
+ "request": {
+ "$ref": "RegionInstanceGroupManagerDeleteInstanceConfigReq"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns all of the details about the specified managed instance group.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroupManagers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group to return.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "InstanceGroupManager"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA regional managed instance group can contain up to 2000 instances.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of managed instance groups that are contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroupManagers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers",
+ "response": {
+ "$ref": "RegionInstanceGroupManagerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listManagedInstances": {
+ "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.listManagedInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
+ "response": {
+ "$ref": "RegionInstanceGroupManagersListInstancesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listPerInstanceConfigs": {
+ "description": "Lists all of the per-instance configs defined for the managed instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.listPerInstanceConfigs",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request, should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs",
+ "response": {
+ "$ref": "RegionInstanceGroupManagersListInstanceConfigsResp"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listmanagedinstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionInstanceGroupManagers.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "recreateInstances": {
+ "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.recreateInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersRecreateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resize": {
+ "description": "Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.resize",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager",
+ "size"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "size": {
+ "description": "Number of instances that should exist in this instance group manager.",
+ "format": "int32",
+ "location": "query",
+ "minimum": "0",
+ "required": true,
+ "type": "integer"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setAutoHealingPolicies": {
+ "description": "Modifies the autohealing policy for the instances in this managed instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setAutoHealingPolicies",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetAutoHealingRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setInstanceTemplate": {
+ "description": "Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setInstanceTemplate",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetTemplateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTargetPools": {
+ "description": "Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setTargetPools",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetTargetPoolsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listmanagedinstances method.",
+ "httpMethod": "PUT",
+ "id": "compute.regionInstanceGroupManagers.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "updatePerInstanceConfigs": {
+ "description": "Insert or patch (for the ones that already exist) per-instance configs for the managed instance group. perInstanceConfig.instance serves as a key used to distinguish whether to perform insert or patch.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.updatePerInstanceConfigs",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group. It should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request, should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs",
+ "request": {
+ "$ref": "RegionInstanceGroupManagerUpdateInstanceConfigReq"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "RouterNat": {
- "id": "RouterNat",
- "type": "object",
- "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
- "properties": {
- "autoAllocatedNatIps": {
- "type": "array",
- "description": "[Output Only] List of IPs allocated automatically by GCP for this Nat service. They will be raw IP strings like \"179.12.26.133\". They are ephemeral IPs allocated from the IP blocks managed by the NAT manager. This list can grow and shrink based on the number of VMs configured to use NAT.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "natIpAllocateOption": {
- "type": "string",
- "description": "Specify the NatIpAllocateOption. If it is AUTO_ONLY, then nat_ip should be empty.",
- "enum": [
- "AUTO_ONLY",
- "MANUAL_ONLY"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "natIps": {
- "type": "array",
- "description": "List of URLs of the IP resources used for this Nat service. These IPs must be valid static external IP addresses assigned to the project. max_length is subject to change post alpha.",
- "items": {
- "type": "string"
- }
- },
- "sourceSubnetworkIpRangesToNat": {
- "type": "string",
- "description": "Specify the Nat option. If this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
- "enum": [
- "ALL_SUBNETWORKS_ALL_IP_RANGES",
- "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES",
- "LIST_OF_SUBNETWORKS"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
},
- "subnetworks": {
- "type": "array",
- "description": "List of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above.",
- "items": {
- "$ref": "RouterNatSubnetworkToNat"
- }
- }
- }
- },
- "RouterNatSubnetworkToNat": {
- "id": "RouterNatSubnetworkToNat",
- "type": "object",
- "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
- "properties": {
- "name": {
- "type": "string",
- "description": "URL for the subnetwork resource to use NAT."
- },
- "secondaryIpRangeNames": {
- "type": "array",
- "description": "List of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat.",
- "items": {
- "type": "string"
- }
+ "regionInstanceGroups": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified instance group resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroups.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "Name of the instance group resource to return.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "InstanceGroup"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instance group resources contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroups.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups",
+ "response": {
+ "$ref": "RegionInstanceGroupList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listInstances": {
+ "description": "Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.listInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "Name of the regional instance group for which we want to list the instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupsListInstancesRequest"
+ },
+ "response": {
+ "$ref": "RegionInstanceGroupsListInstances"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setNamedPorts": {
+ "description": "Sets the named ports for the specified regional instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.setNamedPorts",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the regional instance group where the named ports are updated.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts",
+ "request": {
+ "$ref": "RegionInstanceGroupsSetNamedPortsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "sourceIpRangesToNats": {
- "type": "array",
- "description": "Specify the options for NAT ranges in the Subnetwork. All usages of single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
- "items": {
- "type": "string",
- "enum": [
- "ALL_IP_RANGES",
- "LIST_OF_SECONDARY_IP_RANGES",
- "PRIMARY_IP_RANGE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- }
- },
- "RouterStatus": {
- "id": "RouterStatus",
- "type": "object",
- "properties": {
- "bestRoutes": {
- "type": "array",
- "description": "Best routes for this router's network.",
- "items": {
- "$ref": "Route"
- }
- },
- "bestRoutesForRouter": {
- "type": "array",
- "description": "Best routes learned by this router.",
- "items": {
- "$ref": "Route"
- }
- },
- "bgpPeerStatus": {
- "type": "array",
- "items": {
- "$ref": "RouterStatusBgpPeerStatus"
- }
- },
- "natStatus": {
- "type": "array",
- "items": {
- "$ref": "RouterStatusNatStatus"
- }
- },
- "network": {
- "type": "string",
- "description": "URI of the network to which this router belongs."
- }
- }
- },
- "RouterStatusBgpPeerStatus": {
- "id": "RouterStatusBgpPeerStatus",
- "type": "object",
- "properties": {
- "advertisedRoutes": {
- "type": "array",
- "description": "Routes that were advertised to the remote BGP peer",
- "items": {
- "$ref": "Route"
- }
- },
- "ipAddress": {
- "type": "string",
- "description": "IP address of the local BGP interface."
- },
- "linkedVpnTunnel": {
- "type": "string",
- "description": "URL of the VPN tunnel that this BGP peer controls."
- },
- "name": {
- "type": "string",
- "description": "Name of this BGP peer. Unique within the Routers resource."
- },
- "numLearnedRoutes": {
- "type": "integer",
- "description": "Number of routes learned from the remote BGP Peer.",
- "format": "uint32"
- },
- "peerIpAddress": {
- "type": "string",
- "description": "IP address of the remote BGP interface."
- },
- "state": {
- "type": "string",
- "description": "BGP state as specified in RFC1771."
- },
- "status": {
- "type": "string",
- "description": "Status of the BGP peer: {UP, DOWN}",
- "enum": [
- "DOWN",
- "UNKNOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "uptime": {
- "type": "string",
- "description": "Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23 hours, 59 minutes, 59 seconds"
- },
- "uptimeSeconds": {
- "type": "string",
- "description": "Time this session has been up, in seconds. Format: 145"
- }
- }
- },
- "RouterStatusNatStatus": {
- "id": "RouterStatusNatStatus",
- "type": "object",
- "description": "Status of a NAT contained in this router.",
- "properties": {
- "autoAllocatedNatIps": {
- "type": "array",
- "description": "List of IPs auto-allocated for NAT. Example: [\"1.1.1.1\", \"129.2.16.89\"]",
- "items": {
- "type": "string"
- }
- },
- "minExtraNatIpsNeeded": {
- "type": "integer",
- "description": "The number of extra IPs to allocate. This will be greater than 0 only if user-specified IPs are NOT enough to allow all configured VMs to use NAT. This value is meaningful only when auto-allocation of NAT IPs is *not* used.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "Unique name of this NAT."
- },
- "numVmEndpointsWithNatMappings": {
- "type": "integer",
- "description": "Number of VM endpoints (i.e., Nics) that can use NAT.",
- "format": "int32"
- },
- "userAllocatedNatIpResources": {
- "type": "array",
- "description": "List of fully qualified URLs of reserved IP address resources.",
- "items": {
- "type": "string"
- }
+ "regionOperations": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified region-specific Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionOperations.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified region-specific Operations resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionOperations.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionOperations.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "userAllocatedNatIps": {
- "type": "array",
- "description": "List of IPs user-allocated for NAT. They will be raw IP strings like \"179.12.26.133\".",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RouterStatusResponse": {
- "id": "RouterStatusResponse",
- "type": "object",
- "properties": {
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routerStatusResponse"
- },
- "result": {
- "$ref": "RouterStatus"
- }
- }
- },
- "RoutersPreviewResponse": {
- "id": "RoutersPreviewResponse",
- "type": "object",
- "properties": {
- "resource": {
- "$ref": "Router",
- "description": "Preview of given router."
- }
- }
- },
- "RoutersScopedList": {
- "id": "RoutersScopedList",
- "type": "object",
- "properties": {
- "routers": {
- "type": "array",
- "description": "List of routers contained in this scope.",
- "items": {
- "$ref": "Router"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of routers when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "regions": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified Region resource. Get a list of available regions by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regions.get",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}",
+ "response": {
+ "$ref": "Region"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of region resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.regions.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions",
+ "response": {
+ "$ref": "RegionList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "Rule": {
- "id": "Rule",
- "type": "object",
- "description": "A rule to be applied in a Policy.",
- "properties": {
- "action": {
- "type": "string",
- "description": "Required",
- "enum": [
- "ALLOW",
- "ALLOW_WITH_LOG",
- "DENY",
- "DENY_WITH_LOG",
- "LOG",
- "NO_ACTION"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "conditions": {
- "type": "array",
- "description": "Additional restrictions that must be met. All conditions must pass for the rule to match.",
- "items": {
- "$ref": "Condition"
- }
- },
- "description": {
- "type": "string",
- "description": "Human-readable description of the rule."
- },
- "ins": {
- "type": "array",
- "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.",
- "items": {
- "type": "string"
- }
- },
- "logConfigs": {
- "type": "array",
- "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.",
- "items": {
- "$ref": "LogConfig"
- }
- },
- "notIns": {
- "type": "array",
- "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.",
- "items": {
- "type": "string"
- }
},
- "permissions": {
- "type": "array",
- "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SSLHealthCheck": {
- "id": "SSLHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "portSpecification": {
- "type": "string",
- "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, SSL health check follows behavior specified in\nport\nand\nportName\nfields.",
- "enum": [
- "USE_FIXED_PORT",
- "USE_NAMED_PORT",
- "USE_SERVING_PORT"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "request": {
- "type": "string",
- "description": "The application data to send once the SSL connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII."
- }
- }
- },
- "Scheduling": {
- "id": "Scheduling",
- "type": "object",
- "description": "Sets the scheduling options for an Instance.",
- "properties": {
- "automaticRestart": {
- "type": "boolean",
- "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted.\n\nBy default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
- },
- "onHostMaintenance": {
- "type": "string",
- "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Setting Instance Scheduling Options.",
- "enum": [
- "MIGRATE",
- "TERMINATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "preemptible": {
- "type": "boolean",
- "description": "Defines whether the instance is preemptible. This can only be set during instance creation, it cannot be set or changed after the instance has been created."
- }
- }
- },
- "SecurityPolicy": {
- "id": "SecurityPolicy",
- "type": "object",
- "description": "A security policy is comprised of one or more rules. It can also be associated with one or more 'targets'.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the security policy.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
- "default": "compute#securityPolicy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "rules": {
- "type": "array",
- "description": "List of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
- "items": {
- "$ref": "SecurityPolicyRule"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "SecurityPolicyList": {
- "id": "SecurityPolicyList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of SecurityPolicy resources.",
- "items": {
- "$ref": "SecurityPolicy"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#securityPolicyList for listsof securityPolicies",
- "default": "compute#securityPolicyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "routers": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of routers.",
+ "httpMethod": "GET",
+ "id": "compute.routers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/routers",
+ "response": {
+ "$ref": "RouterAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Router resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.routers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Router resource. Get a list of available routers by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.routers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "response": {
+ "$ref": "Router"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getRouterStatus": {
+ "description": "Retrieves runtime information of the specified router.",
+ "httpMethod": "GET",
+ "id": "compute.routers.getRouterStatus",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to query.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}/getRouterStatus",
+ "response": {
+ "$ref": "RouterStatusResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Router resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.routers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Router resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.routers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers",
+ "response": {
+ "$ref": "RouterList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified Router resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.routers.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "preview": {
+ "description": "Preview fields auto-generated during router create and update operations. Calling this method does NOT create or update the router.",
+ "httpMethod": "POST",
+ "id": "compute.routers.preview",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to query.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}/preview",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "RoutersPreviewResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.routers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified Router resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.routers.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "SecurityPolicyReference": {
- "id": "SecurityPolicyReference",
- "type": "object",
- "properties": {
- "securityPolicy": {
- "type": "string"
- }
- }
- },
- "SecurityPolicyRule": {
- "id": "SecurityPolicyRule",
- "type": "object",
- "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
- "properties": {
- "action": {
- "type": "string",
- "description": "The Action to preform when the client connection triggers the rule. Can currently be either \"allow\" or \"deny()\" where valid values for status are 403, 404, and 502."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "kind": {
- "type": "string",
- "description": "[Output only] Type of the resource. Always compute#securityPolicyRule for security policy rules",
- "default": "compute#securityPolicyRule"
- },
- "match": {
- "$ref": "SecurityPolicyRuleMatcher",
- "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding ?action? is enforced."
- },
- "preview": {
- "type": "boolean",
- "description": "If set to true, the specified action is not enforced."
- },
- "priority": {
- "type": "integer",
- "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated in the increasing order of priority.",
- "format": "int32"
- }
- }
- },
- "SecurityPolicyRuleMatcher": {
- "id": "SecurityPolicyRuleMatcher",
- "type": "object",
- "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
- "properties": {
- "config": {
- "$ref": "SecurityPolicyRuleMatcherConfig",
- "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
- },
- "expr": {
- "$ref": "Expr",
- "description": "User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header."
- },
- "srcIpRanges": {
- "type": "array",
- "description": "CIDR IP address range. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "versionedExpr": {
- "type": "string",
- "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
- "enum": [
- "SRC_IPS_V1",
- "VERSIONED_EXPR_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "SecurityPolicyRuleMatcherConfig": {
- "id": "SecurityPolicyRuleMatcherConfig",
- "type": "object",
- "properties": {
- "srcIpRanges": {
- "type": "array",
- "description": "CIDR IP address range. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SerialPortOutput": {
- "id": "SerialPortOutput",
- "type": "object",
- "description": "An instance's serial console output.",
- "properties": {
- "contents": {
- "type": "string",
- "description": "[Output Only] The contents of the console output."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#serialPortOutput for serial port output.",
- "default": "compute#serialPortOutput"
- },
- "next": {
- "type": "string",
- "description": "[Output Only] The position of the next byte of content from the serial console output. Use this value in the next request as the start parameter.",
- "format": "int64"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "start": {
- "type": "string",
- "description": "The starting byte position of the output that was returned. This should match the start parameter sent with the request. If the serial console output exceeds the size of the buffer, older output will be overwritten by newer content and the start values will be mismatched.",
- "format": "int64"
- }
- }
- },
- "ServiceAccount": {
- "id": "ServiceAccount",
- "type": "object",
- "description": "A service account.",
- "properties": {
- "email": {
- "type": "string",
- "description": "Email address of the service account."
- },
- "scopes": {
- "type": "array",
- "description": "The list of scopes to be made available for this service account.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "ShieldedVmConfig": {
- "id": "ShieldedVmConfig",
- "type": "object",
- "description": "A set of Shielded VM options.",
- "properties": {
- "enableSecureBoot": {
- "type": "boolean",
- "description": "Defines whether the instance should have secure boot enabled."
- },
- "enableVtpm": {
- "type": "boolean",
- "description": "Defines whether the instance should have the TPM enabled."
- }
- }
- },
- "SignedUrlKey": {
- "id": "SignedUrlKey",
- "type": "object",
- "description": "Represents a customer-supplied Signing Key used by Cloud CDN Signed URLs",
- "properties": {
- "keyName": {
- "type": "string",
- "description": "Name of the key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "keyValue": {
- "type": "string",
- "description": "128-bit key value used for signing the URL. The key value must be a valid RFC 4648 Section 5 base64url encoded string."
- }
- }
- },
- "Snapshot": {
- "id": "Snapshot",
- "type": "object",
- "description": "A persistent disk snapshot resource. (== resource_for beta.snapshots ==) (== resource_for v1.snapshots ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "[Output Only] Size of the snapshot, specified in GB.",
- "format": "int64"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#snapshot for Snapshot resources.",
- "default": "compute#snapshot"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a snapshot.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "licenseCodes": {
- "type": "array",
- "description": "Integer license codes indicating which licenses are attached to this snapshot.",
- "items": {
- "type": "string",
- "format": "int64"
- }
},
- "licenses": {
- "type": "array",
- "description": "[Output Only] A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "snapshotEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
- },
- "sourceDisk": {
- "type": "string",
- "description": "[Output Only] The source disk used to create this snapshot."
- },
- "sourceDiskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
- },
- "sourceDiskId": {
- "type": "string",
- "description": "[Output Only] The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
- "enum": [
- "CREATING",
- "DELETING",
- "FAILED",
- "READY",
- "UPLOADING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "storageBytes": {
- "type": "string",
- "description": "[Output Only] A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
- "format": "int64"
- },
- "storageBytesStatus": {
- "type": "string",
- "description": "[Output Only] An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
- "enum": [
- "UPDATING",
- "UP_TO_DATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "storageLocations": {
- "type": "array",
- "description": "GCS bucket storage location of the snapshot (regional or multi-regional).",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SnapshotList": {
- "id": "SnapshotList",
- "type": "object",
- "description": "Contains a list of Snapshot resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Snapshot resources.",
- "items": {
- "$ref": "Snapshot"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#snapshotList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SourceInstanceParams": {
- "id": "SourceInstanceParams",
- "type": "object",
- "description": "A specification of the parameters to use when creating the instance template from a source instance.",
- "properties": {
- "diskConfigs": {
- "type": "array",
- "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.",
- "items": {
- "$ref": "DiskInstantiationConfig"
- }
- }
- }
- },
- "SslCertificate": {
- "id": "SslCertificate",
- "type": "object",
- "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==)",
- "properties": {
- "certificate": {
- "type": "string",
- "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.",
- "default": "compute#sslCertificate"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "privateKey": {
- "type": "string",
- "description": "A write-only private key in PEM format. Only insert requests will include this field."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output only] Server-defined URL for the resource."
- }
- }
- },
- "SslCertificateList": {
- "id": "SslCertificateList",
- "type": "object",
- "description": "Contains a list of SslCertificate resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of SslCertificate resources.",
- "items": {
- "$ref": "SslCertificate"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#sslCertificateList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SslPoliciesList": {
- "id": "SslPoliciesList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of SslPolicy resources.",
- "items": {
- "$ref": "SslPolicy"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#sslPoliciesList for lists of sslPolicies.",
- "default": "compute#sslPoliciesList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "routes": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified Route resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.routes.delete",
+ "parameterOrder": [
+ "project",
+ "route"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "route": {
+ "description": "Name of the Route resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{route}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Route resource. Get a list of available routes by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.routes.get",
+ "parameterOrder": [
+ "project",
+ "route"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "route": {
+ "description": "Name of the Route resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{route}",
+ "response": {
+ "$ref": "Route"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Route resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.routes.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes",
+ "request": {
+ "$ref": "Route"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Route resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.routes.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes",
+ "response": {
+ "$ref": "RouteList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.routes.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "SslPoliciesListAvailableFeaturesResponse": {
- "id": "SslPoliciesListAvailableFeaturesResponse",
- "type": "object",
- "properties": {
- "features": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SslPolicy": {
- "id": "SslPolicy",
- "type": "object",
- "description": "A SSL policy specifies the server-side support for SSL features. This can be attached to a TargetHttpsProxy or a TargetSslProxy. This affects connections between clients and the HTTPS or SSL proxy load balancer. They do not affect the connection between the load balancers and the backends.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customFeatures": {
- "type": "array",
- "description": "List of features enabled when the selected profile is CUSTOM. The\n- method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
- "items": {
- "type": "string"
- }
},
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "enabledFeatures": {
- "type": "array",
- "description": "[Output Only] The list of features enabled in the SSL policy.",
- "items": {
- "type": "string"
- }
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
- "default": "compute#sslPolicy"
- },
- "minTlsVersion": {
- "type": "string",
- "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2, TLS_1_3.",
- "enum": [
- "TLS_1_0",
- "TLS_1_1",
- "TLS_1_2",
- "TLS_1_3"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "profile": {
- "type": "string",
- "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
- "enum": [
- "COMPATIBLE",
- "CUSTOM",
- "MODERN",
- "RESTRICTED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- }
- },
- "SslPolicyReference": {
- "id": "SslPolicyReference",
- "type": "object",
- "properties": {
- "sslPolicy": {
- "type": "string",
- "description": "URL of the SSL policy resource. Set this to empty string to clear any existing SSL policy associated with the target proxy resource."
- }
- }
- },
- "StatefulPolicy": {
- "id": "StatefulPolicy",
- "type": "object",
- "properties": {
- "preservedResources": {
- "$ref": "StatefulPolicyPreservedResources"
- }
- }
- },
- "StatefulPolicyPreservedDisk": {
- "id": "StatefulPolicyPreservedDisk",
- "type": "object",
- "properties": {
- "deviceName": {
- "type": "string",
- "description": "Device name of the disk to be preserved"
- }
- }
- },
- "StatefulPolicyPreservedResources": {
- "id": "StatefulPolicyPreservedResources",
- "type": "object",
- "description": "Configuration of all preserved resources.",
- "properties": {
- "disks": {
- "type": "array",
- "description": "Disks created on the instances that will be preserved on instance delete, resize down, etc.",
- "items": {
- "$ref": "StatefulPolicyPreservedDisk"
- }
- }
- }
- },
- "Subnetwork": {
- "id": "Subnetwork",
- "type": "object",
- "description": "A Subnetwork resource. (== resource_for beta.subnetworks ==) (== resource_for v1.subnetworks ==)",
- "properties": {
- "allowSubnetCidrRoutesOverlap": {
- "type": "boolean",
- "description": "Whether this subnetwork can conflict with static routes. Setting this to true allows this subnetwork's primary and secondary ranges to conflict with routes that have already been configured on the corresponding network. Static routes will take precedence over the subnetwork route if the route prefix length is at least as large as the subnetwork prefix length.\n\nAlso, packets destined to IPs within subnetwork may contain private/sensitive data and are prevented from leaving the virtual network. Setting this field to true will disable this feature.\n\nThe default value is false and applies to all existing subnetworks and automatically created subnetworks.\n\nThis field cannot be set to true at resource creation time."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork.",
- "format": "byte"
- },
- "gatewayAddress": {
- "type": "string",
- "description": "[Output Only] The gateway address for default routes to reach destination addresses outside this subnetwork. This field can be set only at resource creation time."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipCidrRange": {
- "type": "string",
- "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field can be set only at resource creation time."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#subnetwork for Subnetwork resources.",
- "default": "compute#subnetwork"
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "network": {
- "type": "string",
- "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. Only networks that are in the distributed mode can have subnetworks. This field can be set only at resource creation time."
- },
- "privateIpGoogleAccess": {
- "type": "boolean",
- "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
- },
- "region": {
- "type": "string",
- "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time."
- },
- "secondaryIpRanges": {
- "type": "array",
- "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges.",
- "items": {
- "$ref": "SubnetworkSecondaryRange"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "SubnetworkAggregatedList": {
- "id": "SubnetworkAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of SubnetworksScopedList resources.",
- "additionalProperties": {
- "$ref": "SubnetworksScopedList",
- "description": "Name of the scope containing this set of Subnetworks."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#subnetworkAggregatedList for aggregated lists of subnetworks.",
- "default": "compute#subnetworkAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SubnetworkList": {
- "id": "SubnetworkList",
- "type": "object",
- "description": "Contains a list of Subnetwork resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Subnetwork resources.",
- "items": {
- "$ref": "Subnetwork"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#subnetworkList for lists of subnetworks.",
- "default": "compute#subnetworkList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SubnetworkSecondaryRange": {
- "id": "SubnetworkSecondaryRange",
- "type": "object",
- "description": "Represents a secondary IP range of a subnetwork.",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported."
- },
- "rangeName": {
- "type": "string",
- "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
- }
- }
- },
- "SubnetworksExpandIpCidrRangeRequest": {
- "id": "SubnetworksExpandIpCidrRangeRequest",
- "type": "object",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The IP (in CIDR format or netmask) of internal addresses that are legal on this Subnetwork. This range should be disjoint from other subnetworks within this network. This range can only be larger than (i.e. a superset of) the range previously defined before the update."
- }
- }
- },
- "SubnetworksScopedList": {
- "id": "SubnetworksScopedList",
- "type": "object",
- "properties": {
- "subnetworks": {
- "type": "array",
- "description": "List of subnetworks contained in this scope.",
- "items": {
- "$ref": "Subnetwork"
- }
- },
- "warning": {
- "type": "object",
- "description": "An informational warning that appears when the list of addresses is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "securityPolicies": {
+ "methods": {
+ "addRule": {
+ "description": "Inserts a rule into a security policy.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.addRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "validateOnly": {
+ "description": "If true, the request will not be committed.",
+ "location": "query",
+ "type": "boolean"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/addRule",
+ "request": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified policy.",
+ "httpMethod": "DELETE",
+ "id": "compute.securityPolicies.delete",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "List all of the ordered rules present in a single specified policy.",
+ "httpMethod": "GET",
+ "id": "compute.securityPolicies.get",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to get.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}",
+ "response": {
+ "$ref": "SecurityPolicy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getRule": {
+ "description": "Gets a rule at the specified priority.",
+ "httpMethod": "GET",
+ "id": "compute.securityPolicies.getRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "priority": {
+ "description": "The priority of the rule to get from the security policy.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to which the queried rule belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/getRule",
+ "response": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a new policy in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies",
+ "request": {
+ "$ref": "SecurityPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "List all the policies that have been configured for the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.securityPolicies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies",
+ "response": {
+ "$ref": "SecurityPolicyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified policy with the data included in the request.",
+ "httpMethod": "PATCH",
+ "id": "compute.securityPolicies.patch",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}",
+ "request": {
+ "$ref": "SecurityPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "patchRule": {
+ "description": "Patches a rule at the specified priority.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.patchRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "priority": {
+ "description": "The priority of the rule to patch.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "validateOnly": {
+ "description": "If true, the request will not be committed.",
+ "location": "query",
+ "type": "boolean"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/patchRule",
+ "request": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removeRule": {
+ "description": "Deletes a rule at the specified priority.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.removeRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "priority": {
+ "description": "The priority of the rule to remove from the security policy.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/removeRule",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "SubnetworksSetPrivateIpGoogleAccessRequest": {
- "id": "SubnetworksSetPrivateIpGoogleAccessRequest",
- "type": "object",
- "properties": {
- "privateIpGoogleAccess": {
- "type": "boolean"
- }
- }
- },
- "TCPHealthCheck": {
- "id": "TCPHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "portSpecification": {
- "type": "string",
- "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, TCP health check follows behavior specified in\nport\nand\nportName\nfields.",
- "enum": [
- "USE_FIXED_PORT",
- "USE_NAMED_PORT",
- "USE_SERVING_PORT"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "request": {
- "type": "string",
- "description": "The application data to send once the TCP connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII."
- }
- }
- },
- "Tags": {
- "id": "Tags",
- "type": "object",
- "description": "A set of instance tags.",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
- "format": "byte"
- },
- "items": {
- "type": "array",
- "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetHttpProxy": {
- "id": "TargetHttpProxy",
- "type": "object",
- "description": "A TargetHttpProxy resource. This resource defines an HTTP proxy. (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
- "default": "compute#targetHttpProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "urlMap": {
- "type": "string",
- "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
- }
- }
- },
- "TargetHttpProxyList": {
- "id": "TargetHttpProxyList",
- "type": "object",
- "description": "A list of TargetHttpProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetHttpProxy resources.",
- "items": {
- "$ref": "TargetHttpProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource. Always compute#targetHttpProxyList for lists of target HTTP proxies.",
- "default": "compute#targetHttpProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "snapshots": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not necessarily delete all the data on that snapshot. If any data on the snapshot that is marked for deletion is needed for subsequent snapshots, the data will be moved to the next corresponding snapshot.\n\nFor more information, see Deleting snaphots.",
+ "httpMethod": "DELETE",
+ "id": "compute.snapshots.delete",
+ "parameterOrder": [
+ "project",
+ "snapshot"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "snapshot": {
+ "description": "Name of the Snapshot resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{snapshot}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Snapshot resource. Get a list of available snapshots by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.snapshots.get",
+ "parameterOrder": [
+ "project",
+ "snapshot"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "snapshot": {
+ "description": "Name of the Snapshot resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{snapshot}",
+ "response": {
+ "$ref": "Snapshot"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.snapshots.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Snapshot resources contained within the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.snapshots.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots",
+ "response": {
+ "$ref": "SnapshotList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.snapshots.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a snapshot. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.snapshots.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.snapshots.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetHttpsProxiesSetQuicOverrideRequest": {
- "id": "TargetHttpsProxiesSetQuicOverrideRequest",
- "type": "object",
- "properties": {
- "quicOverride": {
- "type": "string",
- "description": "QUIC policy for the TargetHttpsProxy resource.",
- "enum": [
- "DISABLE",
- "ENABLE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "TargetHttpsProxiesSetSslCertificatesRequest": {
- "id": "TargetHttpsProxiesSetSslCertificatesRequest",
- "type": "object",
- "properties": {
- "sslCertificates": {
- "type": "array",
- "description": "New set of SslCertificate resources to associate with this TargetHttpsProxy resource. Currently exactly one SslCertificate resource must be specified.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetHttpsProxy": {
- "id": "TargetHttpsProxy",
- "type": "object",
- "description": "A TargetHttpsProxy resource. This resource defines an HTTPS proxy. (== resource_for beta.targetHttpsProxies ==) (== resource_for v1.targetHttpsProxies ==)",
- "properties": {
- "clientSslPolicy": {
- "type": "string",
- "description": "URL to ClientSslPolicy resource which controls the set of allowed SSL versions and ciphers."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
- "default": "compute#targetHttpsProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "quicOverride": {
- "type": "string",
- "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This determines whether the load balancer will attempt to negotiate QUIC with clients or not. Can specify one of NONE, ENABLE, or DISABLE. Specify ENABLE to always enable QUIC, Enables QUIC when set to ENABLE, and disables QUIC when set to DISABLE. If NONE is specified, uses the QUIC policy with no user overrides, which is equivalent to DISABLE. Not specifying this field is equivalent to specifying NONE.",
- "enum": [
- "DISABLE",
- "ENABLE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
},
"sslCertificates": {
- "type": "array",
- "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. Currently, exactly one SSL certificate must be specified.",
- "items": {
- "type": "string"
- }
- },
- "sslPolicy": {
- "type": "string",
- "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource will not have any SSL policy configured."
- },
- "urlMap": {
- "type": "string",
- "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: \n- https://www.googleapis.compute/v1/projects/project/global/urlMaps/url-map \n- projects/project/global/urlMaps/url-map \n- global/urlMaps/url-map"
- }
- }
- },
- "TargetHttpsProxyList": {
- "id": "TargetHttpsProxyList",
- "type": "object",
- "description": "Contains a list of TargetHttpsProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetHttpsProxy resources.",
- "items": {
- "$ref": "TargetHttpsProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource. Always compute#targetHttpsProxyList for lists of target HTTPS proxies.",
- "default": "compute#targetHttpsProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetInstance": {
- "id": "TargetInstance",
- "type": "object",
- "description": "A TargetInstance resource. This resource defines an endpoint instance that terminates traffic of certain protocols. (== resource_for beta.targetInstances ==) (== resource_for v1.targetInstances ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "instance": {
- "type": "string",
- "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#targetInstance for target instances.",
- "default": "compute#targetInstance"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "natPolicy": {
- "type": "string",
- "description": "NAT option controlling how IPs are NAT'ed to the instance. Currently only NO_NAT (default value) is supported.",
- "enum": [
- "NO_NAT"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the target instance resides."
- }
- }
- },
- "TargetInstanceAggregatedList": {
- "id": "TargetInstanceAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetInstance resources.",
- "additionalProperties": {
- "$ref": "TargetInstancesScopedList",
- "description": "Name of the scope containing this set of target instances."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetInstanceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetInstanceList": {
- "id": "TargetInstanceList",
- "type": "object",
- "description": "Contains a list of TargetInstance resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetInstance resources.",
- "items": {
- "$ref": "TargetInstance"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetInstanceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetInstancesScopedList": {
- "id": "TargetInstancesScopedList",
- "type": "object",
- "properties": {
- "targetInstances": {
- "type": "array",
- "description": "List of target instances contained in this scope.",
- "items": {
- "$ref": "TargetInstance"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified SslCertificate resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.sslCertificates.delete",
+ "parameterOrder": [
+ "project",
+ "sslCertificate"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sslCertificate": {
+ "description": "Name of the SslCertificate resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{sslCertificate}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified SslCertificate resource. Get a list of available SSL certificates by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.sslCertificates.get",
+ "parameterOrder": [
+ "project",
+ "sslCertificate"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "sslCertificate": {
+ "description": "Name of the SslCertificate resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{sslCertificate}",
+ "response": {
+ "$ref": "SslCertificate"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.sslCertificates.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates",
+ "request": {
+ "$ref": "SslCertificate"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of SslCertificate resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.sslCertificates.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates",
+ "response": {
+ "$ref": "SslCertificateList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.sslCertificates.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetPool": {
- "id": "TargetPool",
- "type": "object",
- "description": "A TargetPool resource. This resource defines a pool of instances, an associated HttpHealthCheck resource, and the fallback target pool. (== resource_for beta.targetPools ==) (== resource_for v1.targetPools ==)",
- "properties": {
- "backupPool": {
- "type": "string",
- "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1].\n\nbackupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "failoverRatio": {
- "type": "number",
- "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1].\n\nIf set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
- "format": "float"
- },
- "healthChecks": {
- "type": "array",
- "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. An empty list means all member instances will be considered healthy at all times. Only HttpHealthChecks are supported. Only one health check may be specified.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
},
- "instances": {
- "type": "array",
- "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
- "items": {
- "type": "string"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetPool for target pools.",
- "default": "compute#targetPool"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the target pool resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sessionAffinity": {
- "type": "string",
- "description": "Sesssion affinity option, must be one of the following values:\nNONE: Connections from the same client IP may go to any instance in the pool.\nCLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy.\nCLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
- "enum": [
- "CLIENT_IP",
- "CLIENT_IP_PORT_PROTO",
- "CLIENT_IP_PROTO",
- "GENERATED_COOKIE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "TargetPoolAggregatedList": {
- "id": "TargetPoolAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetPool resources.",
- "additionalProperties": {
- "$ref": "TargetPoolsScopedList",
- "description": "Name of the scope containing this set of target pools."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolAggregatedList for aggregated lists of target pools.",
- "default": "compute#targetPoolAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "sslPolicies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified SSL policy. The SSL policy resource can be deleted only if it is not in use by any TargetHttpsProxy or TargetSslProxy resources.",
+ "httpMethod": "DELETE",
+ "id": "compute.sslPolicies.delete",
+ "parameterOrder": [
+ "project",
+ "sslPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sslPolicy": {
+ "description": "Name of the SSL policy to delete. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{sslPolicy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "List all of the ordered rules present in a single specified policy.",
+ "httpMethod": "GET",
+ "id": "compute.sslPolicies.get",
+ "parameterOrder": [
+ "project",
+ "sslPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "sslPolicy": {
+ "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{sslPolicy}",
+ "response": {
+ "$ref": "SslPolicy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Returns the specified SSL policy resource. Get a list of available SSL policies by making a list() request.",
+ "httpMethod": "POST",
+ "id": "compute.sslPolicies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies",
+ "request": {
+ "$ref": "SslPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "List all the SSL policies that have been configured for the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.sslPolicies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies",
+ "response": {
+ "$ref": "SslPoliciesList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listAvailableFeatures": {
+ "description": "Lists all features that can be specified in the SSL policy when using custom profile.",
+ "httpMethod": "GET",
+ "id": "compute.sslPolicies.listAvailableFeatures",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/listAvailableFeatures",
+ "response": {
+ "$ref": "SslPoliciesListAvailableFeaturesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified SSL policy with the data included in the request.",
+ "httpMethod": "PATCH",
+ "id": "compute.sslPolicies.patch",
+ "parameterOrder": [
+ "project",
+ "sslPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sslPolicy": {
+ "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{sslPolicy}",
+ "request": {
+ "$ref": "SslPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.sslPolicies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetPoolInstanceHealth": {
- "id": "TargetPoolInstanceHealth",
- "type": "object",
- "properties": {
- "healthStatus": {
- "type": "array",
- "items": {
- "$ref": "HealthStatus"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolInstanceHealth when checking the health of an instance.",
- "default": "compute#targetPoolInstanceHealth"
- }
- }
- },
- "TargetPoolList": {
- "id": "TargetPoolList",
- "type": "object",
- "description": "Contains a list of TargetPool resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetPool resources.",
- "items": {
- "$ref": "TargetPool"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolList for lists of target pools.",
- "default": "compute#targetPoolList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "subnetworks": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of subnetworks.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/subnetworks",
+ "response": {
+ "$ref": "SubnetworkAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified subnetwork.",
+ "httpMethod": "DELETE",
+ "id": "compute.subnetworks.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "expandIpCidrRange": {
+ "description": "Expands the IP CIDR range of the subnetwork to a specified value.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.expandIpCidrRange",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange",
+ "request": {
+ "$ref": "SubnetworksExpandIpCidrRangeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified subnetwork. Get a list of available subnetworks list() request.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "response": {
+ "$ref": "Subnetwork"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a subnetwork in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks",
+ "request": {
+ "$ref": "Subnetwork"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of subnetworks available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks",
+ "response": {
+ "$ref": "SubnetworkList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listUsable": {
+ "description": "Retrieves an aggregated list of usable subnetworks.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.listUsable",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/subnetworks/listUsable",
+ "response": {
+ "$ref": "UsableSubnetworksAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified subnetwork with the data included in the request. Only the following fields within the subnetwork resource can be specified in the request: secondary_ip_range and allow_subnet_cidr_routes_overlap. It is also mandatory to specify the current fingeprint of the subnetwork resource being patched.",
+ "httpMethod": "PATCH",
+ "id": "compute.subnetworks.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "request": {
+ "$ref": "Subnetwork"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setPrivateIpGoogleAccess": {
+ "description": "Set whether VMs in this subnet can access Google services without assigning external IP addresses through Private Google Access.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.setPrivateIpGoogleAccess",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess",
+ "request": {
+ "$ref": "SubnetworksSetPrivateIpGoogleAccessRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetPoolsAddHealthCheckRequest": {
- "id": "TargetPoolsAddHealthCheckRequest",
- "type": "object",
- "properties": {
- "healthChecks": {
- "type": "array",
- "description": "The HttpHealthCheck to add to the target pool.",
- "items": {
- "$ref": "HealthCheckReference"
- }
- }
- }
- },
- "TargetPoolsAddInstanceRequest": {
- "id": "TargetPoolsAddInstanceRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "A full or partial URL to an instance to add to this target pool. This can be a full or partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name \n- projects/project-id/zones/zone/instances/instance-name \n- zones/zone/instances/instance-name",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "TargetPoolsRemoveHealthCheckRequest": {
- "id": "TargetPoolsRemoveHealthCheckRequest",
- "type": "object",
- "properties": {
- "healthChecks": {
- "type": "array",
- "description": "Health check URL to be removed. This can be a full or valid partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project/global/httpHealthChecks/health-check \n- projects/project/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
- "items": {
- "$ref": "HealthCheckReference"
- }
- }
- }
- },
- "TargetPoolsRemoveInstanceRequest": {
- "id": "TargetPoolsRemoveInstanceRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "URLs of the instances to be removed from target pool.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "TargetPoolsScopedList": {
- "id": "TargetPoolsScopedList",
- "type": "object",
- "properties": {
- "targetPools": {
- "type": "array",
- "description": "List of target pools contained in this scope.",
- "items": {
- "$ref": "TargetPool"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "targetHttpProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetHttpProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetHttpProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetHttpProxy resource. Get a list of available target HTTP proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
+ "response": {
+ "$ref": "TargetHttpProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies",
+ "request": {
+ "$ref": "TargetHttpProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetHttpProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies",
+ "response": {
+ "$ref": "TargetHttpProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setUrlMap": {
+ "description": "Changes the URL map for TargetHttpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.setUrlMap",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy to set a URL map for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
+ "request": {
+ "$ref": "UrlMapReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetReference": {
- "id": "TargetReference",
- "type": "object",
- "properties": {
- "target": {
- "type": "string"
- }
- }
- },
- "TargetSslProxiesSetBackendServiceRequest": {
- "id": "TargetSslProxiesSetBackendServiceRequest",
- "type": "object",
- "properties": {
- "service": {
- "type": "string",
- "description": "The URL of the new BackendService resource for the targetSslProxy."
- }
- }
- },
- "TargetSslProxiesSetProxyHeaderRequest": {
- "id": "TargetSslProxiesSetProxyHeaderRequest",
- "type": "object",
- "properties": {
- "proxyHeader": {
- "type": "string",
- "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "TargetSslProxiesSetSslCertificatesRequest": {
- "id": "TargetSslProxiesSetSslCertificatesRequest",
- "type": "object",
- "properties": {
- "sslCertificates": {
- "type": "array",
- "description": "New set of URLs to SslCertificate resources to associate with this TargetSslProxy. Currently exactly one ssl certificate must be specified.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetSslProxy": {
- "id": "TargetSslProxy",
- "type": "object",
- "description": "A TargetSslProxy resource. This resource defines an SSL proxy. (== resource_for beta.targetSslProxies ==) (== resource_for v1.targetSslProxies ==)",
- "properties": {
- "clientSslPolicy": {
- "type": "string",
- "description": "URL to ClientSslPolicy resource which controls the set of allowed SSL versions and ciphers."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
- "default": "compute#targetSslProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "service": {
- "type": "string",
- "description": "URL to the BackendService resource."
},
- "sslCertificates": {
- "type": "array",
- "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. Currently exactly one SSL certificate must be specified.",
- "items": {
- "type": "string"
- }
+ "targetHttpsProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetHttpsProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetHttpsProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetHttpsProxy resource. Get a list of available target HTTPS proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpsProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
+ "response": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies",
+ "request": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpsProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies",
+ "response": {
+ "$ref": "TargetHttpsProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setQuicOverride": {
+ "description": "Sets the QUIC override policy for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setQuicOverride",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to set the QUIC override policy for. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setQuicOverride",
+ "request": {
+ "$ref": "TargetHttpsProxiesSetQuicOverrideRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslCertificates": {
+ "description": "Replaces SslCertificates for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setSslCertificates",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
+ "request": {
+ "$ref": "TargetHttpsProxiesSetSslCertificatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslPolicy": {
+ "description": "Sets the SSL policy for TargetHttpsProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the HTTPS proxy load balancer. They do not affect the connection between the load balancer and the backends.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setSslPolicy",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setSslPolicy",
+ "request": {
+ "$ref": "SslPolicyReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setUrlMap": {
+ "description": "Changes the URL map for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setUrlMap",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource whose URL map is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
+ "request": {
+ "$ref": "UrlMapReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "sslPolicy": {
- "type": "string",
- "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
- }
- }
- },
- "TargetSslProxyList": {
- "id": "TargetSslProxyList",
- "type": "object",
- "description": "Contains a list of TargetSslProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetSslProxy resources.",
- "items": {
- "$ref": "TargetSslProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetSslProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "targetInstances": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target instances.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetInstances",
+ "response": {
+ "$ref": "TargetInstanceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified TargetInstance resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetInstances.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "targetInstance"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "Name of the TargetInstance resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetInstance resource. Get a list of available target instances by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "targetInstance"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "Name of the TargetInstance resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
+ "response": {
+ "$ref": "TargetInstance"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetInstances.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances",
+ "request": {
+ "$ref": "TargetInstance"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances",
+ "response": {
+ "$ref": "TargetInstanceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetInstances.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetTcpProxiesSetBackendServiceRequest": {
- "id": "TargetTcpProxiesSetBackendServiceRequest",
- "type": "object",
- "properties": {
- "service": {
- "type": "string",
- "description": "The URL of the new BackendService resource for the targetTcpProxy."
- }
- }
- },
- "TargetTcpProxiesSetProxyHeaderRequest": {
- "id": "TargetTcpProxiesSetProxyHeaderRequest",
- "type": "object",
- "properties": {
- "proxyHeader": {
- "type": "string",
- "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "TargetTcpProxy": {
- "id": "TargetTcpProxy",
- "type": "object",
- "description": "A TargetTcpProxy resource. This resource defines a TCP proxy. (== resource_for beta.targetTcpProxies ==) (== resource_for v1.targetTcpProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
- "default": "compute#targetTcpProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "service": {
- "type": "string",
- "description": "URL to the BackendService resource."
- }
- }
- },
- "TargetTcpProxyList": {
- "id": "TargetTcpProxyList",
- "type": "object",
- "description": "Contains a list of TargetTcpProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetTcpProxy resources.",
- "items": {
- "$ref": "TargetTcpProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetTcpProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "targetPools": {
+ "methods": {
+ "addHealthCheck": {
+ "description": "Adds health check URLs to a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.addHealthCheck",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the target pool to add a health check to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck",
+ "request": {
+ "$ref": "TargetPoolsAddHealthCheckRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "addInstance": {
+ "description": "Adds an instance to a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.addInstance",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to add instances to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/addInstance",
+ "request": {
+ "$ref": "TargetPoolsAddInstanceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target pools.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetPools",
+ "response": {
+ "$ref": "TargetPoolAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified target pool.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetPools.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified target pool. Get a list of available target pools by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}",
+ "response": {
+ "$ref": "TargetPool"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for each IP for the instance that is referenced by the given target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.getHealth",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to which the queried instance belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/getHealth",
+ "request": {
+ "$ref": "InstanceReference"
+ },
+ "response": {
+ "$ref": "TargetPoolInstanceHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a target pool in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools",
+ "request": {
+ "$ref": "TargetPool"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of target pools available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools",
+ "response": {
+ "$ref": "TargetPoolList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "removeHealthCheck": {
+ "description": "Removes health check URL from a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.removeHealthCheck",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the target pool to remove health checks from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck",
+ "request": {
+ "$ref": "TargetPoolsRemoveHealthCheckRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removeInstance": {
+ "description": "Removes instance URL from a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.removeInstance",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to remove instances from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/removeInstance",
+ "request": {
+ "$ref": "TargetPoolsRemoveInstanceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setBackup": {
+ "description": "Changes a backup target pool's configurations.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.setBackup",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "failoverRatio": {
+ "description": "New failoverRatio value for the target pool.",
+ "format": "float",
+ "location": "query",
+ "type": "number"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to set a backup pool for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/setBackup",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetVpnGateway": {
- "id": "TargetVpnGateway",
- "type": "object",
- "description": "Represents a Target VPN gateway resource. (== resource_for beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
},
- "forwardingRules": {
- "type": "array",
- "description": "[Output Only] A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated to a VPN gateway.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGateway"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an TargetVpnGateway.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this TargetVpnGateway resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.targetVpnGateways.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
- "annotations": {
- "required": [
- "compute.targetVpnGateways.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the target VPN gateway resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the VPN gateway.",
- "enum": [
- "CREATING",
- "DELETING",
- "FAILED",
- "READY"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "tunnels": {
- "type": "array",
- "description": "[Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are created using compute.vpntunnels.insert method and associated to a VPN gateway.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetVpnGatewayAggregatedList": {
- "id": "TargetVpnGatewayAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetVpnGateway resources.",
- "additionalProperties": {
- "$ref": "TargetVpnGatewaysScopedList",
- "description": "[Output Only] Name of the scope containing this set of target VPN gateways."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGatewayAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "targetSslProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetSslProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetSslProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetSslProxy resource. Get a list of available target SSL proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetSslProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}",
+ "response": {
+ "$ref": "TargetSslProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies",
+ "request": {
+ "$ref": "TargetSslProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetSslProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetSslProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies",
+ "response": {
+ "$ref": "TargetSslProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setBackendService": {
+ "description": "Changes the BackendService for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setBackendService",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose BackendService resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setBackendService",
+ "request": {
+ "$ref": "TargetSslProxiesSetBackendServiceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setProxyHeader": {
+ "description": "Changes the ProxyHeaderType for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setProxyHeader",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose ProxyHeader is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader",
+ "request": {
+ "$ref": "TargetSslProxiesSetProxyHeaderRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslCertificates": {
+ "description": "Changes SslCertificates for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setSslCertificates",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose SslCertificate resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates",
+ "request": {
+ "$ref": "TargetSslProxiesSetSslCertificatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslPolicy": {
+ "description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setSslPolicy",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
+ "request": {
+ "$ref": "SslPolicyReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetVpnGatewayList": {
- "id": "TargetVpnGatewayList",
- "type": "object",
- "description": "Contains a list of TargetVpnGateway resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetVpnGateway resources.",
- "items": {
- "$ref": "TargetVpnGateway"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGatewayList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "targetTcpProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetTcpProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetTcpProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetTcpProxy resource. Get a list of available target TCP proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetTcpProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
+ "response": {
+ "$ref": "TargetTcpProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies",
+ "request": {
+ "$ref": "TargetTcpProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetTcpProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetTcpProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies",
+ "response": {
+ "$ref": "TargetTcpProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setBackendService": {
+ "description": "Changes the BackendService for TargetTcpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.setBackendService",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource whose BackendService resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService",
+ "request": {
+ "$ref": "TargetTcpProxiesSetBackendServiceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setProxyHeader": {
+ "description": "Changes the ProxyHeaderType for TargetTcpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.setProxyHeader",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource whose ProxyHeader is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader",
+ "request": {
+ "$ref": "TargetTcpProxiesSetProxyHeaderRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetVpnGatewaysScopedList": {
- "id": "TargetVpnGatewaysScopedList",
- "type": "object",
- "properties": {
+ },
"targetVpnGateways": {
- "type": "array",
- "description": "[Output Only] List of target vpn gateways contained in this scope.",
- "items": {
- "$ref": "TargetVpnGateway"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target VPN gateways.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetVpnGateways",
+ "response": {
+ "$ref": "TargetVpnGatewayAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified target VPN gateway.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetVpnGateways.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetVpnGateway"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "Name of the target VPN gateway to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified target VPN gateway. Get a list of available target VPN gateways by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetVpnGateway"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "Name of the target VPN gateway to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
+ "response": {
+ "$ref": "TargetVpnGateway"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetVpnGateways.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways",
+ "request": {
+ "$ref": "TargetVpnGateway"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of target VPN gateways available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways",
+ "response": {
+ "$ref": "TargetVpnGatewayList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a TargetVpnGateway. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.targetVpnGateways.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetVpnGateways.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TestFailure": {
- "id": "TestFailure",
- "type": "object",
- "properties": {
- "actualService": {
- "type": "string"
},
- "expectedService": {
- "type": "string"
- },
- "host": {
- "type": "string"
- },
- "path": {
- "type": "string"
- }
- }
- },
- "TestPermissionsRequest": {
- "id": "TestPermissionsRequest",
- "type": "object",
- "properties": {
- "permissions": {
- "type": "array",
- "description": "The set of permissions to check for the 'resource'. Permissions with wildcards (such as '*' or 'storage.*') are not allowed.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TestPermissionsResponse": {
- "id": "TestPermissionsResponse",
- "type": "object",
- "properties": {
- "permissions": {
- "type": "array",
- "description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "UDPHealthCheck": {
- "id": "UDPHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The UDP port number for the health check request. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "request": {
- "type": "string",
- "description": "Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII."
- }
- }
- },
- "UrlMap": {
- "id": "UrlMap",
- "type": "object",
- "description": "A UrlMap resource. This resource defines the mapping from URL to the BackendService resource, based on the \"longest-match\" of the URL's host and path.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultService": {
- "type": "string",
- "description": "The URL of the BackendService resource if none of the hostRules match."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap.",
- "format": "byte"
- },
- "hostRules": {
- "type": "array",
- "description": "The list of HostRules to use against the URL.",
- "items": {
- "$ref": "HostRule"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#urlMaps for url maps.",
- "default": "compute#urlMap"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "pathMatchers": {
- "type": "array",
- "description": "The list of named PathMatchers to use against the URL.",
- "items": {
- "$ref": "PathMatcher"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "tests": {
- "type": "array",
- "description": "The list of expected URL mappings. Request to update this UrlMap will succeed only if all of the test cases pass.",
- "items": {
- "$ref": "UrlMapTest"
- }
- }
- }
- },
- "UrlMapList": {
- "id": "UrlMapList",
- "type": "object",
- "description": "Contains a list of UrlMap resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of UrlMap resources.",
- "items": {
- "$ref": "UrlMap"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#urlMapList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "UrlMapReference": {
- "id": "UrlMapReference",
- "type": "object",
- "properties": {
- "urlMap": {
- "type": "string"
- }
- }
- },
- "UrlMapTest": {
- "id": "UrlMapTest",
- "type": "object",
- "description": "Message for the expected URL mappings.",
- "properties": {
- "description": {
- "type": "string",
- "description": "Description of this test case."
- },
- "host": {
- "type": "string",
- "description": "Host portion of the URL."
- },
- "path": {
- "type": "string",
- "description": "Path portion of the URL."
- },
- "service": {
- "type": "string",
- "description": "Expected BackendService resource the given URL should be mapped to."
- }
- }
- },
- "UrlMapValidationResult": {
- "id": "UrlMapValidationResult",
- "type": "object",
- "description": "Message representing the validation result for a UrlMap.",
- "properties": {
- "loadErrors": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "loadSucceeded": {
- "type": "boolean",
- "description": "Whether the given UrlMap can be successfully loaded. If false, 'loadErrors' indicates the reasons."
- },
- "testFailures": {
- "type": "array",
- "items": {
- "$ref": "TestFailure"
- }
- },
- "testPassed": {
- "type": "boolean",
- "description": "If successfully loaded, this field indicates whether the test passed. If false, 'testFailures's indicate the reason of failure."
- }
- }
- },
- "UrlMapsValidateRequest": {
- "id": "UrlMapsValidateRequest",
- "type": "object",
- "properties": {
- "resource": {
- "$ref": "UrlMap",
- "description": "Content of the UrlMap to be validated."
- }
- }
- },
- "UrlMapsValidateResponse": {
- "id": "UrlMapsValidateResponse",
- "type": "object",
- "properties": {
- "result": {
- "$ref": "UrlMapValidationResult"
- }
- }
- },
- "UsableSubnetwork": {
- "id": "UsableSubnetwork",
- "type": "object",
- "description": "Subnetwork which the current user has compute.subnetworks.use permission on.",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The range of internal addresses that are owned by this subnetwork."
- },
- "network": {
- "type": "string",
- "description": "Network URL."
- },
- "subnetwork": {
- "type": "string",
- "description": "Subnetwork URL."
- }
- }
- },
- "UsableSubnetworksAggregatedList": {
- "id": "UsableSubnetworksAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output] A list of usable subnetwork URLs.",
- "items": {
- "$ref": "UsableSubnetwork"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#usableSubnetworksAggregatedList for aggregated lists of usable subnetworks.",
- "default": "compute#usableSubnetworksAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "urlMaps": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified UrlMap resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.urlMaps.delete",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified UrlMap resource. Get a list of available URL maps by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.urlMaps.get",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "response": {
+ "$ref": "UrlMap"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "invalidateCache": {
+ "description": "Initiates a cache invalidation operation, invalidating the specified path, scoped to the specified UrlMap.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.invalidateCache",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}/invalidateCache",
+ "request": {
+ "$ref": "CacheInvalidationRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of UrlMap resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.urlMaps.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps",
+ "response": {
+ "$ref": "UrlMapList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified UrlMap resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.urlMaps.patch",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified UrlMap resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.urlMaps.update",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "validate": {
+ "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.validate",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to be validated as.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}/validate",
+ "request": {
+ "$ref": "UrlMapsValidateRequest"
+ },
+ "response": {
+ "$ref": "UrlMapsValidateResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "UsageExportLocation": {
- "id": "UsageExportLocation",
- "type": "object",
- "description": "The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix.",
- "properties": {
- "bucketName": {
- "type": "string",
- "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket."
- },
- "reportNamePrefix": {
- "type": "string",
- "description": "An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions."
- }
- }
- },
- "VmMaintenancePolicy": {
- "id": "VmMaintenancePolicy",
- "type": "object",
- "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when.",
- "properties": {
- "maintenanceWindow": {
- "$ref": "MaintenanceWindow",
- "description": "Maintenance windows that are applied to VMs covered by this policy."
- }
- }
- },
- "VpnTunnel": {
- "id": "VpnTunnel",
- "type": "object",
- "description": "VPN tunnel resource. (== resource_for beta.vpnTunnels ==) (== resource_for v1.vpnTunnels ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "detailedStatus": {
- "type": "string",
- "description": "[Output Only] Detailed status message for the VPN tunnel."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ikeVersion": {
- "type": "integer",
- "description": "IKE protocol version to use when establishing the VPN tunnel with peer VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.",
- "format": "int32"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnel"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a VpnTunnel.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this VpnTunnel. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
},
- "localTrafficSelector": {
- "type": "array",
- "description": "Local traffic selector to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.vpnTunnels.insert"
- ]
- }
- },
- "peerIp": {
- "type": "string",
- "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the VPN tunnel resides."
- },
- "remoteTrafficSelector": {
- "type": "array",
- "description": "Remote traffic selectors to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "router": {
- "type": "string",
- "description": "URL of router resource to be used for dynamic routing."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sharedSecret": {
- "type": "string",
- "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
- },
- "sharedSecretHash": {
- "type": "string",
- "description": "Hash of the shared secret."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the VPN tunnel.",
- "enum": [
- "ALLOCATING_RESOURCES",
- "AUTHORIZATION_ERROR",
- "DEPROVISIONING",
- "ESTABLISHED",
- "FAILED",
- "FIRST_HANDSHAKE",
- "NEGOTIATION_FAILURE",
- "NETWORK_ERROR",
- "NO_INCOMING_PACKETS",
- "PROVISIONING",
- "REJECTED",
- "WAITING_FOR_FULL_CONFIG"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "targetVpnGateway": {
- "type": "string",
- "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
- "annotations": {
- "required": [
- "compute.vpnTunnels.insert"
- ]
- }
- }
- }
- },
- "VpnTunnelAggregatedList": {
- "id": "VpnTunnelAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of VpnTunnelsScopedList resources.",
- "additionalProperties": {
- "$ref": "VpnTunnelsScopedList",
- "description": "Name of the scope containing this set of vpn tunnels."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnelAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "VpnTunnelList": {
- "id": "VpnTunnelList",
- "type": "object",
- "description": "Contains a list of VpnTunnel resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of VpnTunnel resources.",
- "items": {
- "$ref": "VpnTunnel"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnelList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "VpnTunnelsScopedList": {
- "id": "VpnTunnelsScopedList",
- "type": "object",
- "properties": {
"vpnTunnels": {
- "type": "array",
- "description": "List of vpn tunnels contained in this scope.",
- "items": {
- "$ref": "VpnTunnel"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "XpnHostList": {
- "id": "XpnHostList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output Only] A list of shared VPC host project URLs.",
- "items": {
- "$ref": "Project"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#xpnHostList for lists of shared VPC hosts.",
- "default": "compute#xpnHostList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "XpnResourceId": {
- "id": "XpnResourceId",
- "type": "object",
- "description": "Service resource (a.k.a service project) ID.",
- "properties": {
- "id": {
- "type": "string",
- "description": "The ID of the service resource. In the case of projects, this field matches the project ID (e.g., my-project), not the project number (e.g., 12345678)."
- },
- "type": {
- "type": "string",
- "description": "The type of the service resource.",
- "enum": [
- "PROJECT",
- "XPN_RESOURCE_TYPE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "Zone": {
- "id": "Zone",
- "type": "object",
- "description": "A Zone resource. (== resource_for beta.zones ==) (== resource_for v1.zones ==)",
- "properties": {
- "availableCpuPlatforms": {
- "type": "array",
- "description": "[Output Only] Available cpu/platform selections for the zone.",
- "items": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this zone."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#zone for zones.",
- "default": "compute#zone"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] Full URL reference to the region which hosts the zone."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the zone, either UP or DOWN.",
- "enum": [
- "DOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "ZoneList": {
- "id": "ZoneList",
- "type": "object",
- "description": "Contains a list of zone resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Zone resources.",
- "items": {
- "$ref": "Zone"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#zoneList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "ZoneSetLabelsRequest": {
- "id": "ZoneSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "The labels to set for this resource.",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- }
- },
- "resources": {
- "acceleratorTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.acceleratorTypes.aggregatedList",
- "path": "{project}/aggregated/acceleratorTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of accelerator types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AcceleratorTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.acceleratorTypes.get",
- "path": "{project}/zones/{zone}/acceleratorTypes/{acceleratorType}",
- "httpMethod": "GET",
- "description": "Returns the specified accelerator type. Get a list of available accelerator types by making a list() request.",
- "parameters": {
- "acceleratorType": {
- "type": "string",
- "description": "Name of the accelerator type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "acceleratorType"
- ],
- "response": {
- "$ref": "AcceleratorType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.acceleratorTypes.list",
- "path": "{project}/zones/{zone}/acceleratorTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of accelerator types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "AcceleratorTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "addresses": {
- "methods": {
- "aggregatedList": {
- "id": "compute.addresses.aggregatedList",
- "path": "{project}/aggregated/addresses",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of addresses.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AddressAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.addresses.delete",
- "path": "{project}/regions/{region}/addresses/{address}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "address"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.addresses.get",
- "path": "{project}/regions/{region}/addresses/{address}",
- "httpMethod": "GET",
- "description": "Returns the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "address"
- ],
- "response": {
- "$ref": "Address"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.addresses.insert",
- "path": "{project}/regions/{region}/addresses",
- "httpMethod": "POST",
- "description": "Creates an address resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Address"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.addresses.list",
- "path": "{project}/regions/{region}/addresses",
- "httpMethod": "GET",
- "description": "Retrieves a list of addresses contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "AddressList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.addresses.setLabels",
- "path": "{project}/regions/{region}/addresses/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on an Address. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.addresses.testIamPermissions",
- "path": "{project}/regions/{region}/addresses/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "autoscalers": {
- "methods": {
- "aggregatedList": {
- "id": "compute.autoscalers.aggregatedList",
- "path": "{project}/aggregated/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of autoscalers.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AutoscalerAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.autoscalers.delete",
- "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "autoscaler"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.autoscalers.get",
- "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
- "httpMethod": "GET",
- "description": "Returns the specified autoscaler resource. Get a list of available autoscalers by making a list() request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "autoscaler"
- ],
- "response": {
- "$ref": "Autoscaler"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.autoscalers.insert",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "POST",
- "description": "Creates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.autoscalers.list",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves a list of autoscalers contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "AutoscalerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.autoscalers.patch",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "PATCH",
- "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to patch.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.autoscalers.testIamPermissions",
- "path": "{project}/zones/{zone}/autoscalers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.autoscalers.update",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "PUT",
- "description": "Updates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to update.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "backendBuckets": {
- "methods": {
- "addSignedUrlKey": {
- "id": "compute.backendBuckets.addSignedUrlKey",
- "path": "{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey",
- "httpMethod": "POST",
- "description": "Adds the given Signed URL Key to the backend bucket.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "SignedUrlKey"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.backendBuckets.delete",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified BackendBucket resource.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteSignedUrlKey": {
- "id": "compute.backendBuckets.deleteSignedUrlKey",
- "path": "{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey",
- "httpMethod": "POST",
- "description": "Deletes the given Signed URL Key from the backend bucket.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "keyName": {
- "type": "string",
- "description": "The name of the Signed URL Key to delete.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket",
- "keyName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.backendBuckets.get",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "GET",
- "description": "Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "response": {
- "$ref": "BackendBucket"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.backendBuckets.getIamPolicy",
- "path": "{project}/global/backendBuckets/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.backendBuckets.insert",
- "path": "{project}/global/backendBuckets",
- "httpMethod": "POST",
- "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.backendBuckets.list",
- "path": "{project}/global/backendBuckets",
- "httpMethod": "GET",
- "description": "Retrieves the list of BackendBucket resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendBucketList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.backendBuckets.patch",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "PATCH",
- "description": "Updates the specified BackendBucket resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setIamPolicy": {
- "id": "compute.backendBuckets.setIamPolicy",
- "path": "{project}/global/backendBuckets/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.backendBuckets.testIamPermissions",
- "path": "{project}/global/backendBuckets/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.backendBuckets.update",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "PUT",
- "description": "Updates the specified BackendBucket resource with the data included in the request.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "backendServices": {
- "methods": {
- "addSignedUrlKey": {
- "id": "compute.backendServices.addSignedUrlKey",
- "path": "{project}/global/backendServices/{backendService}/addSignedUrlKey",
- "httpMethod": "POST",
- "description": "Adds the given Signed URL Key to the specified backend service.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "SignedUrlKey"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.backendServices.aggregatedList",
- "path": "{project}/aggregated/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of all BackendService resources, regional and global, available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Name of the project scoping this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendServiceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.backendServices.delete",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteSignedUrlKey": {
- "id": "compute.backendServices.deleteSignedUrlKey",
- "path": "{project}/global/backendServices/{backendService}/deleteSignedUrlKey",
- "httpMethod": "POST",
- "description": "Deletes the given Signed URL Key from the specified backend service.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "keyName": {
- "type": "string",
- "description": "The name of the Signed URL Key to delete.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService",
- "keyName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.backendServices.get",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "GET",
- "description": "Returns the specified BackendService resource. Get a list of available backend services by making a list() request.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "response": {
- "$ref": "BackendService"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.backendServices.getHealth",
- "path": "{project}/global/backendServices/{backendService}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for this BackendService.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "ResourceGroupReference"
- },
- "response": {
- "$ref": "BackendServiceGroupHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.backendServices.insert",
- "path": "{project}/global/backendServices",
- "httpMethod": "POST",
- "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.backendServices.list",
- "path": "{project}/global/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of BackendService resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendServiceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.backendServices.patch",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "PATCH",
- "description": "Patches the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSecurityPolicy": {
- "id": "compute.backendServices.setSecurityPolicy",
- "path": "{project}/global/backendServices/{backendService}/setSecurityPolicy",
- "httpMethod": "POST",
- "description": "Sets the security policy for the specified backend service.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the security policy should be set. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "SecurityPolicyReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.backendServices.testIamPermissions",
- "path": "{project}/global/backendServices/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.backendServices.update",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "PUT",
- "description": "Updates the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "clientSslPolicies": {
- "methods": {
- "testIamPermissions": {
- "id": "compute.clientSslPolicies.testIamPermissions",
- "path": "{project}/global/clientSslPolicies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "diskTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.diskTypes.aggregatedList",
- "path": "{project}/aggregated/diskTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of disk types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "DiskTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.diskTypes.get",
- "path": "{project}/zones/{zone}/diskTypes/{diskType}",
- "httpMethod": "GET",
- "description": "Returns the specified disk type. Get a list of available disk types by making a list() request.",
- "parameters": {
- "diskType": {
- "type": "string",
- "description": "Name of the disk type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "diskType"
- ],
- "response": {
- "$ref": "DiskType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.diskTypes.list",
- "path": "{project}/zones/{zone}/diskTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of disk types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "DiskTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "disks": {
- "methods": {
- "aggregatedList": {
- "id": "compute.disks.aggregatedList",
- "path": "{project}/aggregated/disks",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of persistent disks.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "DiskAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "createSnapshot": {
- "id": "compute.disks.createSnapshot",
- "path": "{project}/zones/{zone}/disks/{disk}/createSnapshot",
- "httpMethod": "POST",
- "description": "Creates a snapshot of a specified persistent disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to snapshot.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "guestFlush": {
- "type": "boolean",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "request": {
- "$ref": "Snapshot"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.disks.delete",
- "path": "{project}/zones/{zone}/disks/{disk}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified persistent disk. Deleting a disk removes its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.disks.get",
- "path": "{project}/zones/{zone}/disks/{disk}",
- "httpMethod": "GET",
- "description": "Returns a specified persistent disk. Get a list of available persistent disks by making a list() request.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "response": {
- "$ref": "Disk"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.disks.getIamPolicy",
- "path": "{project}/zones/{zone}/disks/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.disks.insert",
- "path": "{project}/zones/{zone}/disks",
- "httpMethod": "POST",
- "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk with a sourceImage, a sourceSnapshot, or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sourceImage": {
- "type": "string",
- "description": "Optional. Source image to restore onto a disk.",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Disk"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.disks.list",
- "path": "{project}/zones/{zone}/disks",
- "httpMethod": "GET",
- "description": "Retrieves a list of persistent disks contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "DiskList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "resize": {
- "id": "compute.disks.resize",
- "path": "{project}/zones/{zone}/disks/{disk}/resize",
- "httpMethod": "POST",
- "description": "Resizes the specified persistent disk. You can only increase the size of the disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "The name of the persistent disk.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "request": {
- "$ref": "DisksResizeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setIamPolicy": {
- "id": "compute.disks.setIamPolicy",
- "path": "{project}/zones/{zone}/disks/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.disks.setLabels",
- "path": "{project}/zones/{zone}/disks/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a disk. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "ZoneSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.disks.testIamPermissions",
- "path": "{project}/zones/{zone}/disks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "firewalls": {
- "methods": {
- "delete": {
- "id": "compute.firewalls.delete",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified firewall.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.firewalls.get",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "GET",
- "description": "Returns the specified firewall.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "response": {
- "$ref": "Firewall"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.firewalls.insert",
- "path": "{project}/global/firewalls",
- "httpMethod": "POST",
- "description": "Creates a firewall rule in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.firewalls.list",
- "path": "{project}/global/firewalls",
- "httpMethod": "GET",
- "description": "Retrieves the list of firewall rules available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "FirewallList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.firewalls.patch",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "PATCH",
- "description": "Updates the specified firewall rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.firewalls.testIamPermissions",
- "path": "{project}/global/firewalls/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.firewalls.update",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "PUT",
- "description": "Updates the specified firewall rule with the data included in the request. Using PUT method, can only update following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "forwardingRules": {
- "methods": {
- "aggregatedList": {
- "id": "compute.forwardingRules.aggregatedList",
- "path": "{project}/aggregated/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of forwarding rules.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ForwardingRuleAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.forwardingRules.delete",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified ForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.forwardingRules.get",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
- "httpMethod": "GET",
- "description": "Returns the specified ForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "response": {
- "$ref": "ForwardingRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.forwardingRules.insert",
- "path": "{project}/regions/{region}/forwardingRules",
- "httpMethod": "POST",
- "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.forwardingRules.list",
- "path": "{project}/regions/{region}/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "ForwardingRuleList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.forwardingRules.patch",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
- "httpMethod": "PATCH",
- "description": "Updates the specified forwarding rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules. Currently, you can only patch the network_tier field.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.forwardingRules.setLabels",
- "path": "{project}/regions/{region}/forwardingRules/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTarget": {
- "id": "compute.forwardingRules.setTarget",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget",
- "httpMethod": "POST",
- "description": "Changes target URL for forwarding rule. The new target should be of the same type as the old target.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource in which target is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.forwardingRules.testIamPermissions",
- "path": "{project}/regions/{region}/forwardingRules/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "globalAddresses": {
- "methods": {
- "delete": {
- "id": "compute.globalAddresses.delete",
- "path": "{project}/global/addresses/{address}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "address"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalAddresses.get",
- "path": "{project}/global/addresses/{address}",
- "httpMethod": "GET",
- "description": "Returns the specified address resource. Get a list of available addresses by making a list() request.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "address"
- ],
- "response": {
- "$ref": "Address"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.globalAddresses.insert",
- "path": "{project}/global/addresses",
- "httpMethod": "POST",
- "description": "Creates an address resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Address"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.globalAddresses.list",
- "path": "{project}/global/addresses",
- "httpMethod": "GET",
- "description": "Retrieves a list of global addresses.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AddressList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.globalAddresses.setLabels",
- "path": "{project}/global/addresses/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a GlobalAddress. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.globalAddresses.testIamPermissions",
- "path": "{project}/global/addresses/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "globalForwardingRules": {
- "methods": {
- "delete": {
- "id": "compute.globalForwardingRules.delete",
- "path": "{project}/global/forwardingRules/{forwardingRule}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified GlobalForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalForwardingRules.get",
- "path": "{project}/global/forwardingRules/{forwardingRule}",
- "httpMethod": "GET",
- "description": "Returns the specified GlobalForwardingRule resource. Get a list of available forwarding rules by making a list() request.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "response": {
- "$ref": "ForwardingRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.globalForwardingRules.insert",
- "path": "{project}/global/forwardingRules",
- "httpMethod": "POST",
- "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.globalForwardingRules.list",
- "path": "{project}/global/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves a list of GlobalForwardingRule resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ForwardingRuleList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.globalForwardingRules.patch",
- "path": "{project}/global/forwardingRules/{forwardingRule}",
- "httpMethod": "PATCH",
- "description": "Updates the specified forwarding rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules. Currently, you can only patch the network_tier field.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.globalForwardingRules.setLabels",
- "path": "{project}/global/forwardingRules/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTarget": {
- "id": "compute.globalForwardingRules.setTarget",
- "path": "{project}/global/forwardingRules/{forwardingRule}/setTarget",
- "httpMethod": "POST",
- "description": "Changes target URL for the GlobalForwardingRule resource. The new target should be of the same type as the old target.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource in which target is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.globalForwardingRules.testIamPermissions",
- "path": "{project}/global/forwardingRules/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "globalOperations": {
- "methods": {
- "aggregatedList": {
- "id": "compute.globalOperations.aggregatedList",
- "path": "{project}/aggregated/operations",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of all operations.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "OperationAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.globalOperations.delete",
- "path": "{project}/global/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalOperations.get",
- "path": "{project}/global/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified Operations resource. Get a list of operations by making a list() request.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.globalOperations.list",
- "path": "{project}/global/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "healthChecks": {
- "methods": {
- "delete": {
- "id": "compute.healthChecks.delete",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HealthCheck resource.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.healthChecks.get",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HealthCheck resource. Get a list of available health checks by making a list() request.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "response": {
- "$ref": "HealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.healthChecks.insert",
- "path": "{project}/global/healthChecks",
- "httpMethod": "POST",
- "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.healthChecks.list",
- "path": "{project}/global/healthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.healthChecks.patch",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.healthChecks.testIamPermissions",
- "path": "{project}/global/healthChecks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.healthChecks.update",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "hostTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.hostTypes.aggregatedList",
- "path": "{project}/aggregated/hostTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of host types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of VPN tunnels.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/vpnTunnels",
+ "response": {
+ "$ref": "VpnTunnelAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified VpnTunnel resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.vpnTunnels.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "vpnTunnel"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "vpnTunnel": {
+ "description": "Name of the VpnTunnel resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified VpnTunnel resource. Get a list of available VPN tunnels by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "vpnTunnel"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "vpnTunnel": {
+ "description": "Name of the VpnTunnel resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
+ "response": {
+ "$ref": "VpnTunnel"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.vpnTunnels.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels",
+ "request": {
+ "$ref": "VpnTunnel"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels",
+ "response": {
+ "$ref": "VpnTunnelList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a VpnTunnel. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.vpnTunnels.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.vpnTunnels.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HostTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.hostTypes.get",
- "path": "{project}/zones/{zone}/hostTypes/{hostType}",
- "httpMethod": "GET",
- "description": "Returns the specified host type. Get a list of available host types by making a list() request.",
- "parameters": {
- "hostType": {
- "type": "string",
- "description": "Name of the host type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ },
+ "zoneOperations": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified zone-specific Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.zoneOperations.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified zone-specific Operations resource.",
+ "httpMethod": "GET",
+ "id": "compute.zoneOperations.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.zoneOperations.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "zone",
- "hostType"
- ],
- "response": {
- "$ref": "HostType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.hostTypes.list",
- "path": "{project}/zones/{zone}/hostTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of host types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ },
+ "zones": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified Zone resource. Get a list of available zones by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.zones.get",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}",
+ "response": {
+ "$ref": "Zone"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Zone resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.zones.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones",
+ "response": {
+ "$ref": "ZoneList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "HostTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
}
- }
},
- "hosts": {
- "methods": {
- "aggregatedList": {
- "id": "compute.hosts.aggregatedList",
- "path": "{project}/aggregated/hosts",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of hosts.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HostAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.hosts.delete",
- "path": "{project}/zones/{zone}/hosts/{host}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Host resource.",
- "parameters": {
- "host": {
- "type": "string",
- "description": "Name of the Host resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "host"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.hosts.get",
- "path": "{project}/zones/{zone}/hosts/{host}",
- "httpMethod": "GET",
- "description": "Returns the specified host. Get a list of available hosts by making a list() request.",
- "parameters": {
- "host": {
- "type": "string",
- "description": "Name of the host to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "host"
- ],
- "response": {
- "$ref": "Host"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.hosts.getIamPolicy",
- "path": "{project}/zones/{zone}/hosts/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.hosts.insert",
- "path": "{project}/zones/{zone}/hosts",
- "httpMethod": "POST",
- "description": "Creates a host resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Host"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.hosts.list",
- "path": "{project}/zones/{zone}/hosts",
- "httpMethod": "GET",
- "description": "Retrieves a list of hosts available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "HostList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setIamPolicy": {
- "id": "compute.hosts.setIamPolicy",
- "path": "{project}/zones/{zone}/hosts/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.hosts.testIamPermissions",
- "path": "{project}/zones/{zone}/hosts/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "httpHealthChecks": {
- "methods": {
- "delete": {
- "id": "compute.httpHealthChecks.delete",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HttpHealthCheck resource.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.httpHealthChecks.get",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HttpHealthCheck resource. Get a list of available HTTP health checks by making a list() request.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "response": {
- "$ref": "HttpHealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.httpHealthChecks.insert",
- "path": "{project}/global/httpHealthChecks",
- "httpMethod": "POST",
- "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.httpHealthChecks.list",
- "path": "{project}/global/httpHealthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HttpHealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HttpHealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.httpHealthChecks.patch",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.httpHealthChecks.testIamPermissions",
- "path": "{project}/global/httpHealthChecks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.httpHealthChecks.update",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "httpsHealthChecks": {
- "methods": {
- "delete": {
- "id": "compute.httpsHealthChecks.delete",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HttpsHealthCheck resource.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.httpsHealthChecks.get",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HttpsHealthCheck resource. Get a list of available HTTPS health checks by making a list() request.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "response": {
- "$ref": "HttpsHealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.httpsHealthChecks.insert",
- "path": "{project}/global/httpsHealthChecks",
- "httpMethod": "POST",
- "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.httpsHealthChecks.list",
- "path": "{project}/global/httpsHealthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HttpsHealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HttpsHealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.httpsHealthChecks.patch",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.httpsHealthChecks.testIamPermissions",
- "path": "{project}/global/httpsHealthChecks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.httpsHealthChecks.update",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "images": {
- "methods": {
- "delete": {
- "id": "compute.images.delete",
- "path": "{project}/global/images/{image}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified image.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Name of the image resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deprecate": {
- "id": "compute.images.deprecate",
- "path": "{project}/global/images/{image}/deprecate",
- "httpMethod": "POST",
- "description": "Sets the deprecation status of an image.\n\nIf an empty request body is given, clears the deprecation status instead.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Image name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "request": {
- "$ref": "DeprecationStatus"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.images.get",
- "path": "{project}/global/images/{image}",
- "httpMethod": "GET",
- "description": "Returns the specified image. Get a list of available images by making a list() request.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Name of the image resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "response": {
- "$ref": "Image"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getFromFamily": {
- "id": "compute.images.getFromFamily",
- "path": "{project}/global/images/family/{family}",
- "httpMethod": "GET",
- "description": "Returns the latest image that is part of an image family and is not deprecated.",
- "parameters": {
- "family": {
- "type": "string",
- "description": "Name of the image family to search for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "family"
- ],
- "response": {
- "$ref": "Image"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.images.getIamPolicy",
- "path": "{project}/global/images/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.images.insert",
- "path": "{project}/global/images",
- "httpMethod": "POST",
- "description": "Creates an image in the specified project using the data included in the request.",
- "parameters": {
- "forceCreate": {
- "type": "boolean",
- "description": "Force image creation if true.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Image"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- },
- "list": {
- "id": "compute.images.list",
- "path": "{project}/global/images",
- "httpMethod": "GET",
- "description": "Retrieves the list of custom images available to the specified project. Custom images are images you create that belong to your project. This method does not get any images that belong to other projects, including publicly-available images, like Debian 8. If you want to get a list of publicly-available images, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ImageList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setIamPolicy": {
- "id": "compute.images.setIamPolicy",
- "path": "{project}/global/images/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.images.setLabels",
- "path": "{project}/global/images/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on an image. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.images.testIamPermissions",
- "path": "{project}/global/images/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "instanceGroupManagers": {
- "methods": {
- "abandonInstances": {
- "id": "compute.instanceGroupManagers.abandonInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersAbandonInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instanceGroupManagers.aggregatedList",
- "path": "{project}/aggregated/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves the list of managed instance groups and groups them by zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceGroupManagerAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "applyUpdatesToInstances": {
- "id": "compute.instanceGroupManagers.applyUpdatesToInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances",
- "httpMethod": "POST",
- "description": "Apply changes to selected instances on the managed instance group. This method can be used to apply new overrides and/or new versions.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group, should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located. Should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersApplyUpdatesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.instanceGroupManagers.delete",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read Deleting an instance group for more information.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteInstances": {
- "id": "compute.instanceGroupManagers.deleteInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersDeleteInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deletePerInstanceConfigs": {
- "id": "compute.instanceGroupManagers.deletePerInstanceConfigs",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs",
- "httpMethod": "POST",
- "description": "Delete selected per-instance configs for the managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersDeletePerInstanceConfigsReq"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceGroupManagers.get",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "GET",
- "description": "Returns all of the details about the specified managed instance group. Get a list of available managed instance groups by making a list() request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManager"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceGroupManagers.insert",
- "path": "{project}/zones/{zone}/instanceGroupManagers",
- "httpMethod": "POST",
- "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the managed instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceGroupManagers.list",
- "path": "{project}/zones/{zone}/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves a list of managed instance groups that are contained within the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceGroupManagerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listManagedInstances": {
- "id": "compute.instanceGroupManagers.listManagedInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
- "httpMethod": "POST",
- "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManagersListManagedInstancesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listPerInstanceConfigs": {
- "id": "compute.instanceGroupManagers.listPerInstanceConfigs",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs",
- "httpMethod": "POST",
- "description": "Lists all of the per-instance configs defined for the managed instance group.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManagersListPerInstanceConfigsResp"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.instanceGroupManagers.patch",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PATCH",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listManagedInstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the managed instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "recreateInstances": {
- "id": "compute.instanceGroupManagers.recreateInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersRecreateInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resize": {
- "id": "compute.instanceGroupManagers.resize",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize",
- "httpMethod": "POST",
- "description": "Resizes the managed instance group. If you increase the size, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "size": {
- "type": "integer",
- "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
- "required": true,
- "format": "int32",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager",
- "size"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resizeAdvanced": {
- "id": "compute.instanceGroupManagers.resizeAdvanced",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeAdvanced",
- "httpMethod": "POST",
- "description": "Resizes the managed instance group with advanced configuration options like disabling creation retries. This is an extended version of the resize method.\n\nIf you increase the size of the instance group, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating, creatingWithoutRetries, or deleting actions with the get or listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersResizeAdvancedRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setAutoHealingPolicies": {
- "id": "compute.instanceGroupManagers.setAutoHealingPolicies",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
- "httpMethod": "POST",
- "description": "Modifies the autohealing policies.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetAutoHealingRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setInstanceTemplate": {
- "id": "compute.instanceGroupManagers.setInstanceTemplate",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
- "httpMethod": "POST",
- "description": "Specifies the instance template to use when creating new instances in this group. The templates for existing instances in the group do not change unless you recreate them.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetInstanceTemplateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTargetPools": {
- "id": "compute.instanceGroupManagers.setTargetPools",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
- "httpMethod": "POST",
- "description": "Modifies the target pools to which all instances in this managed instance group are assigned. The target pools automatically apply to all of the instances in the managed instance group. This operation is marked DONE when you make the request even if the instances have not yet been added to their target pools. The change might take some time to apply to all of the instances in the group depending on the size of the group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetTargetPoolsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instanceGroupManagers.testIamPermissions",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.instanceGroupManagers.update",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PUT",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listManagedInstances method.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the managed instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "updatePerInstanceConfigs": {
- "id": "compute.instanceGroupManagers.updatePerInstanceConfigs",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs",
- "httpMethod": "POST",
- "description": "Insert or patch (for the ones that already exist) per-instance configs for the managed instance group. perInstanceConfig.instance serves as a key used to distinguish whether to perform insert or patch.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersUpdatePerInstanceConfigsReq"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "instanceGroups": {
- "methods": {
- "addInstances": {
- "id": "compute.instanceGroups.addInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
- "httpMethod": "POST",
- "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork. Read Adding instances for more information.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where you are adding instances.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsAddInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instanceGroups.aggregatedList",
- "path": "{project}/aggregated/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance groups and sorts them by zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceGroupAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.instanceGroups.delete",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read Deleting an instance group for more information.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceGroups.get",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
- "httpMethod": "GET",
- "description": "Returns the specified instance group. Get a list of available instance groups by making a list() request.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "response": {
- "$ref": "InstanceGroup"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceGroups.insert",
- "path": "{project}/zones/{zone}/instanceGroups",
- "httpMethod": "POST",
- "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "InstanceGroup"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceGroups.list",
- "path": "{project}/zones/{zone}/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance groups that are located in the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceGroupList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listInstances": {
- "id": "compute.instanceGroups.listInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the specified instance group.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group from which you want to generate a list of included instances.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsListInstancesRequest"
- },
- "response": {
- "$ref": "InstanceGroupsListInstances"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "removeInstances": {
- "id": "compute.instanceGroups.removeInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances",
- "httpMethod": "POST",
- "description": "Removes one or more instances from the specified instance group, but does not delete those instances.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where the specified instances will be removed.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsRemoveInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setNamedPorts": {
- "id": "compute.instanceGroups.setNamedPorts",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts",
- "httpMethod": "POST",
- "description": "Sets the named ports for the specified instance group.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where the named ports are updated.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsSetNamedPortsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instanceGroups.testIamPermissions",
- "path": "{project}/zones/{zone}/instanceGroups/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "instanceTemplates": {
- "methods": {
- "delete": {
- "id": "compute.instanceTemplates.delete",
- "path": "{project}/global/instanceTemplates/{instanceTemplate}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified instance template. If you delete an instance template that is being referenced from another instance group, the instance group will not be able to create or recreate virtual machine instances. Deleting an instance template is permanent and cannot be undone.",
- "parameters": {
- "instanceTemplate": {
- "type": "string",
- "description": "The name of the instance template to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "instanceTemplate"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceTemplates.get",
- "path": "{project}/global/instanceTemplates/{instanceTemplate}",
- "httpMethod": "GET",
- "description": "Returns the specified instance template. Get a list of available instance templates by making a list() request.",
- "parameters": {
- "instanceTemplate": {
- "type": "string",
- "description": "The name of the instance template.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "instanceTemplate"
- ],
- "response": {
- "$ref": "InstanceTemplate"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceTemplates.insert",
- "path": "{project}/global/instanceTemplates",
- "httpMethod": "POST",
- "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "InstanceTemplate"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceTemplates.list",
- "path": "{project}/global/instanceTemplates",
- "httpMethod": "GET",
- "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceTemplateList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instanceTemplates.testIamPermissions",
- "path": "{project}/global/instanceTemplates/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "instances": {
- "methods": {
- "addAccessConfig": {
- "id": "compute.instances.addAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/addAccessConfig",
- "httpMethod": "POST",
- "description": "Adds an access config to an instance's network interface.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface to add to this instance.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "networkInterface"
- ],
- "request": {
- "$ref": "AccessConfig"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "addMaintenancePolicies": {
- "id": "compute.instances.addMaintenancePolicies",
- "path": "{project}/zones/{zone}/instances/{instance}/addMaintenancePolicies",
- "httpMethod": "POST",
- "description": "Adds existing maintenance policies to an instance. You can only add one policy right now which will be applied to this instance for scheduling live migrations.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesAddMaintenancePoliciesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instances.aggregatedList",
- "path": "{project}/aggregated/instances",
- "httpMethod": "GET",
- "description": "Retrieves aggregated list of instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "attachDisk": {
- "id": "compute.instances.attachDisk",
- "path": "{project}/zones/{zone}/instances/{instance}/attachDisk",
- "httpMethod": "POST",
- "description": "Attaches an existing Disk resource to an instance. You must first create the disk before you can attach it. It is not possible to create and attach a disk at the same time. For more information, read Adding a persistent disk to your instance.",
- "parameters": {
- "forceAttach": {
- "type": "boolean",
- "description": "Whether to force attach the disk even if it's currently attached to another instance. This is only available for regional disks.",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "AttachedDisk"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.instances.delete",
- "path": "{project}/zones/{zone}/instances/{instance}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Instance resource. For more information, see Stopping or Deleting an Instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteAccessConfig": {
- "id": "compute.instances.deleteAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/deleteAccessConfig",
- "httpMethod": "POST",
- "description": "Deletes an access config from an instance's network interface.",
- "parameters": {
- "accessConfig": {
- "type": "string",
- "description": "The name of the access config to delete.",
- "required": true,
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "accessConfig",
- "networkInterface"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "detachDisk": {
- "id": "compute.instances.detachDisk",
- "path": "{project}/zones/{zone}/instances/{instance}/detachDisk",
- "httpMethod": "POST",
- "description": "Detaches a disk from an instance.",
- "parameters": {
- "deviceName": {
- "type": "string",
- "description": "Disk device name to detach.",
- "required": true,
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "Instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "deviceName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instances.get",
- "path": "{project}/zones/{zone}/instances/{instance}",
- "httpMethod": "GET",
- "description": "Returns the specified Instance resource. Get a list of available instances by making a list() request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Instance"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getGuestAttributes": {
- "id": "compute.instances.getGuestAttributes",
- "path": "{project}/zones/{zone}/instances/{instance}/getGuestAttributes",
- "httpMethod": "GET",
- "description": "Returns the specified guest attributes entry.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "variableKey": {
- "type": "string",
- "description": "Specifies the key for the guest attributes entry.",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "GuestAttributes"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.instances.getIamPolicy",
- "path": "{project}/zones/{zone}/instances/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getSerialPortOutput": {
- "id": "compute.instances.getSerialPortOutput",
- "path": "{project}/zones/{zone}/instances/{instance}/serialPort",
- "httpMethod": "GET",
- "description": "Returns the specified instance's serial port output.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "port": {
- "type": "integer",
- "description": "Specifies which COM or serial port to retrieve data from.",
- "default": "1",
- "format": "int32",
- "minimum": "1",
- "maximum": "4",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "start": {
- "type": "string",
- "description": "Returns output starting from a specific byte position. Use this to page through output when the output is too large to return in a single request. For the initial request, leave this field unspecified. For subsequent calls, this field should be set to the next value returned in the previous call.",
- "format": "int64",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "SerialPortOutput"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instances.insert",
- "path": "{project}/zones/{zone}/instances",
- "httpMethod": "POST",
- "description": "Creates an instance resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sourceInstanceTemplate": {
- "type": "string",
- "description": "Specifies instance template to create the instance.\n\nThis field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: \n- https://www.googleapis.com/compute/v1/projects/project/global/global/instanceTemplates/instanceTemplate \n- projects/project/global/global/instanceTemplates/instanceTemplate \n- global/instancesTemplates/instanceTemplate",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Instance"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instances.list",
- "path": "{project}/zones/{zone}/instances",
- "httpMethod": "GET",
- "description": "Retrieves the list of instances contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listReferrers": {
- "id": "compute.instances.listReferrers",
- "path": "{project}/zones/{zone}/instances/{instance}/referrers",
- "httpMethod": "GET",
- "description": "Retrieves the list of referrers to instances contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "Name of the target instance scoping this request, or '-' if the request should span over all instances in the container.",
- "required": true,
- "pattern": "-|[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "InstanceListReferrers"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "removeMaintenancePolicies": {
- "id": "compute.instances.removeMaintenancePolicies",
- "path": "{project}/zones/{zone}/instances/{instance}/removeMaintenancePolicies",
- "httpMethod": "POST",
- "description": "Removes maintenance policies from an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesRemoveMaintenancePoliciesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "reset": {
- "id": "compute.instances.reset",
- "path": "{project}/zones/{zone}/instances/{instance}/reset",
- "httpMethod": "POST",
- "description": "Performs a reset on the instance. For more information, see Resetting an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resume": {
- "id": "compute.instances.resume",
- "path": "{project}/zones/{zone}/instances/{instance}/resume",
- "httpMethod": "POST",
- "description": "Resumes an instance that was suspended using the instances().suspend method.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to resume.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesResumeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDeletionProtection": {
- "id": "compute.instances.setDeletionProtection",
- "path": "{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
- "httpMethod": "POST",
- "description": "Sets deletion protection on the instance.",
- "parameters": {
- "deletionProtection": {
- "type": "boolean",
- "description": "Whether the resource should be protected against deletion.",
- "default": "true",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDiskAutoDelete": {
- "id": "compute.instances.setDiskAutoDelete",
- "path": "{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete",
- "httpMethod": "POST",
- "description": "Sets the auto-delete flag for a disk attached to an instance.",
- "parameters": {
- "autoDelete": {
- "type": "boolean",
- "description": "Whether to auto-delete the disk when the instance is deleted.",
- "required": true,
- "location": "query"
- },
- "deviceName": {
- "type": "string",
- "description": "The device name of the disk to modify.",
- "required": true,
- "pattern": "\\w[\\w.-]{0,254}",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "The instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "autoDelete",
- "deviceName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setIamPolicy": {
- "id": "compute.instances.setIamPolicy",
- "path": "{project}/zones/{zone}/instances/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.instances.setLabels",
- "path": "{project}/zones/{zone}/instances/{instance}/setLabels",
- "httpMethod": "POST",
- "description": "Sets labels on an instance. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMachineResources": {
- "id": "compute.instances.setMachineResources",
- "path": "{project}/zones/{zone}/instances/{instance}/setMachineResources",
- "httpMethod": "POST",
- "description": "Changes the number and/or type of accelerator for a stopped instance to the values specified in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMachineResourcesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMachineType": {
- "id": "compute.instances.setMachineType",
- "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
- "httpMethod": "POST",
- "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMachineTypeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMetadata": {
- "id": "compute.instances.setMetadata",
- "path": "{project}/zones/{zone}/instances/{instance}/setMetadata",
- "httpMethod": "POST",
- "description": "Sets metadata for the specified instance to the data included in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Metadata"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMinCpuPlatform": {
- "id": "compute.instances.setMinCpuPlatform",
- "path": "{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform",
- "httpMethod": "POST",
- "description": "Changes the minimum CPU platform that this instance should use. This method can only be called on a stopped instance. For more information, read Specifying a Minimum CPU Platform.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMinCpuPlatformRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setScheduling": {
- "id": "compute.instances.setScheduling",
- "path": "{project}/zones/{zone}/instances/{instance}/setScheduling",
- "httpMethod": "POST",
- "description": "Sets an instance's scheduling options.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Scheduling"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setServiceAccount": {
- "id": "compute.instances.setServiceAccount",
- "path": "{project}/zones/{zone}/instances/{instance}/setServiceAccount",
- "httpMethod": "POST",
- "description": "Sets the service account on the instance. For more information, read Changing the service account and access scopes for an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetServiceAccountRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTags": {
- "id": "compute.instances.setTags",
- "path": "{project}/zones/{zone}/instances/{instance}/setTags",
- "httpMethod": "POST",
- "description": "Sets tags for the specified instance to the data included in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Tags"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "simulateMaintenanceEvent": {
- "id": "compute.instances.simulateMaintenanceEvent",
- "path": "{project}/zones/{zone}/instances/{instance}/simulateMaintenanceEvent",
- "httpMethod": "POST",
- "description": "Simulates a maintenance event on the instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "start": {
- "id": "compute.instances.start",
- "path": "{project}/zones/{zone}/instances/{instance}/start",
- "httpMethod": "POST",
- "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "startWithEncryptionKey": {
- "id": "compute.instances.startWithEncryptionKey",
- "path": "{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey",
- "httpMethod": "POST",
- "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesStartWithEncryptionKeyRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "stop": {
- "id": "compute.instances.stop",
- "path": "{project}/zones/{zone}/instances/{instance}/stop",
- "httpMethod": "POST",
- "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur VM usage charges while they are stopped. However, resources that the VM is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
- "parameters": {
- "discardLocalSsd": {
- "type": "boolean",
- "description": "If true, discard the contents of any attached localSSD partitions. Default value is false (== preserve localSSD data).",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to stop.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "suspend": {
- "id": "compute.instances.suspend",
- "path": "{project}/zones/{zone}/instances/{instance}/suspend",
- "httpMethod": "POST",
- "description": "This method suspends a running instance, saving its state to persistent storage, and allows you to resume the instance at a later time. Suspended instances incur reduced per-minute, virtual machine usage charges while they are suspended. Any resources the virtual machine is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted.",
- "parameters": {
- "discardLocalSsd": {
- "type": "boolean",
- "description": "If true, discard the contents of any attached localSSD partitions. Default value is false (== preserve localSSD data).",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to suspend.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instances.testIamPermissions",
- "path": "{project}/zones/{zone}/instances/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "updateAccessConfig": {
- "id": "compute.instances.updateAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/updateAccessConfig",
- "httpMethod": "POST",
- "description": "Updates the specified access config from an instance's network interface with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface where the access config is attached.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "networkInterface"
- ],
- "request": {
- "$ref": "AccessConfig"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "updateNetworkInterface": {
- "id": "compute.instances.updateNetworkInterface",
- "path": "{project}/zones/{zone}/instances/{instance}/updateNetworkInterface",
- "httpMethod": "PATCH",
- "description": "Updates an instance's network interface. This method follows PATCH semantics.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface to update.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "networkInterface"
- ],
- "request": {
- "$ref": "NetworkInterface"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "updateShieldedVmConfig": {
- "id": "compute.instances.updateShieldedVmConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/updateShieldedVmConfig",
- "httpMethod": "PATCH",
- "description": "Updates the Shielded VM config for an instance. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "ShieldedVmConfig"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "interconnectAttachments": {
- "methods": {
- "aggregatedList": {
- "id": "compute.interconnectAttachments.aggregatedList",
- "path": "{project}/aggregated/interconnectAttachments",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of interconnect attachments.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectAttachmentAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.interconnectAttachments.delete",
- "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified interconnect attachment.",
- "parameters": {
- "interconnectAttachment": {
- "type": "string",
- "description": "Name of the interconnect attachment to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "interconnectAttachment"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.interconnectAttachments.get",
- "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
- "httpMethod": "GET",
- "description": "Returns the specified interconnect attachment.",
- "parameters": {
- "interconnectAttachment": {
- "type": "string",
- "description": "Name of the interconnect attachment to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "interconnectAttachment"
- ],
- "response": {
- "$ref": "InterconnectAttachment"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.interconnectAttachments.getIamPolicy",
- "path": "{project}/regions/{region}/interconnectAttachments/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.interconnectAttachments.insert",
- "path": "{project}/regions/{region}/interconnectAttachments",
- "httpMethod": "POST",
- "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "InterconnectAttachment"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.interconnectAttachments.list",
- "path": "{project}/regions/{region}/interconnectAttachments",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect attachments contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "InterconnectAttachmentList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.interconnectAttachments.patch",
- "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
- "httpMethod": "PATCH",
- "description": "Updates the specified interconnect attachment with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "interconnectAttachment": {
- "type": "string",
- "description": "Name of the interconnect attachment to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "interconnectAttachment"
- ],
- "request": {
- "$ref": "InterconnectAttachment"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setIamPolicy": {
- "id": "compute.interconnectAttachments.setIamPolicy",
- "path": "{project}/regions/{region}/interconnectAttachments/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.interconnectAttachments.setLabels",
- "path": "{project}/regions/{region}/interconnectAttachments/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on an InterconnectAttachment. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.interconnectAttachments.testIamPermissions",
- "path": "{project}/regions/{region}/interconnectAttachments/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "interconnectLocations": {
- "methods": {
- "get": {
- "id": "compute.interconnectLocations.get",
- "path": "{project}/global/interconnectLocations/{interconnectLocation}",
- "httpMethod": "GET",
- "description": "Returns the details for the specified interconnect location. Get a list of available interconnect locations by making a list() request.",
- "parameters": {
- "interconnectLocation": {
- "type": "string",
- "description": "Name of the interconnect location to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "interconnectLocation"
- ],
- "response": {
- "$ref": "InterconnectLocation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.interconnectLocations.list",
- "path": "{project}/global/interconnectLocations",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect locations available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectLocationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.interconnectLocations.testIamPermissions",
- "path": "{project}/global/interconnectLocations/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "interconnects": {
- "methods": {
- "delete": {
- "id": "compute.interconnects.delete",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified interconnect.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.interconnects.get",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "GET",
- "description": "Returns the specified interconnect. Get a list of available interconnects by making a list() request.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "response": {
- "$ref": "Interconnect"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.interconnects.getIamPolicy",
- "path": "{project}/global/interconnects/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.interconnects.insert",
- "path": "{project}/global/interconnects",
- "httpMethod": "POST",
- "description": "Creates a Interconnect in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Interconnect"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.interconnects.list",
- "path": "{project}/global/interconnects",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.interconnects.patch",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "PATCH",
- "description": "Updates the specified interconnect with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "request": {
- "$ref": "Interconnect"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setIamPolicy": {
- "id": "compute.interconnects.setIamPolicy",
- "path": "{project}/global/interconnects/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.interconnects.setLabels",
- "path": "{project}/global/interconnects/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on an Interconnect. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.interconnects.testIamPermissions",
- "path": "{project}/global/interconnects/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "licenseCodes": {
- "methods": {
- "get": {
- "id": "compute.licenseCodes.get",
- "path": "{project}/global/licenseCodes/{licenseCode}",
- "httpMethod": "GET",
- "description": "Return a specified license code. License codes are mirrored across all projects that have permissions to read the License Code.",
- "parameters": {
- "licenseCode": {
- "type": "string",
- "description": "Number corresponding to the License code resource to return.",
- "required": true,
- "pattern": "[0-9]{0,61}?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "licenseCode"
- ],
- "response": {
- "$ref": "LicenseCode"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.licenseCodes.getIamPolicy",
- "path": "{project}/global/licenseCodes/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setIamPolicy": {
- "id": "compute.licenseCodes.setIamPolicy",
- "path": "{project}/global/licenseCodes/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.licenseCodes.testIamPermissions",
- "path": "{project}/global/licenseCodes/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "licenses": {
- "methods": {
- "delete": {
- "id": "compute.licenses.delete",
- "path": "{project}/global/licenses/{license}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified license.",
- "parameters": {
- "license": {
- "type": "string",
- "description": "Name of the license resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "license"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.licenses.get",
- "path": "{project}/global/licenses/{license}",
- "httpMethod": "GET",
- "description": "Returns the specified License resource.",
- "parameters": {
- "license": {
- "type": "string",
- "description": "Name of the License resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "license"
- ],
- "response": {
- "$ref": "License"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.licenses.getIamPolicy",
- "path": "{project}/global/licenses/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.licenses.insert",
- "path": "{project}/global/licenses",
- "httpMethod": "POST",
- "description": "Create a License resource in the specified project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "License"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- },
- "list": {
- "id": "compute.licenses.list",
- "path": "{project}/global/licenses",
- "httpMethod": "GET",
- "description": "Retrieves the list of licenses available in the specified project. This method does not get any licenses that belong to other projects, including licenses attached to publicly-available images, like Debian 8. If you want to get a list of publicly-available licenses, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "LicensesListResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setIamPolicy": {
- "id": "compute.licenses.setIamPolicy",
- "path": "{project}/global/licenses/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.licenses.testIamPermissions",
- "path": "{project}/global/licenses/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "machineTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.machineTypes.aggregatedList",
- "path": "{project}/aggregated/machineTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of machine types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "MachineTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.machineTypes.get",
- "path": "{project}/zones/{zone}/machineTypes/{machineType}",
- "httpMethod": "GET",
- "description": "Returns the specified machine type. Get a list of available machine types by making a list() request.",
- "parameters": {
- "machineType": {
- "type": "string",
- "description": "Name of the machine type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "machineType"
- ],
- "response": {
- "$ref": "MachineType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.machineTypes.list",
- "path": "{project}/zones/{zone}/machineTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of machine types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "MachineTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "maintenancePolicies": {
- "methods": {
- "aggregatedList": {
- "id": "compute.maintenancePolicies.aggregatedList",
- "path": "{project}/aggregated/maintenancePolicies",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of maintenance policies.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "MaintenancePolicyAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.maintenancePolicies.delete",
- "path": "{project}/regions/{region}/maintenancePolicies/{maintenancePolicy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified maintenance policy.",
- "parameters": {
- "maintenancePolicy": {
- "type": "string",
- "description": "Name of the maintenance policy to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "maintenancePolicy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.maintenancePolicies.get",
- "path": "{project}/regions/{region}/maintenancePolicies/{maintenancePolicy}",
- "httpMethod": "GET",
- "description": "Retrieves all information of the specified maintenance policy.",
- "parameters": {
- "maintenancePolicy": {
- "type": "string",
- "description": "Name of the maintenance policy to retrieve.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "maintenancePolicy"
- ],
- "response": {
- "$ref": "MaintenancePolicy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.maintenancePolicies.getIamPolicy",
- "path": "{project}/regions/{region}/maintenancePolicies/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.maintenancePolicies.insert",
- "path": "{project}/regions/{region}/maintenancePolicies",
- "httpMethod": "POST",
- "description": "Creates a new maintenance policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "MaintenancePolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.maintenancePolicies.list",
- "path": "{project}/regions/{region}/maintenancePolicies",
- "httpMethod": "GET",
- "description": "List all the maintenance policies that have been configured for the specified project in specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "MaintenancePoliciesList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setIamPolicy": {
- "id": "compute.maintenancePolicies.setIamPolicy",
- "path": "{project}/regions/{region}/maintenancePolicies/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.maintenancePolicies.testIamPermissions",
- "path": "{project}/regions/{region}/maintenancePolicies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "networkEndpointGroups": {
- "methods": {
- "aggregatedList": {
- "id": "compute.networkEndpointGroups.aggregatedList",
- "path": "{project}/aggregated/networkEndpointGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of network endpoint groups and sorts them by zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "NetworkEndpointGroupAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "attachNetworkEndpoints": {
- "id": "compute.networkEndpointGroups.attachNetworkEndpoints",
- "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/attachNetworkEndpoints",
- "httpMethod": "POST",
- "description": "Attach a list of network endpoints to the specified network endpoint group.",
- "parameters": {
- "networkEndpointGroup": {
- "type": "string",
- "description": "The name of the network endpoint group where you are attaching network endpoints to. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "networkEndpointGroup"
- ],
- "request": {
- "$ref": "NetworkEndpointGroupsAttachEndpointsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.networkEndpointGroups.delete",
- "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified network endpoint group. The network endpoints in the NEG and the VM instances they belong to are not terminated when the NEG is deleted. Note that the NEG cannot be deleted if there are backend services referencing it.",
- "parameters": {
- "networkEndpointGroup": {
- "type": "string",
- "description": "The name of the network endpoint group to delete. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "networkEndpointGroup"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "detachNetworkEndpoints": {
- "id": "compute.networkEndpointGroups.detachNetworkEndpoints",
- "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/detachNetworkEndpoints",
- "httpMethod": "POST",
- "description": "Detach a list of network endpoints from the specified network endpoint group.",
- "parameters": {
- "networkEndpointGroup": {
- "type": "string",
- "description": "The name of the network endpoint group where you are removing network endpoints. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "networkEndpointGroup"
- ],
- "request": {
- "$ref": "NetworkEndpointGroupsDetachEndpointsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.networkEndpointGroups.get",
- "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}",
- "httpMethod": "GET",
- "description": "Returns the specified network endpoint group. Get a list of available network endpoint groups by making a list() request.",
- "parameters": {
- "networkEndpointGroup": {
- "type": "string",
- "description": "The name of the network endpoint group. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "networkEndpointGroup"
- ],
- "response": {
- "$ref": "NetworkEndpointGroup"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.networkEndpointGroups.insert",
- "path": "{project}/zones/{zone}/networkEndpointGroups",
- "httpMethod": "POST",
- "description": "Creates a network endpoint group in the specified project using the parameters that are included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the network endpoint group. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "NetworkEndpointGroup"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.networkEndpointGroups.list",
- "path": "{project}/zones/{zone}/networkEndpointGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of network endpoint groups that are located in the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "NetworkEndpointGroupList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listNetworkEndpoints": {
- "id": "compute.networkEndpointGroups.listNetworkEndpoints",
- "path": "{project}/zones/{zone}/networkEndpointGroups/{networkEndpointGroup}/listNetworkEndpoints",
- "httpMethod": "POST",
- "description": "List the network endpoints in the specified network endpoint group.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "networkEndpointGroup": {
- "type": "string",
- "description": "The name of the network endpoint group from which you want to generate a list of included network endpoints. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the network endpoint group is located. It should comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "networkEndpointGroup"
- ],
- "request": {
- "$ref": "NetworkEndpointGroupsListEndpointsRequest"
- },
- "response": {
- "$ref": "NetworkEndpointGroupsListNetworkEndpoints"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.networkEndpointGroups.testIamPermissions",
- "path": "{project}/zones/{zone}/networkEndpointGroups/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "networks": {
- "methods": {
- "addPeering": {
- "id": "compute.networks.addPeering",
- "path": "{project}/global/networks/{network}/addPeering",
- "httpMethod": "POST",
- "description": "Adds a peering to the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network resource to add peering to.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "NetworksAddPeeringRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.networks.delete",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.networks.get",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "GET",
- "description": "Returns the specified network. Get a list of available networks by making a list() request.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Network"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.networks.insert",
- "path": "{project}/global/networks",
- "httpMethod": "POST",
- "description": "Creates a network in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Network"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.networks.list",
- "path": "{project}/global/networks",
- "httpMethod": "GET",
- "description": "Retrieves the list of networks available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "NetworkList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listIpOwners": {
- "id": "compute.networks.listIpOwners",
- "path": "{project}/global/networks/{network}/listIpOwners",
- "httpMethod": "GET",
- "description": "List the internal IP owners in the specified network.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "ipCidrRange": {
- "type": "string",
- "description": "(Optional) IP CIDR range filter, example: \"10.128.10.0/30\".",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "network": {
- "type": "string",
- "description": "Name of the network to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "ownerProjects": {
- "type": "string",
- "description": "(Optional) Project IDs filter, example: \"project-1,project-2\".",
- "location": "query"
- },
- "ownerTypes": {
- "type": "string",
- "description": "(Optional) Owner types filter, example: \"instance,forwardingRule\".",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "subnetName": {
- "type": "string",
- "description": "(Optional) Subnetwork name filter.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "subnetRegion": {
- "type": "string",
- "description": "(Optional) Subnetwork region filter.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "IpOwnerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.networks.patch",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "PATCH",
- "description": "Patches the specified network with the data included in the request. Only the following fields can be modified: routingConfig.routingMode.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "Network"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "removePeering": {
- "id": "compute.networks.removePeering",
- "path": "{project}/global/networks/{network}/removePeering",
- "httpMethod": "POST",
- "description": "Removes a peering from the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network resource to remove peering from.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "NetworksRemovePeeringRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "switchToCustomMode": {
- "id": "compute.networks.switchToCustomMode",
- "path": "{project}/global/networks/{network}/switchToCustomMode",
- "httpMethod": "POST",
- "description": "Switches the network mode from auto subnet mode to custom subnet mode.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to be updated.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.networks.testIamPermissions",
- "path": "{project}/global/networks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "projects": {
- "methods": {
- "disableXpnHost": {
- "id": "compute.projects.disableXpnHost",
- "path": "{project}/disableXpnHost",
- "httpMethod": "POST",
- "description": "Disable this project as a shared VPC host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "disableXpnResource": {
- "id": "compute.projects.disableXpnResource",
- "path": "{project}/disableXpnResource",
- "httpMethod": "POST",
- "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsDisableXpnResourceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "enableXpnHost": {
- "id": "compute.projects.enableXpnHost",
- "path": "{project}/enableXpnHost",
- "httpMethod": "POST",
- "description": "Enable this project as a shared VPC host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "enableXpnResource": {
- "id": "compute.projects.enableXpnResource",
- "path": "{project}/enableXpnResource",
- "httpMethod": "POST",
- "description": "Enable service resource (a.k.a service project) for a host project, so that subnets in the host project can be used by instances in the service project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsEnableXpnResourceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.projects.get",
- "path": "{project}",
- "httpMethod": "GET",
- "description": "Returns the specified Project resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Project"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getXpnHost": {
- "id": "compute.projects.getXpnHost",
- "path": "{project}/getXpnHost",
- "httpMethod": "GET",
- "description": "Get the shared VPC host project that this project links to. May be empty if no link exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Project"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "getXpnResources": {
- "id": "compute.projects.getXpnResources",
- "path": "{project}/getXpnResources",
- "httpMethod": "GET",
- "description": "Get service resources (a.k.a service project) associated with this host project.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ProjectsGetXpnResources"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "listXpnHosts": {
- "id": "compute.projects.listXpnHosts",
- "path": "{project}/listXpnHosts",
- "httpMethod": "POST",
- "description": "List all shared VPC host projects visible to the user in an organization.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsListXpnHostsRequest"
- },
- "response": {
- "$ref": "XpnHostList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "moveDisk": {
- "id": "compute.projects.moveDisk",
- "path": "{project}/moveDisk",
- "httpMethod": "POST",
- "description": "Moves a persistent disk from one zone to another.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "DiskMoveRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "moveInstance": {
- "id": "compute.projects.moveInstance",
- "path": "{project}/moveInstance",
- "httpMethod": "POST",
- "description": "Moves an instance and its attached persistent disks from one zone to another.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "InstanceMoveRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setCommonInstanceMetadata": {
- "id": "compute.projects.setCommonInstanceMetadata",
- "path": "{project}/setCommonInstanceMetadata",
- "httpMethod": "POST",
- "description": "Sets metadata common to all instances within the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Metadata"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDefaultNetworkTier": {
- "id": "compute.projects.setDefaultNetworkTier",
- "path": "{project}/setDefaultNetworkTier",
- "httpMethod": "POST",
- "description": "Sets the default network tier of the project. The default network tier is used when an address/forwardingRule/instance is created without specifying the network tier field.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsSetDefaultNetworkTierRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDefaultServiceAccount": {
- "id": "compute.projects.setDefaultServiceAccount",
- "path": "{project}/setDefaultServiceAccount",
- "httpMethod": "POST",
- "description": "Sets the default service account of the project. The default service account is used when a VM instance is created with the service account email address set to \"default\".",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsSetDefaultServiceAccountRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setUsageExportBucket": {
- "id": "compute.projects.setUsageExportBucket",
- "path": "{project}/setUsageExportBucket",
- "httpMethod": "POST",
- "description": "Enables the usage export feature and sets the usage export bucket where reports are stored. If you provide an empty request body using this method, the usage export feature will be disabled.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "UsageExportLocation"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- }
- }
- },
- "regionAutoscalers": {
- "methods": {
- "delete": {
- "id": "compute.regionAutoscalers.delete",
- "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "autoscaler"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionAutoscalers.get",
- "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
- "httpMethod": "GET",
- "description": "Returns the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "autoscaler"
- ],
- "response": {
- "$ref": "Autoscaler"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionAutoscalers.insert",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "POST",
- "description": "Creates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionAutoscalers.list",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves a list of autoscalers contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionAutoscalerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionAutoscalers.patch",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "PATCH",
- "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to patch.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionAutoscalers.testIamPermissions",
- "path": "{project}/regions/{region}/autoscalers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.regionAutoscalers.update",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "PUT",
- "description": "Updates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to update.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionBackendServices": {
- "methods": {
- "delete": {
- "id": "compute.regionBackendServices.delete",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified regional BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionBackendServices.get",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "GET",
- "description": "Returns the specified regional BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "response": {
- "$ref": "BackendService"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.regionBackendServices.getHealth",
- "path": "{project}/regions/{region}/backendServices/{backendService}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for this regional BackendService.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "ResourceGroupReference"
- },
- "response": {
- "$ref": "BackendServiceGroupHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionBackendServices.insert",
- "path": "{project}/regions/{region}/backendServices",
- "httpMethod": "POST",
- "description": "Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionBackendServices.list",
- "path": "{project}/regions/{region}/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of regional BackendService resources available to the specified project in the given region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "BackendServiceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionBackendServices.patch",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "PATCH",
- "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionBackendServices.testIamPermissions",
- "path": "{project}/regions/{region}/backendServices/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.regionBackendServices.update",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "PUT",
- "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionCommitments": {
- "methods": {
- "aggregatedList": {
- "id": "compute.regionCommitments.aggregatedList",
- "path": "{project}/aggregated/commitments",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of commitments.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "CommitmentAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.regionCommitments.get",
- "path": "{project}/regions/{region}/commitments/{commitment}",
- "httpMethod": "GET",
- "description": "Returns the specified commitment resource. Get a list of available commitments by making a list() request.",
- "parameters": {
- "commitment": {
- "type": "string",
- "description": "Name of the commitment to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "commitment"
- ],
- "response": {
- "$ref": "Commitment"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionCommitments.insert",
- "path": "{project}/regions/{region}/commitments",
- "httpMethod": "POST",
- "description": "Creates a commitment in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Commitment"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionCommitments.list",
- "path": "{project}/regions/{region}/commitments",
- "httpMethod": "GET",
- "description": "Retrieves a list of commitments contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "CommitmentList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionCommitments.testIamPermissions",
- "path": "{project}/regions/{region}/commitments/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regionDiskTypes": {
- "methods": {
- "get": {
- "id": "compute.regionDiskTypes.get",
- "path": "{project}/regions/{region}/diskTypes/{diskType}",
- "httpMethod": "GET",
- "description": "Returns the specified regional disk type. Get a list of available disk types by making a list() request.",
- "parameters": {
- "diskType": {
- "type": "string",
- "description": "Name of the disk type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "diskType"
- ],
- "response": {
- "$ref": "DiskType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regionDiskTypes.list",
- "path": "{project}/regions/{region}/diskTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of regional disk types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionDiskTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regionDisks": {
- "methods": {
- "createSnapshot": {
- "id": "compute.regionDisks.createSnapshot",
- "path": "{project}/regions/{region}/disks/{disk}/createSnapshot",
- "httpMethod": "POST",
- "description": "Creates a snapshot of this regional disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the regional persistent disk to snapshot.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "guestFlush": {
- "type": "boolean",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "disk"
- ],
- "request": {
- "$ref": "Snapshot"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.regionDisks.delete",
- "path": "{project}/regions/{region}/disks/{disk}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified regional persistent disk. Deleting a regional disk removes all the replicas of its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the regional persistent disk to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "disk"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionDisks.get",
- "path": "{project}/regions/{region}/disks/{disk}",
- "httpMethod": "GET",
- "description": "Returns a specified regional persistent disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the regional persistent disk to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "disk"
- ],
- "response": {
- "$ref": "Disk"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionDisks.insert",
- "path": "{project}/regions/{region}/disks",
- "httpMethod": "POST",
- "description": "Creates a persistent regional disk in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sourceImage": {
- "type": "string",
- "description": "Optional. Source image to restore onto a disk.",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Disk"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionDisks.list",
- "path": "{project}/regions/{region}/disks",
- "httpMethod": "GET",
- "description": "Retrieves the list of persistent disks contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "DiskList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "resize": {
- "id": "compute.regionDisks.resize",
- "path": "{project}/regions/{region}/disks/{disk}/resize",
- "httpMethod": "POST",
- "description": "Resizes the specified regional persistent disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the regional persistent disk.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "The project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "disk"
- ],
- "request": {
- "$ref": "RegionDisksResizeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.regionDisks.setLabels",
- "path": "{project}/regions/{region}/disks/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on the target regional disk.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionDisks.testIamPermissions",
- "path": "{project}/regions/{region}/disks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regionInstanceGroupManagers": {
- "methods": {
- "abandonInstances": {
- "id": "compute.regionInstanceGroupManagers.abandonInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "applyUpdatesToInstances": {
- "id": "compute.regionInstanceGroupManagers.applyUpdatesToInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/applyUpdatesToInstances",
- "httpMethod": "POST",
- "description": "Apply updates to selected instances the managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group, should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request, should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersApplyUpdatesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.regionInstanceGroupManagers.delete",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified managed instance group and all of the instances in that group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteInstances": {
- "id": "compute.regionInstanceGroupManagers.deleteInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersDeleteInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deletePerInstanceConfigs": {
- "id": "compute.regionInstanceGroupManagers.deletePerInstanceConfigs",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deletePerInstanceConfigs",
- "httpMethod": "POST",
- "description": "Delete selected per-instance configs for the managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request, should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagerDeleteInstanceConfigReq"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionInstanceGroupManagers.get",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "GET",
- "description": "Returns all of the details about the specified managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group to return.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManager"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionInstanceGroupManagers.insert",
- "path": "{project}/regions/{region}/instanceGroupManagers",
- "httpMethod": "POST",
- "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA regional managed instance group can contain up to 2000 instances.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionInstanceGroupManagers.list",
- "path": "{project}/regions/{region}/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves the list of managed instance groups that are contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionInstanceGroupManagerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listManagedInstances": {
- "id": "compute.regionInstanceGroupManagers.listManagedInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "RegionInstanceGroupManagersListInstancesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listPerInstanceConfigs": {
- "id": "compute.regionInstanceGroupManagers.listPerInstanceConfigs",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listPerInstanceConfigs",
- "httpMethod": "POST",
- "description": "Lists all of the per-instance configs defined for the managed instance group.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request, should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "RegionInstanceGroupManagersListInstanceConfigsResp"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionInstanceGroupManagers.patch",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PATCH",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listmanagedinstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "recreateInstances": {
- "id": "compute.regionInstanceGroupManagers.recreateInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersRecreateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resize": {
- "id": "compute.regionInstanceGroupManagers.resize",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize",
- "httpMethod": "POST",
- "description": "Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "size": {
- "type": "integer",
- "description": "Number of instances that should exist in this instance group manager.",
- "required": true,
- "format": "int32",
- "minimum": "0",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager",
- "size"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setAutoHealingPolicies": {
- "id": "compute.regionInstanceGroupManagers.setAutoHealingPolicies",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
- "httpMethod": "POST",
- "description": "Modifies the autohealing policy for the instances in this managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetAutoHealingRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setInstanceTemplate": {
- "id": "compute.regionInstanceGroupManagers.setInstanceTemplate",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
- "httpMethod": "POST",
- "description": "Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetTemplateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTargetPools": {
- "id": "compute.regionInstanceGroupManagers.setTargetPools",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
- "httpMethod": "POST",
- "description": "Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetTargetPoolsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionInstanceGroupManagers.testIamPermissions",
- "path": "{project}/regions/{region}/instanceGroupManagers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.regionInstanceGroupManagers.update",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PUT",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listmanagedinstances method.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "updatePerInstanceConfigs": {
- "id": "compute.regionInstanceGroupManagers.updatePerInstanceConfigs",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/updatePerInstanceConfigs",
- "httpMethod": "POST",
- "description": "Insert or patch (for the ones that already exist) per-instance configs for the managed instance group. perInstanceConfig.instance serves as a key used to distinguish whether to perform insert or patch.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group. It should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request, should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagerUpdateInstanceConfigReq"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionInstanceGroups": {
- "methods": {
- "get": {
- "id": "compute.regionInstanceGroups.get",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}",
- "httpMethod": "GET",
- "description": "Returns the specified instance group resource.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "Name of the instance group resource to return.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "response": {
- "$ref": "InstanceGroup"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regionInstanceGroups.list",
- "path": "{project}/regions/{region}/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance group resources contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionInstanceGroupList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listInstances": {
- "id": "compute.regionInstanceGroups.listInstances",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroup": {
- "type": "string",
- "description": "Name of the regional instance group for which we want to list the instances.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "request": {
- "$ref": "RegionInstanceGroupsListInstancesRequest"
- },
- "response": {
- "$ref": "RegionInstanceGroupsListInstances"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setNamedPorts": {
- "id": "compute.regionInstanceGroups.setNamedPorts",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts",
- "httpMethod": "POST",
- "description": "Sets the named ports for the specified regional instance group.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the regional instance group where the named ports are updated.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "request": {
- "$ref": "RegionInstanceGroupsSetNamedPortsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionInstanceGroups.testIamPermissions",
- "path": "{project}/regions/{region}/instanceGroups/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regionOperations": {
- "methods": {
- "delete": {
- "id": "compute.regionOperations.delete",
- "path": "{project}/regions/{region}/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified region-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionOperations.get",
- "path": "{project}/regions/{region}/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified region-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regionOperations.list",
- "path": "{project}/regions/{region}/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regions": {
- "methods": {
- "get": {
- "id": "compute.regions.get",
- "path": "{project}/regions/{region}",
- "httpMethod": "GET",
- "description": "Returns the specified Region resource. Get a list of available regions by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "Region"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regions.list",
- "path": "{project}/regions",
- "httpMethod": "GET",
- "description": "Retrieves the list of region resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RegionList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "routers": {
- "methods": {
- "aggregatedList": {
- "id": "compute.routers.aggregatedList",
- "path": "{project}/aggregated/routers",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of routers.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RouterAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.routers.delete",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Router resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.routers.get",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "GET",
- "description": "Returns the specified Router resource. Get a list of available routers by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "Router"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getRouterStatus": {
- "id": "compute.routers.getRouterStatus",
- "path": "{project}/regions/{region}/routers/{router}/getRouterStatus",
- "httpMethod": "GET",
- "description": "Retrieves runtime information of the specified router.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to query.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "RouterStatusResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.routers.insert",
- "path": "{project}/regions/{region}/routers",
- "httpMethod": "POST",
- "description": "Creates a Router resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.routers.list",
- "path": "{project}/regions/{region}/routers",
- "httpMethod": "GET",
- "description": "Retrieves a list of Router resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RouterList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.routers.patch",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "PATCH",
- "description": "Patches the specified Router resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "preview": {
- "id": "compute.routers.preview",
- "path": "{project}/regions/{region}/routers/{router}/preview",
- "httpMethod": "POST",
- "description": "Preview fields auto-generated during router create and update operations. Calling this method does NOT create or update the router.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to query.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "RoutersPreviewResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.routers.testIamPermissions",
- "path": "{project}/regions/{region}/routers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.routers.update",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "PUT",
- "description": "Updates the specified Router resource with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "routes": {
- "methods": {
- "delete": {
- "id": "compute.routes.delete",
- "path": "{project}/global/routes/{route}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Route resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "route": {
- "type": "string",
- "description": "Name of the Route resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "route"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.routes.get",
- "path": "{project}/global/routes/{route}",
- "httpMethod": "GET",
- "description": "Returns the specified Route resource. Get a list of available routes by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "route": {
- "type": "string",
- "description": "Name of the Route resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "route"
- ],
- "response": {
- "$ref": "Route"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.routes.insert",
- "path": "{project}/global/routes",
- "httpMethod": "POST",
- "description": "Creates a Route resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Route"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.routes.list",
- "path": "{project}/global/routes",
- "httpMethod": "GET",
- "description": "Retrieves the list of Route resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RouteList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.routes.testIamPermissions",
- "path": "{project}/global/routes/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "securityPolicies": {
- "methods": {
- "addRule": {
- "id": "compute.securityPolicies.addRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/addRule",
- "httpMethod": "POST",
- "description": "Inserts a rule into a security policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "request": {
- "$ref": "SecurityPolicyRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.securityPolicies.delete",
- "path": "{project}/global/securityPolicies/{securityPolicy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.securityPolicies.get",
- "path": "{project}/global/securityPolicies/{securityPolicy}",
- "httpMethod": "GET",
- "description": "List all of the ordered rules present in a single specified policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to get.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "SecurityPolicy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getRule": {
- "id": "compute.securityPolicies.getRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/getRule",
- "httpMethod": "GET",
- "description": "Gets a rule at the specified priority.",
- "parameters": {
- "priority": {
- "type": "integer",
- "description": "The priority of the rule to get from the security policy.",
- "format": "int32",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to which the queried rule belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "SecurityPolicyRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.securityPolicies.insert",
- "path": "{project}/global/securityPolicies",
- "httpMethod": "POST",
- "description": "Creates a new policy in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "SecurityPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.securityPolicies.list",
- "path": "{project}/global/securityPolicies",
- "httpMethod": "GET",
- "description": "List all the policies that have been configured for the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SecurityPolicyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.securityPolicies.patch",
- "path": "{project}/global/securityPolicies/{securityPolicy}",
- "httpMethod": "PATCH",
- "description": "Patches the specified policy with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "request": {
- "$ref": "SecurityPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "patchRule": {
- "id": "compute.securityPolicies.patchRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/patchRule",
- "httpMethod": "POST",
- "description": "Patches a rule at the specified priority.",
- "parameters": {
- "priority": {
- "type": "integer",
- "description": "The priority of the rule to patch.",
- "format": "int32",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "request": {
- "$ref": "SecurityPolicyRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "removeRule": {
- "id": "compute.securityPolicies.removeRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/removeRule",
- "httpMethod": "POST",
- "description": "Deletes a rule at the specified priority.",
- "parameters": {
- "priority": {
- "type": "integer",
- "description": "The priority of the rule to remove from the security policy.",
- "format": "int32",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.securityPolicies.testIamPermissions",
- "path": "{project}/global/securityPolicies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "snapshots": {
- "methods": {
- "delete": {
- "id": "compute.snapshots.delete",
- "path": "{project}/global/snapshots/{snapshot}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not necessarily delete all the data on that snapshot. If any data on the snapshot that is marked for deletion is needed for subsequent snapshots, the data will be moved to the next corresponding snapshot.\n\nFor more information, see Deleting snaphots.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "snapshot": {
- "type": "string",
- "description": "Name of the Snapshot resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "snapshot"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.snapshots.get",
- "path": "{project}/global/snapshots/{snapshot}",
- "httpMethod": "GET",
- "description": "Returns the specified Snapshot resource. Get a list of available snapshots by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "snapshot": {
- "type": "string",
- "description": "Name of the Snapshot resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "snapshot"
- ],
- "response": {
- "$ref": "Snapshot"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.snapshots.getIamPolicy",
- "path": "{project}/global/snapshots/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.snapshots.list",
- "path": "{project}/global/snapshots",
- "httpMethod": "GET",
- "description": "Retrieves the list of Snapshot resources contained within the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SnapshotList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setIamPolicy": {
- "id": "compute.snapshots.setIamPolicy",
- "path": "{project}/global/snapshots/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z0-9](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.snapshots.setLabels",
- "path": "{project}/global/snapshots/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a snapshot. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.snapshots.testIamPermissions",
- "path": "{project}/global/snapshots/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "sslCertificates": {
- "methods": {
- "delete": {
- "id": "compute.sslCertificates.delete",
- "path": "{project}/global/sslCertificates/{sslCertificate}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified SslCertificate resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sslCertificate": {
- "type": "string",
- "description": "Name of the SslCertificate resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslCertificate"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.sslCertificates.get",
- "path": "{project}/global/sslCertificates/{sslCertificate}",
- "httpMethod": "GET",
- "description": "Returns the specified SslCertificate resource. Get a list of available SSL certificates by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "sslCertificate": {
- "type": "string",
- "description": "Name of the SslCertificate resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslCertificate"
- ],
- "response": {
- "$ref": "SslCertificate"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.sslCertificates.insert",
- "path": "{project}/global/sslCertificates",
- "httpMethod": "POST",
- "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "SslCertificate"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.sslCertificates.list",
- "path": "{project}/global/sslCertificates",
- "httpMethod": "GET",
- "description": "Retrieves the list of SslCertificate resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SslCertificateList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.sslCertificates.testIamPermissions",
- "path": "{project}/global/sslCertificates/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "sslPolicies": {
- "methods": {
- "delete": {
- "id": "compute.sslPolicies.delete",
- "path": "{project}/global/sslPolicies/{sslPolicy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified SSL policy. The SSL policy resource can be deleted only if it is not in use by any TargetHttpsProxy or TargetSslProxy resources.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sslPolicy": {
- "type": "string",
- "description": "Name of the SSL policy to delete. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslPolicy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.sslPolicies.get",
- "path": "{project}/global/sslPolicies/{sslPolicy}",
- "httpMethod": "GET",
- "description": "List all of the ordered rules present in a single specified policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "sslPolicy": {
- "type": "string",
- "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslPolicy"
- ],
- "response": {
- "$ref": "SslPolicy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.sslPolicies.insert",
- "path": "{project}/global/sslPolicies",
- "httpMethod": "POST",
- "description": "Returns the specified SSL policy resource. Get a list of available SSL policies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "SslPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.sslPolicies.list",
- "path": "{project}/global/sslPolicies",
- "httpMethod": "GET",
- "description": "List all the SSL policies that have been configured for the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SslPoliciesList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listAvailableFeatures": {
- "id": "compute.sslPolicies.listAvailableFeatures",
- "path": "{project}/global/sslPolicies/listAvailableFeatures",
- "httpMethod": "GET",
- "description": "Lists all features that can be specified in the SSL policy when using custom profile.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SslPoliciesListAvailableFeaturesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.sslPolicies.patch",
- "path": "{project}/global/sslPolicies/{sslPolicy}",
- "httpMethod": "PATCH",
- "description": "Patches the specified SSL policy with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sslPolicy": {
- "type": "string",
- "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslPolicy"
- ],
- "request": {
- "$ref": "SslPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.sslPolicies.testIamPermissions",
- "path": "{project}/global/sslPolicies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "subnetworks": {
- "methods": {
- "aggregatedList": {
- "id": "compute.subnetworks.aggregatedList",
- "path": "{project}/aggregated/subnetworks",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of subnetworks.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SubnetworkAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.subnetworks.delete",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified subnetwork.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "expandIpCidrRange": {
- "id": "compute.subnetworks.expandIpCidrRange",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange",
- "httpMethod": "POST",
- "description": "Expands the IP CIDR range of the subnetwork to a specified value.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "SubnetworksExpandIpCidrRangeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.subnetworks.get",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "GET",
- "description": "Returns the specified subnetwork. Get a list of available subnetworks list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "response": {
- "$ref": "Subnetwork"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.subnetworks.getIamPolicy",
- "path": "{project}/regions/{region}/subnetworks/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.subnetworks.insert",
- "path": "{project}/regions/{region}/subnetworks",
- "httpMethod": "POST",
- "description": "Creates a subnetwork in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Subnetwork"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.subnetworks.list",
- "path": "{project}/regions/{region}/subnetworks",
- "httpMethod": "GET",
- "description": "Retrieves a list of subnetworks available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "SubnetworkList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listUsable": {
- "id": "compute.subnetworks.listUsable",
- "path": "{project}/aggregated/subnetworks/listUsable",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of usable subnetworks.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "UsableSubnetworksAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.subnetworks.patch",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "PATCH",
- "description": "Patches the specified subnetwork with the data included in the request. Only the following fields within the subnetwork resource can be specified in the request: secondary_ip_range and allow_subnet_cidr_routes_overlap. It is also mandatory to specify the current fingeprint of the subnetwork resource being patched.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "Subnetwork"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setIamPolicy": {
- "id": "compute.subnetworks.setIamPolicy",
- "path": "{project}/regions/{region}/subnetworks/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setPrivateIpGoogleAccess": {
- "id": "compute.subnetworks.setPrivateIpGoogleAccess",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess",
- "httpMethod": "POST",
- "description": "Set whether VMs in this subnet can access Google services without assigning external IP addresses through Private Google Access.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "SubnetworksSetPrivateIpGoogleAccessRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.subnetworks.testIamPermissions",
- "path": "{project}/regions/{region}/subnetworks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetHttpProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetHttpProxies.delete",
- "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetHttpProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetHttpProxies.get",
- "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetHttpProxy resource. Get a list of available target HTTP proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "response": {
- "$ref": "TargetHttpProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetHttpProxies.insert",
- "path": "{project}/global/targetHttpProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetHttpProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetHttpProxies.list",
- "path": "{project}/global/targetHttpProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetHttpProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetHttpProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setUrlMap": {
- "id": "compute.targetHttpProxies.setUrlMap",
- "path": "{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
- "httpMethod": "POST",
- "description": "Changes the URL map for TargetHttpProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy to set a URL map for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "request": {
- "$ref": "UrlMapReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetHttpProxies.testIamPermissions",
- "path": "{project}/global/targetHttpProxies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetHttpsProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetHttpsProxies.delete",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetHttpsProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetHttpsProxies.get",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetHttpsProxy resource. Get a list of available target HTTPS proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "response": {
- "$ref": "TargetHttpsProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetHttpsProxies.insert",
- "path": "{project}/global/targetHttpsProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetHttpsProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetHttpsProxies.list",
- "path": "{project}/global/targetHttpsProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetHttpsProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setQuicOverride": {
- "id": "compute.targetHttpsProxies.setQuicOverride",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setQuicOverride",
- "httpMethod": "POST",
- "description": "Sets the QUIC override policy for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to set the QUIC override policy for. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "TargetHttpsProxiesSetQuicOverrideRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslCertificates": {
- "id": "compute.targetHttpsProxies.setSslCertificates",
- "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
- "httpMethod": "POST",
- "description": "Replaces SslCertificates for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "TargetHttpsProxiesSetSslCertificatesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslPolicy": {
- "id": "compute.targetHttpsProxies.setSslPolicy",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setSslPolicy",
- "httpMethod": "POST",
- "description": "Sets the SSL policy for TargetHttpsProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the HTTPS proxy load balancer. They do not affect the connection between the load balancer and the backends.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "SslPolicyReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setUrlMap": {
- "id": "compute.targetHttpsProxies.setUrlMap",
- "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
- "httpMethod": "POST",
- "description": "Changes the URL map for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource whose URL map is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "UrlMapReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetHttpsProxies.testIamPermissions",
- "path": "{project}/global/targetHttpsProxies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetInstances": {
- "methods": {
- "aggregatedList": {
- "id": "compute.targetInstances.aggregatedList",
- "path": "{project}/aggregated/targetInstances",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of target instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetInstanceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.targetInstances.delete",
- "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetInstance resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetInstance": {
- "type": "string",
- "description": "Name of the TargetInstance resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "targetInstance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetInstances.get",
- "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetInstance resource. Get a list of available target instances by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetInstance": {
- "type": "string",
- "description": "Name of the TargetInstance resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "targetInstance"
- ],
- "response": {
- "$ref": "TargetInstance"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetInstances.insert",
- "path": "{project}/zones/{zone}/targetInstances",
- "httpMethod": "POST",
- "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "TargetInstance"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetInstances.list",
- "path": "{project}/zones/{zone}/targetInstances",
- "httpMethod": "GET",
- "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "TargetInstanceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetInstances.testIamPermissions",
- "path": "{project}/zones/{zone}/targetInstances/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetPools": {
- "methods": {
- "addHealthCheck": {
- "id": "compute.targetPools.addHealthCheck",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck",
- "httpMethod": "POST",
- "description": "Adds health check URLs to a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the target pool to add a health check to.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsAddHealthCheckRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "addInstance": {
- "id": "compute.targetPools.addInstance",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/addInstance",
- "httpMethod": "POST",
- "description": "Adds an instance to a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to add instances to.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsAddInstanceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.targetPools.aggregatedList",
- "path": "{project}/aggregated/targetPools",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of target pools.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetPoolAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.targetPools.delete",
- "path": "{project}/regions/{region}/targetPools/{targetPool}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetPools.get",
- "path": "{project}/regions/{region}/targetPools/{targetPool}",
- "httpMethod": "GET",
- "description": "Returns the specified target pool. Get a list of available target pools by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "response": {
- "$ref": "TargetPool"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.targetPools.getHealth",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for each IP for the instance that is referenced by the given target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "InstanceReference"
- },
- "response": {
- "$ref": "TargetPoolInstanceHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetPools.insert",
- "path": "{project}/regions/{region}/targetPools",
- "httpMethod": "POST",
- "description": "Creates a target pool in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "TargetPool"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetPools.list",
- "path": "{project}/regions/{region}/targetPools",
- "httpMethod": "GET",
- "description": "Retrieves a list of target pools available to the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "TargetPoolList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "removeHealthCheck": {
- "id": "compute.targetPools.removeHealthCheck",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck",
- "httpMethod": "POST",
- "description": "Removes health check URL from a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the target pool to remove health checks from.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsRemoveHealthCheckRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "removeInstance": {
- "id": "compute.targetPools.removeInstance",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/removeInstance",
- "httpMethod": "POST",
- "description": "Removes instance URL from a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to remove instances from.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsRemoveInstanceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setBackup": {
- "id": "compute.targetPools.setBackup",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/setBackup",
- "httpMethod": "POST",
- "description": "Changes a backup target pool's configurations.",
- "parameters": {
- "failoverRatio": {
- "type": "number",
- "description": "New failoverRatio value for the target pool.",
- "format": "float",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to set a backup pool for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetPools.testIamPermissions",
- "path": "{project}/regions/{region}/targetPools/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetSslProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetSslProxies.delete",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetSslProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetSslProxies.get",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetSslProxy resource. Get a list of available target SSL proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "response": {
- "$ref": "TargetSslProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetSslProxies.insert",
- "path": "{project}/global/targetSslProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetSslProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetSslProxies.list",
- "path": "{project}/global/targetSslProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetSslProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetSslProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setBackendService": {
- "id": "compute.targetSslProxies.setBackendService",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setBackendService",
- "httpMethod": "POST",
- "description": "Changes the BackendService for TargetSslProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose BackendService resource is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "TargetSslProxiesSetBackendServiceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setProxyHeader": {
- "id": "compute.targetSslProxies.setProxyHeader",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader",
- "httpMethod": "POST",
- "description": "Changes the ProxyHeaderType for TargetSslProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose ProxyHeader is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "TargetSslProxiesSetProxyHeaderRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslCertificates": {
- "id": "compute.targetSslProxies.setSslCertificates",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates",
- "httpMethod": "POST",
- "description": "Changes SslCertificates for TargetSslProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose SslCertificate resource is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "TargetSslProxiesSetSslCertificatesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslPolicy": {
- "id": "compute.targetSslProxies.setSslPolicy",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
- "httpMethod": "POST",
- "description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "SslPolicyReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetSslProxies.testIamPermissions",
- "path": "{project}/global/targetSslProxies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetTcpProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetTcpProxies.delete",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetTcpProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetTcpProxies.get",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetTcpProxy resource. Get a list of available target TCP proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "response": {
- "$ref": "TargetTcpProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetTcpProxies.insert",
- "path": "{project}/global/targetTcpProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetTcpProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetTcpProxies.list",
- "path": "{project}/global/targetTcpProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetTcpProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetTcpProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setBackendService": {
- "id": "compute.targetTcpProxies.setBackendService",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService",
- "httpMethod": "POST",
- "description": "Changes the BackendService for TargetTcpProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource whose BackendService resource is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "request": {
- "$ref": "TargetTcpProxiesSetBackendServiceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setProxyHeader": {
- "id": "compute.targetTcpProxies.setProxyHeader",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader",
- "httpMethod": "POST",
- "description": "Changes the ProxyHeaderType for TargetTcpProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource whose ProxyHeader is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "request": {
- "$ref": "TargetTcpProxiesSetProxyHeaderRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetTcpProxies.testIamPermissions",
- "path": "{project}/global/targetTcpProxies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetVpnGateways": {
- "methods": {
- "aggregatedList": {
- "id": "compute.targetVpnGateways.aggregatedList",
- "path": "{project}/aggregated/targetVpnGateways",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of target VPN gateways.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetVpnGatewayAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.targetVpnGateways.delete",
- "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified target VPN gateway.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetVpnGateway": {
- "type": "string",
- "description": "Name of the target VPN gateway to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetVpnGateway"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetVpnGateways.get",
- "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
- "httpMethod": "GET",
- "description": "Returns the specified target VPN gateway. Get a list of available target VPN gateways by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "targetVpnGateway": {
- "type": "string",
- "description": "Name of the target VPN gateway to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetVpnGateway"
- ],
- "response": {
- "$ref": "TargetVpnGateway"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetVpnGateways.insert",
- "path": "{project}/regions/{region}/targetVpnGateways",
- "httpMethod": "POST",
- "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "TargetVpnGateway"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetVpnGateways.list",
- "path": "{project}/regions/{region}/targetVpnGateways",
- "httpMethod": "GET",
- "description": "Retrieves a list of target VPN gateways available to the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "TargetVpnGatewayList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.targetVpnGateways.setLabels",
- "path": "{project}/regions/{region}/targetVpnGateways/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a TargetVpnGateway. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetVpnGateways.testIamPermissions",
- "path": "{project}/regions/{region}/targetVpnGateways/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "urlMaps": {
- "methods": {
- "delete": {
- "id": "compute.urlMaps.delete",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified UrlMap resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.urlMaps.get",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "GET",
- "description": "Returns the specified UrlMap resource. Get a list of available URL maps by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "response": {
- "$ref": "UrlMap"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.urlMaps.insert",
- "path": "{project}/global/urlMaps",
- "httpMethod": "POST",
- "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "UrlMap"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "invalidateCache": {
- "id": "compute.urlMaps.invalidateCache",
- "path": "{project}/global/urlMaps/{urlMap}/invalidateCache",
- "httpMethod": "POST",
- "description": "Initiates a cache invalidation operation, invalidating the specified path, scoped to the specified UrlMap.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "CacheInvalidationRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.urlMaps.list",
- "path": "{project}/global/urlMaps",
- "httpMethod": "GET",
- "description": "Retrieves the list of UrlMap resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "UrlMapList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.urlMaps.patch",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "PATCH",
- "description": "Patches the specified UrlMap resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "UrlMap"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.urlMaps.testIamPermissions",
- "path": "{project}/global/urlMaps/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.urlMaps.update",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "PUT",
- "description": "Updates the specified UrlMap resource with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "UrlMap"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "validate": {
- "id": "compute.urlMaps.validate",
- "path": "{project}/global/urlMaps/{urlMap}/validate",
- "httpMethod": "POST",
- "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to be validated as.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "UrlMapsValidateRequest"
- },
- "response": {
- "$ref": "UrlMapsValidateResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "vpnTunnels": {
- "methods": {
- "aggregatedList": {
- "id": "compute.vpnTunnels.aggregatedList",
- "path": "{project}/aggregated/vpnTunnels",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of VPN tunnels.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "VpnTunnelAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.vpnTunnels.delete",
- "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified VpnTunnel resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "vpnTunnel": {
- "type": "string",
- "description": "Name of the VpnTunnel resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "vpnTunnel"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.vpnTunnels.get",
- "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
- "httpMethod": "GET",
- "description": "Returns the specified VpnTunnel resource. Get a list of available VPN tunnels by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "vpnTunnel": {
- "type": "string",
- "description": "Name of the VpnTunnel resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "vpnTunnel"
- ],
- "response": {
- "$ref": "VpnTunnel"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.vpnTunnels.insert",
- "path": "{project}/regions/{region}/vpnTunnels",
- "httpMethod": "POST",
- "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "VpnTunnel"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.vpnTunnels.list",
- "path": "{project}/regions/{region}/vpnTunnels",
- "httpMethod": "GET",
- "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "VpnTunnelList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.vpnTunnels.setLabels",
- "path": "{project}/regions/{region}/vpnTunnels/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a VpnTunnel. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.vpnTunnels.testIamPermissions",
- "path": "{project}/regions/{region}/vpnTunnels/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "zoneOperations": {
- "methods": {
- "delete": {
- "id": "compute.zoneOperations.delete",
- "path": "{project}/zones/{zone}/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified zone-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.zoneOperations.get",
- "path": "{project}/zones/{zone}/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified zone-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.zoneOperations.list",
- "path": "{project}/zones/{zone}/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
+ "revision": "20180220",
+ "rootUrl": "https://www.googleapis.com/",
+ "schemas": {
+ "AcceleratorConfig": {
+ "description": "A specification of the type and number of accelerator cards attached to the instance.",
+ "id": "AcceleratorConfig",
+ "properties": {
+ "acceleratorCount": {
+ "description": "The number of the guest accelerator cards exposed to this instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "acceleratorType": {
+ "description": "Full or partial URL of the accelerator type resource to attach to this instance. If you are creating an instance template, specify only the accelerator name.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AcceleratorType": {
+ "description": "An Accelerator Type resource. (== resource_for beta.acceleratorTypes ==) (== resource_for v1.acceleratorTypes ==)",
+ "id": "AcceleratorType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this accelerator type."
+ },
+ "description": {
+ "description": "[Output Only] An optional textual description of the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#acceleratorType",
+ "description": "[Output Only] The type of the resource. Always compute#acceleratorType for accelerator types.",
+ "type": "string"
+ },
+ "maximumCardsPerInstance": {
+ "description": "[Output Only] Maximum accelerator cards allowed per instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The name of the zone where the accelerator type resides, such as us-central1-a. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AcceleratorTypeAggregatedList": {
+ "id": "AcceleratorTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AcceleratorTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of accelerator types."
+ },
+ "description": "A list of AcceleratorTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#acceleratorTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#acceleratorTypeAggregatedList for aggregated lists of accelerator types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AcceleratorTypeList": {
+ "description": "Contains a list of accelerator types.",
+ "id": "AcceleratorTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of AcceleratorType resources.",
+ "items": {
+ "$ref": "AcceleratorType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#acceleratorTypeList",
+ "description": "[Output Only] Type of resource. Always compute#acceleratorTypeList for lists of accelerator types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AcceleratorTypesScopedList": {
+ "id": "AcceleratorTypesScopedList",
+ "properties": {
+ "acceleratorTypes": {
+ "description": "[Output Only] List of accelerator types contained in this scope.",
+ "items": {
+ "$ref": "AcceleratorType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that appears when the accelerator types list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AccessConfig": {
+ "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
+ "id": "AccessConfig",
+ "properties": {
+ "kind": {
+ "default": "compute#accessConfig",
+ "description": "[Output Only] Type of the resource. Always compute#accessConfig for access configs.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of this access configuration. The default and recommended name is External NAT but you can use any arbitrary string you would like. For example, My external IP or Network Access.",
+ "type": "string"
+ },
+ "natIP": {
+ "description": "An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.",
+ "type": "string"
+ },
+ "networkTier": {
+ "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD.\n\nIf an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier.\n\nIf an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP.",
+ "enum": [
+ "PREMIUM",
+ "SELECT",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "publicDnsName": {
+ "description": "[Output Only] The public DNS domain name for the instance.",
+ "type": "string"
+ },
+ "publicPtrDomainName": {
+ "description": "The DNS domain name for the public PTR record. This field can only be set when the set_public_ptr field is enabled.",
+ "type": "string"
+ },
+ "setPublicDns": {
+ "description": "Specifies whether a public DNS ?A? record should be created for the external IP address of this access configuration.",
+ "type": "boolean"
+ },
+ "setPublicPtr": {
+ "description": "Specifies whether a public DNS ?PTR? record should be created to map the external IP address of the instance to a DNS domain name.",
+ "type": "boolean"
+ },
+ "type": {
+ "default": "ONE_TO_ONE_NAT",
+ "description": "The type of configuration. The default and only option is ONE_TO_ONE_NAT.",
+ "enum": [
+ "ONE_TO_ONE_NAT"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Address": {
+ "description": "A reserved address resource. (== resource_for beta.addresses ==) (== resource_for v1.addresses ==) (== resource_for beta.globalAddresses ==) (== resource_for v1.globalAddresses ==)",
+ "id": "Address",
+ "properties": {
+ "address": {
+ "description": "The static IP address represented by this resource.",
+ "type": "string"
+ },
+ "addressType": {
+ "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
+ "enum": [
+ "DNS_FORWARDING",
+ "EXTERNAL",
+ "INTERNAL",
+ "UNSPECIFIED_TYPE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipVersion": {
+ "description": "The IP Version that will be used by this address. Valid options are IPV4 or IPV6. This can only be specified for a global address.",
+ "enum": [
+ "IPV4",
+ "IPV6",
+ "UNSPECIFIED_VERSION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#address",
+ "description": "[Output Only] Type of the resource. Always compute#address for addresses.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an Address.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.addresses.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "The URL of the network in which to reserve the address. This field can only be used with INTERNAL type with VPC_PEERING purpose.",
+ "type": "string"
+ },
+ "networkTier": {
+ "description": "This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD.\n\nIf this field is not specified, it is assumed to be PREMIUM.",
+ "enum": [
+ "PREMIUM",
+ "SELECT",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "prefixLength": {
+ "description": "The prefix length if the resource reprensents an IP range.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "purpose": {
+ "description": "The purpose of resource, only used with INTERNAL type.",
+ "enum": [
+ "DNS_RESOLVER",
+ "GCE_ENDPOINT",
+ "UNSPECIFIED_PURPOSE",
+ "VPC_PEERING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses. You must specify this field as part of the HTTP request URL. You cannot set this field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
+ "enum": [
+ "IN_USE",
+ "RESERVED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with GCE_ENDPOINT/DNS_RESOLVER purposes.",
+ "type": "string"
+ },
+ "users": {
+ "description": "[Output Only] The URLs of the resources that are using this address.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "AddressAggregatedList": {
+ "id": "AddressAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AddressesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of addresses."
+ },
+ "description": "A list of AddressesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#addressAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#addressAggregatedList for aggregated lists of addresses.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AddressList": {
+ "description": "Contains a list of addresses.",
+ "id": "AddressList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Address resources.",
+ "items": {
+ "$ref": "Address"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#addressList",
+ "description": "[Output Only] Type of resource. Always compute#addressList for lists of addresses.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AddressesScopedList": {
+ "id": "AddressesScopedList",
+ "properties": {
+ "addresses": {
+ "description": "[Output Only] List of addresses contained in this scope.",
+ "items": {
+ "$ref": "Address"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AliasIpRange": {
+ "description": "An alias IP range attached to an instance's network interface.",
+ "id": "AliasIpRange",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24).",
+ "type": "string"
+ },
+ "subnetworkRangeName": {
+ "description": "Optional subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AttachedDisk": {
+ "description": "An instance-attached disk resource.",
+ "id": "AttachedDisk",
+ "properties": {
+ "autoDelete": {
+ "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).",
+ "type": "boolean"
+ },
+ "boot": {
+ "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.",
+ "type": "boolean"
+ },
+ "deviceName": {
+ "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance.\n\nIf not specified, the server chooses a default device name to apply to this disk, in the form persistent-disks-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
+ "type": "string"
+ },
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
+ },
+ "diskSizeGb": {
+ "description": "The size of the disk in base-2 GB. This supersedes disk_size_gb in InitializeParams.",
+ "format": "int64",
+ "type": "string"
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "index": {
+ "description": "[Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "initializeParams": {
+ "$ref": "AttachedDiskInitializeParams",
+ "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both."
+ },
+ "interface": {
+ "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
+ "enum": [
+ "NVME",
+ "SCSI"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#attachedDisk",
+ "description": "[Output Only] Type of the resource. Always compute#attachedDisk for attached disks.",
+ "type": "string"
+ },
+ "licenses": {
+ "description": "[Output Only] Any valid publicly visible licenses.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "mode": {
+ "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
+ "enum": [
+ "READ_ONLY",
+ "READ_WRITE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "savedState": {
+ "description": "For LocalSSD disks on VM Instances in STOPPED or SUSPENDED state, this field is set to PRESERVED iff the LocalSSD data has been saved to a persistent location by customer request. (see the discard_local_ssd option on Stop/Suspend). Read-only in the api.",
+ "enum": [
+ "DISK_SAVED_STATE_UNSPECIFIED",
+ "PRESERVED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "source": {
+ "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
+ "enum": [
+ "PERSISTENT",
+ "SCRATCH"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AttachedDiskInitializeParams": {
+ "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both.",
+ "id": "AttachedDiskInitializeParams",
+ "properties": {
+ "diskName": {
+ "description": "Specifies the disk name. If not specified, the default is to use the name of the instance.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "Specifies the size of the disk in base-2 GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "diskStorageType": {
+ "description": "[Deprecated] Storage type of the disk.",
+ "enum": [
+ "HDD",
+ "SSD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "diskType": {
+ "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard\n\n\nOther values include pd-ssd and local-ssd. If you define this field, you can provide either the full or partial URL. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType \n- projects/project/zones/zone/diskTypes/diskType \n- zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is the name of the disk type, not URL.",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks.",
+ "type": "object"
+ },
+ "sourceImage": {
+ "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\nprojects/debian-cloud/global/images/family/debian-8\n\n\nAlternatively, use a specific version of a public operating system image:\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD\n\n\nTo create a disk with a custom image that you created, specify the image name in the following format:\nglobal/images/my-custom-image\n\n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\nglobal/images/family/my-image-family\n\n\nIf the source image is deleted later, this field will not be set.",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys."
+ }
+ },
+ "type": "object"
+ },
+ "AuditConfig": {
+ "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n{ \"audit_configs\": [ { \"service\": \"allServices\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", }, { \"log_type\": \"ADMIN_READ\", } ] }, { \"service\": \"fooservice.googleapis.com\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:bar@gmail.com\" ] } ] } ] }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts foo@gmail.com from DATA_READ logging, and bar@gmail.com from DATA_WRITE logging.",
+ "id": "AuditConfig",
+ "properties": {
+ "auditLogConfigs": {
+ "description": "The configuration for logging of each type of permission.",
+ "items": {
+ "$ref": "AuditLogConfig"
+ },
+ "type": "array"
+ },
+ "exemptedMembers": {
+ "description": "",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "service": {
+ "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AuditLogConfig": {
+ "description": "Provides the configuration for logging a type of permissions. Example:\n\n{ \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", } ] }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting foo@gmail.com from DATA_READ logging.",
+ "id": "AuditLogConfig",
+ "properties": {
+ "exemptedMembers": {
+ "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of [Binding.members][].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "logType": {
+ "description": "The log type that this config enables.",
+ "enum": [
+ "ADMIN_READ",
+ "DATA_READ",
+ "DATA_WRITE",
+ "LOG_TYPE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AuthorizationLoggingOptions": {
+ "description": "Authorization-related information used by Cloud Audit Logging.",
+ "id": "AuthorizationLoggingOptions",
+ "properties": {
+ "permissionType": {
+ "description": "The type of the permission that was checked.",
+ "enum": [
+ "ADMIN_READ",
+ "ADMIN_WRITE",
+ "DATA_READ",
+ "DATA_WRITE",
+ "PERMISSION_TYPE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Autoscaler": {
+ "description": "Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances. (== resource_for beta.autoscalers ==) (== resource_for v1.autoscalers ==) (== resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==)",
+ "id": "Autoscaler",
+ "properties": {
+ "autoscalingPolicy": {
+ "$ref": "AutoscalingPolicy",
+ "description": "The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#autoscaler",
+ "description": "[Output Only] Type of the resource. Always compute#autoscaler for autoscalers.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroups.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "recommendedSize": {
+ "description": "[Output Only] Target recommended MIG size computed by autoscaler. Autoscaler calculates recommended MIG size even when autoscaling policy mode is different from ON. This field is empty when autoscaler is not connected to the existing managed instance group or autoscaler did not generate its first prediction.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the autoscaler configuration.",
+ "enum": [
+ "ACTIVE",
+ "DELETING",
+ "ERROR",
+ "PENDING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusDetails": {
+ "description": "[Output Only] Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
+ "items": {
+ "$ref": "AutoscalerStatusDetails"
+ },
+ "type": "array"
+ },
+ "target": {
+ "description": "URL of the managed instance group that this autoscaler will scale.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalerAggregatedList": {
+ "id": "AutoscalerAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AutoscalersScopedList",
+ "description": "[Output Only] Name of the scope containing this set of autoscalers."
+ },
+ "description": "A list of AutoscalersScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#autoscalerAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#autoscalerAggregatedList for aggregated lists of autoscalers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalerList": {
+ "description": "Contains a list of Autoscaler resources.",
+ "id": "AutoscalerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Autoscaler resources.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#autoscalerList",
+ "description": "[Output Only] Type of resource. Always compute#autoscalerList for lists of autoscalers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalerStatusDetails": {
+ "id": "AutoscalerStatusDetails",
+ "properties": {
+ "message": {
+ "description": "The status message.",
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of error returned.",
+ "enum": [
+ "ALL_INSTANCES_UNHEALTHY",
+ "BACKEND_SERVICE_DOES_NOT_EXIST",
+ "CAPPED_AT_MAX_NUM_REPLICAS",
+ "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE",
+ "CUSTOM_METRIC_INVALID",
+ "MIN_EQUALS_MAX",
+ "MISSING_CUSTOM_METRIC_DATA_POINTS",
+ "MISSING_LOAD_BALANCING_DATA_POINTS",
+ "MORE_THAN_ONE_BACKEND_SERVICE",
+ "NOT_ENOUGH_QUOTA_AVAILABLE",
+ "REGION_RESOURCE_STOCKOUT",
+ "SCALING_TARGET_DOES_NOT_EXIST",
+ "UNKNOWN",
+ "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION",
+ "ZONE_RESOURCE_STOCKOUT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalersScopedList": {
+ "id": "AutoscalersScopedList",
+ "properties": {
+ "autoscalers": {
+ "description": "[Output Only] List of autoscalers contained in this scope.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of autoscalers when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicy": {
+ "description": "Cloud Autoscaler policy.",
+ "id": "AutoscalingPolicy",
+ "properties": {
+ "coolDownPeriodSec": {
+ "description": "The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "cpuUtilization": {
+ "$ref": "AutoscalingPolicyCpuUtilization",
+ "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
+ },
+ "customMetricUtilizations": {
+ "description": "Configuration parameters of autoscaling based on a custom metric.",
+ "items": {
+ "$ref": "AutoscalingPolicyCustomMetricUtilization"
+ },
+ "type": "array"
+ },
+ "loadBalancingUtilization": {
+ "$ref": "AutoscalingPolicyLoadBalancingUtilization",
+ "description": "Configuration parameters of autoscaling based on load balancer."
+ },
+ "maxNumReplicas": {
+ "description": "The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minNumReplicas": {
+ "description": "The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "mode": {
+ "description": "Defines operating mode for this policy.",
+ "enum": [
+ "OFF",
+ "ON",
+ "ONLY_DOWN",
+ "ONLY_UP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "queueBasedScaling": {
+ "$ref": "AutoscalingPolicyQueueBasedScaling",
+ "description": "Configuration parameters of autoscaling based on queuing system."
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyCpuUtilization": {
+ "description": "CPU utilization policy.",
+ "id": "AutoscalingPolicyCpuUtilization",
+ "properties": {
+ "utilizationTarget": {
+ "description": "The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.",
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyCustomMetricUtilization": {
+ "description": "Custom utilization metric policy.",
+ "id": "AutoscalingPolicyCustomMetricUtilization",
+ "properties": {
+ "filter": {
+ "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data.\n\nFor the filter to be valid for autoscaling purposes, the following rules apply: \n- You can only use the AND operator for joining selectors. \n- You can only use direct equality comparison operator (=) without any functions for each selector. \n- You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. \n- The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels.\nIf the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a per-group metric for the purpose of autoscaling.\n\nIf not specified, the type defaults to gce_instance. \n\nYou should provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value.",
+ "type": "string"
+ },
+ "metric": {
+ "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE.",
+ "type": "string"
+ },
+ "singleInstanceAssignment": {
+ "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler will keep the number of instances proportional to the value of this metric, the metric itself should not change value due to group resizing.\n\nA good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances.\n\nA bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead.",
+ "format": "double",
+ "type": "number"
+ },
+ "utilizationTarget": {
+ "description": "The target value of the metric that autoscaler should maintain. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
+ "format": "double",
+ "type": "number"
+ },
+ "utilizationTargetType": {
+ "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.",
+ "enum": [
+ "DELTA_PER_MINUTE",
+ "DELTA_PER_SECOND",
+ "GAUGE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyLoadBalancingUtilization": {
+ "description": "Configuration parameters of autoscaling based on load balancing.",
+ "id": "AutoscalingPolicyLoadBalancingUtilization",
+ "properties": {
+ "utilizationTarget": {
+ "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyQueueBasedScaling": {
+ "description": "Configuration parameters of autoscaling based on queuing system.",
+ "id": "AutoscalingPolicyQueueBasedScaling",
+ "properties": {
+ "acceptableBacklogPerInstance": {
+ "description": "Scaling based on the average number of tasks in the queue per each active instance. The autoscaler keeps the average number of tasks per instance below this number, based on data collected in the last couple of minutes. The autoscaler will also take into account incoming tasks when calculating when to scale.",
+ "format": "double",
+ "type": "number"
+ },
+ "cloudPubSub": {
+ "$ref": "AutoscalingPolicyQueueBasedScalingCloudPubSub",
+ "description": "Configuration for Cloud Pub/Sub subscription queue."
+ },
+ "singleWorkerThroughputPerSec": {
+ "description": "The scaling algorithm will also calculate throughput estimates on its own; if you explicitly provide this value, the autoscaler will take into account your value as well as automatic estimates when deciding how to scale.",
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyQueueBasedScalingCloudPubSub": {
+ "description": "Configuration parameters for scaling based on Cloud Pub/Sub subscription queue.",
+ "id": "AutoscalingPolicyQueueBasedScalingCloudPubSub",
+ "properties": {
+ "subscription": {
+ "description": "Cloud Pub/Sub subscription used for scaling. Provide the partial URL (starting with projects/) or just the subscription name. The subscription must be assigned to the topic specified in topicName and must be in a pull configuration. The subscription must belong to the same project as the Autoscaler.",
+ "type": "string"
+ },
+ "topic": {
+ "description": "Cloud Pub/Sub topic used for scaling. Provide the partial URL or partial URL (starting with projects/) or just the topic name. The topic must belong to the same project as the Autoscaler resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Backend": {
+ "description": "Message containing information of one individual backend.",
+ "id": "Backend",
+ "properties": {
+ "balancingMode": {
+ "description": "Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).\n\nFor Internal Load Balancing, the default and only supported mode is CONNECTION.",
+ "enum": [
+ "CONNECTION",
+ "RATE",
+ "UTILIZATION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "capacityScaler": {
+ "description": "A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "failover": {
+ "description": "This field designates whether this is a failover backend. More than one failover backend can be configured for a given BackendService.",
+ "type": "boolean"
+ },
+ "group": {
+ "description": "The fully-qualified URL of a Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.\n\nNote that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.\n\nWhen the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService.",
+ "type": "string"
+ },
+ "maxConnections": {
+ "description": "The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxConnectionsPerEndpoint": {
+ "description": "The max number of simultaneous connections that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerEndpoint must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxConnectionsPerInstance": {
+ "description": "The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxRate": {
+ "description": "The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxRatePerEndpoint": {
+ "description": "The max requests per second (RPS) that a single backend network endpoint can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerEndpoint must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ },
+ "maxRatePerInstance": {
+ "description": "The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ },
+ "maxUtilization": {
+ "description": "Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "BackendBucket": {
+ "description": "A BackendBucket resource. This resource defines a Cloud Storage bucket.",
+ "id": "BackendBucket",
+ "properties": {
+ "bucketName": {
+ "description": "Cloud Storage bucket name.",
+ "type": "string"
+ },
+ "cdnPolicy": {
+ "$ref": "BackendBucketCdnPolicy",
+ "description": "Cloud CDN Coniguration for this BackendBucket."
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional textual description of the resource; provided by the client when the resource is created.",
+ "type": "string"
+ },
+ "enableCdn": {
+ "description": "If true, enable Cloud CDN for this BackendBucket.",
+ "type": "boolean"
+ },
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#backendBucket",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendBucketCdnPolicy": {
+ "description": "Message containing Cloud CDN configuration for a backend bucket.",
+ "id": "BackendBucketCdnPolicy",
+ "properties": {
+ "signedUrlCacheMaxAgeSec": {
+ "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this bucket had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
+ "format": "int64",
+ "type": "string"
+ },
+ "signedUrlKeyNames": {
+ "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend bucket.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "BackendBucketList": {
+ "description": "Contains a list of BackendBucket resources.",
+ "id": "BackendBucketList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of BackendBucket resources.",
+ "items": {
+ "$ref": "BackendBucket"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendBucketList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "BackendService": {
+ "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)",
+ "id": "BackendService",
+ "properties": {
+ "affinityCookieTtlSec": {
+ "description": "Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "appEngineBackend": {
+ "$ref": "BackendServiceAppEngineBackend",
+ "description": "Directs request to an App Engine app. cloudFunctionBackend and backends[] must be empty if this is set."
+ },
+ "backends": {
+ "description": "The list of backends that serve this BackendService.",
+ "items": {
+ "$ref": "Backend"
+ },
+ "type": "array"
+ },
+ "cdnPolicy": {
+ "$ref": "BackendServiceCdnPolicy",
+ "description": "Cloud CDN configuration for this BackendService."
+ },
+ "cloudFunctionBackend": {
+ "$ref": "BackendServiceCloudFunctionBackend",
+ "description": "Directs request to a cloud function. appEngineBackend and backends[] must be empty if this is set."
+ },
+ "connectionDraining": {
+ "$ref": "ConnectionDraining"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "customRequestHeaders": {
+ "description": "Headers that the HTTP/S load balancer should add to proxied requests.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "enableCDN": {
+ "description": "If true, enable Cloud CDN for this BackendService.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "type": "boolean"
+ },
+ "failoverPolicy": {
+ "$ref": "BackendServiceFailoverPolicy"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.",
+ "format": "byte",
+ "type": "string"
+ },
+ "healthChecks": {
+ "description": "The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.\n\nFor internal load balancing, a URL to a HealthCheck resource must be specified instead.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "iap": {
+ "$ref": "BackendServiceIAP"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#backendService",
+ "description": "[Output Only] Type of resource. Always compute#backendService for backend services.",
+ "type": "string"
+ },
+ "loadBalancingScheme": {
+ "description": "Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "INVALID_LOAD_BALANCING_SCHEME"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "type": "string"
+ },
+ "protocol": {
+ "description": "The protocol this BackendService uses to communicate with backends.\n\nPossible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.\n\nFor internal load balancing, the possible values are TCP and UDP, and the default is TCP.",
+ "enum": [
+ "HTTP",
+ "HTTP2",
+ "HTTPS",
+ "SSL",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "[Output Only] The resource URL for the security policy associated with this backend service.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sessionAffinity": {
+ "description": "Type of session affinity to use. The default is NONE.\n\nWhen the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.\n\nWhen the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.\n\nWhen the protocol is UDP, this field is not used.",
+ "enum": [
+ "CLIENT_IP",
+ "CLIENT_IP_PORT_PROTO",
+ "CLIENT_IP_PROTO",
+ "GENERATED_COOKIE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceAggregatedList": {
+ "description": "Contains a list of BackendServicesScopedList.",
+ "id": "BackendServiceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "BackendServicesScopedList",
+ "description": "Name of the scope containing this set of BackendServices."
+ },
+ "description": "A list of BackendServicesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#backendServiceAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceAppEngineBackend": {
+ "description": "Configuration of a App Engine backend.",
+ "id": "BackendServiceAppEngineBackend",
+ "properties": {
+ "appEngineService": {
+ "description": "Optional. App Engine app service name.",
+ "type": "string"
+ },
+ "targetProject": {
+ "description": "Required. Project ID of the project hosting the app. This is the project ID of this project. Reference to another project is not allowed.",
+ "type": "string"
+ },
+ "version": {
+ "description": "Optional. Version of App Engine app service. When empty, App Engine will do its normal traffic split.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceCdnPolicy": {
+ "description": "Message containing Cloud CDN configuration for a backend service.",
+ "id": "BackendServiceCdnPolicy",
+ "properties": {
+ "cacheKeyPolicy": {
+ "$ref": "CacheKeyPolicy",
+ "description": "The CacheKeyPolicy for this CdnPolicy."
+ },
+ "signedUrlCacheMaxAgeSec": {
+ "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this backend had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
+ "format": "int64",
+ "type": "string"
+ },
+ "signedUrlKeyNames": {
+ "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend service.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceCloudFunctionBackend": {
+ "description": "Configuration of a Cloud Function backend.",
+ "id": "BackendServiceCloudFunctionBackend",
+ "properties": {
+ "functionName": {
+ "description": "Required. A cloud function name. Special value ?*? represents all cloud functions in the project.",
+ "type": "string"
+ },
+ "targetProject": {
+ "description": "Required. Project ID of the project hosting the cloud function.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceFailoverPolicy": {
+ "id": "BackendServiceFailoverPolicy",
+ "properties": {
+ "disableConnectionDrainOnFailover": {
+ "description": "On failover or failback, this field indicates whether connection drain will be honored. Setting this to true has the following effect: connections to the old active pool are not drained. Connections to the new active pool use the timeout of 10 min (currently fixed). Setting to false has the following effect: both old and new connections will have a drain timeout of 10 min.\n\nThis can be set to true only if the protocol is TCP.\n\nThe default is false.",
+ "type": "boolean"
+ },
+ "dropTrafficIfUnhealthy": {
+ "description": "This option is used only when no healthy VMs are detected in the primary and backup instance groups. When set to true, traffic is dropped. When set to false, new connections are sent across all VMs in the primary group.\n\nThe default is false.",
+ "type": "boolean"
+ },
+ "failoverRatio": {
+ "description": "The value of the field must be in [0, 1]. If the ratio of the healthy VMs in the primary backend is at or below this number, traffic arriving at the load-balanced IP will be directed to the failover backend.\n\nIn case where 'failoverRatio' is not set or all the VMs in the backup backend are unhealthy, the traffic will be directed back to the primary backend in the \"force\" mode, where traffic will be spread to the healthy VMs with the best effort, or to all VMs when no VM is healthy.\n\nThis field is only used with l4 load balancing.",
+ "format": "float",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceGroupHealth": {
+ "id": "BackendServiceGroupHealth",
+ "properties": {
+ "healthStatus": {
+ "items": {
+ "$ref": "HealthStatus"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendServiceGroupHealth",
+ "description": "[Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceIAP": {
+ "description": "Identity-Aware Proxy",
+ "id": "BackendServiceIAP",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "oauth2ClientId": {
+ "type": "string"
+ },
+ "oauth2ClientSecret": {
+ "type": "string"
+ },
+ "oauth2ClientSecretSha256": {
+ "description": "[Output Only] SHA256 hash value for the field oauth2_client_secret above.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceList": {
+ "description": "Contains a list of BackendService resources.",
+ "id": "BackendServiceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of BackendService resources.",
+ "items": {
+ "$ref": "BackendService"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendServiceList",
+ "description": "[Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceReference": {
+ "id": "BackendServiceReference",
+ "properties": {
+ "backendService": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServicesScopedList": {
+ "id": "BackendServicesScopedList",
+ "properties": {
+ "backendServices": {
+ "description": "List of BackendServices contained in this scope.",
+ "items": {
+ "$ref": "BackendService"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of backend services when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Binding": {
+ "description": "Associates `members` with a `role`.",
+ "id": "Binding",
+ "properties": {
+ "condition": {
+ "$ref": "Expr",
+ "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently. This field is only visible as GOOGLE_INTERNAL or CONDITION_TRUSTED_TESTER."
+ },
+ "members": {
+ "description": "Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.\n\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "role": {
+ "description": "Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CacheInvalidationRule": {
+ "id": "CacheInvalidationRule",
+ "properties": {
+ "host": {
+ "description": "If set, this invalidation rule will only apply to requests with a Host header matching host.",
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CacheKeyPolicy": {
+ "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
+ "id": "CacheKeyPolicy",
+ "properties": {
+ "includeHost": {
+ "description": "If true, requests to different hosts will be cached separately.",
+ "type": "boolean"
+ },
+ "includeProtocol": {
+ "description": "If true, http and https requests will be cached separately.",
+ "type": "boolean"
+ },
+ "includeQueryString": {
+ "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.",
+ "type": "boolean"
+ },
+ "queryStringBlacklist": {
+ "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '\u0026' and '=' will be percent encoded and not treated as delimiters.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "queryStringWhitelist": {
+ "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '\u0026' and '=' will be percent encoded and not treated as delimiters.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Commitment": {
+ "description": "Represents a Commitment resource. Creating a Commitment resource means that you are purchasing a committed use contract with an explicit start and end time. You can create commitments based on vCPUs and memory usage and receive discounted rates. For full details, read Signing Up for Committed Use Discounts.\n\nCommitted use discounts are subject to Google Cloud Platform's Service Specific Terms. By purchasing a committed use discount, you agree to these terms. Committed use discounts will not renew, so you must purchase a new commitment to continue receiving discounts. (== resource_for beta.commitments ==) (== resource_for v1.commitments ==)",
+ "id": "Commitment",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "endTimestamp": {
+ "description": "[Output Only] Commitment end time in RFC3339 text format.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#commitment",
+ "description": "[Output Only] Type of the resource. Always compute#commitment for commitments.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "plan": {
+ "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
+ "enum": [
+ "INVALID",
+ "THIRTY_SIX_MONTH",
+ "TWELVE_MONTH"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where this commitment may be used.",
+ "type": "string"
+ },
+ "resources": {
+ "description": "List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
+ "items": {
+ "$ref": "ResourceCommitment"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "startTimestamp": {
+ "description": "[Output Only] Commitment start time in RFC3339 text format.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
+ "enum": [
+ "ACTIVE",
+ "CREATING",
+ "EXPIRED",
+ "NOT_YET_ACTIVE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional, human-readable explanation of the status.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CommitmentAggregatedList": {
+ "id": "CommitmentAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "CommitmentsScopedList",
+ "description": "[Output Only] Name of the scope containing this set of commitments."
+ },
+ "description": "A list of CommitmentsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#commitmentAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#commitmentAggregatedList for aggregated lists of commitments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "CommitmentList": {
+ "description": "Contains a list of Commitment resources.",
+ "id": "CommitmentList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Commitment resources.",
+ "items": {
+ "$ref": "Commitment"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#commitmentList",
+ "description": "[Output Only] Type of resource. Always compute#commitmentList for lists of commitments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "CommitmentsScopedList": {
+ "id": "CommitmentsScopedList",
+ "properties": {
+ "commitments": {
+ "description": "[Output Only] List of commitments contained in this scope.",
+ "items": {
+ "$ref": "Commitment"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of commitments when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Condition": {
+ "description": "A condition to be met.",
+ "id": "Condition",
+ "properties": {
+ "iam": {
+ "description": "Trusted attributes supplied by the IAM system.",
+ "enum": [
+ "APPROVER",
+ "ATTRIBUTION",
+ "AUTHORITY",
+ "CREDENTIALS_TYPE",
+ "JUSTIFICATION_TYPE",
+ "NO_ATTR",
+ "SECURITY_REALM"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "op": {
+ "description": "An operator to apply the subject with.",
+ "enum": [
+ "DISCHARGED",
+ "EQUALS",
+ "IN",
+ "NOT_EQUALS",
+ "NOT_IN",
+ "NO_OP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "svc": {
+ "description": "Trusted attributes discharged by the service.",
+ "type": "string"
+ },
+ "sys": {
+ "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
+ "enum": [
+ "IP",
+ "NAME",
+ "NO_ATTR",
+ "REGION",
+ "SERVICE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "value": {
+ "description": "DEPRECATED. Use 'values' instead.",
+ "type": "string"
+ },
+ "values": {
+ "description": "The objects of the condition. This is mutually exclusive with 'value'.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ConnectionDraining": {
+ "description": "Message containing connection draining configuration.",
+ "id": "ConnectionDraining",
+ "properties": {
+ "drainingTimeoutSec": {
+ "description": "Time for which instance will be drained (not accept new connections, but still work to finish started).",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "CustomerEncryptionKey": {
+ "description": "Represents a customer-supplied encryption key",
+ "id": "CustomerEncryptionKey",
+ "properties": {
+ "kmsKeyName": {
+ "description": "The name of the encryption key that is stored in Google Cloud KMS.",
+ "type": "string"
+ },
+ "rawKey": {
+ "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource.",
+ "type": "string"
+ },
+ "rsaEncryptedKey": {
+ "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource.\n\nThe key must meet the following requirements before you can provide it to Compute Engine: \n- The key is wrapped using a RSA public key certificate provided by Google. \n- After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Get the RSA public key certificate provided by Google at:\nhttps://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem",
+ "type": "string"
+ },
+ "sha256": {
+ "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CustomerEncryptionKeyProtectedDisk": {
+ "id": "CustomerEncryptionKeyProtectedDisk",
+ "properties": {
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Decrypts data associated with the disk with a customer-supplied encryption key."
+ },
+ "source": {
+ "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DailyMaintenanceWindow": {
+ "description": "Time window specified for daily maintenance operations.",
+ "id": "DailyMaintenanceWindow",
+ "properties": {
+ "daysInCycle": {
+ "description": "Allows to define schedule that runs every nth day of the month.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "duration": {
+ "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario.",
+ "type": "string"
+ },
+ "startTime": {
+ "description": "Time within the maintenance window to start the maintenance operations. It must be in format \"HH:MM?, where HH : [00-23] and MM : [00-59] GMT.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DeprecationStatus": {
+ "description": "Deprecation status for a public resource.",
+ "id": "DeprecationStatus",
+ "properties": {
+ "deleted": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "deprecated": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "obsolete": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "replacement": {
+ "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.",
+ "type": "string"
+ },
+ "state": {
+ "description": "The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
+ "enum": [
+ "DELETED",
+ "DEPRECATED",
+ "OBSOLETE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Disk": {
+ "description": "A Disk resource. (== resource_for beta.disks ==) (== resource_for v1.disks ==)",
+ "id": "Disk",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later."
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#disk",
+ "description": "[Output Only] Type of the resource. Always compute#disk for disks.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a disk.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "lastAttachTimestamp": {
+ "description": "[Output Only] Last attach timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "lastDetachTimestamp": {
+ "description": "[Output Only] Last detach timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "licenseCodes": {
+ "description": "Integer license codes indicating which licenses are attached to this disk.",
+ "items": {
+ "format": "int64",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "description": "Any applicable publicly visible licenses.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.disks.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "options": {
+ "description": "Internal use only.",
+ "type": "string"
+ },
+ "physicalBlockSizeBytes": {
+ "description": "Physical block size of the persistent disk, in bytes. If not present in a request, a default value is used. Initially only 4096 is supported, but other powers of two may be added. If an unsupported value is requested, the error message will list the supported values, but even a supported value may be allowed for only some projects.",
+ "format": "int64",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "replicaZones": {
+ "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "sizeGb": {
+ "description": "Size of the persistent disk, specified in GB. You can specify this field when creating a persistent disk using the sourceImage or sourceSnapshot parameter, or specify it alone to create an empty persistent disk.\n\nIf you specify this field along with sourceImage or sourceSnapshot, the value of sizeGb must not be less than the size of the sourceImage or the size of the snapshot. Acceptable values are 1 to 65536, inclusive.",
+ "format": "int64",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "The source image used to create this disk. If the source image is deleted, this field will not be set.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\nprojects/debian-cloud/global/images/family/debian-8\n\n\nAlternatively, use a specific version of a public operating system image:\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD\n\n\nTo create a disk with a custom image that you created, specify the image name in the following format:\nglobal/images/my-custom-image\n\n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\nglobal/images/family/my-image-family",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
+ },
+ "sourceImageId": {
+ "description": "[Output Only] The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
+ "type": "string"
+ },
+ "sourceSnapshot": {
+ "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot \n- projects/project/global/snapshots/snapshot \n- global/snapshots/snapshot",
+ "type": "string"
+ },
+ "sourceSnapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
+ },
+ "sourceSnapshotId": {
+ "description": "[Output Only] The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of disk creation.",
+ "enum": [
+ "CREATING",
+ "FAILED",
+ "READY",
+ "RESTORING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "storageType": {
+ "description": "[Deprecated] Storage type of the persistent disk.",
+ "enum": [
+ "HDD",
+ "SSD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: project/zones/zone/diskTypes/pd-standard or pd-ssd",
+ "type": "string"
+ },
+ "users": {
+ "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskAggregatedList": {
+ "id": "DiskAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "DisksScopedList",
+ "description": "[Output Only] Name of the scope containing this set of disks."
+ },
+ "description": "A list of DisksScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#diskAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#diskAggregatedList for aggregated lists of persistent disks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskInstantiationConfig": {
+ "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
+ "id": "DiskInstantiationConfig",
+ "properties": {
+ "autoDelete": {
+ "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).",
+ "type": "boolean"
+ },
+ "customImage": {
+ "description": "The custom source image to be used to restore this disk when instantiating this instance template.",
+ "type": "string"
+ },
+ "deviceName": {
+ "description": "Specifies the device name of the disk to which the configurations apply to.",
+ "type": "string"
+ },
+ "instantiateFrom": {
+ "description": "Specifies whether to include the disk and what image to use. Possible values are: \n- source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. \n- source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. \n- custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. \n- attach-read-only: to attach a read-only disk. Applicable to read-only disks. \n- do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks.",
+ "enum": [
+ "ATTACH_READ_ONLY",
+ "BLANK",
+ "CUSTOM_IMAGE",
+ "DEFAULT",
+ "DO_NOT_INCLUDE",
+ "SOURCE_IMAGE",
+ "SOURCE_IMAGE_FAMILY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskList": {
+ "description": "A list of Disk resources.",
+ "id": "DiskList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Disk resources.",
+ "items": {
+ "$ref": "Disk"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#diskList",
+ "description": "[Output Only] Type of resource. Always compute#diskList for lists of disks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskMoveRequest": {
+ "id": "DiskMoveRequest",
+ "properties": {
+ "destinationZone": {
+ "description": "The URL of the destination zone to move the disk. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone",
+ "type": "string"
+ },
+ "targetDisk": {
+ "description": "The URL of the target disk to move. This can be a full or partial URL. For example, the following are all valid URLs to a disk: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskType": {
+ "description": "A DiskType resource. (== resource_for beta.diskTypes ==) (== resource_for v1.diskTypes ==)",
+ "id": "DiskType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "defaultDiskSizeGb": {
+ "description": "[Output Only] Server-defined default disk size in GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this disk type."
+ },
+ "description": {
+ "description": "[Output Only] An optional description of this resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#diskType",
+ "description": "[Output Only] Type of the resource. Always compute#diskType for disk types.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "validDiskSize": {
+ "description": "[Output Only] An optional textual description of the valid disk size, such as \"10GB-10TB\".",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the disk type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskTypeAggregatedList": {
+ "id": "DiskTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "DiskTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of disk types."
+ },
+ "description": "A list of DiskTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#diskTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#diskTypeAggregatedList.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskTypeList": {
+ "description": "Contains a list of disk types.",
+ "id": "DiskTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of DiskType resources.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#diskTypeList",
+ "description": "[Output Only] Type of resource. Always compute#diskTypeList for disk types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskTypesScopedList": {
+ "id": "DiskTypesScopedList",
+ "properties": {
+ "diskTypes": {
+ "description": "[Output Only] List of disk types contained in this scope.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of disk types when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DisksResizeRequest": {
+ "id": "DisksResizeRequest",
+ "properties": {
+ "sizeGb": {
+ "description": "The new size of the persistent disk, which is specified in GB.",
+ "format": "int64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DisksScopedList": {
+ "id": "DisksScopedList",
+ "properties": {
+ "disks": {
+ "description": "[Output Only] List of disks contained in this scope.",
+ "items": {
+ "$ref": "Disk"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of disks when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DistributionPolicy": {
+ "id": "DistributionPolicy",
+ "properties": {
+ "zones": {
+ "items": {
+ "$ref": "DistributionPolicyZoneConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "DistributionPolicyZoneConfiguration": {
+ "id": "DistributionPolicyZoneConfiguration",
+ "properties": {
+ "zone": {
+ "annotations": {
+ "required": [
+ "compute.regionInstanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.update"
+ ]
+ },
+ "description": "URL of the zone where managed instance group is spawning instances (for regional resources). Zone has to belong to the region where managed instance group is located.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Expr": {
+ "description": "Represents an expression text. Example:\n\ntitle: \"User account presence\" description: \"Determines whether the request has a user account\" expression: \"size(request.user) \u003e 0\"",
+ "id": "Expr",
+ "properties": {
+ "description": {
+ "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+ "type": "string"
+ },
+ "expression": {
+ "description": "Textual representation of an expression in Common Expression Language syntax.\n\nThe application context of the containing message determines which well-known feature set of CEL is supported.",
+ "type": "string"
+ },
+ "location": {
+ "description": "An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+ "type": "string"
+ },
+ "title": {
+ "description": "An optional title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Firewall": {
+ "description": "Represents a Firewall resource.",
+ "id": "Firewall",
+ "properties": {
+ "allowed": {
+ "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
+ "items": {
+ "properties": {
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "denied": {
+ "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection.",
+ "items": {
+ "properties": {
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "destinationRanges": {
+ "description": "If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "direction": {
+ "description": "Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.",
+ "enum": [
+ "EGRESS",
+ "INGRESS"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "disabled": {
+ "description": "Denotes whether the firewall rule is disabled, i.e not applied to the network it is associated with. When set to true, the firewall rule is not enforced and the network behaves as if it did not exist. If this is unspecified, the firewall rule will be enabled.",
+ "type": "boolean"
+ },
+ "enableLogging": {
+ "description": "This field denotes whether to enable logging for a particular firewall rule. If logging is enabled, logs will be exported to the configured export destination for all firewall logs in the network. Logs may be exported to BigQuery or Pub/Sub.",
+ "type": "boolean"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#firewall",
+ "description": "[Output Only] Type of the resource. Always compute#firewall for firewall rules.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.firewalls.insert",
+ "compute.firewalls.patch"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default",
+ "type": "string"
+ },
+ "priority": {
+ "description": "Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sourceRanges": {
+ "description": "If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceServiceAccounts": {
+ "description": "If source service accounts are specified, the firewall will apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both properties for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceTags": {
+ "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetServiceAccounts": {
+ "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetTags": {
+ "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "FirewallList": {
+ "description": "Contains a list of firewalls.",
+ "id": "FirewallList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Firewall resources.",
+ "items": {
+ "$ref": "Firewall"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#firewallList",
+ "description": "[Output Only] Type of resource. Always compute#firewallList for lists of firewalls.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "FixedOrPercent": {
+ "description": "Encapsulates numeric value that can be either absolute or relative.",
+ "id": "FixedOrPercent",
+ "properties": {
+ "calculated": {
+ "description": "[Output Only] Absolute value of VM instances calculated based on the specific mode.\n\n \n- If the value is fixed, then the caculated value is equal to the fixed value. \n- If the value is a percent, then the calculated value is percent/100 * targetSize. For example, the calculated value of a 80% of a managed instance group with 150 instances would be (80/100 * 150) = 120 VM instances. If there is a remainder, the number is rounded up.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "fixed": {
+ "description": "Specifies a fixed number of VM instances. This must be a positive integer.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "percent": {
+ "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRule": {
+ "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, ports] tuple. (== resource_for beta.forwardingRules ==) (== resource_for v1.forwardingRules ==) (== resource_for beta.globalForwardingRules ==) (== resource_for v1.globalForwardingRules ==) (== resource_for beta.regionForwardingRules ==) (== resource_for v1.regionForwardingRules ==)",
+ "id": "ForwardingRule",
+ "properties": {
+ "IPAddress": {
+ "description": "The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing scheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, and for regional forwarding rules, the address must live in the same region as the forwarding rule. If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral internal IP address will be automatically allocated from the IP range of the subnet or network configured for this forwarding rule.\n\nAn address can be specified either by a literal IP address or a URL reference to an existing Address resource. The following examples are all valid: \n- 100.1.2.3 \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address \n- projects/project/regions/region/addresses/address \n- regions/region/addresses/address \n- global/addresses/address \n- address",
+ "type": "string"
+ },
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.\n\nWhen the load balancing scheme is INTERNAL, only TCP and UDP are valid.",
+ "enum": [
+ "AH",
+ "ESP",
+ "ICMP",
+ "SCTP",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "backendService": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the BackendService resource to receive the matched traffic.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a ForwardingRule. Include the fingerprint in patch request to ensure that you do not overwrite changes that were applied from another concurrent request.\n\nTo see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipVersion": {
+ "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6. This can only be specified for a global forwarding rule.",
+ "enum": [
+ "IPV4",
+ "IPV6",
+ "UNSPECIFIED_VERSION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#forwardingRule",
+ "description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "loadBalancingScheme": {
+ "description": "This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "INTERNAL_SELF_MANAGED",
+ "INVALID"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.",
+ "type": "string"
+ },
+ "networkTier": {
+ "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD.\n\nFor regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM.\n\nIf this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
+ "enum": [
+ "PREMIUM",
+ "SELECT",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "portRange": {
+ "description": "This field is used along with the target field for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable ports: \n- TargetHttpProxy: 80, 8080 \n- TargetHttpsProxy: 443 \n- TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1688, 1883, 5222 \n- TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1688, 1883, 5222 \n- TargetVpnGateway: 500, 4500",
+ "type": "string"
+ },
+ "ports": {
+ "description": "This field is used along with the backend_service field for internal load balancing.\n\nWhen the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule.\n\nYou may specify a maximum of up to 5 ports.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "serviceLabel": {
+ "description": "An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.\n\nThe label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.\n\nThis field is only used for internal load balancing.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "serviceName": {
+ "description": "[Output Only] The internal fully qualified service name for this Forwarding Rule.\n\nThis field is only used for internal load balancing.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.\n\nIf the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.",
+ "type": "string"
+ },
+ "target": {
+ "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRuleAggregatedList": {
+ "id": "ForwardingRuleAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "ForwardingRulesScopedList",
+ "description": "Name of the scope containing this set of addresses."
+ },
+ "description": "A list of ForwardingRulesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#forwardingRuleAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#forwardingRuleAggregatedList for lists of forwarding rules.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRuleList": {
+ "description": "Contains a list of ForwardingRule resources.",
+ "id": "ForwardingRuleList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of ForwardingRule resources.",
+ "items": {
+ "$ref": "ForwardingRule"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#forwardingRuleList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRuleReference": {
+ "id": "ForwardingRuleReference",
+ "properties": {
+ "forwardingRule": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRulesScopedList": {
+ "id": "ForwardingRulesScopedList",
+ "properties": {
+ "forwardingRules": {
+ "description": "List of forwarding rules contained in this scope.",
+ "items": {
+ "$ref": "ForwardingRule"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of forwarding rules when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "GlobalSetLabelsRequest": {
+ "id": "GlobalSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a get() request to the resource to get the latest fingerprint.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A list of labels to apply for this resource. Each label key \u0026 value must comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For example, \"webserver-frontend\": \"images\". A label value can also be empty (e.g. \"my-label\": \"\").",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "GuestAttributes": {
+ "description": "A guest attributes entry.",
+ "id": "GuestAttributes",
+ "properties": {
+ "kind": {
+ "default": "compute#guestAttributes",
+ "description": "[Output Only] Type of the resource. Always compute#guestAttributes for guest attributes entry.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "variableKey": {
+ "description": "The key to search for.",
+ "type": "string"
+ },
+ "variableValue": {
+ "description": "[Output Only] The value found for the requested key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "GuestOsFeature": {
+ "description": "Guest OS features.",
+ "id": "GuestOsFeature",
+ "properties": {
+ "type": {
+ "description": "The ID of a supported feature. Read Enabling guest operating system features to see a list of available options.",
+ "enum": [
+ "FEATURE_TYPE_UNSPECIFIED",
+ "MULTI_IP_SUBNET",
+ "SECURE_BOOT",
+ "UEFI_COMPATIBLE",
+ "VIRTIO_SCSI_MULTIQUEUE",
+ "WINDOWS"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HTTP2HealthCheck": {
+ "id": "HTTP2HealthCheck",
+ "properties": {
+ "host": {
+ "description": "The value of the host header in the HTTP/2 health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "portSpecification": {
+ "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTP2 health check follows behavior specified in\nport\nand\nportName\nfields.",
+ "enum": [
+ "USE_FIXED_PORT",
+ "USE_NAMED_PORT",
+ "USE_SERVING_PORT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTP/2 health check request. The default value is /.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HTTPHealthCheck": {
+ "id": "HTTPHealthCheck",
+ "properties": {
+ "host": {
+ "description": "The value of the host header in the HTTP health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "portSpecification": {
+ "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTP health check follows behavior specified in\nport\nand\nportName\nfields.",
+ "enum": [
+ "USE_FIXED_PORT",
+ "USE_NAMED_PORT",
+ "USE_SERVING_PORT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTP health check request. The default value is /.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HTTPSHealthCheck": {
+ "id": "HTTPSHealthCheck",
+ "properties": {
+ "host": {
+ "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "portSpecification": {
+ "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, HTTPS health check follows behavior specified in\nport\nand\nportName\nfields.",
+ "enum": [
+ "USE_FIXED_PORT",
+ "USE_NAMED_PORT",
+ "USE_SERVING_PORT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTPS health check request. The default value is /.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HealthCheck": {
+ "description": "An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.",
+ "id": "HealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in 3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "http2HealthCheck": {
+ "$ref": "HTTP2HealthCheck"
+ },
+ "httpHealthCheck": {
+ "$ref": "HTTPHealthCheck"
+ },
+ "httpsHealthCheck": {
+ "$ref": "HTTPSHealthCheck"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#healthCheck",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sslHealthCheck": {
+ "$ref": "SSLHealthCheck"
+ },
+ "tcpHealthCheck": {
+ "$ref": "TCPHealthCheck"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "type": {
+ "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.",
+ "enum": [
+ "HTTP",
+ "HTTP2",
+ "HTTPS",
+ "INVALID",
+ "SSL",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "udpHealthCheck": {
+ "$ref": "UDPHealthCheck"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HealthCheckList": {
+ "description": "Contains a list of HealthCheck resources.",
+ "id": "HealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HealthCheck resources.",
+ "items": {
+ "$ref": "HealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#healthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HealthCheckReference": {
+ "description": "A full or valid partial URL to a health check. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check \n- projects/project-id/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
+ "id": "HealthCheckReference",
+ "properties": {
+ "healthCheck": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HealthStatus": {
+ "id": "HealthStatus",
+ "properties": {
+ "healthState": {
+ "description": "Health state of the instance.",
+ "enum": [
+ "HEALTHY",
+ "UNHEALTHY"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "instance": {
+ "description": "URL of the instance resource.",
+ "type": "string"
+ },
+ "ipAddress": {
+ "description": "The IP address represented by this resource.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The port on the instance.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HealthStatusForNetworkEndpoint": {
+ "id": "HealthStatusForNetworkEndpoint",
+ "properties": {
+ "backendService": {
+ "$ref": "BackendServiceReference",
+ "description": "URL of the backend service associated with the health state of the network endpoint."
+ },
+ "forwardingRule": {
+ "$ref": "ForwardingRuleReference",
+ "description": "URL of the forwarding rule associated with the health state of the network endpoint."
+ },
+ "healthCheck": {
+ "$ref": "HealthCheckReference",
+ "description": "URL of the health check associated with the health state of the network endpoint."
+ },
+ "healthState": {
+ "description": "Health state of the network endpoint determined based on the health checks configured.",
+ "enum": [
+ "DRAINING",
+ "HEALTHY",
+ "UNHEALTHY",
+ "UNKNOWN"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Host": {
+ "id": "Host",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "[Output Only] An optional textual description of the resource.",
+ "type": "string"
+ },
+ "hostType": {
+ "description": "Full or partial URL of the host type resource to use for this host, in the format: zones/zone/hostTypes/host-type. This is provided by the client when the host is created. For example, the following is a valid partial url to a predefined host type:\nzones/us-central1-b/hostTypes/n1-host-64-416",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instances": {
+ "description": "A list of resource URLs to the virtual machine instances in this host. They must live in zones contained in the same region as this host.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#host",
+ "description": "[Output Only] The type of the resource. Always compute#host for host.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the host.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this host.",
+ "type": "object"
+ },
+ "name": {
+ "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the host. One of the following values: CREATING, READY, REPAIR, and DELETING.",
+ "enum": [
+ "CREATING",
+ "DELETING",
+ "INVALID",
+ "READY",
+ "REPAIR"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional, human-readable explanation of the status.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The name of the zone where the host resides, such as us-central1-a.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HostAggregatedList": {
+ "id": "HostAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "HostsScopedList",
+ "description": "[Output Only] Name of the scope containing this set of hosts."
+ },
+ "description": "A list of HostsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#hostAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#hostAggregatedList for aggregated lists of hosts.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HostList": {
+ "description": "Contains a list of hosts.",
+ "id": "HostList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Host resources.",
+ "items": {
+ "$ref": "Host"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#hostList",
+ "description": "[Output Only] Type of resource. Always compute#hostList for lists of hosts.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HostRule": {
+ "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
+ "id": "HostRule",
+ "properties": {
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "hosts": {
+ "description": "The list of host patterns to match. They must be valid hostnames, except * will match any string of ([a-z0-9-.]*). In that case, * must be the first character and must be followed in the pattern by either - or ..",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pathMatcher": {
+ "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HostType": {
+ "description": "A Host Type resource.",
+ "id": "HostType",
+ "properties": {
+ "cpuPlatform": {
+ "description": "[Output Only] The CPU platform used by this host type.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this host type."
+ },
+ "description": {
+ "description": "[Output Only] An optional textual description of the resource.",
+ "type": "string"
+ },
+ "guestCpus": {
+ "description": "[Output Only] The number of virtual CPUs that are available to the host type.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#hostType",
+ "description": "[Output Only] The type of the resource. Always compute#hostType for host types.",
+ "type": "string"
+ },
+ "localSsdGb": {
+ "description": "[Output Only] Local SSD available to the host type, defined in GB.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "memoryMb": {
+ "description": "[Output Only] The amount of physical memory available to the host type, defined in MB.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The name of the zone where the host type resides, such as us-central1-a.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HostTypeAggregatedList": {
+ "id": "HostTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "HostTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of host types."
+ },
+ "description": "A list of HostTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#hostTypeAggregatedList",
+ "description": "[Output Only] Type of resource.Always compute#hostTypeAggregatedList for aggregated lists of host types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HostTypeList": {
+ "description": "Contains a list of host types.",
+ "id": "HostTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HostType resources.",
+ "items": {
+ "$ref": "HostType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#hostTypeList",
+ "description": "[Output Only] Type of resource.Always compute#hostTypeList for lists of host types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HostTypesScopedList": {
+ "id": "HostTypesScopedList",
+ "properties": {
+ "hostTypes": {
+ "description": "[Output Only] List of host types contained in this scope.",
+ "items": {
+ "$ref": "HostType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that appears when the host types list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HostsScopedList": {
+ "id": "HostsScopedList",
+ "properties": {
+ "hosts": {
+ "description": "[Output Only] List of hosts contained in this scope.",
+ "items": {
+ "$ref": "Host"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that appears when the host list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HourlyMaintenanceWindow": {
+ "description": "Time window specified for hourly maintenance operations.",
+ "id": "HourlyMaintenanceWindow",
+ "properties": {
+ "duration": {
+ "description": "[Output only] Duration of the time window, automatically chosen to be smallest possible in the given scenario.",
+ "type": "string"
+ },
+ "hoursInCycle": {
+ "description": "Allows to define schedule that runs every nth hour.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "startTime": {
+ "description": "Time within the maintenance window to start the maintenance operations. It must be in format \"HH:MM?, where HH : [00-23] and MM : [00-59] GMT.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HttpHealthCheck": {
+ "description": "An HttpHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTP.",
+ "id": "HttpHealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "host": {
+ "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#httpHealthCheck",
+ "description": "[Output Only] Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the HTTP health check request. The default value is 80.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTP health check request. The default value is /.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HttpHealthCheckList": {
+ "description": "Contains a list of HttpHealthCheck resources.",
+ "id": "HttpHealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HttpHealthCheck resources.",
+ "items": {
+ "$ref": "HttpHealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#httpHealthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HttpsHealthCheck": {
+ "description": "An HttpsHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTPS.",
+ "id": "HttpsHealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "host": {
+ "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#httpsHealthCheck",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTPS health check request. The default value is \"/\".",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HttpsHealthCheckList": {
+ "description": "Contains a list of HttpsHealthCheck resources.",
+ "id": "HttpsHealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HttpsHealthCheck resources.",
+ "items": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#httpsHealthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Image": {
+ "description": "An Image resource. (== resource_for beta.images ==) (== resource_for v1.images ==)",
+ "id": "Image",
+ "properties": {
+ "archiveSizeBytes": {
+ "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
+ "format": "int64",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "The deprecation status associated with this image."
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "Size of the image when restored onto a persistent disk (in GB).",
+ "format": "int64",
+ "type": "string"
+ },
+ "family": {
+ "description": "The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.",
+ "type": "string"
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "imageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the image using a customer-supplied encryption key.\n\nAfter you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
+ },
+ "kind": {
+ "default": "compute#image",
+ "description": "[Output Only] Type of the resource. Always compute#image for images.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an image.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "licenseCodes": {
+ "description": "Integer license codes indicating which licenses are attached to this image.",
+ "items": {
+ "format": "int64",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "description": "Any applicable license URI.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "rawDisk": {
+ "description": "The parameters of the raw disk image.",
+ "properties": {
+ "containerType": {
+ "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
+ "enum": [
+ "TAR"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "sha1Checksum": {
+ "description": "An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.",
+ "pattern": "[a-f0-9]{40}",
+ "type": "string"
+ },
+ "source": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "The full Google Cloud Storage URL where the disk image is stored. You must provide either this property or the sourceDisk property but not both.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sourceDisk": {
+ "description": "URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk",
+ "type": "string"
+ },
+ "sourceDiskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
+ },
+ "sourceDiskId": {
+ "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "URL of the source image used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image.",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
+ },
+ "sourceImageId": {
+ "description": "[Output Only] The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name.",
+ "type": "string"
+ },
+ "sourceSnapshot": {
+ "description": "URL of the source snapshot used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the sourceImage property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image.",
+ "type": "string"
+ },
+ "sourceSnapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
+ },
+ "sourceSnapshotId": {
+ "description": "[Output Only] The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name.",
+ "type": "string"
+ },
+ "sourceType": {
+ "default": "RAW",
+ "description": "The type of the image used to create this disk. The default and only value is RAW",
+ "enum": [
+ "RAW"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
+ "enum": [
+ "FAILED",
+ "PENDING",
+ "READY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ImageList": {
+ "description": "Contains a list of images.",
+ "id": "ImageList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Image resources.",
+ "items": {
+ "$ref": "Image"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#imageList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Instance": {
+ "description": "An Instance resource. (== resource_for beta.instances ==) (== resource_for v1.instances ==)",
+ "id": "Instance",
+ "properties": {
+ "canIpForward": {
+ "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding.",
+ "type": "boolean"
+ },
+ "cpuPlatform": {
+ "description": "[Output Only] The CPU platform used by this instance.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deletionProtection": {
+ "description": "Whether the resource should be protected against deletion.",
+ "type": "boolean"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "disks": {
+ "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
+ "items": {
+ "$ref": "AttachedDisk"
+ },
+ "type": "array"
+ },
+ "guestAccelerators": {
+ "description": "List of the type and count of accelerator cards attached to the instance.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ },
+ "host": {
+ "description": "Full or partial URL of the host resource that the instance should be placed on, in the format: zones/zone/hosts/host.\n\nOptional, sole-tenant Host (physical machine) that the instance will be placed on when it's created. The instance is guaranteed to be placed on the same machine as other instances with the same sole-tenant host.\n\nThe request will be rejected if the sole-tenant host has run out of resources.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instanceEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts or decrypts data for an instance with a customer-supplied encryption key.\n\nIf you are creating a new instance, this field encrypts the local SSD and in-memory contents of the instance using a key that you provide.\n\nIf you are restarting an instance protected with a customer-supplied encryption key, you must provide the correct key in order to successfully restart the instance.\n\nIf you do not provide an encryption key when creating the instance, then the local SSD and in-memory contents will be encrypted using an automatically generated key and you do not need to provide a key to start the instance later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt local SSDs and in-memory content in a managed instance group."
+ },
+ "kind": {
+ "default": "compute#instance",
+ "description": "[Output Only] Type of the resource. Always compute#instance for instances.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "machineType": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert"
+ ]
+ },
+ "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type:\nzones/us-central1-f/machineTypes/n1-standard-1\n\n\nTo create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):\nzones/zone/machineTypes/custom-CPUS-MEMORY\n\n\nFor example: zones/us-central1-f/machineTypes/custom-4-5120 \n\nFor a full list of restrictions, read the Specifications for custom machine types.",
+ "type": "string"
+ },
+ "maintenancePolicies": {
+ "description": "Maintenance policies applied to this instance.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "metadata": {
+ "$ref": "Metadata",
+ "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
+ },
+ "minCpuPlatform": {
+ "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\".",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert"
+ ]
+ },
+ "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "networkInterfaces": {
+ "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
+ "items": {
+ "$ref": "NetworkInterface"
+ },
+ "type": "array"
+ },
+ "preservedStateSizeGb": {
+ "description": "Total amount of preserved state for SUSPENDED instances. Read-only in the api.",
+ "format": "int64",
+ "type": "string"
+ },
+ "scheduling": {
+ "$ref": "Scheduling",
+ "description": "Sets the scheduling options for this instance."
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "serviceAccounts": {
+ "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.\n\nService accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
+ "items": {
+ "$ref": "ServiceAccount"
+ },
+ "type": "array"
+ },
+ "shieldedVmConfig": {
+ "$ref": "ShieldedVmConfig"
+ },
+ "startRestricted": {
+ "description": "[Output Only] Whether a VM has been restricted for start because Compute Engine has detected suspicious activity.",
+ "type": "boolean"
+ },
+ "status": {
+ "description": "[Output Only] The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING, SUSPENDED, and TERMINATED.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional, human-readable explanation of the status.",
+ "type": "string"
+ },
+ "tags": {
+ "$ref": "Tags",
+ "description": "A list of tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035."
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceAggregatedList": {
+ "id": "InstanceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstancesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of instances."
+ },
+ "description": "A list of InstancesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#instanceAggregatedList for aggregated lists of Instance resources.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroup": {
+ "description": "InstanceGroups (== resource_for beta.instanceGroups ==) (== resource_for v1.instanceGroups ==) (== resource_for beta.regionInstanceGroups ==) (== resource_for v1.regionInstanceGroups ==)",
+ "id": "InstanceGroup",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this instance group in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "[Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this instance group, generated by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceGroup",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroup for instance groups.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert"
+ ]
+ },
+ "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "Assigns a name to a port number. For example: {name: \"http\", port: 80}\n\nThis allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] \n\nNamed ports apply to all instances in this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "network": {
+ "description": "The URL of the network to which all instances in the instance group belong.",
+ "type": "string"
+ },
+ "region": {
+ "description": "The URL of the region where the instance group is located (for regional resources).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this instance group. The server generates this URL.",
+ "type": "string"
+ },
+ "size": {
+ "description": "[Output Only] The total number of instances in the instance group.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "subnetwork": {
+ "description": "The URL of the subnetwork to which all instances in the instance group belong.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the instance group is located (for zonal resources).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupAggregatedList": {
+ "id": "InstanceGroupAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstanceGroupsScopedList",
+ "description": "The name of the scope that contains this set of instance groups."
+ },
+ "description": "A list of InstanceGroupsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceGroupAggregatedList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupAggregatedList for aggregated lists of instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupList": {
+ "description": "A list of InstanceGroup resources.",
+ "id": "InstanceGroupList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroup resources.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupList for instance group lists.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManager": {
+ "description": "An Instance Group Manager resource. (== resource_for beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers ==) (== resource_for beta.regionInstanceGroupManagers ==) (== resource_for v1.regionInstanceGroupManagers ==)",
+ "id": "InstanceGroupManager",
+ "properties": {
+ "activities": {
+ "$ref": "InstanceGroupManagerActivities"
+ },
+ "autoHealingPolicies": {
+ "description": "The autohealing policy for this managed instance group. You can specify only one value.",
+ "items": {
+ "$ref": "InstanceGroupManagerAutoHealingPolicy"
+ },
+ "type": "array"
+ },
+ "baseInstanceName": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert"
+ ]
+ },
+ "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
+ "pattern": "[a-z][-a-z0-9]{0,57}",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this managed instance group in RFC3339 text format.",
+ "type": "string"
+ },
+ "currentActions": {
+ "$ref": "InstanceGroupManagerActionsSummary",
+ "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "distributionPolicy": {
+ "$ref": "DistributionPolicy",
+ "description": "Policy valid only for regional managed instance groups."
+ },
+ "failoverAction": {
+ "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
+ "enum": [
+ "NO_FAILOVER",
+ "UNKNOWN"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "[Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this resource type. The server generates this identifier.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "[Output Only] The URL of the Instance Group resource.",
+ "type": "string"
+ },
+ "instanceTemplate": {
+ "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManager",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.insert"
+ ]
+ },
+ "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "pendingActions": {
+ "$ref": "InstanceGroupManagerPendingActionsSummary",
+ "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions."
+ },
+ "region": {
+ "description": "[Output Only] The URL of the region where the managed instance group resides (for regional resources).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this managed instance group. The server defines this URL.",
+ "type": "string"
+ },
+ "serviceAccount": {
+ "description": "[Output Only] The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used.",
+ "type": "string"
+ },
+ "statefulPolicy": {
+ "$ref": "StatefulPolicy",
+ "description": "Stateful configuration for this Instanced Group Manager"
+ },
+ "targetPools": {
+ "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetSize": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.insert"
+ ]
+ },
+ "description": "The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "updatePolicy": {
+ "$ref": "InstanceGroupManagerUpdatePolicy",
+ "description": "The update policy for this managed instance group."
+ },
+ "versions": {
+ "description": "Specifies the instance templates used by this managed instance group to create instances.\n\nEach version is defined by an instanceTemplate. Every template can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
+ "items": {
+ "$ref": "InstanceGroupManagerVersion"
+ },
+ "type": "array"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the managed instance group is located (for zonal resources).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerActionsSummary": {
+ "id": "InstanceGroupManagerActionsSummary",
+ "properties": {
+ "abandoning": {
+ "description": "[Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.\n\nIf you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creatingWithoutRetries": {
+ "description": "[Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "deleting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "none": {
+ "description": "[Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "recreating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "refreshing": {
+ "description": "[Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "restarting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "verifying": {
+ "description": "[Output Only] The number of instances in the managed instance group that are being verified. See the managedInstances[].currentAction property in the listManagedInstances method documentation.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerActivities": {
+ "id": "InstanceGroupManagerActivities",
+ "properties": {
+ "autohealing": {
+ "enum": [
+ "PERMITTED",
+ "PROHIBITED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "autohealingHealthCheckBased": {
+ "enum": [
+ "PERMITTED",
+ "PROHIBITED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "autoscalingDown": {
+ "enum": [
+ "PERMITTED",
+ "PROHIBITED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "autoscalingUp": {
+ "enum": [
+ "PERMITTED",
+ "PROHIBITED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "creatingInstances": {
+ "enum": [
+ "PERMITTED",
+ "PROHIBITED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "deletingInstances": {
+ "enum": [
+ "PERMITTED",
+ "PROHIBITED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "recreatingInstances": {
+ "enum": [
+ "PERMITTED",
+ "PROHIBITED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerAggregatedList": {
+ "id": "InstanceGroupManagerAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstanceGroupManagersScopedList",
+ "description": "[Output Only] The name of the scope that contains this set of managed instance groups."
+ },
+ "description": "A list of InstanceGroupManagersScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManagerAggregatedList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerAggregatedList for an aggregated list of managed instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerAutoHealingPolicy": {
+ "id": "InstanceGroupManagerAutoHealingPolicy",
+ "properties": {
+ "healthCheck": {
+ "description": "The URL for the health check that signals autohealing.",
+ "type": "string"
+ },
+ "initialDelaySec": {
+ "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxUnavailable": {
+ "$ref": "FixedOrPercent",
+ "description": "Maximum number of instances that can be unavailable when autohealing. The instance is considered available if all of the following conditions are satisfied: 1. Instance's status is RUNNING. 2. Instance's liveness health check result was observed to be HEALTHY at least once. By default, a percent value of 100% is used."
+ },
+ "mode": {
+ "description": "Defines operating mode for this policy.",
+ "enum": [
+ "OFF",
+ "ON"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerList": {
+ "description": "[Output Only] A list of managed instance groups.",
+ "id": "InstanceGroupManagerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroupManager resources.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManagerList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerPendingActionsSummary": {
+ "id": "InstanceGroupManagerPendingActionsSummary",
+ "properties": {
+ "creating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be created.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "deleting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be deleted.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "recreating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be recreated.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "restarting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be restarted.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerUpdatePolicy": {
+ "id": "InstanceGroupManagerUpdatePolicy",
+ "properties": {
+ "maxSurge": {
+ "$ref": "FixedOrPercent",
+ "description": "The maximum number of instances that can be created above the specified targetSize during the update process. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
+ },
+ "maxUnavailable": {
+ "$ref": "FixedOrPercent",
+ "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied:\n\n \n- The instance's status is RUNNING. \n- If there is a health check on the instance group, the instance's liveness health check result must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
+ },
+ "minReadySec": {
+ "description": "Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minimalAction": {
+ "description": "Minimal action to be taken on an instance. You can specify either RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a code\u003eRESTART, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.",
+ "enum": [
+ "NONE",
+ "REFRESH",
+ "REPLACE",
+ "RESTART"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "OPPORTUNISTIC",
+ "PROACTIVE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerVersion": {
+ "id": "InstanceGroupManagerVersion",
+ "properties": {
+ "instanceTemplate": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the version. Unique among all versions in the scope of this managed instance group.",
+ "type": "string"
+ },
+ "tag": {
+ "description": "Tag describing the version. Used to trigger rollout of a target version even if instance_template remains unchanged. Deprecated in favor of 'name'.",
+ "type": "string"
+ },
+ "targetSize": {
+ "$ref": "FixedOrPercent",
+ "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: \n- If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. \n- if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded up. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersAbandonInstancesRequest": {
+ "id": "InstanceGroupManagersAbandonInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersApplyUpdatesRequest": {
+ "description": "InstanceGroupManagers.applyUpdatesToInstances",
+ "id": "InstanceGroupManagersApplyUpdatesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of URLs of one or more instances for which we want to apply updates on this managed instance group. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "maximalAction": {
+ "description": "The maximal action that should be perfomed on the instances. By default REPLACE.",
+ "enum": [
+ "NONE",
+ "REFRESH",
+ "REPLACE",
+ "RESTART"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "minimalAction": {
+ "description": "The minimal action that should be perfomed on the instances. By default NONE.",
+ "enum": [
+ "NONE",
+ "REFRESH",
+ "REPLACE",
+ "RESTART"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersDeleteInstancesRequest": {
+ "id": "InstanceGroupManagersDeleteInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersDeletePerInstanceConfigsReq": {
+ "description": "InstanceGroupManagers.deletePerInstanceConfigs",
+ "id": "InstanceGroupManagersDeletePerInstanceConfigsReq",
+ "properties": {
+ "instances": {
+ "description": "The list of instances for which we want to delete per-instance configs on this managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersListManagedInstancesResponse": {
+ "id": "InstanceGroupManagersListManagedInstancesResponse",
+ "properties": {
+ "managedInstances": {
+ "description": "[Output Only] The list of instances in the managed instance group.",
+ "items": {
+ "$ref": "ManagedInstance"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersListPerInstanceConfigsResp": {
+ "id": "InstanceGroupManagersListPerInstanceConfigsResp",
+ "properties": {
+ "items": {
+ "description": "[Output Only] The list of PerInstanceConfig.",
+ "items": {
+ "$ref": "PerInstanceConfig"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersRecreateInstancesRequest": {
+ "id": "InstanceGroupManagersRecreateInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersResizeAdvancedRequest": {
+ "id": "InstanceGroupManagersResizeAdvancedRequest",
+ "properties": {
+ "noCreationRetries": {
+ "description": "If this flag is true, the managed instance group attempts to create all instances initiated by this resize request only once. If there is an error during creation, the managed instance group does not retry create this instance, and we will decrease the targetSize of the request instead. If the flag is false, the group attemps to recreate each instance continuously until it succeeds.\n\nThis flag matters only in the first attempt of creation of an instance. After an instance is successfully created while this flag is enabled, the instance behaves the same way as all the other instances created with a regular resize request. In particular, if a running instance dies unexpectedly at a later time and needs to be recreated, this mode does not affect the recreation behavior in that scenario.\n\nThis flag is applicable only to the current resize request. It does not influence other resize requests in any way.\n\nYou can see which instances is being creating in which mode by calling the get or listManagedInstances API.",
+ "type": "boolean"
+ },
+ "targetSize": {
+ "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersScopedList": {
+ "id": "InstanceGroupManagersScopedList",
+ "properties": {
+ "instanceGroupManagers": {
+ "description": "[Output Only] The list of managed instance groups that are contained in the specified project and zone.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] The warning that replaces the list of managed instance groups when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersSetAutoHealingRequest": {
+ "id": "InstanceGroupManagersSetAutoHealingRequest",
+ "properties": {
+ "autoHealingPolicies": {
+ "items": {
+ "$ref": "InstanceGroupManagerAutoHealingPolicy"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersSetInstanceTemplateRequest": {
+ "id": "InstanceGroupManagersSetInstanceTemplateRequest",
+ "properties": {
+ "instanceTemplate": {
+ "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersSetTargetPoolsRequest": {
+ "id": "InstanceGroupManagersSetTargetPoolsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the target pools information. Use this optional property to prevent conflicts when multiple users change the target pools settings concurrently. Obtain the fingerprint with the instanceGroupManagers.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "targetPools": {
+ "description": "The list of target pool URLs that instances in this managed instance group belong to. The managed instance group applies these target pools to all of the instances in the group. Existing instances and new instances in the group all receive these target pool settings.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersUpdatePerInstanceConfigsReq": {
+ "description": "InstanceGroupManagers.updatePerInstanceConfigs",
+ "id": "InstanceGroupManagersUpdatePerInstanceConfigsReq",
+ "properties": {
+ "perInstanceConfigs": {
+ "description": "The list of per-instance configs to insert or patch on this managed instance group.",
+ "items": {
+ "$ref": "PerInstanceConfig"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsAddInstancesRequest": {
+ "id": "InstanceGroupsAddInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of instances to add to the instance group.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsListInstances": {
+ "id": "InstanceGroupsListInstances",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceWithNamedPorts resources.",
+ "items": {
+ "$ref": "InstanceWithNamedPorts"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupsListInstances",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupsListInstances for the list of instances in the specified instance group.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsListInstancesRequest": {
+ "id": "InstanceGroupsListInstancesRequest",
+ "properties": {
+ "instanceState": {
+ "description": "A filter for the state of the instances in the instance group. Valid options are ALL or RUNNING. If you do not specify this parameter the list includes all instances regardless of their state.",
+ "enum": [
+ "ALL",
+ "RUNNING"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsRemoveInstancesRequest": {
+ "id": "InstanceGroupsRemoveInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of instances to remove from the instance group.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsScopedList": {
+ "id": "InstanceGroupsScopedList",
+ "properties": {
+ "instanceGroups": {
+ "description": "[Output Only] The list of instance groups that are contained in this scope.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that replaces the list of instance groups when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsSetNamedPortsRequest": {
+ "id": "InstanceGroupsSetNamedPortsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "The list of named ports to set for this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceList": {
+ "description": "Contains a list of instances.",
+ "id": "InstanceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Instance resources.",
+ "items": {
+ "$ref": "Instance"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceList",
+ "description": "[Output Only] Type of resource. Always compute#instanceList for lists of Instance resources.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceListReferrers": {
+ "description": "Contains a list of instance referrers.",
+ "id": "InstanceListReferrers",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Reference resources.",
+ "items": {
+ "$ref": "Reference"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceListReferrers",
+ "description": "[Output Only] Type of resource. Always compute#instanceListReferrers for lists of Instance referrers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceMoveRequest": {
+ "id": "InstanceMoveRequest",
+ "properties": {
+ "destinationZone": {
+ "description": "The URL of the destination zone to move the instance. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone",
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "The URL of the target instance to move. This can be a full or partial URL. For example, the following are all valid URLs to an instance: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceProperties": {
+ "description": "",
+ "id": "InstanceProperties",
+ "properties": {
+ "canIpForward": {
+ "description": "Enables instances created based on this template to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information.",
+ "type": "boolean"
+ },
+ "description": {
+ "description": "An optional text description for the instances that are created from this instance template.",
+ "type": "string"
+ },
+ "disks": {
+ "description": "An array of disks that are associated with the instances that are created from this template.",
+ "items": {
+ "$ref": "AttachedDisk"
+ },
+ "type": "array"
+ },
+ "guestAccelerators": {
+ "description": "A list of guest accelerator cards' type and count to use for instances created from the instance template.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to instances that are created from this template.",
+ "type": "object"
+ },
+ "machineType": {
+ "annotations": {
+ "required": [
+ "compute.instanceTemplates.insert"
+ ]
+ },
+ "description": "The machine type to use for instances that are created from this template.",
+ "type": "string"
+ },
+ "metadata": {
+ "$ref": "Metadata",
+ "description": "The metadata key/value pairs to assign to instances that are created from this template. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
+ },
+ "minCpuPlatform": {
+ "description": "Minimum cpu/platform to be used by this instance. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform.",
+ "type": "string"
+ },
+ "networkInterfaces": {
+ "description": "An array of network access configurations for this interface.",
+ "items": {
+ "$ref": "NetworkInterface"
+ },
+ "type": "array"
+ },
+ "scheduling": {
+ "$ref": "Scheduling",
+ "description": "Specifies the scheduling options for the instances that are created from this template."
+ },
+ "serviceAccounts": {
+ "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this template. Use metadata queries to obtain the access tokens for these instances.",
+ "items": {
+ "$ref": "ServiceAccount"
+ },
+ "type": "array"
+ },
+ "shieldedVmConfig": {
+ "$ref": "ShieldedVmConfig",
+ "description": "Specifies the Shielded VM options for the instances that are created from this template."
+ },
+ "tags": {
+ "$ref": "Tags",
+ "description": "A list of tags to apply to the instances that are created from this template. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
+ }
+ },
+ "type": "object"
+ },
+ "InstanceReference": {
+ "id": "InstanceReference",
+ "properties": {
+ "instance": {
+ "description": "The URL for a specific instance.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceTemplate": {
+ "description": "An Instance Template resource. (== resource_for beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==)",
+ "id": "InstanceTemplate",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this instance template in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this instance template. The server defines this identifier.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceTemplate",
+ "description": "[Output Only] The resource type, which is always compute#instanceTemplate for instance templates.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceTemplates.insert"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "properties": {
+ "$ref": "InstanceProperties",
+ "description": "The instance properties for this instance template."
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this instance template. The server defines this URL.",
+ "type": "string"
+ },
+ "sourceInstance": {
+ "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance",
+ "type": "string"
+ },
+ "sourceInstanceParams": {
+ "$ref": "SourceInstanceParams",
+ "description": "The source instance params to use to create this instance template."
+ }
+ },
+ "type": "object"
+ },
+ "InstanceTemplateList": {
+ "description": "A list of instance templates.",
+ "id": "InstanceTemplateList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceTemplate resources.",
+ "items": {
+ "$ref": "InstanceTemplate"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceTemplateList",
+ "description": "[Output Only] The resource type, which is always compute#instanceTemplatesListResponse for instance template lists.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceWithNamedPorts": {
+ "id": "InstanceWithNamedPorts",
+ "properties": {
+ "instance": {
+ "description": "[Output Only] The URL of the instance.",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "[Output Only] The named ports that belong to this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "status": {
+ "description": "[Output Only] The status of the instance.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesAddMaintenancePoliciesRequest": {
+ "id": "InstancesAddMaintenancePoliciesRequest",
+ "properties": {
+ "maintenancePolicies": {
+ "description": "Maintenance policies to be added to this instance.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesRemoveMaintenancePoliciesRequest": {
+ "id": "InstancesRemoveMaintenancePoliciesRequest",
+ "properties": {
+ "maintenancePolicies": {
+ "description": "Maintenance policies to be removed from this instance.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesResumeRequest": {
+ "id": "InstancesResumeRequest",
+ "properties": {
+ "disks": {
+ "description": "Array of disks associated with this instance that are protected with a customer-supplied encryption key.\n\nIn order to resume the instance, the disk url and its corresponding key must be provided.\n\nIf the disk is not protected with a customer-supplied encryption key it should not be specified.",
+ "items": {
+ "$ref": "CustomerEncryptionKeyProtectedDisk"
+ },
+ "type": "array"
+ },
+ "instanceEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Decrypts data associated with an instance that is protected with a customer-supplied encryption key.\n\nIf the instance you are starting is protected with a customer-supplied encryption key, the correct key must be provided otherwise the instance resume will not succeed."
+ }
+ },
+ "type": "object"
+ },
+ "InstancesScopedList": {
+ "id": "InstancesScopedList",
+ "properties": {
+ "instances": {
+ "description": "[Output Only] List of instances contained in this scope.",
+ "items": {
+ "$ref": "Instance"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of instances when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetLabelsRequest": {
+ "id": "InstancesSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "Fingerprint of the previous set of labels for this resource, used to prevent conflicts. Provide the latest fingerprint value when making a request to add or change labels.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetMachineResourcesRequest": {
+ "id": "InstancesSetMachineResourcesRequest",
+ "properties": {
+ "guestAccelerators": {
+ "description": "List of the type and count of accelerator cards attached to the instance.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetMachineTypeRequest": {
+ "id": "InstancesSetMachineTypeRequest",
+ "properties": {
+ "machineType": {
+ "description": "Full or partial URL of the machine type resource. See Machine Types for a full list of machine types. For example: zones/us-central1-f/machineTypes/n1-standard-1",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetMinCpuPlatformRequest": {
+ "id": "InstancesSetMinCpuPlatformRequest",
+ "properties": {
+ "minCpuPlatform": {
+ "description": "Minimum cpu/platform this instance should be started at.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetServiceAccountRequest": {
+ "id": "InstancesSetServiceAccountRequest",
+ "properties": {
+ "email": {
+ "description": "Email address of the service account.",
+ "type": "string"
+ },
+ "scopes": {
+ "description": "The list of scopes to be made available for this service account.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesStartWithEncryptionKeyRequest": {
+ "id": "InstancesStartWithEncryptionKeyRequest",
+ "properties": {
+ "disks": {
+ "description": "Array of disks associated with this instance that are protected with a customer-supplied encryption key.\n\nIn order to start the instance, the disk url and its corresponding key must be provided.\n\nIf the disk is not protected with a customer-supplied encryption key it should not be specified.",
+ "items": {
+ "$ref": "CustomerEncryptionKeyProtectedDisk"
+ },
+ "type": "array"
+ },
+ "instanceEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Decrypts data associated with an instance that is protected with a customer-supplied encryption key.\n\nIf the instance you are starting is protected with a customer-supplied encryption key, the correct key must be provided otherwise the instance start will not succeed."
+ }
+ },
+ "type": "object"
+ },
+ "Interconnect": {
+ "description": "Represents an Interconnects resource. The Interconnects resource is a dedicated connection between Google's network and your on-premises network. For more information, see the Dedicated overview page. (== resource_for v1.interconnects ==) (== resource_for beta.interconnects ==)",
+ "id": "Interconnect",
+ "properties": {
+ "adminEnabled": {
+ "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.",
+ "type": "boolean"
+ },
+ "circuitInfos": {
+ "description": "[Output Only] List of CircuitInfo objects, that describe the individual circuits in this LAG.",
+ "items": {
+ "$ref": "InterconnectCircuitInfo"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "customerName": {
+ "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "expectedOutages": {
+ "description": "[Output Only] List of outages expected for this Interconnect.",
+ "items": {
+ "$ref": "InterconnectOutageNotification"
+ },
+ "type": "array"
+ },
+ "googleIpAddress": {
+ "description": "[Output Only] IP address configured on the Google side of the Interconnect link. This can be used only for ping tests.",
+ "type": "string"
+ },
+ "googleReferenceId": {
+ "description": "[Output Only] Google reference ID; to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "interconnectAttachments": {
+ "description": "[Output Only] A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "interconnectType": {
+ "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
+ "enum": [
+ "DEDICATED",
+ "IT_PRIVATE",
+ "PARTNER"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#interconnect",
+ "description": "[Output Only] Type of the resource. Always compute#interconnect for interconnects.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an Interconnect.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this Interconnect resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "linkType": {
+ "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
+ "enum": [
+ "LINK_TYPE_ETHERNET_10G_LR"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "location": {
+ "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.interconnects.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "nocContactEmail": {
+ "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Stackdriver logs alerting and Cloud Notifications.",
+ "type": "string"
+ },
+ "operationalStatus": {
+ "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
+ "enum": [
+ "OS_ACTIVE",
+ "OS_UNPROVISIONED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "peerIpAddress": {
+ "description": "[Output Only] IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests.",
+ "type": "string"
+ },
+ "provisionedLinkCount": {
+ "description": "[Output Only] Number of links actually provisioned in this interconnect.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestedLinkCount": {
+ "description": "Target number of physical links in the link bundle, as requested by the customer.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "state": {
+ "description": "[Output Only] The current state of whether or not this Interconnect is functional.",
+ "enum": [
+ "ACTIVE",
+ "UNPROVISIONED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachment": {
+ "description": "Represents an InterconnectAttachment (VLAN attachment) resource. For more information, see Creating VLAN Attachments. (== resource_for beta.interconnectAttachments ==) (== resource_for v1.interconnectAttachments ==)",
+ "id": "InterconnectAttachment",
+ "properties": {
+ "adminEnabled": {
+ "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER.",
+ "type": "boolean"
+ },
+ "availabilityZone": {
+ "enum": [
+ "ZONE_1",
+ "ZONE_2",
+ "ZONE_ANY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "bandwidth": {
+ "enum": [
+ "BPS_100M",
+ "BPS_10G",
+ "BPS_1G",
+ "BPS_200M",
+ "BPS_2G",
+ "BPS_300M",
+ "BPS_400M",
+ "BPS_500M",
+ "BPS_50M",
+ "BPS_5G"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "candidateSubnets": {
+ "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google?s edge. If not supplied, Google will randomly select an unused /29 from all of link-local space.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "cloudRouterIpAddress": {
+ "description": "[Output Only] IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "customerRouterIpAddress": {
+ "description": "[Output Only] IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource.",
+ "type": "string"
+ },
+ "edgeAvailabilityDomain": {
+ "description": "Desired availability domain for the attachment. Can only be specified when creating PARTNER-type InterconnectAttachments.\n\nFor improved reliability, customers should configure a pair of attachments with one per availability domain. The selected availability domain will be provided to the Partner via the pairing key so that the provisioned circuit will lie in the specified domain. If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.",
+ "enum": [
+ "AVAILABILITY_DOMAIN_1",
+ "AVAILABILITY_DOMAIN_2",
+ "AVAILABILITY_DOMAIN_ANY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "googleReferenceId": {
+ "description": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "interconnect": {
+ "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#interconnectAttachment",
+ "description": "[Output Only] Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this InterconnectAttachment resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "operationalStatus": {
+ "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
+ "enum": [
+ "OS_ACTIVE",
+ "OS_UNPROVISIONED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "pairingKey": {
+ "description": "[Output only for type PARTNER. Input only for PARTNER_PROVIDER. Not present for DEDICATED]. Opaque string identifying an PARTNER attachment. Of the form ?cloud-region/XXXXXX?.",
+ "type": "string"
+ },
+ "partnerAsn": {
+ "description": "[Output only for PARTNER. Input for PARTNER_PROVIDER. Not present for DEDICATED] BGP ASN of the Partner. A layer 3 Partner should supply this if they configured BGP on behalf of the customer.",
+ "format": "int64",
+ "type": "string"
+ },
+ "partnerMetadata": {
+ "$ref": "InterconnectAttachmentPartnerMetadata"
+ },
+ "privateInterconnectInfo": {
+ "$ref": "InterconnectAttachmentPrivateInfo",
+ "description": "[Output Only] Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional interconnect attachment resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "router": {
+ "description": "URL of the cloud router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network \u0026 region within which the Cloud Router is configured.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "state": {
+ "description": "[Output Only] The current state of whether or not this interconnect attachment is functional.",
+ "enum": [
+ "ACTIVE",
+ "DEFUNCT",
+ "PARTNER_REQUEST_RECEIVED",
+ "PENDING_CUSTOMER",
+ "PENDING_PARTNER",
+ "STATE_UNSPECIFIED",
+ "UNPROVISIONED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "DEDICATED",
+ "PARTNER",
+ "PARTNER_PROVIDER"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "vlanTag8021q": {
+ "description": "Available only for DEDICATED and PARTNER_PROVIDER. Desired VLAN tag for this attachment, in the range 2-4094. This field refers to 802.1q VLAN tag, also known as IEEE 802.1Q Only specified at creation time.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentAggregatedList": {
+ "id": "InterconnectAttachmentAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InterconnectAttachmentsScopedList",
+ "description": "Name of the scope containing this set of interconnect attachments."
+ },
+ "description": "A list of InterconnectAttachmentsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#interconnectAttachmentAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentAggregatedList for aggregated lists of interconnect attachments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentList": {
+ "description": "Response to the list request, and contains a list of interconnect attachments.",
+ "id": "InterconnectAttachmentList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InterconnectAttachment resources.",
+ "items": {
+ "$ref": "InterconnectAttachment"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#interconnectAttachmentList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentList for lists of interconnect attachments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentPartnerMetadata": {
+ "description": "Informational metadata about Partner attachments from Partners to display to customers. These fields are propagated from PARTNER_PROVIDER attachments to their corresponding PARTNER attachments. Only mutable for PARTNER_PROVIDER type, output-only for PARTNER, not available for DEDICATED.",
+ "id": "InterconnectAttachmentPartnerMetadata",
+ "properties": {
+ "interconnectName": {
+ "description": "Plain text name of the Interconnect this attachment is connected to, as displayed in the Partner?s portal. For instance ?Chicago 1?. This value may be validated to match approved Partner values.",
+ "type": "string"
+ },
+ "partnerName": {
+ "description": "Plain text name of the Partner providing this attachment. This value may be validated to match approved Partner values.",
+ "type": "string"
+ },
+ "portalUrl": {
+ "description": "URL of the Partner?s portal for this Attachment. Partners may customise this to be a deep-link to the specific resource on the Partner portal. This value may be validated to match approved Partner values.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentPrivateInfo": {
+ "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
+ "id": "InterconnectAttachmentPrivateInfo",
+ "properties": {
+ "tag8021q": {
+ "description": "[Output Only] 802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region.",
+ "format": "uint32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentsScopedList": {
+ "id": "InterconnectAttachmentsScopedList",
+ "properties": {
+ "interconnectAttachments": {
+ "description": "List of interconnect attachments contained in this scope.",
+ "items": {
+ "$ref": "InterconnectAttachment"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectCircuitInfo": {
+ "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only. Next id: 4",
+ "id": "InterconnectCircuitInfo",
+ "properties": {
+ "customerDemarcId": {
+ "description": "Customer-side demarc ID for this circuit.",
+ "type": "string"
+ },
+ "googleCircuitId": {
+ "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up.",
+ "type": "string"
+ },
+ "googleDemarcId": {
+ "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectList": {
+ "description": "Response to the list request, and contains a list of interconnects.",
+ "id": "InterconnectList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Interconnect resources.",
+ "items": {
+ "$ref": "Interconnect"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#interconnectList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectList for lists of interconnects.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectLocation": {
+ "description": "Represents an InterconnectLocations resource. The InterconnectLocations resource describes the locations where you can connect to Google's networks. For more information, see Colocation Facilities.",
+ "id": "InterconnectLocation",
+ "properties": {
+ "address": {
+ "description": "[Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character.",
+ "type": "string"
+ },
+ "availabilityZone": {
+ "description": "[Output Only] Availability zone for this location. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: \"zone1\" or \"zone2\".",
+ "type": "string"
+ },
+ "city": {
+ "description": "[Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: \"Chicago, IL\", \"Amsterdam, Netherlands\".",
+ "type": "string"
+ },
+ "continent": {
+ "description": "[Output Only] Continent for this location.",
+ "enum": [
+ "AFRICA",
+ "ASIA_PAC",
+ "C_AFRICA",
+ "C_ASIA_PAC",
+ "C_EUROPE",
+ "C_NORTH_AMERICA",
+ "C_SOUTH_AMERICA",
+ "EUROPE",
+ "NORTH_AMERICA",
+ "SOUTH_AMERICA"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "[Output Only] An optional description of the resource.",
+ "type": "string"
+ },
+ "facilityProvider": {
+ "description": "[Output Only] The name of the provider for this facility (e.g., EQUINIX).",
+ "type": "string"
+ },
+ "facilityProviderFacilityId": {
+ "description": "[Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1).",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#interconnectLocation",
+ "description": "[Output Only] Type of the resource. Always compute#interconnectLocation for interconnect locations.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "peeringdbFacilityId": {
+ "description": "[Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb).",
+ "type": "string"
+ },
+ "regionInfos": {
+ "description": "[Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.",
+ "items": {
+ "$ref": "InterconnectLocationRegionInfo"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectLocationList": {
+ "description": "Response to the list request, and contains a list of interconnect locations.",
+ "id": "InterconnectLocationList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InterconnectLocation resources.",
+ "items": {
+ "$ref": "InterconnectLocation"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#interconnectLocationList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectLocationList for lists of interconnect locations.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectLocationRegionInfo": {
+ "description": "Information about any potential InterconnectAttachments between an Interconnect at a specific InterconnectLocation, and a specific Cloud Region.",
+ "id": "InterconnectLocationRegionInfo",
+ "properties": {
+ "expectedRttMs": {
+ "description": "Expected round-trip time in milliseconds, from this InterconnectLocation to a VM in this region.",
+ "format": "int64",
+ "type": "string"
+ },
+ "locationPresence": {
+ "description": "Identifies the network presence of this location.",
+ "enum": [
+ "GLOBAL",
+ "LOCAL_REGION",
+ "LP_GLOBAL",
+ "LP_LOCAL_REGION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "URL for the region of this location.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectOutageNotification": {
+ "description": "Description of a planned outage on this Interconnect. Next id: 9",
+ "id": "InterconnectOutageNotification",
+ "properties": {
+ "affectedCircuits": {
+ "description": "Iff issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "A description about the purpose of the outage.",
+ "type": "string"
+ },
+ "endTime": {
+ "description": "Scheduled end time for the outage (milliseconds since Unix epoch).",
+ "format": "int64",
+ "type": "string"
+ },
+ "issueType": {
+ "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+ "enum": [
+ "IT_OUTAGE",
+ "IT_PARTIAL_OUTAGE",
+ "OUTAGE",
+ "PARTIAL_OUTAGE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Unique identifier for this outage notification.",
+ "type": "string"
+ },
+ "source": {
+ "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
+ "enum": [
+ "GOOGLE",
+ "NSRC_GOOGLE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "startTime": {
+ "description": "Scheduled start time for the outage (milliseconds since Unix epoch).",
+ "format": "int64",
+ "type": "string"
+ },
+ "state": {
+ "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+ "enum": [
+ "ACTIVE",
+ "CANCELLED",
+ "NS_ACTIVE",
+ "NS_CANCELED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InternalIpOwner": {
+ "id": "InternalIpOwner",
+ "properties": {
+ "ipCidrRange": {
+ "description": "IP CIDR range being owned.",
+ "type": "string"
+ },
+ "owners": {
+ "description": "URLs of the IP owners of the IP CIDR range.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "systemOwned": {
+ "description": "Whether this IP CIDR range is reserved for system use.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "IpOwnerList": {
+ "description": "Contains a list of IP owners.",
+ "id": "IpOwnerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InternalIpOwner resources.",
+ "items": {
+ "$ref": "InternalIpOwner"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#ipOwnerList",
+ "description": "[Output Only] Type of resource. Always compute#ipOwnerList for lists of IP owners.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "License": {
+ "description": "A license resource.",
+ "id": "License",
+ "properties": {
+ "chargesUseFee": {
+ "description": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee.",
+ "type": "boolean"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional textual description of the resource; provided by the client when the resource is created.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#license",
+ "description": "[Output Only] Type of resource. Always compute#license for licenses.",
+ "type": "string"
+ },
+ "licenseCode": {
+ "description": "[Output Only] The unique code used to attach this license to images, snapshots, and disks.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "[Output Only] Name of the resource. The name is 1-63 characters long and complies with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "resourceRequirements": {
+ "$ref": "LicenseResourceRequirements"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "transferable": {
+ "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "LicenseCode": {
+ "id": "LicenseCode",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "[Output Only] Description of this License Code.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#licenseCode",
+ "description": "[Output Only] Type of resource. Always compute#licenseCode for licenses.",
+ "type": "string"
+ },
+ "licenseAlias": {
+ "description": "[Output Only] URL and description aliases of Licenses with the same License Code.",
+ "items": {
+ "$ref": "LicenseCodeLicenseAlias"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.licenses.insert"
+ ]
+ },
+ "description": "[Output Only] Name of the resource. The name is 1-20 characters long and must be a valid 64 bit integer.",
+ "pattern": "[0-9]{0,20}?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "state": {
+ "description": "[Output Only] Current state of this License Code.",
+ "enum": [
+ "DISABLED",
+ "ENABLED",
+ "RESTRICTED",
+ "STATE_UNSPECIFIED",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "transferable": {
+ "description": "[Output Only] If true, the license will remain attached when creating images or snapshots from disks. Otherwise, the license is not transferred.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "LicenseCodeLicenseAlias": {
+ "id": "LicenseCodeLicenseAlias",
+ "properties": {
+ "description": {
+ "description": "[Output Only] Description of this License Code.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] URL of license corresponding to this License Code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LicenseResourceRequirements": {
+ "id": "LicenseResourceRequirements",
+ "properties": {
+ "minGuestCpuCount": {
+ "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minMemoryMb": {
+ "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "LicensesListResponse": {
+ "id": "LicensesListResponse",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of License resources.",
+ "items": {
+ "$ref": "License"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfig": {
+ "description": "Specifies what kind of log the caller must write",
+ "id": "LogConfig",
+ "properties": {
+ "cloudAudit": {
+ "$ref": "LogConfigCloudAuditOptions",
+ "description": "Cloud audit options."
+ },
+ "counter": {
+ "$ref": "LogConfigCounterOptions",
+ "description": "Counter options."
+ },
+ "dataAccess": {
+ "$ref": "LogConfigDataAccessOptions",
+ "description": "Data access options."
+ }
+ },
+ "type": "object"
+ },
+ "LogConfigCloudAuditOptions": {
+ "description": "Write a Cloud Audit log",
+ "id": "LogConfigCloudAuditOptions",
+ "properties": {
+ "authorizationLoggingOptions": {
+ "$ref": "AuthorizationLoggingOptions",
+ "description": "Information used by the Cloud Audit Logging pipeline."
+ },
+ "logName": {
+ "description": "The log_name to populate in the Cloud Audit Record.",
+ "enum": [
+ "ADMIN_ACTIVITY",
+ "DATA_ACCESS",
+ "UNSPECIFIED_LOG_NAME"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfigCounterOptions": {
+ "description": "Increment a streamz counter with the specified metric and field names.\n\nMetric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended.\n\nField names correspond to IAM request parameters and field values are their respective values.\n\nAt present the only supported field names are - \"iam_principal\", corresponding to IAMContext.principal; - \"\" (empty string), resulting in one aggretated counter with no field.\n\nExamples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==\u003e increment counter /iam/policy/backend_debug_access_count {iam_principal=[value of IAMContext.principal]}\n\nAt this time we do not support: * multiple field names (though this may be supported in the future) * decrementing the counter * incrementing it by anything other than 1",
+ "id": "LogConfigCounterOptions",
+ "properties": {
+ "field": {
+ "description": "The field value to attribute.",
+ "type": "string"
+ },
+ "metric": {
+ "description": "The metric to update.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfigDataAccessOptions": {
+ "description": "Write a Data Access (Gin) log",
+ "id": "LogConfigDataAccessOptions",
+ "properties": {
+ "logMode": {
+ "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.",
+ "enum": [
+ "LOG_FAIL_CLOSED",
+ "LOG_MODE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MachineType": {
+ "description": "A Machine Type resource. (== resource_for v1.machineTypes ==) (== resource_for beta.machineTypes ==)",
+ "id": "MachineType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this machine type."
+ },
+ "description": {
+ "description": "[Output Only] An optional textual description of the resource.",
+ "type": "string"
+ },
+ "guestCpus": {
+ "description": "[Output Only] The number of virtual CPUs that are available to the instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "isSharedCpu": {
+ "description": "[Output Only] Whether this machine type has a shared CPU. See Shared-core machine types for more information.",
+ "type": "boolean"
+ },
+ "kind": {
+ "default": "compute#machineType",
+ "description": "[Output Only] The type of the resource. Always compute#machineType for machine types.",
+ "type": "string"
+ },
+ "maximumPersistentDisks": {
+ "description": "[Output Only] Maximum persistent disks allowed.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maximumPersistentDisksSizeGb": {
+ "description": "[Output Only] Maximum total persistent disks size (GB) allowed.",
+ "format": "int64",
+ "type": "string"
+ },
+ "memoryMb": {
+ "description": "[Output Only] The amount of physical memory available to the instance, defined in MB.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The name of the zone where the machine type resides, such as us-central1-a.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MachineTypeAggregatedList": {
+ "id": "MachineTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "MachineTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of machine types."
+ },
+ "description": "A list of MachineTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#machineTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#machineTypeAggregatedList for aggregated lists of machine types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MachineTypeList": {
+ "description": "Contains a list of machine types.",
+ "id": "MachineTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of MachineType resources.",
+ "items": {
+ "$ref": "MachineType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#machineTypeList",
+ "description": "[Output Only] Type of resource. Always compute#machineTypeList for lists of machine types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MachineTypesScopedList": {
+ "id": "MachineTypesScopedList",
+ "properties": {
+ "machineTypes": {
+ "description": "[Output Only] List of machine types contained in this scope.",
+ "items": {
+ "$ref": "MachineType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that appears when the machine types list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MaintenancePoliciesList": {
+ "id": "MaintenancePoliciesList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "[Output Only] A list of MaintenancePolicy resources.",
+ "items": {
+ "$ref": "MaintenancePolicy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#maintenancePoliciesList",
+ "description": "[Output Only] Type of resource.Always compute#maintenancePoliciesList for listsof maintenancePolicies",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MaintenancePoliciesScopedList": {
+ "id": "MaintenancePoliciesScopedList",
+ "properties": {
+ "maintenancePolicies": {
+ "description": "List of maintenancePolicies contained in this scope.",
+ "items": {
+ "$ref": "MaintenancePolicy"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of maintenancePolicies when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MaintenancePolicy": {
+ "description": "A maintenance policy for an instance. This specifies what kind of maintenance operations our infrastructure may perform on this instance and when.",
+ "id": "MaintenancePolicy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#maintenancePolicy",
+ "description": "[Output Only] Type of the resource. Always compute#maintenance_policies for maintenance policies.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert"
+ ]
+ },
+ "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "region": {
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "vmMaintenancePolicy": {
+ "$ref": "VmMaintenancePolicy",
+ "description": "Maintenance policy applicable to VMs for infrastructure maintenance."
+ }
+ },
+ "type": "object"
+ },
+ "MaintenancePolicyAggregatedList": {
+ "description": "Contains a list of maintenancePolicies.",
+ "id": "MaintenancePolicyAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "MaintenancePoliciesScopedList",
+ "description": "Name of the scope containing this set of maintenancePolicies."
+ },
+ "description": "A list of MaintenancePolicy resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#maintenancePolicyAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MaintenanceWindow": {
+ "description": "A maintenance window for VMs and disks. When set, we restrict our maintenance operations to this window.",
+ "id": "MaintenanceWindow",
+ "properties": {
+ "dailyMaintenanceWindow": {
+ "$ref": "DailyMaintenanceWindow"
+ },
+ "hourlyMaintenanceWindow": {
+ "$ref": "HourlyMaintenanceWindow"
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstance": {
+ "description": "Next available tag: 12",
+ "id": "ManagedInstance",
+ "properties": {
+ "currentAction": {
+ "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful. \n- CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's targetSize value is decreased instead. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance. \n- VERIFYING The managed instance group has created the instance and it is in the process of being verified.",
+ "enum": [
+ "ABANDONING",
+ "CREATING",
+ "CREATING_WITHOUT_RETRIES",
+ "DELETING",
+ "NONE",
+ "RECREATING",
+ "REFRESHING",
+ "RESTARTING",
+ "VERIFYING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output only] The unique identifier for this resource. This field is empty when instance does not exist.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instance": {
+ "description": "[Output Only] The URL of the instance. The URL can exist even if the instance has not yet been created.",
+ "type": "string"
+ },
+ "instanceStatus": {
+ "description": "[Output Only] The status of the instance. This field is empty when the instance does not exist.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "instanceTemplate": {
+ "description": "[Output Only] The intended template of the instance. This field is empty when current_action is one of { DELETING, ABANDONING }.",
+ "type": "string"
+ },
+ "lastAttempt": {
+ "$ref": "ManagedInstanceLastAttempt",
+ "description": "[Output Only] Information about the last attempt to create or delete the instance."
+ },
+ "override": {
+ "$ref": "ManagedInstanceOverride",
+ "description": "[Output Only] Override defined for this instance."
+ },
+ "tag": {
+ "description": "[Output Only] Tag describing the version.",
+ "type": "string"
+ },
+ "version": {
+ "$ref": "ManagedInstanceVersion",
+ "description": "[Output Only] Intended version of this instance."
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstanceLastAttempt": {
+ "id": "ManagedInstanceLastAttempt",
+ "properties": {
+ "errors": {
+ "description": "[Output Only] Encountered errors during the last attempt to create or delete the instance.",
+ "properties": {
+ "errors": {
+ "description": "[Output Only] The array of errors encountered while processing this operation.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] The error type identifier for this error.",
+ "type": "string"
+ },
+ "location": {
+ "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional.",
+ "type": "string"
+ },
+ "message": {
+ "description": "[Output Only] An optional, human-readable error message.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstanceOverride": {
+ "description": "Overrides of stateful properties for a given instance",
+ "id": "ManagedInstanceOverride",
+ "properties": {
+ "disks": {
+ "description": "Disk overrides defined for this instance. According to documentation the maximum number of disks attached to an instance is 128: https://cloud.google.com/compute/docs/disks/ However, compute API defines the limit at 140, so this is what we check.",
+ "items": {
+ "$ref": "ManagedInstanceOverrideDiskOverride"
+ },
+ "type": "array"
+ },
+ "metadata": {
+ "description": "Metadata overrides defined for this instance. TODO(b/69785416) validate the total length is \u003c9 KB",
+ "items": {
+ "properties": {
+ "key": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert",
+ "compute.projects.setCommonInstanceMetadata"
+ ]
+ },
+ "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.",
+ "pattern": "[a-zA-Z0-9-_]{1,128}",
+ "type": "string"
+ },
+ "value": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert",
+ "compute.projects.setCommonInstanceMetadata"
+ ]
+ },
+ "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "origin": {
+ "description": "[Output Only] Indicates where does the override come from.",
+ "enum": [
+ "AUTO_GENERATED",
+ "USER_PROVIDED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstanceOverrideDiskOverride": {
+ "id": "ManagedInstanceOverrideDiskOverride",
+ "properties": {
+ "deviceName": {
+ "description": "The name of the device on the VM",
+ "type": "string"
+ },
+ "mode": {
+ "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
+ "enum": [
+ "READ_ONLY",
+ "READ_WRITE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "source": {
+ "description": "The disk that is/will be mounted",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstanceVersion": {
+ "id": "ManagedInstanceVersion",
+ "properties": {
+ "instanceTemplate": {
+ "description": "[Output Only] The intended template of the instance. This field is empty when current_action is one of { DELETING, ABANDONING }.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the version.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Metadata": {
+ "description": "A metadata key/value entry.",
+ "id": "Metadata",
+ "properties": {
+ "fingerprint": {
+ "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.",
+ "format": "byte",
+ "type": "string"
+ },
+ "items": {
+ "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB.",
+ "items": {
+ "properties": {
+ "key": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert",
+ "compute.projects.setCommonInstanceMetadata"
+ ]
+ },
+ "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.",
+ "pattern": "[a-zA-Z0-9-_]{1,128}",
+ "type": "string"
+ },
+ "value": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert",
+ "compute.projects.setCommonInstanceMetadata"
+ ]
+ },
+ "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#metadata",
+ "description": "[Output Only] Type of the resource. Always compute#metadata for metadata.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NamedPort": {
+ "description": "The named port. For example: .",
+ "id": "NamedPort",
+ "properties": {
+ "name": {
+ "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The port number, which can be a value between 1 and 65535.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Network": {
+ "description": "Represents a Network resource. Read Networks and Firewalls for more information. (== resource_for v1.networks ==) (== resource_for beta.networks ==)",
+ "id": "Network",
+ "properties": {
+ "IPv4Range": {
+ "description": "The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
+ "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}/[0-9]{1,2}",
+ "type": "string"
+ },
+ "autoCreateSubnetworks": {
+ "description": "When set to true, the network is created in \"auto subnet mode\". When set to false, the network is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region.",
+ "type": "boolean"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "crossVmEncryption": {
+ "description": "[Output Only] Type of VM-to-VM traffic encryption for this network.",
+ "enum": [
+ "ENCRYPTED",
+ "UNENCRYPTED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "gatewayIPv4": {
+ "description": "A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.",
+ "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#network",
+ "description": "[Output Only] Type of the resource. Always compute#network for networks.",
+ "type": "string"
+ },
+ "loadBalancerVmEncryption": {
+ "description": "[Output Only] Type of LB-to-VM traffic encryption for this network.",
+ "enum": [
+ "ENCRYPTED",
+ "UNENCRYPTED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.networks.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "peerings": {
+ "description": "[Output Only] List of network peerings for the resource.",
+ "items": {
+ "$ref": "NetworkPeering"
+ },
+ "type": "array"
+ },
+ "routingConfig": {
+ "$ref": "NetworkRoutingConfig",
+ "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "subnetworks": {
+ "description": "[Output Only] Server-defined fully-qualified URLs for all subnetworks in this network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpoint": {
+ "description": "The network endpoint.",
+ "id": "NetworkEndpoint",
+ "properties": {
+ "instance": {
+ "description": "The name for a specific VM instance that the IP address belongs to. This is required for network endpoints of type GCE_VM_IP and GCE_VM_IP_PORT. The instance must be in the same zone of network endpoint group.\n\nThe name must be 1-63 characters long, and comply with RFC1035.",
+ "type": "string"
+ },
+ "ipAddress": {
+ "description": "Optional IPv4 address of network endpoint. The IP address must belong to a VM in GCE (either the primary IP or as part of an aliased IP range). If the IP address is not specified, then the primary IP address for the VM instance in the network that the network endpoint group belongs to will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "Optional port number of network endpoint. If not specified and the NetworkEndpointGroup.network_endpoint_type is GCE_IP_PORT, the defaultPort for the network endpoint group will be used.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroup": {
+ "description": "Represents a collection of network endpoints.",
+ "id": "NetworkEndpointGroup",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#networkEndpointGroup",
+ "description": "[Output Only] Type of the resource. Always compute#networkEndpointGroup for network endpoint group.",
+ "type": "string"
+ },
+ "loadBalancer": {
+ "$ref": "NetworkEndpointGroupLbNetworkEndpointGroup",
+ "description": "This field is only valid when the network endpoint group type is LOAD_BALANCING."
+ },
+ "name": {
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "type": "string"
+ },
+ "networkEndpointType": {
+ "description": "Type of network endpoints in this network endpoint group. Only supported values for LOAD_BALANCING are GCE_VM_IP or GCE_VM_IP_PORT.",
+ "enum": [
+ "GCE_VM_IP_PORT"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "size": {
+ "description": "[Output only] Number of network endpoints in the network endpoint group.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "type": {
+ "description": "Specify the type of this network endpoint group. Only LOAD_BALANCING is valid for now.",
+ "enum": [
+ "LOAD_BALANCING"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupAggregatedList": {
+ "id": "NetworkEndpointGroupAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "NetworkEndpointGroupsScopedList",
+ "description": "The name of the scope that contains this set of network endpoint groups."
+ },
+ "description": "A list of NetworkEndpointGroupsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#networkEndpointGroupAggregatedList",
+ "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupAggregatedList for aggregated lists of network endpoint groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupLbNetworkEndpointGroup": {
+ "description": "Load balancing specific fields for network endpoint group of type LOAD_BALANCING.",
+ "id": "NetworkEndpointGroupLbNetworkEndpointGroup",
+ "properties": {
+ "defaultPort": {
+ "description": "The default port used if the port number is not specified in the network endpoint. If the network endpoint type is GCE_VM_IP, this field must not be specified.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "network": {
+ "description": "The URL of the network to which all network endpoints in the NEG belong. Uses \"default\" project network if unspecified.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Optional URL of the subnetwork to which all network endpoints in the NEG belong.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the network endpoint group is located.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupList": {
+ "id": "NetworkEndpointGroupList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of NetworkEndpointGroup resources.",
+ "items": {
+ "$ref": "NetworkEndpointGroup"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#networkEndpointGroupList",
+ "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupList for network endpoint group lists.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupsAttachEndpointsRequest": {
+ "id": "NetworkEndpointGroupsAttachEndpointsRequest",
+ "properties": {
+ "networkEndpoints": {
+ "description": "The list of network endpoints to be attached.",
+ "items": {
+ "$ref": "NetworkEndpoint"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupsDetachEndpointsRequest": {
+ "id": "NetworkEndpointGroupsDetachEndpointsRequest",
+ "properties": {
+ "networkEndpoints": {
+ "description": "The list of network endpoints to be detached.",
+ "items": {
+ "$ref": "NetworkEndpoint"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupsListEndpointsRequest": {
+ "id": "NetworkEndpointGroupsListEndpointsRequest",
+ "properties": {
+ "healthStatus": {
+ "description": "Optional query parameter for showing the health status of each network endpoint. Valid options are SKIP or SHOW. If you don't specifiy this parameter, the health status of network endpoints will not be provided.",
+ "enum": [
+ "SHOW",
+ "SKIP"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupsListNetworkEndpoints": {
+ "id": "NetworkEndpointGroupsListNetworkEndpoints",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of NetworkEndpointWithHealthStatus resources.",
+ "items": {
+ "$ref": "NetworkEndpointWithHealthStatus"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#networkEndpointGroupsListNetworkEndpoints",
+ "description": "[Output Only] The resource type, which is always compute#networkEndpointGroupsListNetworkEndpoints for the list of network endpoints in the specified network endpoint group.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointGroupsScopedList": {
+ "id": "NetworkEndpointGroupsScopedList",
+ "properties": {
+ "networkEndpointGroups": {
+ "description": "[Output Only] The list of network endpoint groups that are contained in this scope.",
+ "items": {
+ "$ref": "NetworkEndpointGroup"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that replaces the list of network endpoint groups when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkEndpointWithHealthStatus": {
+ "id": "NetworkEndpointWithHealthStatus",
+ "properties": {
+ "healths": {
+ "description": "[Output only] The health status of network endpoint;",
+ "items": {
+ "$ref": "HealthStatusForNetworkEndpoint"
+ },
+ "type": "array"
+ },
+ "networkEndpoint": {
+ "$ref": "NetworkEndpoint",
+ "description": "[Output only] The network endpoint;"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkInterface": {
+ "description": "A network interface resource attached to an instance.",
+ "id": "NetworkInterface",
+ "properties": {
+ "accessConfigs": {
+ "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access.",
+ "items": {
+ "$ref": "AccessConfig"
+ },
+ "type": "array"
+ },
+ "aliasIpRanges": {
+ "description": "An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks.",
+ "items": {
+ "$ref": "AliasIpRange"
+ },
+ "type": "array"
+ },
+ "fingerprint": {
+ "description": "Fingerprint hash of contents stored in this network interface. This field will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface.",
+ "format": "byte",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#networkInterface",
+ "description": "[Output Only] Type of the resource. Always compute#networkInterface for network interfaces.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] The name of the network interface, generated by the server. For network devices, these are eth0, eth1, etc.",
+ "type": "string"
+ },
+ "network": {
+ "description": "URL of the network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used; if the network is not specified but the subnetwork is specified, the network is inferred.\n\nThis field is optional when creating a firewall rule. If not specified when creating a firewall rule, the default network global/networks/default is used.\n\nIf you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/global/networks/network \n- projects/project/global/networks/network \n- global/networks/default",
+ "type": "string"
+ },
+ "networkIP": {
+ "description": "An IPv4 internal network address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not provide this property. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode, then this field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork \n- regions/region/subnetworks/subnetwork",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkList": {
+ "description": "Contains a list of networks.",
+ "id": "NetworkList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Network resources.",
+ "items": {
+ "$ref": "Network"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#networkList",
+ "description": "[Output Only] Type of resource. Always compute#networkList for lists of networks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkPeering": {
+ "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
+ "id": "NetworkPeering",
+ "properties": {
+ "autoCreateRoutes": {
+ "description": "Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network.",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "type": "string"
+ },
+ "network": {
+ "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.",
+ "type": "string"
+ },
+ "state": {
+ "description": "[Output Only] State for the peering.",
+ "enum": [
+ "ACTIVE",
+ "INACTIVE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "stateDetails": {
+ "description": "[Output Only] Details about the current state of the peering.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkRoutingConfig": {
+ "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
+ "id": "NetworkRoutingConfig",
+ "properties": {
+ "routingMode": {
+ "description": "The network-wide routing mode to use. If set to REGIONAL, this network's cloud routers will only advertise routes with subnetworks of this network in the same region as the router. If set to GLOBAL, this network's cloud routers will advertise routes with all subnetworks of this network, across regions.",
+ "enum": [
+ "GLOBAL",
+ "REGIONAL"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworksAddPeeringRequest": {
+ "id": "NetworksAddPeeringRequest",
+ "properties": {
+ "autoCreateRoutes": {
+ "description": "Whether Google Compute Engine manages the routes automatically.",
+ "type": "boolean"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.networks.addPeering"
+ ]
+ },
+ "description": "Name of the peering, which should conform to RFC1035.",
+ "type": "string"
+ },
+ "peerNetwork": {
+ "description": "URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworksRemovePeeringRequest": {
+ "id": "NetworksRemovePeeringRequest",
+ "properties": {
+ "name": {
+ "description": "Name of the peering, which should conform to RFC1035.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Operation": {
+ "description": "An Operation resource, used to manage asynchronous API requests. (== resource_for v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)",
+ "id": "Operation",
+ "properties": {
+ "clientOperationId": {
+ "description": "[Output Only] Reserved for future use.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Deprecated] This field is deprecated.",
+ "type": "string"
+ },
+ "description": {
+ "description": "[Output Only] A textual description of the operation, which is set when the operation is created.",
+ "type": "string"
+ },
+ "endTime": {
+ "description": "[Output Only] The time that this operation was completed. This value is in RFC3339 text format.",
+ "type": "string"
+ },
+ "error": {
+ "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
+ "properties": {
+ "errors": {
+ "description": "[Output Only] The array of errors encountered while processing this operation.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] The error type identifier for this error.",
+ "type": "string"
+ },
+ "location": {
+ "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional.",
+ "type": "string"
+ },
+ "message": {
+ "description": "[Output Only] An optional, human-readable error message.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "httpErrorMessage": {
+ "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.",
+ "type": "string"
+ },
+ "httpErrorStatusCode": {
+ "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "insertTime": {
+ "description": "[Output Only] The time that this operation was requested. This value is in RFC3339 text format.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#operation",
+ "description": "[Output Only] Type of the resource. Always compute#operation for Operation resources.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "operationType": {
+ "description": "[Output Only] The type of operation, such as insert, update, or delete, and so on.",
+ "type": "string"
+ },
+ "progress": {
+ "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "region": {
+ "description": "[Output Only] The URL of the region where the operation resides. Only available when performing regional operations. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "startTime": {
+ "description": "[Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.",
+ "enum": [
+ "DONE",
+ "PENDING",
+ "RUNNING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional textual description of the current status of the operation.",
+ "type": "string"
+ },
+ "targetId": {
+ "description": "[Output Only] The unique target ID, which identifies a specific incarnation of the target resource.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "targetLink": {
+ "description": "[Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.",
+ "type": "string"
+ },
+ "user": {
+ "description": "[Output Only] User who requested the operation, for example: user@example.com.",
+ "type": "string"
+ },
+ "warnings": {
+ "description": "[Output Only] If warning messages are generated during processing of the operation, this field will be populated.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "OperationAggregatedList": {
+ "id": "OperationAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "OperationsScopedList",
+ "description": "[Output Only] Name of the scope containing this set of operations."
+ },
+ "description": "[Output Only] A map of scoped operation lists.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#operationAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#operationAggregatedList for aggregated lists of operations.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "OperationList": {
+ "description": "Contains a list of Operation resources.",
+ "id": "OperationList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "[Output Only] A list of Operation resources.",
+ "items": {
+ "$ref": "Operation"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#operationList",
+ "description": "[Output Only] Type of resource. Always compute#operations for Operations resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "OperationsScopedList": {
+ "id": "OperationsScopedList",
+ "properties": {
+ "operations": {
+ "description": "[Output Only] List of operations contained in this scope.",
+ "items": {
+ "$ref": "Operation"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of operations when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "PathMatcher": {
+ "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service will be used.",
+ "id": "PathMatcher",
+ "properties": {
+ "defaultService": {
+ "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is matched by the URL's path portion. For example, the following are all valid URLs to a BackendService resource: \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name to which this PathMatcher is referred by the HostRule.",
+ "type": "string"
+ },
+ "pathRules": {
+ "description": "The list of path rules.",
+ "items": {
+ "$ref": "PathRule"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "PathRule": {
+ "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
+ "id": "PathRule",
+ "properties": {
+ "paths": {
+ "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "service": {
+ "description": "The URL of the BackendService resource if this rule is matched.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "PerInstanceConfig": {
+ "id": "PerInstanceConfig",
+ "properties": {
+ "instance": {
+ "description": "The URL of the instance. Serves as a merge key during UpdatePerInstanceConfigs operation.",
+ "type": "string"
+ },
+ "override": {
+ "$ref": "ManagedInstanceOverride"
+ }
+ },
+ "type": "object"
+ },
+ "Policy": {
+ "description": "Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.\n\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.\n\n**Example**\n\n{ \"bindings\": [ { \"role\": \"roles/owner\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-other-app@appspot.gserviceaccount.com\", ] }, { \"role\": \"roles/viewer\", \"members\": [\"user:sean@example.com\"] } ] }\n\nFor a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam/docs).",
+ "id": "Policy",
+ "properties": {
+ "auditConfigs": {
+ "description": "Specifies cloud audit logging configuration for this policy.",
+ "items": {
+ "$ref": "AuditConfig"
+ },
+ "type": "array"
+ },
+ "bindings": {
+ "description": "Associates a list of `members` to a `role`. `bindings` with no members will result in an error.",
+ "items": {
+ "$ref": "Binding"
+ },
+ "type": "array"
+ },
+ "etag": {
+ "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.",
+ "format": "byte",
+ "type": "string"
+ },
+ "iamOwned": {
+ "description": "",
+ "type": "boolean"
+ },
+ "rules": {
+ "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.",
+ "items": {
+ "$ref": "Rule"
+ },
+ "type": "array"
+ },
+ "version": {
+ "description": "Deprecated.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Project": {
+ "description": "A Project resource. For an overview of projects, see Cloud Platform Resource Hierarchy. (== resource_for v1.projects ==) (== resource_for beta.projects ==)",
+ "id": "Project",
+ "properties": {
+ "commonInstanceMetadata": {
+ "$ref": "Metadata",
+ "description": "Metadata key/value pairs available to all instances contained in this project. See Custom metadata for more information."
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "defaultNetworkTier": {
+ "description": "This signifies the default network tier used for configuring resources of the project and can only take the following values: PREMIUM, STANDARD. Initially the default network tier is PREMIUM.",
+ "enum": [
+ "PREMIUM",
+ "SELECT",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "defaultServiceAccount": {
+ "description": "[Output Only] Default service account used by VMs running in this project.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional textual description of the resource.",
+ "type": "string"
+ },
+ "enabledFeatures": {
+ "description": "Restricted features enabled for use on this project.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#project",
+ "description": "[Output Only] Type of the resource. Always compute#project for projects.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine.",
+ "type": "string"
+ },
+ "quotas": {
+ "description": "[Output Only] Quotas assigned to this project.",
+ "items": {
+ "$ref": "Quota"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "usageExportLocation": {
+ "$ref": "UsageExportLocation",
+ "description": "The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored."
+ },
+ "xpnProjectStatus": {
+ "description": "[Output Only] The role this project has in a shared VPC configuration. Currently only HOST projects are differentiated.",
+ "enum": [
+ "HOST",
+ "UNSPECIFIED_XPN_PROJECT_STATUS"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsDisableXpnResourceRequest": {
+ "id": "ProjectsDisableXpnResourceRequest",
+ "properties": {
+ "xpnResource": {
+ "$ref": "XpnResourceId",
+ "description": "Service resource (a.k.a service project) ID."
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsEnableXpnResourceRequest": {
+ "id": "ProjectsEnableXpnResourceRequest",
+ "properties": {
+ "xpnResource": {
+ "$ref": "XpnResourceId",
+ "description": "Service resource (a.k.a service project) ID."
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsGetXpnResources": {
+ "id": "ProjectsGetXpnResources",
+ "properties": {
+ "kind": {
+ "default": "compute#projectsGetXpnResources",
+ "description": "[Output Only] Type of resource. Always compute#projectsGetXpnResources for lists of service resources (a.k.a service projects)",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "resources": {
+ "description": "Service resources (a.k.a service projects) attached to this project as their shared VPC host.",
+ "items": {
+ "$ref": "XpnResourceId"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsListXpnHostsRequest": {
+ "id": "ProjectsListXpnHostsRequest",
+ "properties": {
+ "organization": {
+ "description": "Optional organization ID managed by Cloud Resource Manager, for which to list shared VPC host projects. If not specified, the organization will be inferred from the project.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsSetDefaultNetworkTierRequest": {
+ "id": "ProjectsSetDefaultNetworkTierRequest",
+ "properties": {
+ "networkTier": {
+ "description": "Default network tier to be set.",
+ "enum": [
+ "PREMIUM",
+ "SELECT",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsSetDefaultServiceAccountRequest": {
+ "id": "ProjectsSetDefaultServiceAccountRequest",
+ "properties": {
+ "email": {
+ "description": "Email address of the service account.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Quota": {
+ "description": "A quotas entry.",
+ "id": "Quota",
+ "properties": {
+ "limit": {
+ "description": "[Output Only] Quota limit for this metric.",
+ "format": "double",
+ "type": "number"
+ },
+ "metric": {
+ "description": "[Output Only] Name of the quota metric.",
+ "enum": [
+ "AMD_S9300_GPUS",
+ "AUTOSCALERS",
+ "BACKEND_BUCKETS",
+ "BACKEND_SERVICES",
+ "COMMITMENTS",
+ "CPUS",
+ "CPUS_ALL_REGIONS",
+ "DISKS_TOTAL_GB",
+ "FIREWALLS",
+ "FORWARDING_RULES",
+ "HEALTH_CHECKS",
+ "IMAGES",
+ "INSTANCES",
+ "INSTANCE_GROUPS",
+ "INSTANCE_GROUP_MANAGERS",
+ "INSTANCE_TEMPLATES",
+ "INTERCONNECTS",
+ "INTERNAL_ADDRESSES",
+ "IN_USE_ADDRESSES",
+ "LOCAL_SSD_TOTAL_GB",
+ "MAINTENANCE_POLICIES",
+ "NETWORKS",
+ "NVIDIA_K80_GPUS",
+ "NVIDIA_P100_GPUS",
+ "NVIDIA_P100_VWS_GPUS",
+ "NVIDIA_V100_GPUS",
+ "PREEMPTIBLE_CPUS",
+ "PREEMPTIBLE_LOCAL_SSD_GB",
+ "PREEMPTIBLE_NVIDIA_K80_GPUS",
+ "PREEMPTIBLE_NVIDIA_P100_GPUS",
+ "REGIONAL_AUTOSCALERS",
+ "REGIONAL_INSTANCE_GROUP_MANAGERS",
+ "ROUTERS",
+ "ROUTES",
+ "SECURITY_POLICIES",
+ "SECURITY_POLICY_RULES",
+ "SNAPSHOTS",
+ "SSD_TOTAL_GB",
+ "SSL_CERTIFICATES",
+ "STATIC_ADDRESSES",
+ "SUBNETWORKS",
+ "TARGET_HTTPS_PROXIES",
+ "TARGET_HTTP_PROXIES",
+ "TARGET_INSTANCES",
+ "TARGET_POOLS",
+ "TARGET_SSL_PROXIES",
+ "TARGET_TCP_PROXIES",
+ "TARGET_VPN_GATEWAYS",
+ "URL_MAPS",
+ "VPN_TUNNELS"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "usage": {
+ "description": "[Output Only] Current usage of this metric.",
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Reference": {
+ "description": "Represents a reference to a resource.",
+ "id": "Reference",
+ "properties": {
+ "kind": {
+ "default": "compute#reference",
+ "description": "[Output Only] Type of the resource. Always compute#reference for references.",
+ "type": "string"
+ },
+ "referenceType": {
+ "description": "A description of the reference type with no implied semantics. Possible values include: \n- MEMBER_OF",
+ "type": "string"
+ },
+ "referrer": {
+ "description": "URL of the resource which refers to the target.",
+ "type": "string"
+ },
+ "target": {
+ "description": "URL of the resource to which this reference points.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Region": {
+ "description": "Region resource. (== resource_for beta.regions ==) (== resource_for v1.regions ==)",
+ "id": "Region",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this region."
+ },
+ "description": {
+ "description": "[Output Only] Textual description of the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#region",
+ "description": "[Output Only] Type of the resource. Always compute#region for regions.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "quotas": {
+ "description": "[Output Only] Quotas assigned to this region.",
+ "items": {
+ "$ref": "Quota"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] Status of the region, either UP or DOWN.",
+ "enum": [
+ "DOWN",
+ "UP"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "zones": {
+ "description": "[Output Only] A list of zones available in this region, in the form of resource URLs.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionAutoscalerList": {
+ "description": "Contains a list of autoscalers.",
+ "id": "RegionAutoscalerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Autoscaler resources.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionAutoscalerList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionDiskTypeList": {
+ "id": "RegionDiskTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of DiskType resources.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionDiskTypeList",
+ "description": "[Output Only] Type of resource. Always compute#regionDiskTypeList for region disk types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionDisksResizeRequest": {
+ "id": "RegionDisksResizeRequest",
+ "properties": {
+ "sizeGb": {
+ "description": "The new size of the regional persistent disk, which is specified in GB.",
+ "format": "int64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupList": {
+ "description": "Contains a list of InstanceGroup resources.",
+ "id": "RegionInstanceGroupList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroup resources.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionInstanceGroupList",
+ "description": "The resource type.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagerDeleteInstanceConfigReq": {
+ "description": "RegionInstanceGroupManagers.deletePerInstanceConfigs",
+ "id": "RegionInstanceGroupManagerDeleteInstanceConfigReq",
+ "properties": {
+ "instances": {
+ "description": "The list of instances for which we want to delete per-instance configs on this managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagerList": {
+ "description": "Contains a list of managed instance groups.",
+ "id": "RegionInstanceGroupManagerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroupManager resources.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionInstanceGroupManagerList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups that exist in th regional scope.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagerUpdateInstanceConfigReq": {
+ "description": "RegionInstanceGroupManagers.updatePerInstanceConfigs",
+ "id": "RegionInstanceGroupManagerUpdateInstanceConfigReq",
+ "properties": {
+ "perInstanceConfigs": {
+ "description": "The list of per-instance configs to insert or patch on this managed instance group.",
+ "items": {
+ "$ref": "PerInstanceConfig"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersAbandonInstancesRequest": {
+ "id": "RegionInstanceGroupManagersAbandonInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersApplyUpdatesRequest": {
+ "description": "InstanceGroupManagers.applyUpdatesToInstances",
+ "id": "RegionInstanceGroupManagersApplyUpdatesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of instances for which we want to apply changes on this managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "maximalAction": {
+ "description": "The maximal action that should be perfomed on the instances. By default REPLACE.",
+ "enum": [
+ "NONE",
+ "REFRESH",
+ "REPLACE",
+ "RESTART"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "minimalAction": {
+ "description": "The minimal action that should be perfomed on the instances. By default NONE.",
+ "enum": [
+ "NONE",
+ "REFRESH",
+ "REPLACE",
+ "RESTART"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersDeleteInstancesRequest": {
+ "id": "RegionInstanceGroupManagersDeleteInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersListInstanceConfigsResp": {
+ "id": "RegionInstanceGroupManagersListInstanceConfigsResp",
+ "properties": {
+ "items": {
+ "description": "[Output Only] The list of PerInstanceConfig.",
+ "items": {
+ "$ref": "PerInstanceConfig"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersListInstancesResponse": {
+ "id": "RegionInstanceGroupManagersListInstancesResponse",
+ "properties": {
+ "managedInstances": {
+ "description": "List of managed instances.",
+ "items": {
+ "$ref": "ManagedInstance"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersRecreateRequest": {
+ "id": "RegionInstanceGroupManagersRecreateRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersSetAutoHealingRequest": {
+ "id": "RegionInstanceGroupManagersSetAutoHealingRequest",
+ "properties": {
+ "autoHealingPolicies": {
+ "items": {
+ "$ref": "InstanceGroupManagerAutoHealingPolicy"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersSetTargetPoolsRequest": {
+ "id": "RegionInstanceGroupManagersSetTargetPoolsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "Fingerprint of the target pools information, which is a hash of the contents. This field is used for optimistic locking when you update the target pool entries. This field is optional.",
+ "format": "byte",
+ "type": "string"
+ },
+ "targetPools": {
+ "description": "The URL of all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersSetTemplateRequest": {
+ "id": "RegionInstanceGroupManagersSetTemplateRequest",
+ "properties": {
+ "instanceTemplate": {
+ "description": "URL of the InstanceTemplate resource from which all new instances will be created.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupsListInstances": {
+ "id": "RegionInstanceGroupsListInstances",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceWithNamedPorts resources.",
+ "items": {
+ "$ref": "InstanceWithNamedPorts"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionInstanceGroupsListInstances",
+ "description": "The resource type.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupsListInstancesRequest": {
+ "id": "RegionInstanceGroupsListInstancesRequest",
+ "properties": {
+ "instanceState": {
+ "description": "Instances in which state should be returned. Valid options are: 'ALL', 'RUNNING'. By default, it lists all instances.",
+ "enum": [
+ "ALL",
+ "RUNNING"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "portName": {
+ "description": "Name of port user is interested in. It is optional. If it is set, only information about this ports will be returned. If it is not set, all the named ports will be returned. Always lists all instances.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupsSetNamedPortsRequest": {
+ "id": "RegionInstanceGroupsSetNamedPortsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "The list of named ports to set for this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionList": {
+ "description": "Contains a list of region resources.",
+ "id": "RegionList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Region resources.",
+ "items": {
+ "$ref": "Region"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionList",
+ "description": "[Output Only] Type of resource. Always compute#regionList for lists of regions.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionSetLabelsRequest": {
+ "id": "RegionSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The labels to set for this resource.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ResourceCommitment": {
+ "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
+ "id": "ResourceCommitment",
+ "properties": {
+ "amount": {
+ "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU.",
+ "format": "int64",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type of resource for which this commitment applies. Possible values are VCPU and MEMORY",
+ "enum": [
+ "LOCAL_SSD",
+ "MEMORY",
+ "UNSPECIFIED",
+ "VCPU"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ResourceGroupReference": {
+ "id": "ResourceGroupReference",
+ "properties": {
+ "group": {
+ "description": "A URI referencing one of the instance groups listed in the backend service.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Route": {
+ "description": "Represents a Route resource. A route specifies how certain packets should be handled by the network. Routes are associated with instances by tags and the set of routes for a particular instance is called its routing table.\n\nFor each packet leaving an instance, the system searches that instance's routing table for a single best matching route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching routes. The packet is then forwarded as specified by the nextHop field of the winning route - either to another instance destination, an instance gateway, or a Google Compute Engine-operated gateway.\n\nPackets that do not match any route in the sending instance's routing table are dropped. (== resource_for beta.routes ==) (== resource_for v1.routes ==)",
+ "id": "Route",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "destRange": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "The destination range of outgoing packets that this route applies to. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#route",
+ "description": "[Output Only] Type of this resource. Always compute#routes for Route resources.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "Fully-qualified URL of the network that this route applies to.",
+ "type": "string"
+ },
+ "nextHopGateway": {
+ "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway",
+ "type": "string"
+ },
+ "nextHopInstance": {
+ "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/",
+ "type": "string"
+ },
+ "nextHopIp": {
+ "description": "The network IP address of an instance that should handle matching packets. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "nextHopNetwork": {
+ "description": "The URL of the local network if it should handle matching packets.",
+ "type": "string"
+ },
+ "nextHopPeering": {
+ "description": "[Output Only] The network peering name that should handle matching packets, which should conform to RFC1035.",
+ "type": "string"
+ },
+ "nextHopVpnTunnel": {
+ "description": "The URL to a VpnTunnel that should handle matching packets.",
+ "type": "string"
+ },
+ "priority": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "tags": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "A list of instance tags to which this route applies.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "warnings": {
+ "description": "[Output Only] If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RouteList": {
+ "description": "Contains a list of Route resources.",
+ "id": "RouteList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Route resources.",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#routeList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Router": {
+ "description": "Router resource.",
+ "id": "Router",
+ "properties": {
+ "bgp": {
+ "$ref": "RouterBgp",
+ "description": "BGP information specific to this router."
+ },
+ "bgpPeers": {
+ "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
+ "items": {
+ "$ref": "RouterBgpPeer"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "interfaces": {
+ "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
+ "items": {
+ "$ref": "RouterInterface"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#router",
+ "description": "[Output Only] Type of resource. Always compute#router for routers.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.routers.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "nats": {
+ "description": "List of Nat services created in this router. The maximum number of Nat services within a Router is 3 for Alpha.",
+ "items": {
+ "$ref": "RouterNat"
+ },
+ "type": "array"
+ },
+ "network": {
+ "annotations": {
+ "required": [
+ "compute.routers.insert"
+ ]
+ },
+ "description": "URI of the network to which this router belongs.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URI of the region where the router resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterAdvertisedIpRange": {
+ "description": "Description-tagged IP ranges for the router to advertise.",
+ "id": "RouterAdvertisedIpRange",
+ "properties": {
+ "description": {
+ "description": "User-specified description for the IP range.",
+ "type": "string"
+ },
+ "range": {
+ "description": "The IP range to advertise. The value must be a CIDR-formatted string.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterAdvertisedPrefix": {
+ "description": "Description-tagged prefixes for the router to advertise.",
+ "id": "RouterAdvertisedPrefix",
+ "properties": {
+ "description": {
+ "description": "User-specified description for the prefix.",
+ "type": "string"
+ },
+ "prefix": {
+ "description": "The prefix to advertise. The value must be a CIDR-formatted string.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterAggregatedList": {
+ "description": "Contains a list of routers.",
+ "id": "RouterAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "RoutersScopedList",
+ "description": "Name of the scope containing this set of routers."
+ },
+ "description": "A list of Router resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#routerAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RouterBgp": {
+ "id": "RouterBgp",
+ "properties": {
+ "advertiseMode": {
+ "description": "User-specified flag to indicate which mode to use for advertisement.",
+ "enum": [
+ "CUSTOM",
+ "DEFAULT"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "advertisedGroups": {
+ "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
+ "items": {
+ "enum": [
+ "ALL_SUBNETS"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "advertisedIpRanges": {
+ "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
+ "items": {
+ "$ref": "RouterAdvertisedIpRange"
+ },
+ "type": "array"
+ },
+ "advertisedPrefixs": {
+ "description": "User-specified list of individual prefixes to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These prefixes will be advertised in addition to any specified groups. Leave this field blank to advertise no custom prefixes.",
+ "items": {
+ "$ref": "RouterAdvertisedPrefix"
+ },
+ "type": "array"
+ },
+ "asn": {
+ "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN.",
+ "format": "uint32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "RouterBgpPeer": {
+ "id": "RouterBgpPeer",
+ "properties": {
+ "advertiseMode": {
+ "description": "User-specified flag to indicate which mode to use for advertisement.",
+ "enum": [
+ "CUSTOM",
+ "DEFAULT"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "advertisedGroups": {
+ "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
+ "items": {
+ "enum": [
+ "ALL_SUBNETS"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "advertisedIpRanges": {
+ "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
+ "items": {
+ "$ref": "RouterAdvertisedIpRange"
+ },
+ "type": "array"
+ },
+ "advertisedPrefixs": {
+ "description": "User-specified list of individual prefixes to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These prefixes will be advertised in addition to any specified groups. Leave this field blank to advertise no custom prefixes.",
+ "items": {
+ "$ref": "RouterAdvertisedPrefix"
+ },
+ "type": "array"
+ },
+ "advertisedRoutePriority": {
+ "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "interfaceName": {
+ "description": "Name of the interface the BGP peer is associated with.",
+ "type": "string"
+ },
+ "ipAddress": {
+ "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of this BGP peer. The name must be 1-63 characters long and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "peerAsn": {
+ "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "peerIpAddress": {
+ "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterInterface": {
+ "id": "RouterInterface",
+ "properties": {
+ "ipRange": {
+ "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
+ "type": "string"
+ },
+ "linkedInterconnectAttachment": {
+ "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+ "type": "string"
+ },
+ "linkedVpnTunnel": {
+ "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of this interface entry. The name must be 1-63 characters long and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterList": {
+ "description": "Contains a list of Router resources.",
+ "id": "RouterList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Router resources.",
+ "items": {
+ "$ref": "Router"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#routerList",
+ "description": "[Output Only] Type of resource. Always compute#router for routers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RouterNat": {
+ "description": "Represents a Nat resource. It enables the VMs within the specified subnetworks to access Internet without external IP addresses. It specifies a list of subnetworks (and the ranges within) that want to use NAT. Customers can also provide the external IPs that would be used for NAT. GCP would auto-allocate ephemeral IPs if no external IPs are provided.",
+ "id": "RouterNat",
+ "properties": {
+ "autoAllocatedNatIps": {
+ "description": "[Output Only] List of IPs allocated automatically by GCP for this Nat service. They will be raw IP strings like \"179.12.26.133\". They are ephemeral IPs allocated from the IP blocks managed by the NAT manager. This list can grow and shrink based on the number of VMs configured to use NAT.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Unique name of this Nat service. The name must be 1-63 characters long and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "natIpAllocateOption": {
+ "description": "Specify the NatIpAllocateOption. If it is AUTO_ONLY, then nat_ip should be empty.",
+ "enum": [
+ "AUTO_ONLY",
+ "MANUAL_ONLY"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "natIps": {
+ "description": "List of URLs of the IP resources used for this Nat service. These IPs must be valid static external IP addresses assigned to the project. max_length is subject to change post alpha.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceSubnetworkIpRangesToNat": {
+ "description": "Specify the Nat option. If this field contains ALL_SUBNETWORKS_ALL_IP_RANGES or ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES, then there should not be any other Router.Nat section in any Router for this network in this region.",
+ "enum": [
+ "ALL_SUBNETWORKS_ALL_IP_RANGES",
+ "ALL_SUBNETWORKS_ALL_PRIMARY_IP_RANGES",
+ "LIST_OF_SUBNETWORKS"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "subnetworks": {
+ "description": "List of Subnetwork resources whose traffic should be translated by NAT Gateway. It is used only when LIST_OF_SUBNETWORKS is selected for the SubnetworkIpRangeToNatOption above.",
+ "items": {
+ "$ref": "RouterNatSubnetworkToNat"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RouterNatSubnetworkToNat": {
+ "description": "Defines the IP ranges that want to use NAT for a subnetwork.",
+ "id": "RouterNatSubnetworkToNat",
+ "properties": {
+ "name": {
+ "description": "URL for the subnetwork resource to use NAT.",
+ "type": "string"
+ },
+ "secondaryIpRangeNames": {
+ "description": "List of the secondary ranges of the Subnetwork that are allowed to use NAT. This can be populated only if \"LIST_OF_SECONDARY_IP_RANGES\" is one of the values in source_ip_ranges_to_nat.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceIpRangesToNats": {
+ "description": "Specify the options for NAT ranges in the Subnetwork. All usages of single value are valid except NAT_IP_RANGE_OPTION_UNSPECIFIED. The only valid option with multiple values is: [\"PRIMARY_IP_RANGE\", \"LIST_OF_SECONDARY_IP_RANGES\"] Default: [ALL_IP_RANGES]",
+ "items": {
+ "enum": [
+ "ALL_IP_RANGES",
+ "LIST_OF_SECONDARY_IP_RANGES",
+ "PRIMARY_IP_RANGE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RouterStatus": {
+ "id": "RouterStatus",
+ "properties": {
+ "bestRoutes": {
+ "description": "Best routes for this router's network.",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "bestRoutesForRouter": {
+ "description": "Best routes learned by this router.",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "bgpPeerStatus": {
+ "items": {
+ "$ref": "RouterStatusBgpPeerStatus"
+ },
+ "type": "array"
+ },
+ "natStatus": {
+ "items": {
+ "$ref": "RouterStatusNatStatus"
+ },
+ "type": "array"
+ },
+ "network": {
+ "description": "URI of the network to which this router belongs.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterStatusBgpPeerStatus": {
+ "id": "RouterStatusBgpPeerStatus",
+ "properties": {
+ "advertisedRoutes": {
+ "description": "Routes that were advertised to the remote BGP peer",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "ipAddress": {
+ "description": "IP address of the local BGP interface.",
+ "type": "string"
+ },
+ "linkedVpnTunnel": {
+ "description": "URL of the VPN tunnel that this BGP peer controls.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of this BGP peer. Unique within the Routers resource.",
+ "type": "string"
+ },
+ "numLearnedRoutes": {
+ "description": "Number of routes learned from the remote BGP Peer.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "peerIpAddress": {
+ "description": "IP address of the remote BGP interface.",
+ "type": "string"
+ },
+ "state": {
+ "description": "BGP state as specified in RFC1771.",
+ "type": "string"
+ },
+ "status": {
+ "description": "Status of the BGP peer: {UP, DOWN}",
+ "enum": [
+ "DOWN",
+ "UNKNOWN",
+ "UP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "uptime": {
+ "description": "Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23 hours, 59 minutes, 59 seconds",
+ "type": "string"
+ },
+ "uptimeSeconds": {
+ "description": "Time this session has been up, in seconds. Format: 145",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterStatusNatStatus": {
+ "description": "Status of a NAT contained in this router.",
+ "id": "RouterStatusNatStatus",
+ "properties": {
+ "autoAllocatedNatIps": {
+ "description": "List of IPs auto-allocated for NAT. Example: [\"1.1.1.1\", \"129.2.16.89\"]",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "minExtraNatIpsNeeded": {
+ "description": "The number of extra IPs to allocate. This will be greater than 0 only if user-specified IPs are NOT enough to allow all configured VMs to use NAT. This value is meaningful only when auto-allocation of NAT IPs is *not* used.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "Unique name of this NAT.",
+ "type": "string"
+ },
+ "numVmEndpointsWithNatMappings": {
+ "description": "Number of VM endpoints (i.e., Nics) that can use NAT.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "userAllocatedNatIpResources": {
+ "description": "List of fully qualified URLs of reserved IP address resources.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "userAllocatedNatIps": {
+ "description": "List of IPs user-allocated for NAT. They will be raw IP strings like \"179.12.26.133\".",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RouterStatusResponse": {
+ "id": "RouterStatusResponse",
+ "properties": {
+ "kind": {
+ "default": "compute#routerStatusResponse",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "result": {
+ "$ref": "RouterStatus"
+ }
+ },
+ "type": "object"
+ },
+ "RoutersPreviewResponse": {
+ "id": "RoutersPreviewResponse",
+ "properties": {
+ "resource": {
+ "$ref": "Router",
+ "description": "Preview of given router."
+ }
+ },
+ "type": "object"
+ },
+ "RoutersScopedList": {
+ "id": "RoutersScopedList",
+ "properties": {
+ "routers": {
+ "description": "List of routers contained in this scope.",
+ "items": {
+ "$ref": "Router"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of routers when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Rule": {
+ "description": "A rule to be applied in a Policy.",
+ "id": "Rule",
+ "properties": {
+ "action": {
+ "description": "Required",
+ "enum": [
+ "ALLOW",
+ "ALLOW_WITH_LOG",
+ "DENY",
+ "DENY_WITH_LOG",
+ "LOG",
+ "NO_ACTION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "conditions": {
+ "description": "Additional restrictions that must be met. All conditions must pass for the rule to match.",
+ "items": {
+ "$ref": "Condition"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "Human-readable description of the rule.",
+ "type": "string"
+ },
+ "ins": {
+ "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "logConfigs": {
+ "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.",
+ "items": {
+ "$ref": "LogConfig"
+ },
+ "type": "array"
+ },
+ "notIns": {
+ "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "permissions": {
+ "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SSLHealthCheck": {
+ "id": "SSLHealthCheck",
+ "properties": {
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "portSpecification": {
+ "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, SSL health check follows behavior specified in\nport\nand\nportName\nfields.",
+ "enum": [
+ "USE_FIXED_PORT",
+ "USE_NAMED_PORT",
+ "USE_SERVING_PORT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "request": {
+ "description": "The application data to send once the SSL connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Scheduling": {
+ "description": "Sets the scheduling options for an Instance.",
+ "id": "Scheduling",
+ "properties": {
+ "automaticRestart": {
+ "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted.\n\nBy default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine.",
+ "type": "boolean"
+ },
+ "nodeAffinities": {
+ "description": "A set of node affinity and anti-affinity.",
+ "items": {
+ "$ref": "SchedulingNodeAffinity"
+ },
+ "type": "array"
+ },
+ "onHostMaintenance": {
+ "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Setting Instance Scheduling Options.",
+ "enum": [
+ "MIGRATE",
+ "TERMINATE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "preemptible": {
+ "description": "Defines whether the instance is preemptible. This can only be set during instance creation, it cannot be set or changed after the instance has been created.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "SchedulingNodeAffinity": {
+ "description": "Node Affinity: the configuration of desired nodes onto which this Instance could be scheduled.",
+ "id": "SchedulingNodeAffinity",
+ "properties": {
+ "key": {
+ "description": "Corresponds to the label key of Node resource.",
+ "type": "string"
+ },
+ "operator": {
+ "description": "Defines the operation of node selection.",
+ "enum": [
+ "IN",
+ "NOT_IN",
+ "OPERATOR_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "values": {
+ "description": "Corresponds to the label values of Node resource.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicy": {
+ "description": "A security policy is comprised of one or more rules. It can also be associated with one or more 'targets'.",
+ "id": "SecurityPolicy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the security policy.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#securityPolicy",
+ "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "rules": {
+ "description": "List of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
+ "items": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyList": {
+ "id": "SecurityPolicyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of SecurityPolicy resources.",
+ "items": {
+ "$ref": "SecurityPolicy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#securityPolicyList",
+ "description": "[Output Only] Type of resource. Always compute#securityPolicyList for listsof securityPolicies",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyReference": {
+ "id": "SecurityPolicyReference",
+ "properties": {
+ "securityPolicy": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyRule": {
+ "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
+ "id": "SecurityPolicyRule",
+ "properties": {
+ "action": {
+ "description": "The Action to preform when the client connection triggers the rule. Can currently be either \"allow\" or \"deny()\" where valid values for status are 403, 404, and 502.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#securityPolicyRule",
+ "description": "[Output only] Type of the resource. Always compute#securityPolicyRule for security policy rules",
+ "type": "string"
+ },
+ "match": {
+ "$ref": "SecurityPolicyRuleMatcher",
+ "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding ?action? is enforced."
+ },
+ "preview": {
+ "description": "If set to true, the specified action is not enforced.",
+ "type": "boolean"
+ },
+ "priority": {
+ "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated in the increasing order of priority.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyRuleMatcher": {
+ "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
+ "id": "SecurityPolicyRuleMatcher",
+ "properties": {
+ "config": {
+ "$ref": "SecurityPolicyRuleMatcherConfig",
+ "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
+ },
+ "expr": {
+ "$ref": "Expr",
+ "description": "User defined CEVAL expression. A CEVAL expression is used to specify match criteria such as origin.ip, source.region_code and contents in the request header."
+ },
+ "srcIpRanges": {
+ "description": "CIDR IP address range.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionedExpr": {
+ "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
+ "enum": [
+ "SRC_IPS_V1",
+ "VERSIONED_EXPR_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyRuleMatcherConfig": {
+ "id": "SecurityPolicyRuleMatcherConfig",
+ "properties": {
+ "srcIpRanges": {
+ "description": "CIDR IP address range.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SerialPortOutput": {
+ "description": "An instance's serial console output.",
+ "id": "SerialPortOutput",
+ "properties": {
+ "contents": {
+ "description": "[Output Only] The contents of the console output.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#serialPortOutput",
+ "description": "[Output Only] Type of the resource. Always compute#serialPortOutput for serial port output.",
+ "type": "string"
+ },
+ "next": {
+ "description": "[Output Only] The position of the next byte of content from the serial console output. Use this value in the next request as the start parameter.",
+ "format": "int64",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "start": {
+ "description": "The starting byte position of the output that was returned. This should match the start parameter sent with the request. If the serial console output exceeds the size of the buffer, older output will be overwritten by newer content and the start values will be mismatched.",
+ "format": "int64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceAccount": {
+ "description": "A service account.",
+ "id": "ServiceAccount",
+ "properties": {
+ "email": {
+ "description": "Email address of the service account.",
+ "type": "string"
+ },
+ "scopes": {
+ "description": "The list of scopes to be made available for this service account.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ShieldedVmConfig": {
+ "description": "A set of Shielded VM options.",
+ "id": "ShieldedVmConfig",
+ "properties": {
+ "enableIntegrityMonitoring": {
+ "description": "Defines whether the instance should have integrity monitoring enabled.",
+ "type": "boolean"
+ },
+ "enableSecureBoot": {
+ "description": "Defines whether the instance should have secure boot enabled.",
+ "type": "boolean"
+ },
+ "enableVtpm": {
+ "description": "Defines whether the instance should have the TPM enabled.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "SignedUrlKey": {
+ "description": "Represents a customer-supplied Signing Key used by Cloud CDN Signed URLs",
+ "id": "SignedUrlKey",
+ "properties": {
+ "keyName": {
+ "description": "Name of the key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "keyValue": {
+ "description": "128-bit key value used for signing the URL. The key value must be a valid RFC 4648 Section 5 base64url encoded string.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Snapshot": {
+ "description": "A persistent disk snapshot resource. (== resource_for beta.snapshots ==) (== resource_for v1.snapshots ==)",
+ "id": "Snapshot",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "[Output Only] Size of the snapshot, specified in GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "guestOsFeatures": {
+ "description": "[Output Only] A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#snapshot",
+ "description": "[Output Only] Type of the resource. Always compute#snapshot for Snapshot resources.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a snapshot.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
+ "type": "object"
+ },
+ "licenseCodes": {
+ "description": "Integer license codes indicating which licenses are attached to this snapshot.",
+ "items": {
+ "format": "int64",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "description": "[Output Only] A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "snapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
+ },
+ "sourceDisk": {
+ "description": "[Output Only] The source disk used to create this snapshot.",
+ "type": "string"
+ },
+ "sourceDiskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
+ },
+ "sourceDiskId": {
+ "description": "[Output Only] The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
+ "enum": [
+ "CREATING",
+ "DELETING",
+ "FAILED",
+ "READY",
+ "UPLOADING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "storageBytes": {
+ "description": "[Output Only] A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
+ "format": "int64",
+ "type": "string"
+ },
+ "storageBytesStatus": {
+ "description": "[Output Only] An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
+ "enum": [
+ "UPDATING",
+ "UP_TO_DATE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "storageLocations": {
+ "description": "GCS bucket storage location of the snapshot (regional or multi-regional).",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SnapshotList": {
+ "description": "Contains a list of Snapshot resources.",
+ "id": "SnapshotList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Snapshot resources.",
+ "items": {
+ "$ref": "Snapshot"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#snapshotList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SourceInstanceParams": {
+ "description": "A specification of the parameters to use when creating the instance template from a source instance.",
+ "id": "SourceInstanceParams",
+ "properties": {
+ "diskConfigs": {
+ "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.",
+ "items": {
+ "$ref": "DiskInstantiationConfig"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SslCertificate": {
+ "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==)",
+ "id": "SslCertificate",
+ "properties": {
+ "certificate": {
+ "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "expireTime": {
+ "description": "[Output Only] Expire time of the certificate. RFC3339",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#sslCertificate",
+ "description": "[Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.",
+ "type": "string"
+ },
+ "managed": {
+ "$ref": "SslCertificateManagedSslCertificate",
+ "description": "Configuration and status of a managed SSL certificate."
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "A write-only private key in PEM format. Only insert requests will include this field.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "selfManaged": {
+ "$ref": "SslCertificateSelfManagedSslCertificate",
+ "description": "Configuration and status of a self-managed SSL certificate."
+ },
+ "subjectAlternativeNames": {
+ "description": "[Output Only] Domains associated with the certificate via Subject Alternative Name.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "type": {
+ "description": "(Optional) Specifies the type of SSL certificate, either \"SELF_MANAGED\" or \"MANAGED\". If not specified, the certificate is self-managed and the fields certificate and private_key are used.",
+ "enum": [
+ "MANAGED",
+ "SELF_MANAGED",
+ "TYPE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SslCertificateList": {
+ "description": "Contains a list of SslCertificate resources.",
+ "id": "SslCertificateList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of SslCertificate resources.",
+ "items": {
+ "$ref": "SslCertificate"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#sslCertificateList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SslCertificateManagedSslCertificate": {
+ "description": "Configuration and status of a managed SSL certificate.",
+ "id": "SslCertificateManagedSslCertificate",
+ "properties": {
+ "domainStatus": {
+ "additionalProperties": {
+ "enum": [
+ "ACTIVE",
+ "DOMAIN_STATUS_UNSPECIFIED",
+ "FAILED_CAA_FORBIDDEN",
+ "FAILED_NOT_VISIBLE",
+ "FAILED_RATE_LIMITED",
+ "PROVISIONING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "description": "[Output only] Detailed statuses of the domains specified for managed certificate resource.",
+ "type": "object"
+ },
+ "domains": {
+ "description": "The domains for which a managed SSL certificate will be generated. Currently only single-domain certs are supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "status": {
+ "description": "[Output only] Status of the managed certificate resource.",
+ "enum": [
+ "ACTIVE",
+ "MANAGED_CERTIFICATE_STATUS_UNSPECIFIED",
+ "PROVISIONING",
+ "PROVISIONING_FAILED",
+ "PROVISIONING_FAILED_PERMANENTLY",
+ "RENEWAL_FAILED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SslCertificateSelfManagedSslCertificate": {
+ "description": "Configuration and status of a self-managed SSL certificate..",
+ "id": "SslCertificateSelfManagedSslCertificate",
+ "properties": {
+ "certificate": {
+ "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "A write-only private key in PEM format. Only insert requests will include this field.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SslPoliciesList": {
+ "id": "SslPoliciesList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of SslPolicy resources.",
+ "items": {
+ "$ref": "SslPolicy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#sslPoliciesList",
+ "description": "[Output Only] Type of the resource. Always compute#sslPoliciesList for lists of sslPolicies.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SslPoliciesListAvailableFeaturesResponse": {
+ "id": "SslPoliciesListAvailableFeaturesResponse",
+ "properties": {
+ "features": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SslPolicy": {
+ "description": "A SSL policy specifies the server-side support for SSL features. This can be attached to a TargetHttpsProxy or a TargetSslProxy. This affects connections between clients and the HTTPS or SSL proxy load balancer. They do not affect the connection between the load balancers and the backends.",
+ "id": "SslPolicy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "customFeatures": {
+ "description": "List of features enabled when the selected profile is CUSTOM. The\n- method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "enabledFeatures": {
+ "description": "[Output Only] The list of features enabled in the SSL policy.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#sslPolicy",
+ "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
+ "type": "string"
+ },
+ "minTlsVersion": {
+ "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2, TLS_1_3.",
+ "enum": [
+ "TLS_1_0",
+ "TLS_1_1",
+ "TLS_1_2",
+ "TLS_1_3"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "profile": {
+ "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
+ "enum": [
+ "COMPATIBLE",
+ "CUSTOM",
+ "MODERN",
+ "RESTRICTED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "warnings": {
+ "description": "[Output Only] If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SslPolicyReference": {
+ "id": "SslPolicyReference",
+ "properties": {
+ "sslPolicy": {
+ "description": "URL of the SSL policy resource. Set this to empty string to clear any existing SSL policy associated with the target proxy resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulPolicy": {
+ "id": "StatefulPolicy",
+ "properties": {
+ "preservedResources": {
+ "$ref": "StatefulPolicyPreservedResources"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulPolicyPreservedDisk": {
+ "id": "StatefulPolicyPreservedDisk",
+ "properties": {
+ "deviceName": {
+ "description": "Device name of the disk to be preserved",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "StatefulPolicyPreservedResources": {
+ "description": "Configuration of all preserved resources.",
+ "id": "StatefulPolicyPreservedResources",
+ "properties": {
+ "disks": {
+ "description": "Disks created on the instances that will be preserved on instance delete, resize down, etc.",
+ "items": {
+ "$ref": "StatefulPolicyPreservedDisk"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Subnetwork": {
+ "description": "A Subnetwork resource. (== resource_for beta.subnetworks ==) (== resource_for v1.subnetworks ==)",
+ "id": "Subnetwork",
+ "properties": {
+ "allowSubnetCidrRoutesOverlap": {
+ "description": "Whether this subnetwork can conflict with static routes. Setting this to true allows this subnetwork's primary and secondary ranges to conflict with routes that have already been configured on the corresponding network. Static routes will take precedence over the subnetwork route if the route prefix length is at least as large as the subnetwork prefix length.\n\nAlso, packets destined to IPs within subnetwork may contain private/sensitive data and are prevented from leaving the virtual network. Setting this field to true will disable this feature.\n\nThe default value is false and applies to all existing subnetworks and automatically created subnetworks.\n\nThis field cannot be set to true at resource creation time.",
+ "type": "boolean"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "enableFlowLogs": {
+ "description": "Whether to enable flow logging for this subnetwork.",
+ "type": "boolean"
+ },
+ "enablePrivateV6Access": {
+ "description": "Whether the VMs in this subnet can directly access Google services via internal IPv6 addresses. This field can be both set at resource creation time and updated using patch.",
+ "type": "boolean"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork.",
+ "format": "byte",
+ "type": "string"
+ },
+ "gatewayAddress": {
+ "description": "[Output Only] The gateway address for default routes to reach destination addresses outside this subnetwork.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipCidrRange": {
+ "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "ipv6CidrRange": {
+ "description": "[Output Only] The range of internal IPv6 addresses that are owned by this subnetwork.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#subnetwork",
+ "description": "[Output Only] Type of the resource. Always compute#subnetwork for Subnetwork resources.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. Only networks that are in the distributed mode can have subnetworks. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "privateIpGoogleAccess": {
+ "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.",
+ "type": "boolean"
+ },
+ "region": {
+ "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "secondaryIpRanges": {
+ "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges.",
+ "items": {
+ "$ref": "SubnetworkSecondaryRange"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworkAggregatedList": {
+ "id": "SubnetworkAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "SubnetworksScopedList",
+ "description": "Name of the scope containing this set of Subnetworks."
+ },
+ "description": "A list of SubnetworksScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#subnetworkAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#subnetworkAggregatedList for aggregated lists of subnetworks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworkList": {
+ "description": "Contains a list of Subnetwork resources.",
+ "id": "SubnetworkList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Subnetwork resources.",
+ "items": {
+ "$ref": "Subnetwork"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#subnetworkList",
+ "description": "[Output Only] Type of resource. Always compute#subnetworkList for lists of subnetworks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworkSecondaryRange": {
+ "description": "Represents a secondary IP range of a subnetwork.",
+ "id": "SubnetworkSecondaryRange",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "rangeName": {
+ "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworksExpandIpCidrRangeRequest": {
+ "id": "SubnetworksExpandIpCidrRangeRequest",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The IP (in CIDR format or netmask) of internal addresses that are legal on this Subnetwork. This range should be disjoint from other subnetworks within this network. This range can only be larger than (i.e. a superset of) the range previously defined before the update.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworksScopedList": {
+ "id": "SubnetworksScopedList",
+ "properties": {
+ "subnetworks": {
+ "description": "List of subnetworks contained in this scope.",
+ "items": {
+ "$ref": "Subnetwork"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "An informational warning that appears when the list of addresses is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworksSetPrivateIpGoogleAccessRequest": {
+ "id": "SubnetworksSetPrivateIpGoogleAccessRequest",
+ "properties": {
+ "privateIpGoogleAccess": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "TCPHealthCheck": {
+ "id": "TCPHealthCheck",
+ "properties": {
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "portSpecification": {
+ "description": "Specifies how port is selected for health checking, can be one of following values:\nUSE_FIXED_PORT: The port number in\nport\nis used for health checking.\nUSE_NAMED_PORT: The\nportName\nis used for health checking.\nUSE_SERVING_PORT: For NetworkEndpointGroup, the port specified for each network endpoint is used for health checking. For other backends, the port or named port specified in the Backend Service is used for health checking.\n\n\nIf not specified, TCP health check follows behavior specified in\nport\nand\nportName\nfields.",
+ "enum": [
+ "USE_FIXED_PORT",
+ "USE_NAMED_PORT",
+ "USE_SERVING_PORT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "request": {
+ "description": "The application data to send once the TCP connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tags": {
+ "description": "A set of instance tags.",
+ "id": "Tags",
+ "properties": {
+ "fingerprint": {
+ "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
+ "format": "byte",
+ "type": "string"
+ },
+ "items": {
+ "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpProxy": {
+ "description": "A TargetHttpProxy resource. This resource defines an HTTP proxy. (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==)",
+ "id": "TargetHttpProxy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetHttpProxy",
+ "description": "[Output Only] Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpProxyList": {
+ "description": "A list of TargetHttpProxy resources.",
+ "id": "TargetHttpProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetHttpProxy resources.",
+ "items": {
+ "$ref": "TargetHttpProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetHttpProxyList",
+ "description": "Type of resource. Always compute#targetHttpProxyList for lists of target HTTP proxies.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxiesSetQuicOverrideRequest": {
+ "id": "TargetHttpsProxiesSetQuicOverrideRequest",
+ "properties": {
+ "quicOverride": {
+ "description": "QUIC policy for the TargetHttpsProxy resource.",
+ "enum": [
+ "DISABLE",
+ "ENABLE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxiesSetSslCertificatesRequest": {
+ "id": "TargetHttpsProxiesSetSslCertificatesRequest",
+ "properties": {
+ "sslCertificates": {
+ "description": "New set of SslCertificate resources to associate with this TargetHttpsProxy resource. Currently exactly one SslCertificate resource must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxy": {
+ "description": "A TargetHttpsProxy resource. This resource defines an HTTPS proxy. (== resource_for beta.targetHttpsProxies ==) (== resource_for v1.targetHttpsProxies ==)",
+ "id": "TargetHttpsProxy",
+ "properties": {
+ "clientSslPolicy": {
+ "description": "URL to ClientSslPolicy resource which controls the set of allowed SSL versions and ciphers.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetHttpsProxy",
+ "description": "[Output Only] Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "quicOverride": {
+ "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This determines whether the load balancer will attempt to negotiate QUIC with clients or not. Can specify one of NONE, ENABLE, or DISABLE. Specify ENABLE to always enable QUIC, Enables QUIC when set to ENABLE, and disables QUIC when set to DISABLE. If NONE is specified, uses the QUIC policy with no user overrides, which is equivalent to DISABLE. Not specifying this field is equivalent to specifying NONE.",
+ "enum": [
+ "DISABLE",
+ "ENABLE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sslCertificates": {
+ "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. Currently, exactly one SSL certificate must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sslPolicy": {
+ "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource will not have any SSL policy configured.",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: \n- https://www.googleapis.compute/v1/projects/project/global/urlMaps/url-map \n- projects/project/global/urlMaps/url-map \n- global/urlMaps/url-map",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxyList": {
+ "description": "Contains a list of TargetHttpsProxy resources.",
+ "id": "TargetHttpsProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetHttpsProxy resources.",
+ "items": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetHttpsProxyList",
+ "description": "Type of resource. Always compute#targetHttpsProxyList for lists of target HTTPS proxies.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstance": {
+ "description": "A TargetInstance resource. This resource defines an endpoint instance that terminates traffic of certain protocols. (== resource_for beta.targetInstances ==) (== resource_for v1.targetInstances ==)",
+ "id": "TargetInstance",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instance": {
+ "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetInstance",
+ "description": "[Output Only] The type of the resource. Always compute#targetInstance for target instances.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "natPolicy": {
+ "description": "NAT option controlling how IPs are NAT'ed to the instance. Currently only NO_NAT (default value) is supported.",
+ "enum": [
+ "NO_NAT"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the target instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstanceAggregatedList": {
+ "id": "TargetInstanceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "TargetInstancesScopedList",
+ "description": "Name of the scope containing this set of target instances."
+ },
+ "description": "A list of TargetInstance resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#targetInstanceAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstanceList": {
+ "description": "Contains a list of TargetInstance resources.",
+ "id": "TargetInstanceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetInstance resources.",
+ "items": {
+ "$ref": "TargetInstance"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetInstanceList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstancesScopedList": {
+ "id": "TargetInstancesScopedList",
+ "properties": {
+ "targetInstances": {
+ "description": "List of target instances contained in this scope.",
+ "items": {
+ "$ref": "TargetInstance"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPool": {
+ "description": "A TargetPool resource. This resource defines a pool of instances, an associated HttpHealthCheck resource, and the fallback target pool. (== resource_for beta.targetPools ==) (== resource_for v1.targetPools ==)",
+ "id": "TargetPool",
+ "properties": {
+ "backupPool": {
+ "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1].\n\nbackupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "failoverRatio": {
+ "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1].\n\nIf set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
+ "format": "float",
+ "type": "number"
+ },
+ "healthChecks": {
+ "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. An empty list means all member instances will be considered healthy at all times. Only HttpHealthChecks are supported. Only one health check may be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instances": {
+ "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetPool",
+ "description": "[Output Only] Type of the resource. Always compute#targetPool for target pools.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the target pool resides.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sessionAffinity": {
+ "description": "Sesssion affinity option, must be one of the following values:\nNONE: Connections from the same client IP may go to any instance in the pool.\nCLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy.\nCLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
+ "enum": [
+ "CLIENT_IP",
+ "CLIENT_IP_PORT_PROTO",
+ "CLIENT_IP_PROTO",
+ "GENERATED_COOKIE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolAggregatedList": {
+ "id": "TargetPoolAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "TargetPoolsScopedList",
+ "description": "Name of the scope containing this set of target pools."
+ },
+ "description": "A list of TargetPool resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#targetPoolAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#targetPoolAggregatedList for aggregated lists of target pools.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolInstanceHealth": {
+ "id": "TargetPoolInstanceHealth",
+ "properties": {
+ "healthStatus": {
+ "items": {
+ "$ref": "HealthStatus"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetPoolInstanceHealth",
+ "description": "[Output Only] Type of resource. Always compute#targetPoolInstanceHealth when checking the health of an instance.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolList": {
+ "description": "Contains a list of TargetPool resources.",
+ "id": "TargetPoolList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetPool resources.",
+ "items": {
+ "$ref": "TargetPool"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetPoolList",
+ "description": "[Output Only] Type of resource. Always compute#targetPoolList for lists of target pools.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsAddHealthCheckRequest": {
+ "id": "TargetPoolsAddHealthCheckRequest",
+ "properties": {
+ "healthChecks": {
+ "description": "The HttpHealthCheck to add to the target pool.",
+ "items": {
+ "$ref": "HealthCheckReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsAddInstanceRequest": {
+ "id": "TargetPoolsAddInstanceRequest",
+ "properties": {
+ "instances": {
+ "description": "A full or partial URL to an instance to add to this target pool. This can be a full or partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name \n- projects/project-id/zones/zone/instances/instance-name \n- zones/zone/instances/instance-name",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsRemoveHealthCheckRequest": {
+ "id": "TargetPoolsRemoveHealthCheckRequest",
+ "properties": {
+ "healthChecks": {
+ "description": "Health check URL to be removed. This can be a full or valid partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project/global/httpHealthChecks/health-check \n- projects/project/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
+ "items": {
+ "$ref": "HealthCheckReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsRemoveInstanceRequest": {
+ "id": "TargetPoolsRemoveInstanceRequest",
+ "properties": {
+ "instances": {
+ "description": "URLs of the instances to be removed from target pool.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsScopedList": {
+ "id": "TargetPoolsScopedList",
+ "properties": {
+ "targetPools": {
+ "description": "List of target pools contained in this scope.",
+ "items": {
+ "$ref": "TargetPool"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetReference": {
+ "id": "TargetReference",
+ "properties": {
+ "target": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxiesSetBackendServiceRequest": {
+ "id": "TargetSslProxiesSetBackendServiceRequest",
+ "properties": {
+ "service": {
+ "description": "The URL of the new BackendService resource for the targetSslProxy.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxiesSetProxyHeaderRequest": {
+ "id": "TargetSslProxiesSetProxyHeaderRequest",
+ "properties": {
+ "proxyHeader": {
+ "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxiesSetSslCertificatesRequest": {
+ "id": "TargetSslProxiesSetSslCertificatesRequest",
+ "properties": {
+ "sslCertificates": {
+ "description": "New set of URLs to SslCertificate resources to associate with this TargetSslProxy. Currently exactly one ssl certificate must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxy": {
+ "description": "A TargetSslProxy resource. This resource defines an SSL proxy. (== resource_for beta.targetSslProxies ==) (== resource_for v1.targetSslProxies ==)",
+ "id": "TargetSslProxy",
+ "properties": {
+ "clientSslPolicy": {
+ "description": "URL to ClientSslPolicy resource which controls the set of allowed SSL versions and ciphers.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetSslProxy",
+ "description": "[Output Only] Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "service": {
+ "description": "URL to the BackendService resource.",
+ "type": "string"
+ },
+ "sslCertificates": {
+ "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. Currently exactly one SSL certificate must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sslPolicy": {
+ "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxyList": {
+ "description": "Contains a list of TargetSslProxy resources.",
+ "id": "TargetSslProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetSslProxy resources.",
+ "items": {
+ "$ref": "TargetSslProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetSslProxyList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxiesSetBackendServiceRequest": {
+ "id": "TargetTcpProxiesSetBackendServiceRequest",
+ "properties": {
+ "service": {
+ "description": "The URL of the new BackendService resource for the targetTcpProxy.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxiesSetProxyHeaderRequest": {
+ "id": "TargetTcpProxiesSetProxyHeaderRequest",
+ "properties": {
+ "proxyHeader": {
+ "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxy": {
+ "description": "A TargetTcpProxy resource. This resource defines a TCP proxy. (== resource_for beta.targetTcpProxies ==) (== resource_for v1.targetTcpProxies ==)",
+ "id": "TargetTcpProxy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetTcpProxy",
+ "description": "[Output Only] Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "service": {
+ "description": "URL to the BackendService resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxyList": {
+ "description": "Contains a list of TargetTcpProxy resources.",
+ "id": "TargetTcpProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetTcpProxy resources.",
+ "items": {
+ "$ref": "TargetTcpProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetTcpProxyList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGateway": {
+ "description": "Represents a Target VPN gateway resource. (== resource_for beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==)",
+ "id": "TargetVpnGateway",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "forwardingRules": {
+ "description": "[Output Only] A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated to a VPN gateway.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetVpnGateway",
+ "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an TargetVpnGateway.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this TargetVpnGateway resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.targetVpnGateways.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "annotations": {
+ "required": [
+ "compute.targetVpnGateways.insert"
+ ]
+ },
+ "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the target VPN gateway resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the VPN gateway.",
+ "enum": [
+ "CREATING",
+ "DELETING",
+ "FAILED",
+ "READY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "tunnels": {
+ "description": "[Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are created using compute.vpntunnels.insert method and associated to a VPN gateway.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGatewayAggregatedList": {
+ "id": "TargetVpnGatewayAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "TargetVpnGatewaysScopedList",
+ "description": "[Output Only] Name of the scope containing this set of target VPN gateways."
+ },
+ "description": "A list of TargetVpnGateway resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#targetVpnGatewayAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGatewayList": {
+ "description": "Contains a list of TargetVpnGateway resources.",
+ "id": "TargetVpnGatewayList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetVpnGateway resources.",
+ "items": {
+ "$ref": "TargetVpnGateway"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetVpnGatewayList",
+ "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGatewaysScopedList": {
+ "id": "TargetVpnGatewaysScopedList",
+ "properties": {
+ "targetVpnGateways": {
+ "description": "[Output Only] List of target vpn gateways contained in this scope.",
+ "items": {
+ "$ref": "TargetVpnGateway"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TestFailure": {
+ "id": "TestFailure",
+ "properties": {
+ "actualService": {
+ "type": "string"
+ },
+ "expectedService": {
+ "type": "string"
+ },
+ "host": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TestPermissionsRequest": {
+ "id": "TestPermissionsRequest",
+ "properties": {
+ "permissions": {
+ "description": "The set of permissions to check for the 'resource'. Permissions with wildcards (such as '*' or 'storage.*') are not allowed.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TestPermissionsResponse": {
+ "id": "TestPermissionsResponse",
+ "properties": {
+ "permissions": {
+ "description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "UDPHealthCheck": {
+ "id": "UDPHealthCheck",
+ "properties": {
+ "port": {
+ "description": "The UDP port number for the health check request. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "request": {
+ "description": "Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMap": {
+ "description": "A UrlMap resource. This resource defines the mapping from URL to the BackendService resource, based on the \"longest-match\" of the URL's host and path.",
+ "id": "UrlMap",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "defaultService": {
+ "description": "The URL of the BackendService resource if none of the hostRules match.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap.",
+ "format": "byte",
+ "type": "string"
+ },
+ "hostRules": {
+ "description": "The list of HostRules to use against the URL.",
+ "items": {
+ "$ref": "HostRule"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#urlMap",
+ "description": "[Output Only] Type of the resource. Always compute#urlMaps for url maps.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "pathMatchers": {
+ "description": "The list of named PathMatchers to use against the URL.",
+ "items": {
+ "$ref": "PathMatcher"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "tests": {
+ "description": "The list of expected URL mapping tests. Request to update this UrlMap will succeed only if all of the test cases pass. You can specify a maximum of 100 tests per UrlMap.",
+ "items": {
+ "$ref": "UrlMapTest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapList": {
+ "description": "Contains a list of UrlMap resources.",
+ "id": "UrlMapList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of UrlMap resources.",
+ "items": {
+ "$ref": "UrlMap"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#urlMapList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapReference": {
+ "id": "UrlMapReference",
+ "properties": {
+ "urlMap": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapTest": {
+ "description": "Message for the expected URL mappings.",
+ "id": "UrlMapTest",
+ "properties": {
+ "description": {
+ "description": "Description of this test case.",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host portion of the URL.",
+ "type": "string"
+ },
+ "path": {
+ "description": "Path portion of the URL.",
+ "type": "string"
+ },
+ "service": {
+ "description": "Expected BackendService resource the given URL should be mapped to.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapValidationResult": {
+ "description": "Message representing the validation result for a UrlMap.",
+ "id": "UrlMapValidationResult",
+ "properties": {
+ "loadErrors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "loadSucceeded": {
+ "description": "Whether the given UrlMap can be successfully loaded. If false, 'loadErrors' indicates the reasons.",
+ "type": "boolean"
+ },
+ "testFailures": {
+ "items": {
+ "$ref": "TestFailure"
+ },
+ "type": "array"
+ },
+ "testPassed": {
+ "description": "If successfully loaded, this field indicates whether the test passed. If false, 'testFailures's indicate the reason of failure.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapsValidateRequest": {
+ "id": "UrlMapsValidateRequest",
+ "properties": {
+ "resource": {
+ "$ref": "UrlMap",
+ "description": "Content of the UrlMap to be validated."
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapsValidateResponse": {
+ "id": "UrlMapsValidateResponse",
+ "properties": {
+ "result": {
+ "$ref": "UrlMapValidationResult"
+ }
+ },
+ "type": "object"
+ },
+ "UsableSubnetwork": {
+ "description": "Subnetwork which the current user has compute.subnetworks.use permission on.",
+ "id": "UsableSubnetwork",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The range of internal addresses that are owned by this subnetwork.",
+ "type": "string"
+ },
+ "network": {
+ "description": "Network URL.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Subnetwork URL.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UsableSubnetworksAggregatedList": {
+ "id": "UsableSubnetworksAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "[Output] A list of usable subnetwork URLs.",
+ "items": {
+ "$ref": "UsableSubnetwork"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#usableSubnetworksAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#usableSubnetworksAggregatedList for aggregated lists of usable subnetworks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "UsageExportLocation": {
+ "description": "The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix.",
+ "id": "UsageExportLocation",
+ "properties": {
+ "bucketName": {
+ "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.",
+ "type": "string"
+ },
+ "reportNamePrefix": {
+ "description": "An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "VmMaintenancePolicy": {
+ "description": "A Vm Maintenance Policy specifies what kind of infrastructure maintenance we are allowed to perform on this VM and when.",
+ "id": "VmMaintenancePolicy",
+ "properties": {
+ "maintenanceWindow": {
+ "$ref": "MaintenanceWindow",
+ "description": "Maintenance windows that are applied to VMs covered by this policy."
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnel": {
+ "description": "VPN tunnel resource. (== resource_for beta.vpnTunnels ==) (== resource_for v1.vpnTunnels ==)",
+ "id": "VpnTunnel",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "detailedStatus": {
+ "description": "[Output Only] Detailed status message for the VPN tunnel.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ikeVersion": {
+ "description": "IKE protocol version to use when establishing the VPN tunnel with peer VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "kind": {
+ "default": "compute#vpnTunnel",
+ "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a VpnTunnel.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this VpnTunnel. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "localTrafficSelector": {
+ "description": "Local traffic selector to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.vpnTunnels.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "peerIp": {
+ "description": "IP address of the peer VPN gateway. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the VPN tunnel resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "remoteTrafficSelector": {
+ "description": "Remote traffic selectors to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "router": {
+ "description": "URL of router resource to be used for dynamic routing.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sharedSecret": {
+ "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway.",
+ "type": "string"
+ },
+ "sharedSecretHash": {
+ "description": "Hash of the shared secret.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the VPN tunnel.",
+ "enum": [
+ "ALLOCATING_RESOURCES",
+ "AUTHORIZATION_ERROR",
+ "DEPROVISIONING",
+ "ESTABLISHED",
+ "FAILED",
+ "FIRST_HANDSHAKE",
+ "NEGOTIATION_FAILURE",
+ "NETWORK_ERROR",
+ "NO_INCOMING_PACKETS",
+ "PROVISIONING",
+ "REJECTED",
+ "WAITING_FOR_FULL_CONFIG"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnelAggregatedList": {
+ "id": "VpnTunnelAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "VpnTunnelsScopedList",
+ "description": "Name of the scope containing this set of vpn tunnels."
+ },
+ "description": "A list of VpnTunnelsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#vpnTunnelAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnelList": {
+ "description": "Contains a list of VpnTunnel resources.",
+ "id": "VpnTunnelList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of VpnTunnel resources.",
+ "items": {
+ "$ref": "VpnTunnel"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#vpnTunnelList",
+ "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnelsScopedList": {
+ "id": "VpnTunnelsScopedList",
+ "properties": {
+ "vpnTunnels": {
+ "description": "List of vpn tunnels contained in this scope.",
+ "items": {
+ "$ref": "VpnTunnel"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "XpnHostList": {
+ "id": "XpnHostList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "[Output Only] A list of shared VPC host project URLs.",
+ "items": {
+ "$ref": "Project"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#xpnHostList",
+ "description": "[Output Only] Type of resource. Always compute#xpnHostList for lists of shared VPC hosts.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "XpnResourceId": {
+ "description": "Service resource (a.k.a service project) ID.",
+ "id": "XpnResourceId",
+ "properties": {
+ "id": {
+ "description": "The ID of the service resource. In the case of projects, this field matches the project ID (e.g., my-project), not the project number (e.g., 12345678).",
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of the service resource.",
+ "enum": [
+ "PROJECT",
+ "XPN_RESOURCE_TYPE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Zone": {
+ "description": "A Zone resource. (== resource_for beta.zones ==) (== resource_for v1.zones ==)",
+ "id": "Zone",
+ "properties": {
+ "availableCpuPlatforms": {
+ "description": "[Output Only] Available cpu/platform selections for the zone.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this zone."
+ },
+ "description": {
+ "description": "[Output Only] Textual description of the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#zone",
+ "description": "[Output Only] Type of the resource. Always compute#zone for zones.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] Full URL reference to the region which hosts the zone.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] Status of the zone, either UP or DOWN.",
+ "enum": [
+ "DOWN",
+ "UP"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ZoneList": {
+ "description": "Contains a list of zone resources.",
+ "id": "ZoneList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Zone resources.",
+ "items": {
+ "$ref": "Zone"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#zoneList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ZoneSetLabelsRequest": {
+ "id": "ZoneSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The labels to set for this resource.",
+ "type": "object"
+ }
+ },
+ "type": "object"
}
- }
},
- "zones": {
- "methods": {
- "get": {
- "id": "compute.zones.get",
- "path": "{project}/zones/{zone}",
- "httpMethod": "GET",
- "description": "Returns the specified Zone resource. Get a list of available zones by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "Zone"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.zones.list",
- "path": "{project}/zones",
- "httpMethod": "GET",
- "description": "Retrieves the list of Zone resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ZoneList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- }
- }
-}
+ "servicePath": "compute/alpha/projects/",
+ "title": "Compute Engine API",
+ "version": "alpha"
+}
\ No newline at end of file
diff --git a/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go b/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go
index 80301b1273ef..497ac423ba9b 100644
--- a/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go
+++ b/vendor/google.golang.org/api/compute/v0.alpha/compute-gen.go
@@ -103,6 +103,8 @@ func New(client *http.Client) (*Service, error) {
s.MaintenancePolicies = NewMaintenancePoliciesService(s)
s.NetworkEndpointGroups = NewNetworkEndpointGroupsService(s)
s.Networks = NewNetworksService(s)
+ s.NodeGroups = NewNodeGroupsService(s)
+ s.NodeTemplates = NewNodeTemplatesService(s)
s.Projects = NewProjectsService(s)
s.RegionAutoscalers = NewRegionAutoscalersService(s)
s.RegionBackendServices = NewRegionBackendServicesService(s)
@@ -203,6 +205,10 @@ type Service struct {
Networks *NetworksService
+ NodeGroups *NodeGroupsService
+
+ NodeTemplates *NodeTemplatesService
+
Projects *ProjectsService
RegionAutoscalers *RegionAutoscalersService
@@ -555,6 +561,24 @@ type NetworksService struct {
s *Service
}
+func NewNodeGroupsService(s *Service) *NodeGroupsService {
+ rs := &NodeGroupsService{s: s}
+ return rs
+}
+
+type NodeGroupsService struct {
+ s *Service
+}
+
+func NewNodeTemplatesService(s *Service) *NodeTemplatesService {
+ rs := &NodeTemplatesService{s: s}
+ return rs
+}
+
+type NodeTemplatesService struct {
+ s *Service
+}
+
func NewProjectsService(s *Service) *ProjectsService {
rs := &ProjectsService{s: s}
return rs
@@ -815,7 +839,8 @@ type AcceleratorConfig struct {
AcceleratorCount int64 `json:"acceleratorCount,omitempty"`
// AcceleratorType: Full or partial URL of the accelerator type resource
- // to expose to this instance.
+ // to attach to this instance. If you are creating an instance template,
+ // specify only the accelerator name.
AcceleratorType string `json:"acceleratorType,omitempty"`
// ForceSendFields is a list of field names (e.g. "AcceleratorCount") to
@@ -877,7 +902,9 @@ type AcceleratorType struct {
SelfLink string `json:"selfLink,omitempty"`
// Zone: [Output Only] The name of the zone where the accelerator type
- // resides, such as us-central1-a.
+ // resides, such as us-central1-a. You must specify this field as part
+ // of the HTTP request URL. It is not settable as a field in the request
+ // body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -1500,12 +1527,16 @@ type Address struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
Name string `json:"name,omitempty"`
+ // Network: The URL of the network in which to reserve the address. This
+ // field can only be used with INTERNAL type with VPC_PEERING purpose.
+ Network string `json:"network,omitempty"`
+
// NetworkTier: This signifies the networking tier used for configuring
// this Address and can only take the following values: PREMIUM ,
// STANDARD.
@@ -1518,8 +1549,23 @@ type Address struct {
// "STANDARD"
NetworkTier string `json:"networkTier,omitempty"`
+ // PrefixLength: The prefix length if the resource reprensents an IP
+ // range.
+ PrefixLength int64 `json:"prefixLength,omitempty"`
+
+ // Purpose: The purpose of resource, only used with INTERNAL type.
+ //
+ // Possible values:
+ // "DNS_RESOLVER"
+ // "GCE_ENDPOINT"
+ // "UNSPECIFIED_PURPOSE"
+ // "VPC_PEERING"
+ Purpose string `json:"purpose,omitempty"`
+
// Region: [Output Only] URL of the region where the regional address
- // resides. This field is not applicable to global addresses.
+ // resides. This field is not applicable to global addresses. You must
+ // specify this field as part of the HTTP request URL. You cannot set
+ // this field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -2232,9 +2278,9 @@ type AttachedDiskInitializeParams struct {
// not specified, the default is pd-standard, specified using the full
// URL. For
// example:
+ // https://www.googleapis.com/compute/v1/projects/project/zones/
+ // zone/diskTypes/pd-standard
//
- // https://www.googleapis.com/compute/v1/projects/project/zones
- // /zone/diskTypes/pd-standard
//
// Other values include pd-ssd and local-ssd. If you define this field,
// you can provide either the full or partial URL. For example, the
@@ -2246,6 +2292,11 @@ type AttachedDiskInitializeParams struct {
// is the name of the disk type, not URL.
DiskType string `json:"diskType,omitempty"`
+ // Labels: Labels to apply to this disk. These can be later modified by
+ // the disks.setLabels method. This field is only applicable for
+ // persistent disks.
+ Labels map[string]string `json:"labels,omitempty"`
+
// SourceImage: The source image to create this disk. When creating a
// new instance, one of initializeParams.sourceImage or disks.source is
// required except for local SSD.
@@ -2254,26 +2305,29 @@ type AttachedDiskInitializeParams struct {
// specify the image by its family name. For example, specify
// family/debian-8 to use the latest Debian 8
// image:
- //
// projects/debian-cloud/global/images/family/debian-8
//
- // Alternatively, use a specific version of a public operating system
- // image:
//
+ // Alternati
+ // vely, use a specific version of a public operating system
+ // image:
// projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD
//
- // To create a disk with a custom image that you created, specify the
- // image name in the following format:
//
+ //
+ // To create a disk with a custom image that you created, specify the
+ // image name in the following
+ // format:
// global/images/my-custom-image
//
+ //
// You can also specify a custom image by its image family, which
// returns the latest version of the image in that family. Replace the
// image name with
// family/family-name:
- //
// global/images/family/my-image-family
//
+ //
// If the source image is deleted later, this field will not be set.
SourceImage string `json:"sourceImage,omitempty"`
@@ -2317,7 +2371,7 @@ func (s *AttachedDiskInitializeParams) MarshalJSON() ([]byte, error) {
// If there are AuditConfigs for both `allServices` and a specific
// service, the union of the two AuditConfigs is used for that service:
// the log_types specified in each AuditConfig are enabled, and the
-// exempted_members in each AuditConfig are exempted.
+// exempted_members in each AuditLogConfig are exempted.
//
// Example Policy with multiple AuditConfigs:
//
@@ -2489,7 +2543,7 @@ type Autoscaler struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -3627,7 +3681,7 @@ type BackendBucket struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -3949,7 +4003,7 @@ type BackendService struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -3988,7 +4042,8 @@ type BackendService struct {
// Region: [Output Only] URL of the region where the regional backend
// service resides. This field is not applicable to global backend
- // services.
+ // services. You must specify this field as part of the HTTP request
+ // URL. It is not settable as a field in the request body.
Region string `json:"region,omitempty"`
// SecurityPolicy: [Output Only] The resource URL for the security
@@ -4789,7 +4844,8 @@ type Binding struct {
// Condition: The condition that is associated with this binding. NOTE:
// an unsatisfied condition will not allow user access via current
// binding. Different bindings, including their conditions, are examined
- // independently. This field is GOOGLE_INTERNAL.
+ // independently. This field is only visible as GOOGLE_INTERNAL or
+ // CONDITION_TRUSTED_TESTER.
Condition *Expr `json:"condition,omitempty"`
// Members: Specifies the identities requesting access for a Cloud
@@ -4966,7 +5022,7 @@ type Commitment struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -5492,6 +5548,7 @@ type Condition struct {
// "APPROVER"
// "ATTRIBUTION"
// "AUTHORITY"
+ // "CREDENTIALS_TYPE"
// "JUSTIFICATION_TYPE"
// "NO_ATTR"
// "SECURITY_REALM"
@@ -5842,7 +5899,7 @@ type Disk struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -5860,7 +5917,9 @@ type Disk struct {
PhysicalBlockSizeBytes int64 `json:"physicalBlockSizeBytes,omitempty,string"`
// Region: [Output Only] URL of the region where the disk resides. Only
- // applicable for regional resources.
+ // applicable for regional resources. You must specify this field as
+ // part of the HTTP request URL. It is not settable as a field in the
+ // request body.
Region string `json:"region,omitempty"`
// ReplicaZones: URLs of the zones where the disk should be replicated
@@ -5889,24 +5948,26 @@ type Disk struct {
// specify the image by its family name. For example, specify
// family/debian-8 to use the latest Debian 8
// image:
- //
// projects/debian-cloud/global/images/family/debian-8
//
- // Alternatively, use a specific version of a public operating system
- // image:
//
+ // Alternati
+ // vely, use a specific version of a public operating system
+ // image:
// projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD
//
- // To create a disk with a custom image that you created, specify the
- // image name in the following format:
//
+ //
+ // To create a disk with a custom image that you created, specify the
+ // image name in the following
+ // format:
// global/images/my-custom-image
//
+ //
// You can also specify a custom image by its image family, which
// returns the latest version of the image in that family. Replace the
// image name with
// family/family-name:
- //
// global/images/family/my-image-family
SourceImage string `json:"sourceImage,omitempty"`
@@ -5962,14 +6023,17 @@ type Disk struct {
StorageType string `json:"storageType,omitempty"`
// Type: URL of the disk type resource describing which disk type to use
- // to create the disk. Provide this when creating the disk.
+ // to create the disk. Provide this when creating the disk. For example:
+ // project/zones/zone/diskTypes/pd-standard or pd-ssd
Type string `json:"type,omitempty"`
// Users: [Output Only] Links to the users of the disk (attached
// instances) in form: project/zones/zone/instances/instance
Users []string `json:"users,omitempty"`
- // Zone: [Output Only] URL of the zone where the disk resides.
+ // Zone: [Output Only] URL of the zone where the disk resides. You must
+ // specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -6164,27 +6228,39 @@ type DiskInstantiationConfig struct {
// instance).
AutoDelete bool `json:"autoDelete,omitempty"`
+ // CustomImage: The custom source image to be used to restore this disk
+ // when instantiating this instance template.
+ CustomImage string `json:"customImage,omitempty"`
+
// DeviceName: Specifies the device name of the disk to which the
// configurations apply to.
DeviceName string `json:"deviceName,omitempty"`
// InstantiateFrom: Specifies whether to include the disk and what image
- // to use.
+ // to use. Possible values are:
+ // - source-image: to use the same image that was used to create the
+ // source instance's corresponding disk. Applicable to the boot disk and
+ // additional read-write disks.
+ // - source-image-family: to use the same image family that was used to
+ // create the source instance's corresponding disk. Applicable to the
+ // boot disk and additional read-write disks.
+ // - custom-image: to use a user-provided image url for disk creation.
+ // Applicable to the boot disk and additional read-write disks.
+ // - attach-read-only: to attach a read-only disk. Applicable to
+ // read-only disks.
+ // - do-not-include: to exclude a disk from the template. Applicable to
+ // additional read-write disks, local SSDs, and read-only disks.
//
// Possible values:
// "ATTACH_READ_ONLY"
// "BLANK"
+ // "CUSTOM_IMAGE"
// "DEFAULT"
// "DO_NOT_INCLUDE"
- // "IMAGE_URL"
// "SOURCE_IMAGE"
// "SOURCE_IMAGE_FAMILY"
InstantiateFrom string `json:"instantiateFrom,omitempty"`
- // SourceImage: The custom source image to be used to restore this disk
- // when instantiating this instance template.
- SourceImage string `json:"sourceImage,omitempty"`
-
// ForceSendFields is a list of field names (e.g. "AutoDelete") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
@@ -6442,7 +6518,9 @@ type DiskType struct {
// valid disk size, such as "10GB-10TB".
ValidDiskSize string `json:"validDiskSize,omitempty"`
- // Zone: [Output Only] URL of the zone where the disk type resides.
+ // Zone: [Output Only] URL of the zone where the disk type resides. You
+ // must specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -7194,7 +7272,7 @@ type Firewall struct {
CreationTimestamp string `json:"creationTimestamp,omitempty"`
// Denied: The list of DENY rules specified by this firewall. Each rule
- // specifies a protocol and port-range tuple that describes a permitted
+ // specifies a protocol and port-range tuple that describes a denied
// connection.
Denied []*FirewallDenied `json:"denied,omitempty"`
@@ -7241,7 +7319,7 @@ type Firewall struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -7754,13 +7832,14 @@ type ForwardingRule struct {
// Possible values:
// "EXTERNAL"
// "INTERNAL"
+ // "INTERNAL_SELF_MANAGED"
// "INVALID"
LoadBalancingScheme string `json:"loadBalancingScheme,omitempty"`
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -7804,11 +7883,10 @@ type ForwardingRule struct {
// - TargetHttpProxy: 80, 8080
// - TargetHttpsProxy: 443
// - TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993,
- // 995, 1883, 5222
+ // 995, 1688, 1883, 5222
// - TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993,
- // 995, 1883, 5222
+ // 995, 1688, 1883, 5222
// - TargetVpnGateway: 500, 4500
- // -
PortRange string `json:"portRange,omitempty"`
// Ports: This field is used along with the backend_service field for
@@ -7824,7 +7902,8 @@ type ForwardingRule struct {
// Region: [Output Only] URL of the region where the regional forwarding
// rule resides. This field is not applicable to global forwarding
- // rules.
+ // rules. You must specify this field as part of the HTTP request URL.
+ // It is not settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -7836,7 +7915,7 @@ type ForwardingRule struct {
//
// The label must be 1-63 characters long, and comply with RFC1035.
// Specifically, the label must be 1-63 characters long and match the
- // regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+ // regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first
// character must be a lowercase letter, and all following characters
// must be a dash, lowercase letter, or digit, except the last
// character, which cannot be a dash.
@@ -7866,8 +7945,6 @@ type ForwardingRule struct {
// same region as the forwarding rule. For global forwarding rules, this
// target must be a global load balancing resource. The forwarded
// traffic must be of a type appropriate to the target object.
- //
- // This field is not used for internal load balancing.
Target string `json:"target,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -8380,8 +8457,8 @@ type GlobalSetLabelsRequest struct {
// Labels: A list of labels to apply for this resource. Each label key &
// value must comply with RFC1035. Specifically, the name must be 1-63
// characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash. For example, "webserver-frontend": "images". A label value
// can also be empty (e.g. "my-label": "").
@@ -8772,7 +8849,7 @@ type HealthCheck struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -9127,7 +9204,6 @@ type Host struct {
// provided by the client when the host is created. For example, the
// following is a valid partial url to a predefined host
// type:
- //
// zones/us-central1-b/hostTypes/n1-host-64-416
HostType string `json:"hostType,omitempty"`
@@ -9161,8 +9237,8 @@ type Host struct {
// creating the resource. The resource name must be 1-63 characters
// long, and comply with RFC1035. Specifically, the name must be 1-63
// characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash.
Name string `json:"name,omitempty"`
@@ -10291,7 +10367,7 @@ type HttpHealthCheck struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -10536,7 +10612,7 @@ type HttpsHealthCheck struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -10828,7 +10904,7 @@ type Image struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -11234,18 +11310,18 @@ type Instance struct {
// when the instance is created. For example, the following is a valid
// partial url to a predefined machine
// type:
- //
// zones/us-central1-f/machineTypes/n1-standard-1
//
+ //
// To create a custom machine type, provide a URL to a machine type in
// the following format, where CPUS is 1 or an even number up to 32 (2,
// 4, 6, ... 24, etc), and MEMORY is the total memory for this instance.
// Memory must be a multiple of 256 MB and must be supplied in MB (e.g.
// 5 GB of memory is 5120
// MB):
- //
// zones/zone/machineTypes/custom-CPUS-MEMORY
//
+ //
// For example: zones/us-central1-f/machineTypes/custom-4-5120
//
// For a full list of restrictions, read the Specifications for custom
@@ -11269,8 +11345,8 @@ type Instance struct {
// creating the resource. The resource name must be 1-63 characters
// long, and comply with RFC1035. Specifically, the name must be 1-63
// characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash.
Name string `json:"name,omitempty"`
@@ -11281,6 +11357,10 @@ type Instance struct {
// Multiple interfaces are supported per instance.
NetworkInterfaces []*NetworkInterface `json:"networkInterfaces,omitempty"`
+ // PreservedStateSizeGb: Total amount of preserved state for SUSPENDED
+ // instances. Read-only in the api.
+ PreservedStateSizeGb int64 `json:"preservedStateSizeGb,omitempty,string"`
+
// Scheduling: Sets the scheduling options for this instance.
Scheduling *Scheduling `json:"scheduling,omitempty"`
@@ -11328,7 +11408,9 @@ type Instance struct {
// comply with RFC1035.
Tags *Tags `json:"tags,omitempty"`
- // Zone: [Output Only] URL of the zone where the instance resides.
+ // Zone: [Output Only] URL of the zone where the instance resides. You
+ // must specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -12122,9 +12204,9 @@ type InstanceGroupManagerActionsSummary struct {
Restarting int64 `json:"restarting,omitempty"`
// Verifying: [Output Only] The number of instances in the managed
- // instance group that are being verified. More details regarding
- // verification process are covered in the documentation of
- // ManagedInstance.InstanceAction.VERIFYING enum field.
+ // instance group that are being verified. See the
+ // managedInstances[].currentAction property in the listManagedInstances
+ // method documentation.
Verifying int64 `json:"verifying,omitempty"`
// ForceSendFields is a list of field names (e.g. "Abandoning") to
@@ -14239,6 +14321,10 @@ type InstanceProperties struct {
// to obtain the access tokens for these instances.
ServiceAccounts []*ServiceAccount `json:"serviceAccounts,omitempty"`
+ // ShieldedVmConfig: Specifies the Shielded VM options for the instances
+ // that are created from this template.
+ ShieldedVmConfig *ShieldedVmConfig `json:"shieldedVmConfig,omitempty"`
+
// Tags: A list of tags to apply to the instances that are created from
// this template. The tags identify valid sources or targets for network
// firewalls. The setTags method can modify this list of tags. Each tag
@@ -14317,7 +14403,7 @@ type InstanceTemplate struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -15089,7 +15175,7 @@ type Interconnect struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -15217,6 +15303,22 @@ type InterconnectAttachment struct {
// Description: An optional description of this resource.
Description string `json:"description,omitempty"`
+ // EdgeAvailabilityDomain: Desired availability domain for the
+ // attachment. Can only be specified when creating PARTNER-type
+ // InterconnectAttachments.
+ //
+ // For improved reliability, customers should configure a pair of
+ // attachments with one per availability domain. The selected
+ // availability domain will be provided to the Partner via the pairing
+ // key so that the provisioned circuit will lie in the specified domain.
+ // If not specified, the value will default to AVAILABILITY_DOMAIN_ANY.
+ //
+ // Possible values:
+ // "AVAILABILITY_DOMAIN_1"
+ // "AVAILABILITY_DOMAIN_2"
+ // "AVAILABILITY_DOMAIN_ANY"
+ EdgeAvailabilityDomain string `json:"edgeAvailabilityDomain,omitempty"`
+
// GoogleReferenceId: [Output Only] Google reference ID, to be used when
// raising support tickets with Google or otherwise to debug backend
// connectivity issues.
@@ -15253,7 +15355,7 @@ type InterconnectAttachment struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -15285,7 +15387,9 @@ type InterconnectAttachment struct {
PrivateInterconnectInfo *InterconnectAttachmentPrivateInfo `json:"privateInterconnectInfo,omitempty"`
// Region: [Output Only] URL of the region where the regional
- // interconnect attachment resides.
+ // interconnect attachment resides. You must specify this field as part
+ // of the HTTP request URL. It is not settable as a field in the request
+ // body.
Region string `json:"region,omitempty"`
// Router: URL of the cloud router to be used for dynamic routing. This
@@ -17984,8 +18088,8 @@ type MaintenancePolicy struct {
// creating the resource. The resource name must be 1-63 characters
// long, and comply with RFC1035. Specifically, the name must be 1-63
// characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash.
Name string `json:"name,omitempty"`
@@ -18216,6 +18320,7 @@ func (s *MaintenanceWindow) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
+// ManagedInstance: Next available tag: 12
type ManagedInstance struct {
// CurrentAction: [Output Only] The current action that the managed
// instance group has scheduled for the instance. Possible values:
@@ -18241,6 +18346,8 @@ type ManagedInstance struct {
// changes to the instance without stopping it. For example, the group
// can update the target pool list for an instance without stopping that
// instance.
+ // - VERIFYING The managed instance group has created the instance and
+ // it is in the process of being verified.
//
// Possible values:
// "ABANDONING"
@@ -18288,13 +18395,6 @@ type ManagedInstance struct {
// Override: [Output Only] Override defined for this instance.
Override *ManagedInstanceOverride `json:"override,omitempty"`
- // StandbyMode: [Output Only] Standby mode of the instance. This field
- // is non-empty iff the instance is a standby.
- //
- // Possible values:
- // "DRAINED"
- StandbyMode string `json:"standbyMode,omitempty"`
-
// Tag: [Output Only] Tag describing the version.
Tag string `json:"tag,omitempty"`
@@ -18419,9 +18519,16 @@ func (s *ManagedInstanceLastAttemptErrorsErrors) MarshalJSON() ([]byte, error) {
// ManagedInstanceOverride: Overrides of stateful properties for a given
// instance
type ManagedInstanceOverride struct {
- // Disks: Disk overrides defined for this instance
+ // Disks: Disk overrides defined for this instance. According to
+ // documentation the maximum number of disks attached to an instance is
+ // 128: https://cloud.google.com/compute/docs/disks/ However, compute
+ // API defines the limit at 140, so this is what we check.
Disks []*ManagedInstanceOverrideDiskOverride `json:"disks,omitempty"`
+ // Metadata: Metadata overrides defined for this instance.
+ // TODO(b/69785416) validate the total length is <9 KB
+ Metadata []*ManagedInstanceOverrideMetadata `json:"metadata,omitempty"`
+
// Origin: [Output Only] Indicates where does the override come from.
//
// Possible values:
@@ -18452,6 +18559,43 @@ func (s *ManagedInstanceOverride) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
+type ManagedInstanceOverrideMetadata struct {
+ // Key: Key for the metadata entry. Keys must conform to the following
+ // regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is
+ // reflected as part of a URL in the metadata server. Additionally, to
+ // avoid ambiguity, keys must not conflict with any other metadata keys
+ // for the project.
+ Key string `json:"key,omitempty"`
+
+ // Value: Value for the metadata entry. These are free-form strings, and
+ // only have meaning as interpreted by the image running in the
+ // instance. The only restriction placed on values is that their size
+ // must be less than or equal to 262144 bytes (256 KiB).
+ Value string `json:"value,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Key") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Key") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *ManagedInstanceOverrideMetadata) MarshalJSON() ([]byte, error) {
+ type NoMethod ManagedInstanceOverrideMetadata
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
type ManagedInstanceOverrideDiskOverride struct {
// DeviceName: The name of the device on the VM
DeviceName string `json:"deviceName,omitempty"`
@@ -18692,7 +18836,7 @@ type Network struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -18810,7 +18954,7 @@ type NetworkEndpointGroup struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -19886,8 +20030,8 @@ type NetworkPeering struct {
// Name: Name of this peering. Provided by the client when the peering
// is created. The name must comply with RFC1035. Specifically, the name
// must be 1-63 characters long and match regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all the following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all the following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash.
Name string `json:"name,omitempty"`
@@ -20097,7 +20241,9 @@ type Operation struct {
Progress int64 `json:"progress,omitempty"`
// Region: [Output Only] The URL of the region where the operation
- // resides. Only available when performing regional operations.
+ // resides. Only available when performing regional operations. You must
+ // specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -20138,7 +20284,9 @@ type Operation struct {
Warnings []*OperationWarnings `json:"warnings,omitempty"`
// Zone: [Output Only] The URL of the zone where the operation resides.
- // Only available when performing per-zone operations.
+ // Only available when performing per-zone operations. You must specify
+ // this field as part of the HTTP request URL. It is not settable as a
+ // field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -20912,7 +21060,7 @@ func (s *PerInstanceConfig) MarshalJSON() ([]byte, error) {
// }
//
// For a description of IAM and its features, see the [IAM developer's
-// guide](https://cloud.google.com/iam).
+// guide](https://cloud.google.com/iam/docs).
type Policy struct {
// AuditConfigs: Specifies cloud audit logging configuration for this
// policy.
@@ -20947,7 +21095,7 @@ type Policy struct {
// denied.
Rules []*Rule `json:"rules,omitempty"`
- // Version: Version of the `Policy`. The default version is 0.
+ // Version: Deprecated.
Version int64 `json:"version,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -20977,9 +21125,8 @@ func (s *Policy) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-// Project: A Project resource. Projects can only be created in the
-// Google Cloud Platform Console. Unless marked otherwise, values can
-// only be modified in the console. (== resource_for v1.projects ==) (==
+// Project: A Project resource. For an overview of projects, see Cloud
+// Platform Resource Hierarchy. (== resource_for v1.projects ==) (==
// resource_for beta.projects ==)
type Project struct {
// CommonInstanceMetadata: Metadata key/value pairs available to all
@@ -21291,6 +21438,8 @@ type Quota struct {
// "NETWORKS"
// "NVIDIA_K80_GPUS"
// "NVIDIA_P100_GPUS"
+ // "NVIDIA_P100_VWS_GPUS"
+ // "NVIDIA_V100_GPUS"
// "PREEMPTIBLE_CPUS"
// "PREEMPTIBLE_LOCAL_SSD_GB"
// "PREEMPTIBLE_NVIDIA_K80_GPUS"
@@ -23123,7 +23272,7 @@ type Route struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -23496,7 +23645,7 @@ type Router struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -23509,7 +23658,9 @@ type Router struct {
// Network: URI of the network to which this router belongs.
Network string `json:"network,omitempty"`
- // Region: [Output Only] URI of the region where the router resides.
+ // Region: [Output Only] URI of the region where the router resides. You
+ // must specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -24729,6 +24880,9 @@ type Scheduling struct {
// restarted if it is terminated by Compute Engine.
AutomaticRestart *bool `json:"automaticRestart,omitempty"`
+ // NodeAffinities: A set of node affinity and anti-affinity.
+ NodeAffinities []*SchedulingNodeAffinity `json:"nodeAffinities,omitempty"`
+
// OnHostMaintenance: Defines the maintenance behavior for this
// instance. For standard instances, the default behavior is MIGRATE.
// For preemptible instances, the default and only possible behavior is
@@ -24769,6 +24923,46 @@ func (s *Scheduling) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
+// SchedulingNodeAffinity: Node Affinity: the configuration of desired
+// nodes onto which this Instance could be scheduled.
+type SchedulingNodeAffinity struct {
+ // Key: Corresponds to the label key of Node resource.
+ Key string `json:"key,omitempty"`
+
+ // Operator: Defines the operation of node selection.
+ //
+ // Possible values:
+ // "IN"
+ // "NOT_IN"
+ // "OPERATOR_UNSPECIFIED"
+ Operator string `json:"operator,omitempty"`
+
+ // Values: Corresponds to the label values of Node resource.
+ Values []string `json:"values,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Key") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Key") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *SchedulingNodeAffinity) MarshalJSON() ([]byte, error) {
+ type NoMethod SchedulingNodeAffinity
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
// SecurityPolicy: A security policy is comprised of one or more rules.
// It can also be associated with one or more 'targets'.
type SecurityPolicy struct {
@@ -24802,7 +24996,7 @@ type SecurityPolicy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -25093,7 +25287,7 @@ type SecurityPolicyRuleMatcher struct {
// contents in the request header.
Expr *Expr `json:"expr,omitempty"`
- // SrcIpRanges: CIDR IP address range. Only IPv4 is supported.
+ // SrcIpRanges: CIDR IP address range.
SrcIpRanges []string `json:"srcIpRanges,omitempty"`
// VersionedExpr: Preconfigured versioned expression. If this field is
@@ -25130,7 +25324,7 @@ func (s *SecurityPolicyRuleMatcher) MarshalJSON() ([]byte, error) {
}
type SecurityPolicyRuleMatcherConfig struct {
- // SrcIpRanges: CIDR IP address range. Only IPv4 is supported.
+ // SrcIpRanges: CIDR IP address range.
SrcIpRanges []string `json:"srcIpRanges,omitempty"`
// ForceSendFields is a list of field names (e.g. "SrcIpRanges") to
@@ -25241,6 +25435,10 @@ func (s *ServiceAccount) MarshalJSON() ([]byte, error) {
// ShieldedVmConfig: A set of Shielded VM options.
type ShieldedVmConfig struct {
+ // EnableIntegrityMonitoring: Defines whether the instance should have
+ // integrity monitoring enabled.
+ EnableIntegrityMonitoring bool `json:"enableIntegrityMonitoring,omitempty"`
+
// EnableSecureBoot: Defines whether the instance should have secure
// boot enabled.
EnableSecureBoot bool `json:"enableSecureBoot,omitempty"`
@@ -25248,21 +25446,22 @@ type ShieldedVmConfig struct {
// EnableVtpm: Defines whether the instance should have the TPM enabled.
EnableVtpm bool `json:"enableVtpm,omitempty"`
- // ForceSendFields is a list of field names (e.g. "EnableSecureBoot") to
- // unconditionally include in API requests. By default, fields with
- // empty values are omitted from API requests. However, any non-pointer,
- // non-interface field appearing in ForceSendFields will be sent to the
- // server regardless of whether the field is empty or not. This may be
- // used to include empty fields in Patch requests.
+ // ForceSendFields is a list of field names (e.g.
+ // "EnableIntegrityMonitoring") to unconditionally include in API
+ // requests. By default, fields with empty values are omitted from API
+ // requests. However, any non-pointer, non-interface field appearing in
+ // ForceSendFields will be sent to the server regardless of whether the
+ // field is empty or not. This may be used to include empty fields in
+ // Patch requests.
ForceSendFields []string `json:"-"`
- // NullFields is a list of field names (e.g. "EnableSecureBoot") to
- // include in API requests with the JSON null value. By default, fields
- // with empty values are omitted from API requests. However, any field
- // with an empty value appearing in NullFields will be sent to the
- // server as null. It is an error if a field in this list has a
- // non-empty value. This may be used to include null fields in Patch
- // requests.
+ // NullFields is a list of field names (e.g.
+ // "EnableIntegrityMonitoring") to include in API requests with the JSON
+ // null value. By default, fields with empty values are omitted from API
+ // requests. However, any field with an empty value appearing in
+ // NullFields will be sent to the server as null. It is an error if a
+ // field in this list has a non-empty value. This may be used to include
+ // null fields in Patch requests.
NullFields []string `json:"-"`
}
@@ -25277,7 +25476,7 @@ func (s *ShieldedVmConfig) MarshalJSON() ([]byte, error) {
type SignedUrlKey struct {
// KeyName: Name of the key. The name must be 1-63 characters long, and
// comply with RFC1035. Specifically, the name must be 1-63 characters
- // long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?
+ // long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`
// which means the first character must be a lowercase letter, and all
// following characters must be a dash, lowercase letter, or digit,
// except the last character, which cannot be a dash.
@@ -25324,6 +25523,12 @@ type Snapshot struct {
// DiskSizeGb: [Output Only] Size of the snapshot, specified in GB.
DiskSizeGb int64 `json:"diskSizeGb,omitempty,string"`
+ // GuestOsFeatures: [Output Only] A list of features to enable on the
+ // guest operating system. Applicable only for bootable images. Read
+ // Enabling guest operating system features to see a list of available
+ // options.
+ GuestOsFeatures []*GuestOsFeature `json:"guestOsFeatures,omitempty"`
+
// Id: [Output Only] The unique identifier for the resource. This
// identifier is defined by the server.
Id uint64 `json:"id,omitempty,string"`
@@ -25359,7 +25564,7 @@ type Snapshot struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -25663,6 +25868,9 @@ type SslCertificate struct {
// property when you create the resource.
Description string `json:"description,omitempty"`
+ // ExpireTime: [Output Only] Expire time of the certificate. RFC3339
+ ExpireTime string `json:"expireTime,omitempty"`
+
// Id: [Output Only] The unique identifier for the resource. This
// identifier is defined by the server.
Id uint64 `json:"id,omitempty,string"`
@@ -25671,10 +25879,13 @@ type SslCertificate struct {
// compute#sslCertificate for SSL certificates.
Kind string `json:"kind,omitempty"`
+ // Managed: Configuration and status of a managed SSL certificate.
+ Managed *SslCertificateManagedSslCertificate `json:"managed,omitempty"`
+
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -25687,6 +25898,24 @@ type SslCertificate struct {
// SelfLink: [Output only] Server-defined URL for the resource.
SelfLink string `json:"selfLink,omitempty"`
+ // SelfManaged: Configuration and status of a self-managed SSL
+ // certificate.
+ SelfManaged *SslCertificateSelfManagedSslCertificate `json:"selfManaged,omitempty"`
+
+ // SubjectAlternativeNames: [Output Only] Domains associated with the
+ // certificate via Subject Alternative Name.
+ SubjectAlternativeNames []string `json:"subjectAlternativeNames,omitempty"`
+
+ // Type: (Optional) Specifies the type of SSL certificate, either
+ // "SELF_MANAGED" or "MANAGED". If not specified, the certificate is
+ // self-managed and the fields certificate and private_key are used.
+ //
+ // Possible values:
+ // "MANAGED"
+ // "SELF_MANAGED"
+ // "TYPE_UNSPECIFIED"
+ Type string `json:"type,omitempty"`
+
// ServerResponse contains the HTTP response code and headers from the
// server.
googleapi.ServerResponse `json:"-"`
@@ -25869,101 +26098,29 @@ func (s *SslCertificateListWarningData) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-type SslPoliciesList struct {
- // Id: [Output Only] Unique identifier for the resource; defined by the
- // server.
- Id string `json:"id,omitempty"`
-
- // Items: A list of SslPolicy resources.
- Items []*SslPolicy `json:"items,omitempty"`
-
- // Kind: [Output Only] Type of the resource. Always
- // compute#sslPoliciesList for lists of sslPolicies.
- Kind string `json:"kind,omitempty"`
-
- // NextPageToken: [Output Only] This token allows you to get the next
- // page of results for list requests. If the number of results is larger
- // than maxResults, use the nextPageToken as a value for the query
- // parameter pageToken in the next list request. Subsequent list
- // requests will have their own nextPageToken to continue paging through
- // the results.
- NextPageToken string `json:"nextPageToken,omitempty"`
-
- // SelfLink: [Output Only] Server-defined URL for this resource.
- SelfLink string `json:"selfLink,omitempty"`
-
- // Warning: [Output Only] Informational warning message.
- Warning *SslPoliciesListWarning `json:"warning,omitempty"`
-
- // ServerResponse contains the HTTP response code and headers from the
- // server.
- googleapi.ServerResponse `json:"-"`
-
- // ForceSendFields is a list of field names (e.g. "Id") to
- // unconditionally include in API requests. By default, fields with
- // empty values are omitted from API requests. However, any non-pointer,
- // non-interface field appearing in ForceSendFields will be sent to the
- // server regardless of whether the field is empty or not. This may be
- // used to include empty fields in Patch requests.
- ForceSendFields []string `json:"-"`
+// SslCertificateManagedSslCertificate: Configuration and status of a
+// managed SSL certificate.
+type SslCertificateManagedSslCertificate struct {
+ // DomainStatus: [Output only] Detailed statuses of the domains
+ // specified for managed certificate resource.
+ DomainStatus map[string]string `json:"domainStatus,omitempty"`
- // NullFields is a list of field names (e.g. "Id") to include in API
- // requests with the JSON null value. By default, fields with empty
- // values are omitted from API requests. However, any field with an
- // empty value appearing in NullFields will be sent to the server as
- // null. It is an error if a field in this list has a non-empty value.
- // This may be used to include null fields in Patch requests.
- NullFields []string `json:"-"`
-}
+ // Domains: The domains for which a managed SSL certificate will be
+ // generated. Currently only single-domain certs are supported.
+ Domains []string `json:"domains,omitempty"`
-func (s *SslPoliciesList) MarshalJSON() ([]byte, error) {
- type NoMethod SslPoliciesList
- raw := NoMethod(*s)
- return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// SslPoliciesListWarning: [Output Only] Informational warning message.
-type SslPoliciesListWarning struct {
- // Code: [Output Only] A warning code, if applicable. For example,
- // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
- // the response.
+ // Status: [Output only] Status of the managed certificate resource.
//
// Possible values:
- // "CLEANUP_FAILED"
- // "DEPRECATED_RESOURCE_USED"
- // "DEPRECATED_TYPE_USED"
- // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
- // "EXPERIMENTAL_TYPE_USED"
- // "EXTERNAL_API_WARNING"
- // "FIELD_VALUE_OVERRIDEN"
- // "INJECTED_KERNELS_DEPRECATED"
- // "MISSING_TYPE_DEPENDENCY"
- // "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
- // "NEXT_HOP_CANNOT_IP_FORWARD"
- // "NEXT_HOP_INSTANCE_NOT_FOUND"
- // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
- // "NEXT_HOP_NOT_RUNNING"
- // "NOT_CRITICAL_ERROR"
- // "NO_RESULTS_ON_PAGE"
- // "REQUIRED_TOS_AGREEMENT"
- // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
- // "RESOURCE_NOT_DELETED"
- // "SCHEMA_VALIDATION_IGNORED"
- // "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
- // "UNDECLARED_PROPERTIES"
- // "UNREACHABLE"
- Code string `json:"code,omitempty"`
-
- // Data: [Output Only] Metadata about this warning in key: value format.
- // For example:
- // "data": [ { "key": "scope", "value": "zones/us-east1-d" }
- Data []*SslPoliciesListWarningData `json:"data,omitempty"`
-
- // Message: [Output Only] A human-readable description of the warning
- // code.
- Message string `json:"message,omitempty"`
+ // "ACTIVE"
+ // "MANAGED_CERTIFICATE_STATUS_UNSPECIFIED"
+ // "PROVISIONING"
+ // "PROVISIONING_FAILED"
+ // "PROVISIONING_FAILED_PERMANENTLY"
+ // "RENEWAL_FAILED"
+ Status string `json:"status,omitempty"`
- // ForceSendFields is a list of field names (e.g. "Code") to
+ // ForceSendFields is a list of field names (e.g. "DomainStatus") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
@@ -25971,36 +26128,34 @@ type SslPoliciesListWarning struct {
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
- // NullFields is a list of field names (e.g. "Code") to include in API
- // requests with the JSON null value. By default, fields with empty
- // values are omitted from API requests. However, any field with an
- // empty value appearing in NullFields will be sent to the server as
+ // NullFields is a list of field names (e.g. "DomainStatus") to include
+ // in API requests with the JSON null value. By default, fields with
+ // empty values are omitted from API requests. However, any field with
+ // an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
-func (s *SslPoliciesListWarning) MarshalJSON() ([]byte, error) {
- type NoMethod SslPoliciesListWarning
+func (s *SslCertificateManagedSslCertificate) MarshalJSON() ([]byte, error) {
+ type NoMethod SslCertificateManagedSslCertificate
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-type SslPoliciesListWarningData struct {
- // Key: [Output Only] A key that provides more detail on the warning
- // being returned. For example, for warnings where there are no results
- // in a list request for a particular zone, this key might be scope and
- // the key value might be the zone name. Other examples might be a key
- // indicating a deprecated resource and a suggested replacement, or a
- // warning about invalid network settings (for example, if an instance
- // attempts to perform IP forwarding but is not enabled for IP
- // forwarding).
- Key string `json:"key,omitempty"`
+// SslCertificateSelfManagedSslCertificate: Configuration and status of
+// a self-managed SSL certificate..
+type SslCertificateSelfManagedSslCertificate struct {
+ // Certificate: A local certificate file. The certificate must be in PEM
+ // format. The certificate chain must be no greater than 5 certs long.
+ // The chain must include at least one intermediate cert.
+ Certificate string `json:"certificate,omitempty"`
- // Value: [Output Only] A warning data value corresponding to the key.
- Value string `json:"value,omitempty"`
+ // PrivateKey: A write-only private key in PEM format. Only insert
+ // requests will include this field.
+ PrivateKey string `json:"privateKey,omitempty"`
- // ForceSendFields is a list of field names (e.g. "Key") to
+ // ForceSendFields is a list of field names (e.g. "Certificate") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
@@ -26008,159 +26163,313 @@ type SslPoliciesListWarningData struct {
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
- // NullFields is a list of field names (e.g. "Key") to include in API
- // requests with the JSON null value. By default, fields with empty
- // values are omitted from API requests. However, any field with an
- // empty value appearing in NullFields will be sent to the server as
+ // NullFields is a list of field names (e.g. "Certificate") to include
+ // in API requests with the JSON null value. By default, fields with
+ // empty values are omitted from API requests. However, any field with
+ // an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
-func (s *SslPoliciesListWarningData) MarshalJSON() ([]byte, error) {
- type NoMethod SslPoliciesListWarningData
+func (s *SslCertificateSelfManagedSslCertificate) MarshalJSON() ([]byte, error) {
+ type NoMethod SslCertificateSelfManagedSslCertificate
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-type SslPoliciesListAvailableFeaturesResponse struct {
- Features []string `json:"features,omitempty"`
-
- // ServerResponse contains the HTTP response code and headers from the
+type SslPoliciesList struct {
+ // Id: [Output Only] Unique identifier for the resource; defined by the
// server.
- googleapi.ServerResponse `json:"-"`
-
- // ForceSendFields is a list of field names (e.g. "Features") to
- // unconditionally include in API requests. By default, fields with
- // empty values are omitted from API requests. However, any non-pointer,
- // non-interface field appearing in ForceSendFields will be sent to the
- // server regardless of whether the field is empty or not. This may be
- // used to include empty fields in Patch requests.
- ForceSendFields []string `json:"-"`
-
- // NullFields is a list of field names (e.g. "Features") to include in
- // API requests with the JSON null value. By default, fields with empty
- // values are omitted from API requests. However, any field with an
- // empty value appearing in NullFields will be sent to the server as
- // null. It is an error if a field in this list has a non-empty value.
- // This may be used to include null fields in Patch requests.
- NullFields []string `json:"-"`
-}
-
-func (s *SslPoliciesListAvailableFeaturesResponse) MarshalJSON() ([]byte, error) {
- type NoMethod SslPoliciesListAvailableFeaturesResponse
- raw := NoMethod(*s)
- return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// SslPolicy: A SSL policy specifies the server-side support for SSL
-// features. This can be attached to a TargetHttpsProxy or a
-// TargetSslProxy. This affects connections between clients and the
-// HTTPS or SSL proxy load balancer. They do not affect the connection
-// between the load balancers and the backends.
-type SslPolicy struct {
- // CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
- // format.
- CreationTimestamp string `json:"creationTimestamp,omitempty"`
-
- // CustomFeatures: List of features enabled when the selected profile is
- // CUSTOM. The
- // - method returns the set of features that can be specified in this
- // list. This field must be empty if the profile is not CUSTOM.
- CustomFeatures []string `json:"customFeatures,omitempty"`
-
- // Description: An optional description of this resource. Provide this
- // property when you create the resource.
- Description string `json:"description,omitempty"`
-
- // EnabledFeatures: [Output Only] The list of features enabled in the
- // SSL policy.
- EnabledFeatures []string `json:"enabledFeatures,omitempty"`
-
- // Fingerprint: Fingerprint of this resource. A hash of the contents
- // stored in this object. This field is used in optimistic locking. This
- // field will be ignored when inserting a SslPolicy. An up-to-date
- // fingerprint must be provided in order to update the SslPolicy.
- Fingerprint string `json:"fingerprint,omitempty"`
+ Id string `json:"id,omitempty"`
- // Id: [Output Only] The unique identifier for the resource. This
- // identifier is defined by the server.
- Id uint64 `json:"id,omitempty,string"`
+ // Items: A list of SslPolicy resources.
+ Items []*SslPolicy `json:"items,omitempty"`
- // Kind: [Output only] Type of the resource. Always compute#sslPolicyfor
- // SSL policies.
+ // Kind: [Output Only] Type of the resource. Always
+ // compute#sslPoliciesList for lists of sslPolicies.
Kind string `json:"kind,omitempty"`
- // MinTlsVersion: The minimum version of SSL protocol that can be used
- // by the clients to establish a connection with the load balancer. This
- // can be one of TLS_1_0, TLS_1_1, TLS_1_2, TLS_1_3.
- //
- // Possible values:
- // "TLS_1_0"
- // "TLS_1_1"
- // "TLS_1_2"
- // "TLS_1_3"
- MinTlsVersion string `json:"minTlsVersion,omitempty"`
-
- // Name: Name of the resource. The name must be 1-63 characters long,
- // and comply with RFC1035. Specifically, the name must be 1-63
- // characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
- // lowercase letter, or digit, except the last character, which cannot
- // be a dash.
- Name string `json:"name,omitempty"`
-
- // Profile: Profile specifies the set of SSL features that can be used
- // by the load balancer when negotiating SSL with clients. This can be
- // one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM,
- // the set of SSL features to enable must be specified in the
- // customFeatures field.
- //
- // Possible values:
- // "COMPATIBLE"
- // "CUSTOM"
- // "MODERN"
- // "RESTRICTED"
- Profile string `json:"profile,omitempty"`
+ // NextPageToken: [Output Only] This token allows you to get the next
+ // page of results for list requests. If the number of results is larger
+ // than maxResults, use the nextPageToken as a value for the query
+ // parameter pageToken in the next list request. Subsequent list
+ // requests will have their own nextPageToken to continue paging through
+ // the results.
+ NextPageToken string `json:"nextPageToken,omitempty"`
- // SelfLink: [Output Only] Server-defined URL for the resource.
+ // SelfLink: [Output Only] Server-defined URL for this resource.
SelfLink string `json:"selfLink,omitempty"`
- // Warnings: [Output Only] If potential misconfigurations are detected
- // for this SSL policy, this field will be populated with warning
- // messages.
- Warnings []*SslPolicyWarnings `json:"warnings,omitempty"`
+ // Warning: [Output Only] Informational warning message.
+ Warning *SslPoliciesListWarning `json:"warning,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
// server.
googleapi.ServerResponse `json:"-"`
- // ForceSendFields is a list of field names (e.g. "CreationTimestamp")
- // to unconditionally include in API requests. By default, fields with
+ // ForceSendFields is a list of field names (e.g. "Id") to
+ // unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
// server regardless of whether the field is empty or not. This may be
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
- // NullFields is a list of field names (e.g. "CreationTimestamp") to
- // include in API requests with the JSON null value. By default, fields
- // with empty values are omitted from API requests. However, any field
- // with an empty value appearing in NullFields will be sent to the
- // server as null. It is an error if a field in this list has a
- // non-empty value. This may be used to include null fields in Patch
- // requests.
+ // NullFields is a list of field names (e.g. "Id") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
-func (s *SslPolicy) MarshalJSON() ([]byte, error) {
- type NoMethod SslPolicy
+func (s *SslPoliciesList) MarshalJSON() ([]byte, error) {
+ type NoMethod SslPoliciesList
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-type SslPolicyWarnings struct {
+// SslPoliciesListWarning: [Output Only] Informational warning message.
+type SslPoliciesListWarning struct {
+ // Code: [Output Only] A warning code, if applicable. For example,
+ // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
+ // the response.
+ //
+ // Possible values:
+ // "CLEANUP_FAILED"
+ // "DEPRECATED_RESOURCE_USED"
+ // "DEPRECATED_TYPE_USED"
+ // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+ // "EXPERIMENTAL_TYPE_USED"
+ // "EXTERNAL_API_WARNING"
+ // "FIELD_VALUE_OVERRIDEN"
+ // "INJECTED_KERNELS_DEPRECATED"
+ // "MISSING_TYPE_DEPENDENCY"
+ // "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+ // "NEXT_HOP_CANNOT_IP_FORWARD"
+ // "NEXT_HOP_INSTANCE_NOT_FOUND"
+ // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+ // "NEXT_HOP_NOT_RUNNING"
+ // "NOT_CRITICAL_ERROR"
+ // "NO_RESULTS_ON_PAGE"
+ // "REQUIRED_TOS_AGREEMENT"
+ // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+ // "RESOURCE_NOT_DELETED"
+ // "SCHEMA_VALIDATION_IGNORED"
+ // "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+ // "UNDECLARED_PROPERTIES"
+ // "UNREACHABLE"
+ Code string `json:"code,omitempty"`
+
+ // Data: [Output Only] Metadata about this warning in key: value format.
+ // For example:
+ // "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+ Data []*SslPoliciesListWarningData `json:"data,omitempty"`
+
+ // Message: [Output Only] A human-readable description of the warning
+ // code.
+ Message string `json:"message,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Code") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Code") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *SslPoliciesListWarning) MarshalJSON() ([]byte, error) {
+ type NoMethod SslPoliciesListWarning
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type SslPoliciesListWarningData struct {
+ // Key: [Output Only] A key that provides more detail on the warning
+ // being returned. For example, for warnings where there are no results
+ // in a list request for a particular zone, this key might be scope and
+ // the key value might be the zone name. Other examples might be a key
+ // indicating a deprecated resource and a suggested replacement, or a
+ // warning about invalid network settings (for example, if an instance
+ // attempts to perform IP forwarding but is not enabled for IP
+ // forwarding).
+ Key string `json:"key,omitempty"`
+
+ // Value: [Output Only] A warning data value corresponding to the key.
+ Value string `json:"value,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Key") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Key") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *SslPoliciesListWarningData) MarshalJSON() ([]byte, error) {
+ type NoMethod SslPoliciesListWarningData
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type SslPoliciesListAvailableFeaturesResponse struct {
+ Features []string `json:"features,omitempty"`
+
+ // ServerResponse contains the HTTP response code and headers from the
+ // server.
+ googleapi.ServerResponse `json:"-"`
+
+ // ForceSendFields is a list of field names (e.g. "Features") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Features") to include in
+ // API requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *SslPoliciesListAvailableFeaturesResponse) MarshalJSON() ([]byte, error) {
+ type NoMethod SslPoliciesListAvailableFeaturesResponse
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// SslPolicy: A SSL policy specifies the server-side support for SSL
+// features. This can be attached to a TargetHttpsProxy or a
+// TargetSslProxy. This affects connections between clients and the
+// HTTPS or SSL proxy load balancer. They do not affect the connection
+// between the load balancers and the backends.
+type SslPolicy struct {
+ // CreationTimestamp: [Output Only] Creation timestamp in RFC3339 text
+ // format.
+ CreationTimestamp string `json:"creationTimestamp,omitempty"`
+
+ // CustomFeatures: List of features enabled when the selected profile is
+ // CUSTOM. The
+ // - method returns the set of features that can be specified in this
+ // list. This field must be empty if the profile is not CUSTOM.
+ CustomFeatures []string `json:"customFeatures,omitempty"`
+
+ // Description: An optional description of this resource. Provide this
+ // property when you create the resource.
+ Description string `json:"description,omitempty"`
+
+ // EnabledFeatures: [Output Only] The list of features enabled in the
+ // SSL policy.
+ EnabledFeatures []string `json:"enabledFeatures,omitempty"`
+
+ // Fingerprint: Fingerprint of this resource. A hash of the contents
+ // stored in this object. This field is used in optimistic locking. This
+ // field will be ignored when inserting a SslPolicy. An up-to-date
+ // fingerprint must be provided in order to update the SslPolicy.
+ Fingerprint string `json:"fingerprint,omitempty"`
+
+ // Id: [Output Only] The unique identifier for the resource. This
+ // identifier is defined by the server.
+ Id uint64 `json:"id,omitempty,string"`
+
+ // Kind: [Output only] Type of the resource. Always compute#sslPolicyfor
+ // SSL policies.
+ Kind string `json:"kind,omitempty"`
+
+ // MinTlsVersion: The minimum version of SSL protocol that can be used
+ // by the clients to establish a connection with the load balancer. This
+ // can be one of TLS_1_0, TLS_1_1, TLS_1_2, TLS_1_3.
+ //
+ // Possible values:
+ // "TLS_1_0"
+ // "TLS_1_1"
+ // "TLS_1_2"
+ // "TLS_1_3"
+ MinTlsVersion string `json:"minTlsVersion,omitempty"`
+
+ // Name: Name of the resource. The name must be 1-63 characters long,
+ // and comply with RFC1035. Specifically, the name must be 1-63
+ // characters long and match the regular expression
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
+ // lowercase letter, or digit, except the last character, which cannot
+ // be a dash.
+ Name string `json:"name,omitempty"`
+
+ // Profile: Profile specifies the set of SSL features that can be used
+ // by the load balancer when negotiating SSL with clients. This can be
+ // one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM,
+ // the set of SSL features to enable must be specified in the
+ // customFeatures field.
+ //
+ // Possible values:
+ // "COMPATIBLE"
+ // "CUSTOM"
+ // "MODERN"
+ // "RESTRICTED"
+ Profile string `json:"profile,omitempty"`
+
+ // SelfLink: [Output Only] Server-defined URL for the resource.
+ SelfLink string `json:"selfLink,omitempty"`
+
+ // Warnings: [Output Only] If potential misconfigurations are detected
+ // for this SSL policy, this field will be populated with warning
+ // messages.
+ Warnings []*SslPolicyWarnings `json:"warnings,omitempty"`
+
+ // ServerResponse contains the HTTP response code and headers from the
+ // server.
+ googleapi.ServerResponse `json:"-"`
+
+ // ForceSendFields is a list of field names (e.g. "CreationTimestamp")
+ // to unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "CreationTimestamp") to
+ // include in API requests with the JSON null value. By default, fields
+ // with empty values are omitted from API requests. However, any field
+ // with an empty value appearing in NullFields will be sent to the
+ // server as null. It is an error if a field in this list has a
+ // non-empty value. This may be used to include null fields in Patch
+ // requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *SslPolicy) MarshalJSON() ([]byte, error) {
+ type NoMethod SslPolicy
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type SslPolicyWarnings struct {
// Code: [Output Only] A warning code, if applicable. For example,
// Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
// the response.
@@ -26402,6 +26711,14 @@ type Subnetwork struct {
// resource creation time.
Description string `json:"description,omitempty"`
+ // EnableFlowLogs: Whether to enable flow logging for this subnetwork.
+ EnableFlowLogs bool `json:"enableFlowLogs,omitempty"`
+
+ // EnablePrivateV6Access: Whether the VMs in this subnet can directly
+ // access Google services via internal IPv6 addresses. This field can be
+ // both set at resource creation time and updated using patch.
+ EnablePrivateV6Access bool `json:"enablePrivateV6Access,omitempty"`
+
// Fingerprint: Fingerprint of this resource. A hash of the contents
// stored in this object. This field is used in optimistic locking. This
// field will be ignored when inserting a Subnetwork. An up-to-date
@@ -26409,8 +26726,7 @@ type Subnetwork struct {
Fingerprint string `json:"fingerprint,omitempty"`
// GatewayAddress: [Output Only] The gateway address for default routes
- // to reach destination addresses outside this subnetwork. This field
- // can be set only at resource creation time.
+ // to reach destination addresses outside this subnetwork.
GatewayAddress string `json:"gatewayAddress,omitempty"`
// Id: [Output Only] The unique identifier for the resource. This
@@ -26424,6 +26740,10 @@ type Subnetwork struct {
// can be set only at resource creation time.
IpCidrRange string `json:"ipCidrRange,omitempty"`
+ // Ipv6CidrRange: [Output Only] The range of internal IPv6 addresses
+ // that are owned by this subnetwork.
+ Ipv6CidrRange string `json:"ipv6CidrRange,omitempty"`
+
// Kind: [Output Only] Type of the resource. Always compute#subnetwork
// for Subnetwork resources.
Kind string `json:"kind,omitempty"`
@@ -26431,7 +26751,7 @@ type Subnetwork struct {
// Name: The name of the resource, provided by the client when initially
// creating the resource. The name must be 1-63 characters long, and
// comply with RFC1035. Specifically, the name must be 1-63 characters
- // long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?
+ // long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`
// which means the first character must be a lowercase letter, and all
// following characters must be a dash, lowercase letter, or digit,
// except the last character, which cannot be a dash.
@@ -27173,7 +27493,7 @@ type TargetHttpProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -27459,7 +27779,7 @@ type TargetHttpsProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -27720,7 +28040,7 @@ type TargetInstance struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -27737,7 +28057,8 @@ type TargetInstance struct {
SelfLink string `json:"selfLink,omitempty"`
// Zone: [Output Only] URL of the zone where the target instance
- // resides.
+ // resides. You must specify this field as part of the HTTP request URL.
+ // It is not settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -28282,7 +28603,7 @@ type TargetPool struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -29096,7 +29417,7 @@ type TargetSslProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -29393,7 +29714,7 @@ type TargetTcpProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -29641,7 +29962,7 @@ type TargetVpnGateway struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -29652,7 +29973,8 @@ type TargetVpnGateway struct {
Network string `json:"network,omitempty"`
// Region: [Output Only] URL of the region where the target VPN gateway
- // resides.
+ // resides. You must specify this field as part of the HTTP request URL.
+ // It is not settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -30316,7 +30638,7 @@ type UrlMap struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -30328,8 +30650,9 @@ type UrlMap struct {
// SelfLink: [Output Only] Server-defined URL for the resource.
SelfLink string `json:"selfLink,omitempty"`
- // Tests: The list of expected URL mappings. Request to update this
- // UrlMap will succeed only if all of the test cases pass.
+ // Tests: The list of expected URL mapping tests. Request to update this
+ // UrlMap will succeed only if all of the test cases pass. You can
+ // specify a maximum of 100 tests per UrlMap.
Tests []*UrlMapTest `json:"tests,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -30994,7 +31317,7 @@ type VpnTunnel struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -31004,6 +31327,8 @@ type VpnTunnel struct {
PeerIp string `json:"peerIp,omitempty"`
// Region: [Output Only] URL of the region where the VPN tunnel resides.
+ // You must specify this field as part of the HTTP request URL. It is
+ // not settable as a field in the request body.
Region string `json:"region,omitempty"`
// RemoteTrafficSelector: Remote traffic selectors to use when
@@ -31042,8 +31367,9 @@ type VpnTunnel struct {
// "WAITING_FOR_FULL_CONFIG"
Status string `json:"status,omitempty"`
- // TargetVpnGateway: URL of the VPN gateway with which this VPN tunnel
- // is associated. Provided by the client when the VPN tunnel is created.
+ // TargetVpnGateway: URL of the Target VPN gateway with which this VPN
+ // tunnel is associated. Provided by the client when the VPN tunnel is
+ // created.
TargetVpnGateway string `json:"targetVpnGateway,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -43511,7 +43837,7 @@ type FirewallsUpdateCall struct {
}
// Update: Updates the specified firewall rule with the data included in
-// the request. Using PUT method, can only update following fields of
+// the request. The PUT method can only update the following fields of
// firewall rule: allowed, description, sourceRanges, sourceTags,
// targetTags.
// For details, see https://cloud.google.com/compute/docs/reference/latest/firewalls/update
@@ -43629,7 +43955,7 @@ func (c *FirewallsUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, erro
}
return ret, nil
// {
- // "description": "Updates the specified firewall rule with the data included in the request. Using PUT method, can only update following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
+ // "description": "Updates the specified firewall rule with the data included in the request. The PUT method can only update the following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
// "httpMethod": "PUT",
// "id": "compute.firewalls.update",
// "parameterOrder": [
@@ -62086,11 +62412,9 @@ type InstanceTemplatesDeleteCall struct {
header_ http.Header
}
-// Delete: Deletes the specified instance template. If you delete an
-// instance template that is being referenced from another instance
-// group, the instance group will not be able to create or recreate
-// virtual machine instances. Deleting an instance template is permanent
-// and cannot be undone.
+// Delete: Deletes the specified instance template. Deleting an instance
+// template is permanent and cannot be undone. It's not possible to
+// delete templates which are in use by an instance group.
// For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/delete
func (r *InstanceTemplatesService) Delete(project string, instanceTemplate string) *InstanceTemplatesDeleteCall {
c := &InstanceTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -62200,7 +62524,7 @@ func (c *InstanceTemplatesDeleteCall) Do(opts ...googleapi.CallOption) (*Operati
}
return ret, nil
// {
- // "description": "Deletes the specified instance template. If you delete an instance template that is being referenced from another instance group, the instance group will not be able to create or recreate virtual machine instances. Deleting an instance template is permanent and cannot be undone.",
+ // "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
// "httpMethod": "DELETE",
// "id": "compute.instanceTemplates.delete",
// "parameterOrder": [
@@ -81432,93 +81756,95 @@ func (c *NetworksTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*Test
}
-// method id "compute.projects.disableXpnHost":
+// method id "compute.nodeGroups.getIamPolicy":
-type ProjectsDisableXpnHostCall struct {
- s *Service
- project string
- urlParams_ gensupport.URLParams
- ctx_ context.Context
- header_ http.Header
+type NodeGroupsGetIamPolicyCall struct {
+ s *Service
+ project string
+ zone string
+ resource string
+ urlParams_ gensupport.URLParams
+ ifNoneMatch_ string
+ ctx_ context.Context
+ header_ http.Header
}
-// DisableXpnHost: Disable this project as a shared VPC host project.
-func (r *ProjectsService) DisableXpnHost(project string) *ProjectsDisableXpnHostCall {
- c := &ProjectsDisableXpnHostCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+// GetIamPolicy: Gets the access control policy for a resource. May be
+// empty if no such policy or resource exists.
+func (r *NodeGroupsService) GetIamPolicy(project string, zone string, resource string) *NodeGroupsGetIamPolicyCall {
+ c := &NodeGroupsGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
c.project = project
- return c
-}
-
-// RequestId sets the optional parameter "requestId": An optional
-// request ID to identify requests. Specify a unique request ID so that
-// if you must retry your request, the server will know to ignore the
-// request if it has already been completed.
-//
-// For example, consider a situation where you make an initial request
-// and the request times out. If you make the request again with the
-// same request ID, the server can check if original operation with the
-// same request ID was received, and if so, will ignore the second
-// request. This prevents clients from accidentally creating duplicate
-// commitments.
-//
-// The request ID must be a valid UUID with the exception that zero UUID
-// is not supported (00000000-0000-0000-0000-000000000000).
-func (c *ProjectsDisableXpnHostCall) RequestId(requestId string) *ProjectsDisableXpnHostCall {
- c.urlParams_.Set("requestId", requestId)
+ c.zone = zone
+ c.resource = resource
return c
}
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
-func (c *ProjectsDisableXpnHostCall) Fields(s ...googleapi.Field) *ProjectsDisableXpnHostCall {
+func (c *NodeGroupsGetIamPolicyCall) Fields(s ...googleapi.Field) *NodeGroupsGetIamPolicyCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *NodeGroupsGetIamPolicyCall) IfNoneMatch(entityTag string) *NodeGroupsGetIamPolicyCall {
+ c.ifNoneMatch_ = entityTag
+ return c
+}
+
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
-func (c *ProjectsDisableXpnHostCall) Context(ctx context.Context) *ProjectsDisableXpnHostCall {
+func (c *NodeGroupsGetIamPolicyCall) Context(ctx context.Context) *NodeGroupsGetIamPolicyCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
-func (c *ProjectsDisableXpnHostCall) Header() http.Header {
+func (c *NodeGroupsGetIamPolicyCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
-func (c *ProjectsDisableXpnHostCall) doRequest(alt string) (*http.Response, error) {
+func (c *NodeGroupsGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
+ if c.ifNoneMatch_ != "" {
+ reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+ }
var body io.Reader = nil
c.urlParams_.Set("alt", alt)
- urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/disableXpnHost")
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy")
urls += "?" + c.urlParams_.Encode()
- req, _ := http.NewRequest("POST", urls, body)
+ req, _ := http.NewRequest("GET", urls, body)
req.Header = reqHeaders
googleapi.Expand(req.URL, map[string]string{
- "project": c.project,
+ "project": c.project,
+ "zone": c.zone,
+ "resource": c.resource,
})
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
-// Do executes the "compute.projects.disableXpnHost" call.
-// Exactly one of *Operation or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Operation.ServerResponse.Header or (if a response was returned at
-// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
-// to check whether the returned error was because
-// http.StatusNotModified was returned.
-func (c *ProjectsDisableXpnHostCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+// Do executes the "compute.nodeGroups.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *NodeGroupsGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
gensupport.SetOptions(c.urlParams_, opts...)
res, err := c.doRequest("json")
if res != nil && res.StatusCode == http.StatusNotModified {
@@ -81537,7 +81863,7 @@ func (c *ProjectsDisableXpnHostCall) Do(opts ...googleapi.CallOption) (*Operatio
if err := googleapi.CheckResponse(res); err != nil {
return nil, err
}
- ret := &Operation{
+ ret := &Policy{
ServerResponse: googleapi.ServerResponse{
Header: res.Header,
HTTPStatusCode: res.StatusCode,
@@ -81549,11 +81875,13 @@ func (c *ProjectsDisableXpnHostCall) Do(opts ...googleapi.CallOption) (*Operatio
}
return ret, nil
// {
- // "description": "Disable this project as a shared VPC host project.",
- // "httpMethod": "POST",
- // "id": "compute.projects.disableXpnHost",
+ // "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ // "httpMethod": "GET",
+ // "id": "compute.nodeGroups.getIamPolicy",
// "parameterOrder": [
- // "project"
+ // "project",
+ // "zone",
+ // "resource"
// ],
// "parameters": {
// "project": {
@@ -81563,67 +81891,62 @@ func (c *ProjectsDisableXpnHostCall) Do(opts ...googleapi.CallOption) (*Operatio
// "required": true,
// "type": "string"
// },
- // "requestId": {
- // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- // "location": "query",
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "zone": {
+ // "description": "The name of the zone for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
// "type": "string"
// }
// },
- // "path": "{project}/disableXpnHost",
+ // "path": "{project}/zones/{zone}/nodeGroups/{resource}/getIamPolicy",
// "response": {
- // "$ref": "Operation"
+ // "$ref": "Policy"
// },
// "scopes": [
// "https://www.googleapis.com/auth/cloud-platform",
- // "https://www.googleapis.com/auth/compute"
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
// ]
// }
}
-// method id "compute.projects.disableXpnResource":
+// method id "compute.nodeGroups.setIamPolicy":
-type ProjectsDisableXpnResourceCall struct {
- s *Service
- project string
- projectsdisablexpnresourcerequest *ProjectsDisableXpnResourceRequest
- urlParams_ gensupport.URLParams
- ctx_ context.Context
- header_ http.Header
+type NodeGroupsSetIamPolicyCall struct {
+ s *Service
+ project string
+ zone string
+ resource string
+ policy *Policy
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
}
-// DisableXpnResource: Disable a serivce resource (a.k.a service
-// project) associated with this host project.
-func (r *ProjectsService) DisableXpnResource(project string, projectsdisablexpnresourcerequest *ProjectsDisableXpnResourceRequest) *ProjectsDisableXpnResourceCall {
- c := &ProjectsDisableXpnResourceCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+// SetIamPolicy: Sets the access control policy on the specified
+// resource. Replaces any existing policy.
+func (r *NodeGroupsService) SetIamPolicy(project string, zone string, resource string, policy *Policy) *NodeGroupsSetIamPolicyCall {
+ c := &NodeGroupsSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
c.project = project
- c.projectsdisablexpnresourcerequest = projectsdisablexpnresourcerequest
- return c
-}
-
-// RequestId sets the optional parameter "requestId": An optional
-// request ID to identify requests. Specify a unique request ID so that
-// if you must retry your request, the server will know to ignore the
-// request if it has already been completed.
-//
-// For example, consider a situation where you make an initial request
-// and the request times out. If you make the request again with the
-// same request ID, the server can check if original operation with the
-// same request ID was received, and if so, will ignore the second
-// request. This prevents clients from accidentally creating duplicate
-// commitments.
-//
-// The request ID must be a valid UUID with the exception that zero UUID
-// is not supported (00000000-0000-0000-0000-000000000000).
-func (c *ProjectsDisableXpnResourceCall) RequestId(requestId string) *ProjectsDisableXpnResourceCall {
- c.urlParams_.Set("requestId", requestId)
+ c.zone = zone
+ c.resource = resource
+ c.policy = policy
return c
}
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
-func (c *ProjectsDisableXpnResourceCall) Fields(s ...googleapi.Field) *ProjectsDisableXpnResourceCall {
+func (c *NodeGroupsSetIamPolicyCall) Fields(s ...googleapi.Field) *NodeGroupsSetIamPolicyCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
@@ -81631,51 +81954,53 @@ func (c *ProjectsDisableXpnResourceCall) Fields(s ...googleapi.Field) *ProjectsD
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
-func (c *ProjectsDisableXpnResourceCall) Context(ctx context.Context) *ProjectsDisableXpnResourceCall {
+func (c *NodeGroupsSetIamPolicyCall) Context(ctx context.Context) *NodeGroupsSetIamPolicyCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
-func (c *ProjectsDisableXpnResourceCall) Header() http.Header {
+func (c *NodeGroupsSetIamPolicyCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
-func (c *ProjectsDisableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
+func (c *NodeGroupsSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
var body io.Reader = nil
- body, err := googleapi.WithoutDataWrapper.JSONReader(c.projectsdisablexpnresourcerequest)
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.policy)
if err != nil {
return nil, err
}
reqHeaders.Set("Content-Type", "application/json")
c.urlParams_.Set("alt", alt)
- urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/disableXpnResource")
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy")
urls += "?" + c.urlParams_.Encode()
req, _ := http.NewRequest("POST", urls, body)
req.Header = reqHeaders
googleapi.Expand(req.URL, map[string]string{
- "project": c.project,
+ "project": c.project,
+ "zone": c.zone,
+ "resource": c.resource,
})
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
-// Do executes the "compute.projects.disableXpnResource" call.
-// Exactly one of *Operation or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Operation.ServerResponse.Header or (if a response was returned at
-// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
-// to check whether the returned error was because
-// http.StatusNotModified was returned.
-func (c *ProjectsDisableXpnResourceCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+// Do executes the "compute.nodeGroups.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *NodeGroupsSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
gensupport.SetOptions(c.urlParams_, opts...)
res, err := c.doRequest("json")
if res != nil && res.StatusCode == http.StatusNotModified {
@@ -81694,7 +82019,7 @@ func (c *ProjectsDisableXpnResourceCall) Do(opts ...googleapi.CallOption) (*Oper
if err := googleapi.CheckResponse(res); err != nil {
return nil, err
}
- ret := &Operation{
+ ret := &Policy{
ServerResponse: googleapi.ServerResponse{
Header: res.Header,
HTTPStatusCode: res.StatusCode,
@@ -81706,11 +82031,13 @@ func (c *ProjectsDisableXpnResourceCall) Do(opts ...googleapi.CallOption) (*Oper
}
return ret, nil
// {
- // "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
+ // "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
// "httpMethod": "POST",
- // "id": "compute.projects.disableXpnResource",
+ // "id": "compute.nodeGroups.setIamPolicy",
// "parameterOrder": [
- // "project"
+ // "project",
+ // "zone",
+ // "resource"
// ],
// "parameters": {
// "project": {
@@ -81720,18 +82047,27 @@ func (c *ProjectsDisableXpnResourceCall) Do(opts ...googleapi.CallOption) (*Oper
// "required": true,
// "type": "string"
// },
- // "requestId": {
- // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- // "location": "query",
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "zone": {
+ // "description": "The name of the zone for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
// "type": "string"
// }
// },
- // "path": "{project}/disableXpnResource",
+ // "path": "{project}/zones/{zone}/nodeGroups/{resource}/setIamPolicy",
// "request": {
- // "$ref": "ProjectsDisableXpnResourceRequest"
+ // "$ref": "Policy"
// },
// "response": {
- // "$ref": "Operation"
+ // "$ref": "Policy"
// },
// "scopes": [
// "https://www.googleapis.com/auth/cloud-platform",
@@ -81741,46 +82077,34 @@ func (c *ProjectsDisableXpnResourceCall) Do(opts ...googleapi.CallOption) (*Oper
}
-// method id "compute.projects.enableXpnHost":
+// method id "compute.nodeGroups.testIamPermissions":
-type ProjectsEnableXpnHostCall struct {
- s *Service
- project string
- urlParams_ gensupport.URLParams
- ctx_ context.Context
- header_ http.Header
+type NodeGroupsTestIamPermissionsCall struct {
+ s *Service
+ project string
+ zone string
+ resource string
+ testpermissionsrequest *TestPermissionsRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
}
-// EnableXpnHost: Enable this project as a shared VPC host project.
-func (r *ProjectsService) EnableXpnHost(project string) *ProjectsEnableXpnHostCall {
- c := &ProjectsEnableXpnHostCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+// TestIamPermissions: Returns permissions that a caller has on the
+// specified resource.
+func (r *NodeGroupsService) TestIamPermissions(project string, zone string, resource string, testpermissionsrequest *TestPermissionsRequest) *NodeGroupsTestIamPermissionsCall {
+ c := &NodeGroupsTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
c.project = project
- return c
-}
-
-// RequestId sets the optional parameter "requestId": An optional
-// request ID to identify requests. Specify a unique request ID so that
-// if you must retry your request, the server will know to ignore the
-// request if it has already been completed.
-//
-// For example, consider a situation where you make an initial request
-// and the request times out. If you make the request again with the
-// same request ID, the server can check if original operation with the
-// same request ID was received, and if so, will ignore the second
-// request. This prevents clients from accidentally creating duplicate
-// commitments.
-//
-// The request ID must be a valid UUID with the exception that zero UUID
-// is not supported (00000000-0000-0000-0000-000000000000).
-func (c *ProjectsEnableXpnHostCall) RequestId(requestId string) *ProjectsEnableXpnHostCall {
- c.urlParams_.Set("requestId", requestId)
+ c.zone = zone
+ c.resource = resource
+ c.testpermissionsrequest = testpermissionsrequest
return c
}
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
-func (c *ProjectsEnableXpnHostCall) Fields(s ...googleapi.Field) *ProjectsEnableXpnHostCall {
+func (c *NodeGroupsTestIamPermissionsCall) Fields(s ...googleapi.Field) *NodeGroupsTestIamPermissionsCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
@@ -81788,44 +82112,1004 @@ func (c *ProjectsEnableXpnHostCall) Fields(s ...googleapi.Field) *ProjectsEnable
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
-func (c *ProjectsEnableXpnHostCall) Context(ctx context.Context) *ProjectsEnableXpnHostCall {
+func (c *NodeGroupsTestIamPermissionsCall) Context(ctx context.Context) *NodeGroupsTestIamPermissionsCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
-func (c *ProjectsEnableXpnHostCall) Header() http.Header {
+func (c *NodeGroupsTestIamPermissionsCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
-func (c *ProjectsEnableXpnHostCall) doRequest(alt string) (*http.Response, error) {
+func (c *NodeGroupsTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.testpermissionsrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
c.urlParams_.Set("alt", alt)
- urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/enableXpnHost")
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/zones/{zone}/nodeGroups/{resource}/testIamPermissions")
urls += "?" + c.urlParams_.Encode()
req, _ := http.NewRequest("POST", urls, body)
req.Header = reqHeaders
googleapi.Expand(req.URL, map[string]string{
- "project": c.project,
+ "project": c.project,
+ "zone": c.zone,
+ "resource": c.resource,
})
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
-// Do executes the "compute.projects.enableXpnHost" call.
-// Exactly one of *Operation or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Operation.ServerResponse.Header or (if a response was returned at
-// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
-// to check whether the returned error was because
+// Do executes the "compute.nodeGroups.testIamPermissions" call.
+// Exactly one of *TestPermissionsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *TestPermissionsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *NodeGroupsTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestPermissionsResponse, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &TestPermissionsResponse{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Returns permissions that a caller has on the specified resource.",
+ // "httpMethod": "POST",
+ // "id": "compute.nodeGroups.testIamPermissions",
+ // "parameterOrder": [
+ // "project",
+ // "zone",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "zone": {
+ // "description": "The name of the zone for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/zones/{zone}/nodeGroups/{resource}/testIamPermissions",
+ // "request": {
+ // "$ref": "TestPermissionsRequest"
+ // },
+ // "response": {
+ // "$ref": "TestPermissionsResponse"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
+ // ]
+ // }
+
+}
+
+// method id "compute.nodeTemplates.getIamPolicy":
+
+type NodeTemplatesGetIamPolicyCall struct {
+ s *Service
+ project string
+ region string
+ resource string
+ urlParams_ gensupport.URLParams
+ ifNoneMatch_ string
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// GetIamPolicy: Gets the access control policy for a resource. May be
+// empty if no such policy or resource exists.
+func (r *NodeTemplatesService) GetIamPolicy(project string, region string, resource string) *NodeTemplatesGetIamPolicyCall {
+ c := &NodeTemplatesGetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.resource = resource
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *NodeTemplatesGetIamPolicyCall) Fields(s ...googleapi.Field) *NodeTemplatesGetIamPolicyCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *NodeTemplatesGetIamPolicyCall) IfNoneMatch(entityTag string) *NodeTemplatesGetIamPolicyCall {
+ c.ifNoneMatch_ = entityTag
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *NodeTemplatesGetIamPolicyCall) Context(ctx context.Context) *NodeTemplatesGetIamPolicyCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *NodeTemplatesGetIamPolicyCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *NodeTemplatesGetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ if c.ifNoneMatch_ != "" {
+ reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+ }
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/nodeTemplates/{resource}/getIamPolicy")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("GET", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "resource": c.resource,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.nodeTemplates.getIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *NodeTemplatesGetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Policy{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ // "httpMethod": "GET",
+ // "id": "compute.nodeTemplates.getIamPolicy",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "The name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/nodeTemplates/{resource}/getIamPolicy",
+ // "response": {
+ // "$ref": "Policy"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
+ // ]
+ // }
+
+}
+
+// method id "compute.nodeTemplates.setIamPolicy":
+
+type NodeTemplatesSetIamPolicyCall struct {
+ s *Service
+ project string
+ region string
+ resource string
+ policy *Policy
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// SetIamPolicy: Sets the access control policy on the specified
+// resource. Replaces any existing policy.
+func (r *NodeTemplatesService) SetIamPolicy(project string, region string, resource string, policy *Policy) *NodeTemplatesSetIamPolicyCall {
+ c := &NodeTemplatesSetIamPolicyCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.resource = resource
+ c.policy = policy
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *NodeTemplatesSetIamPolicyCall) Fields(s ...googleapi.Field) *NodeTemplatesSetIamPolicyCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *NodeTemplatesSetIamPolicyCall) Context(ctx context.Context) *NodeTemplatesSetIamPolicyCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *NodeTemplatesSetIamPolicyCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *NodeTemplatesSetIamPolicyCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.policy)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/nodeTemplates/{resource}/setIamPolicy")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "resource": c.resource,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.nodeTemplates.setIamPolicy" call.
+// Exactly one of *Policy or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Policy.ServerResponse.Header or (if a response was returned at all)
+// in error.(*googleapi.Error).Header. Use googleapi.IsNotModified to
+// check whether the returned error was because http.StatusNotModified
+// was returned.
+func (c *NodeTemplatesSetIamPolicyCall) Do(opts ...googleapi.CallOption) (*Policy, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Policy{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ // "httpMethod": "POST",
+ // "id": "compute.nodeTemplates.setIamPolicy",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "The name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/nodeTemplates/{resource}/setIamPolicy",
+ // "request": {
+ // "$ref": "Policy"
+ // },
+ // "response": {
+ // "$ref": "Policy"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.nodeTemplates.testIamPermissions":
+
+type NodeTemplatesTestIamPermissionsCall struct {
+ s *Service
+ project string
+ region string
+ resource string
+ testpermissionsrequest *TestPermissionsRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// TestIamPermissions: Returns permissions that a caller has on the
+// specified resource.
+func (r *NodeTemplatesService) TestIamPermissions(project string, region string, resource string, testpermissionsrequest *TestPermissionsRequest) *NodeTemplatesTestIamPermissionsCall {
+ c := &NodeTemplatesTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.resource = resource
+ c.testpermissionsrequest = testpermissionsrequest
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *NodeTemplatesTestIamPermissionsCall) Fields(s ...googleapi.Field) *NodeTemplatesTestIamPermissionsCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *NodeTemplatesTestIamPermissionsCall) Context(ctx context.Context) *NodeTemplatesTestIamPermissionsCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *NodeTemplatesTestIamPermissionsCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *NodeTemplatesTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.testpermissionsrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/nodeTemplates/{resource}/testIamPermissions")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "resource": c.resource,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.nodeTemplates.testIamPermissions" call.
+// Exactly one of *TestPermissionsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *TestPermissionsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *NodeTemplatesTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestPermissionsResponse, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &TestPermissionsResponse{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Returns permissions that a caller has on the specified resource.",
+ // "httpMethod": "POST",
+ // "id": "compute.nodeTemplates.testIamPermissions",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "The name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/nodeTemplates/{resource}/testIamPermissions",
+ // "request": {
+ // "$ref": "TestPermissionsRequest"
+ // },
+ // "response": {
+ // "$ref": "TestPermissionsResponse"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
+ // ]
+ // }
+
+}
+
+// method id "compute.projects.disableXpnHost":
+
+type ProjectsDisableXpnHostCall struct {
+ s *Service
+ project string
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// DisableXpnHost: Disable this project as a shared VPC host project.
+func (r *ProjectsService) DisableXpnHost(project string) *ProjectsDisableXpnHostCall {
+ c := &ProjectsDisableXpnHostCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *ProjectsDisableXpnHostCall) RequestId(requestId string) *ProjectsDisableXpnHostCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsDisableXpnHostCall) Fields(s ...googleapi.Field) *ProjectsDisableXpnHostCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsDisableXpnHostCall) Context(ctx context.Context) *ProjectsDisableXpnHostCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsDisableXpnHostCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *ProjectsDisableXpnHostCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/disableXpnHost")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.projects.disableXpnHost" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsDisableXpnHostCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Disable this project as a shared VPC host project.",
+ // "httpMethod": "POST",
+ // "id": "compute.projects.disableXpnHost",
+ // "parameterOrder": [
+ // "project"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/disableXpnHost",
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.projects.disableXpnResource":
+
+type ProjectsDisableXpnResourceCall struct {
+ s *Service
+ project string
+ projectsdisablexpnresourcerequest *ProjectsDisableXpnResourceRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// DisableXpnResource: Disable a serivce resource (a.k.a service
+// project) associated with this host project.
+func (r *ProjectsService) DisableXpnResource(project string, projectsdisablexpnresourcerequest *ProjectsDisableXpnResourceRequest) *ProjectsDisableXpnResourceCall {
+ c := &ProjectsDisableXpnResourceCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.projectsdisablexpnresourcerequest = projectsdisablexpnresourcerequest
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *ProjectsDisableXpnResourceCall) RequestId(requestId string) *ProjectsDisableXpnResourceCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsDisableXpnResourceCall) Fields(s ...googleapi.Field) *ProjectsDisableXpnResourceCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsDisableXpnResourceCall) Context(ctx context.Context) *ProjectsDisableXpnResourceCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsDisableXpnResourceCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *ProjectsDisableXpnResourceCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.projectsdisablexpnresourcerequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/disableXpnResource")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.projects.disableXpnResource" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsDisableXpnResourceCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
+ // "httpMethod": "POST",
+ // "id": "compute.projects.disableXpnResource",
+ // "parameterOrder": [
+ // "project"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/disableXpnResource",
+ // "request": {
+ // "$ref": "ProjectsDisableXpnResourceRequest"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.projects.enableXpnHost":
+
+type ProjectsEnableXpnHostCall struct {
+ s *Service
+ project string
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// EnableXpnHost: Enable this project as a shared VPC host project.
+func (r *ProjectsService) EnableXpnHost(project string) *ProjectsEnableXpnHostCall {
+ c := &ProjectsEnableXpnHostCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *ProjectsEnableXpnHostCall) RequestId(requestId string) *ProjectsEnableXpnHostCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsEnableXpnHostCall) Fields(s ...googleapi.Field) *ProjectsEnableXpnHostCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsEnableXpnHostCall) Context(ctx context.Context) *ProjectsEnableXpnHostCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsEnableXpnHostCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *ProjectsEnableXpnHostCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/enableXpnHost")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.projects.enableXpnHost" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
// http.StatusNotModified was returned.
func (c *ProjectsEnableXpnHostCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
gensupport.SetOptions(c.urlParams_, opts...)
@@ -85455,7 +86739,7 @@ func (c *RegionBackendServicesGetHealthCall) Do(opts ...googleapi.CallOption) (*
// ],
// "parameters": {
// "backendService": {
- // "description": "Name of the BackendService resource to which the queried instance belongs.",
+ // "description": "Name of the BackendService resource for which to get health.",
// "location": "path",
// "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
// "required": true,
@@ -97687,6 +98971,13 @@ func (r *SecurityPoliciesService) AddRule(project string, securityPolicy string,
return c
}
+// ValidateOnly sets the optional parameter "validateOnly": If true, the
+// request will not be committed.
+func (c *SecurityPoliciesAddRuleCall) ValidateOnly(validateOnly bool) *SecurityPoliciesAddRuleCall {
+ c.urlParams_.Set("validateOnly", fmt.Sprint(validateOnly))
+ return c
+}
+
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
@@ -97795,6 +99086,11 @@ func (c *SecurityPoliciesAddRuleCall) Do(opts ...googleapi.CallOption) (*Operati
// "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
// "required": true,
// "type": "string"
+ // },
+ // "validateOnly": {
+ // "description": "If true, the request will not be committed.",
+ // "location": "query",
+ // "type": "boolean"
// }
// },
// "path": "{project}/global/securityPolicies/{securityPolicy}/addRule",
@@ -98899,6 +100195,13 @@ func (c *SecurityPoliciesPatchRuleCall) Priority(priority int64) *SecurityPolici
return c
}
+// ValidateOnly sets the optional parameter "validateOnly": If true, the
+// request will not be committed.
+func (c *SecurityPoliciesPatchRuleCall) ValidateOnly(validateOnly bool) *SecurityPoliciesPatchRuleCall {
+ c.urlParams_.Set("validateOnly", fmt.Sprint(validateOnly))
+ return c
+}
+
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
@@ -99013,6 +100316,11 @@ func (c *SecurityPoliciesPatchRuleCall) Do(opts ...googleapi.CallOption) (*Opera
// "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
// "required": true,
// "type": "string"
+ // },
+ // "validateOnly": {
+ // "description": "If true, the request will not be committed.",
+ // "location": "query",
+ // "type": "boolean"
// }
// },
// "path": "{project}/global/securityPolicies/{securityPolicy}/patchRule",
diff --git a/vendor/google.golang.org/api/compute/v0.beta/compute-api.json b/vendor/google.golang.org/api/compute/v0.beta/compute-api.json
index 5779593b74fe..690984a15411 100644
--- a/vendor/google.golang.org/api/compute/v0.beta/compute-api.json
+++ b/vendor/google.golang.org/api/compute/v0.beta/compute-api.json
@@ -1,34693 +1,35812 @@
{
- "kind": "discovery#restDescription",
- "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/HIjKZ2H1Lvje9CpaMVbiW03yMTM\"",
- "discoveryVersion": "v1",
- "id": "compute:beta",
- "name": "compute",
- "version": "beta",
- "revision": "20171207",
- "title": "Compute Engine API",
- "description": "Creates and runs virtual machines on Google Cloud Platform.",
- "ownerDomain": "google.com",
- "ownerName": "Google",
- "icons": {
- "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
- "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
- },
- "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
- "protocol": "rest",
- "baseUrl": "https://www.googleapis.com/compute/beta/projects/",
- "basePath": "/compute/beta/projects/",
- "rootUrl": "https://www.googleapis.com/",
- "servicePath": "compute/beta/projects/",
- "batchPath": "batch/compute/beta",
- "parameters": {
- "alt": {
- "type": "string",
- "description": "Data format for the response.",
- "default": "json",
- "enum": [
- "json"
- ],
- "enumDescriptions": [
- "Responses with Content-Type of application/json"
- ],
- "location": "query"
- },
- "fields": {
- "type": "string",
- "description": "Selector specifying which fields to include in a partial response.",
- "location": "query"
- },
- "key": {
- "type": "string",
- "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
- "location": "query"
- },
- "oauth_token": {
- "type": "string",
- "description": "OAuth 2.0 token for the current user.",
- "location": "query"
- },
- "prettyPrint": {
- "type": "boolean",
- "description": "Returns response with indentations and line breaks.",
- "default": "true",
- "location": "query"
- },
- "quotaUser": {
- "type": "string",
- "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
- "location": "query"
- },
- "userIp": {
- "type": "string",
- "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
- "location": "query"
- }
- },
- "auth": {
- "oauth2": {
- "scopes": {
- "https://www.googleapis.com/auth/cloud-platform": {
- "description": "View and manage your data across Google Cloud Platform services"
- },
- "https://www.googleapis.com/auth/compute": {
- "description": "View and manage your Google Compute Engine resources"
- },
- "https://www.googleapis.com/auth/compute.readonly": {
- "description": "View your Google Compute Engine resources"
- },
- "https://www.googleapis.com/auth/devstorage.full_control": {
- "description": "Manage your data and permissions in Google Cloud Storage"
- },
- "https://www.googleapis.com/auth/devstorage.read_only": {
- "description": "View your data in Google Cloud Storage"
- },
- "https://www.googleapis.com/auth/devstorage.read_write": {
- "description": "Manage your data in Google Cloud Storage"
- }
- }
- }
- },
- "schemas": {
- "AcceleratorConfig": {
- "id": "AcceleratorConfig",
- "type": "object",
- "description": "A specification of the type and number of accelerator cards attached to the instance.",
- "properties": {
- "acceleratorCount": {
- "type": "integer",
- "description": "The number of the guest accelerator cards exposed to this instance.",
- "format": "int32"
- },
- "acceleratorType": {
- "type": "string",
- "description": "Full or partial URL of the accelerator type resource to expose to this instance."
- }
- }
- },
- "AcceleratorType": {
- "id": "AcceleratorType",
- "type": "object",
- "description": "An Accelerator Type resource. (== resource_for beta.acceleratorTypes ==) (== resource_for v1.acceleratorTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this accelerator type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#acceleratorType for accelerator types.",
- "default": "compute#acceleratorType"
- },
- "maximumCardsPerInstance": {
- "type": "integer",
- "description": "[Output Only] Maximum accelerator cards allowed per instance.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the accelerator type resides, such as us-central1-a."
- }
- }
- },
- "AcceleratorTypeAggregatedList": {
- "id": "AcceleratorTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AcceleratorTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "AcceleratorTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of accelerator types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#acceleratorTypeAggregatedList for aggregated lists of accelerator types.",
- "default": "compute#acceleratorTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AcceleratorTypeList": {
- "id": "AcceleratorTypeList",
- "type": "object",
- "description": "Contains a list of accelerator types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of AcceleratorType resources.",
- "items": {
- "$ref": "AcceleratorType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#acceleratorTypeList for lists of accelerator types.",
- "default": "compute#acceleratorTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AcceleratorTypesScopedList": {
- "id": "AcceleratorTypesScopedList",
- "type": "object",
- "properties": {
- "acceleratorTypes": {
- "type": "array",
- "description": "[Output Only] List of accelerator types contained in this scope.",
- "items": {
- "$ref": "AcceleratorType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the accelerator types list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "View and manage your data across Google Cloud Platform services"
+ },
+ "https://www.googleapis.com/auth/compute": {
+ "description": "View and manage your Google Compute Engine resources"
+ },
+ "https://www.googleapis.com/auth/compute.readonly": {
+ "description": "View your Google Compute Engine resources"
+ },
+ "https://www.googleapis.com/auth/devstorage.full_control": {
+ "description": "Manage your data and permissions in Google Cloud Storage"
+ },
+ "https://www.googleapis.com/auth/devstorage.read_only": {
+ "description": "View your data in Google Cloud Storage"
+ },
+ "https://www.googleapis.com/auth/devstorage.read_write": {
+ "description": "Manage your data in Google Cloud Storage"
+ }
}
- }
- }
- }
- },
- "AccessConfig": {
- "id": "AccessConfig",
- "type": "object",
- "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#accessConfig for access configs.",
- "default": "compute#accessConfig"
- },
- "name": {
- "type": "string",
- "description": "The name of this access configuration. The default and recommended name is External NAT but you can use any arbitrary string you would like. For example, My external IP or Network Access."
- },
- "natIP": {
- "type": "string",
- "description": "An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
- },
- "publicPtrDomainName": {
- "type": "string",
- "description": "The DNS domain name for the public PTR record. This field can only be set when the set_public_ptr field is enabled."
- },
- "setPublicPtr": {
- "type": "boolean",
- "description": "Specifies whether a public DNS ?PTR? record should be created to map the external IP address of the instance to a DNS domain name."
- },
- "type": {
- "type": "string",
- "description": "The type of configuration. The default and only option is ONE_TO_ONE_NAT.",
- "default": "ONE_TO_ONE_NAT",
- "enum": [
- "ONE_TO_ONE_NAT"
- ],
- "enumDescriptions": [
- ""
- ]
}
- }
},
- "Address": {
- "id": "Address",
- "type": "object",
- "description": "A reserved address resource. (== resource_for beta.addresses ==) (== resource_for v1.addresses ==) (== resource_for beta.globalAddresses ==) (== resource_for v1.globalAddresses ==)",
- "properties": {
- "address": {
- "type": "string",
- "description": "The static IP address represented by this resource."
- },
- "addressType": {
- "type": "string",
- "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "UNSPECIFIED_TYPE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipVersion": {
- "type": "string",
- "description": "The IP Version that will be used by this address. Valid options are IPV4 or IPV6. This can only be specified for a global address.",
- "enum": [
- "IPV4",
- "IPV6",
- "UNSPECIFIED_VERSION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#address for addresses.",
- "default": "compute#address"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an Address.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.addresses.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
- "enum": [
- "IN_USE",
- "RESERVED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with GCE_ENDPOINT/DNS_RESOLVER purposes."
- },
- "users": {
- "type": "array",
- "description": "[Output Only] The URLs of the resources that are using this address.",
- "items": {
+ "basePath": "/compute/beta/projects/",
+ "baseUrl": "https://www.googleapis.com/compute/beta/projects/",
+ "batchPath": "batch/compute/beta",
+ "description": "Creates and runs virtual machines on Google Cloud Platform.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
+ "etag": "\"-iA1DTNe4s-I6JZXPt1t1Ypy8IU/JrYQUQoo567cA8hFPPaVrcEEzOY\"",
+ "icons": {
+ "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
+ "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
+ },
+ "id": "compute:beta",
+ "kind": "discovery#restDescription",
+ "name": "compute",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "alt": {
+ "default": "json",
+ "description": "Data format for the response.",
+ "enum": [
+ "json"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json"
+ ],
+ "location": "query",
"type": "string"
- }
- }
- }
- },
- "AddressAggregatedList": {
- "id": "AddressAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AddressesScopedList resources.",
- "additionalProperties": {
- "$ref": "AddressesScopedList",
- "description": "[Output Only] Name of the scope containing this set of addresses."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#addressAggregatedList for aggregated lists of addresses.",
- "default": "compute#addressAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AddressList": {
- "id": "AddressList",
- "type": "object",
- "description": "Contains a list of addresses.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Address resources.",
- "items": {
- "$ref": "Address"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#addressList for lists of addresses.",
- "default": "compute#addressList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AddressesScopedList": {
- "id": "AddressesScopedList",
- "type": "object",
- "properties": {
- "addresses": {
- "type": "array",
- "description": "[Output Only] List of addresses contained in this scope.",
- "items": {
- "$ref": "Address"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AliasIpRange": {
- "id": "AliasIpRange",
- "type": "object",
- "description": "An alias IP range attached to an instance's network interface.",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24)."
- },
- "subnetworkRangeName": {
- "type": "string",
- "description": "Optional subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used."
- }
- }
- },
- "AttachedDisk": {
- "id": "AttachedDisk",
- "type": "object",
- "description": "An instance-attached disk resource.",
- "properties": {
- "autoDelete": {
- "type": "boolean",
- "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
- },
- "boot": {
- "type": "boolean",
- "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
- },
- "deviceName": {
- "type": "string",
- "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance.\n\nIf not specified, the server chooses a default device name to apply to this disk, in the form persistent-disks-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
- },
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
- },
- "index": {
- "type": "integer",
- "description": "[Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
- "format": "int32"
- },
- "initializeParams": {
- "$ref": "AttachedDiskInitializeParams",
- "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both."
- },
- "interface": {
- "type": "string",
- "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
- "enum": [
- "NVME",
- "SCSI"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#attachedDisk for attached disks.",
- "default": "compute#attachedDisk"
},
- "licenses": {
- "type": "array",
- "description": "[Output Only] Any valid publicly visible licenses.",
- "items": {
- "type": "string"
- }
- },
- "mode": {
- "type": "string",
- "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
- "enum": [
- "READ_ONLY",
- "READ_WRITE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "source": {
- "type": "string",
- "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk."
- },
- "type": {
- "type": "string",
- "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
- "enum": [
- "PERSISTENT",
- "SCRATCH"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "AttachedDiskInitializeParams": {
- "id": "AttachedDiskInitializeParams",
- "type": "object",
- "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both.",
- "properties": {
- "diskName": {
- "type": "string",
- "description": "Specifies the disk name. If not specified, the default is to use the name of the instance."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "Specifies the size of the disk in base-2 GB.",
- "format": "int64"
- },
- "diskStorageType": {
- "type": "string",
- "description": "[Deprecated] Storage type of the disk.",
- "enum": [
- "HDD",
- "SSD"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "diskType": {
- "type": "string",
- "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:\n\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard \n\nOther values include pd-ssd and local-ssd. If you define this field, you can provide either the full or partial URL. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType \n- projects/project/zones/zone/diskTypes/diskType \n- zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is the name of the disk type, not URL."
- },
- "sourceImage": {
- "type": "string",
- "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a custom image that you created, specify the image name in the following format:\n\nglobal/images/my-custom-image \n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-image-family \n\nIf the source image is deleted later, this field will not be set."
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys."
- }
- }
- },
- "AuditConfig": {
- "id": "AuditConfig",
- "type": "object",
- "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n{ \"audit_configs\": [ { \"service\": \"allServices\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", }, { \"log_type\": \"ADMIN_READ\", } ] }, { \"service\": \"fooservice.googleapis.com\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:bar@gmail.com\" ] } ] } ] }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts foo@gmail.com from DATA_READ logging, and bar@gmail.com from DATA_WRITE logging.",
- "properties": {
- "auditLogConfigs": {
- "type": "array",
- "description": "The configuration for logging of each type of permission.",
- "items": {
- "$ref": "AuditLogConfig"
- }
- },
- "exemptedMembers": {
- "type": "array",
- "description": "",
- "items": {
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
"type": "string"
- }
},
- "service": {
- "type": "string",
- "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services."
- }
- }
- },
- "AuditLogConfig": {
- "id": "AuditLogConfig",
- "type": "object",
- "description": "Provides the configuration for logging a type of permissions. Example:\n\n{ \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", } ] }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting foo@gmail.com from DATA_READ logging.",
- "properties": {
- "exemptedMembers": {
- "type": "array",
- "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of [Binding.members][].",
- "items": {
- "type": "string"
- }
- },
- "logType": {
- "type": "string",
- "description": "The log type that this config enables.",
- "enum": [
- "ADMIN_READ",
- "DATA_READ",
- "DATA_WRITE",
- "LOG_TYPE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "AuthorizationLoggingOptions": {
- "id": "AuthorizationLoggingOptions",
- "type": "object",
- "description": "Authorization-related information used by Cloud Audit Logging.",
- "properties": {
- "permissionType": {
- "type": "string",
- "description": "The type of the permission that was checked.",
- "enum": [
- "ADMIN_READ",
- "ADMIN_WRITE",
- "DATA_READ",
- "DATA_WRITE",
- "PERMISSION_TYPE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "Autoscaler": {
- "id": "Autoscaler",
- "type": "object",
- "description": "Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances. (== resource_for beta.autoscalers ==) (== resource_for v1.autoscalers ==) (== resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==)",
- "properties": {
- "autoscalingPolicy": {
- "$ref": "AutoscalingPolicy",
- "description": "The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#autoscaler for autoscalers.",
- "default": "compute#autoscaler"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroups.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the autoscaler configuration.",
- "enum": [
- "ACTIVE",
- "DELETING",
- "ERROR",
- "PENDING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "statusDetails": {
- "type": "array",
- "description": "[Output Only] Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
- "items": {
- "$ref": "AutoscalerStatusDetails"
- }
- },
- "target": {
- "type": "string",
- "description": "URL of the managed instance group that this autoscaler will scale."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope)."
- }
- }
- },
- "AutoscalerAggregatedList": {
- "id": "AutoscalerAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AutoscalersScopedList resources.",
- "additionalProperties": {
- "$ref": "AutoscalersScopedList",
- "description": "[Output Only] Name of the scope containing this set of autoscalers."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#autoscalerAggregatedList for aggregated lists of autoscalers.",
- "default": "compute#autoscalerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalerList": {
- "id": "AutoscalerList",
- "type": "object",
- "description": "Contains a list of Autoscaler resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Autoscaler resources.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#autoscalerList for lists of autoscalers.",
- "default": "compute#autoscalerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalerStatusDetails": {
- "id": "AutoscalerStatusDetails",
- "type": "object",
- "properties": {
- "message": {
- "type": "string",
- "description": "The status message."
- },
- "type": {
- "type": "string",
- "description": "The type of error returned.",
- "enum": [
- "ALL_INSTANCES_UNHEALTHY",
- "BACKEND_SERVICE_DOES_NOT_EXIST",
- "CAPPED_AT_MAX_NUM_REPLICAS",
- "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE",
- "CUSTOM_METRIC_INVALID",
- "MIN_EQUALS_MAX",
- "MISSING_CUSTOM_METRIC_DATA_POINTS",
- "MISSING_LOAD_BALANCING_DATA_POINTS",
- "MORE_THAN_ONE_BACKEND_SERVICE",
- "NOT_ENOUGH_QUOTA_AVAILABLE",
- "REGION_RESOURCE_STOCKOUT",
- "SCALING_TARGET_DOES_NOT_EXIST",
- "UNKNOWN",
- "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION",
- "ZONE_RESOURCE_STOCKOUT"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "AutoscalersScopedList": {
- "id": "AutoscalersScopedList",
- "type": "object",
- "properties": {
- "autoscalers": {
- "type": "array",
- "description": "[Output Only] List of autoscalers contained in this scope.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of autoscalers when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalingPolicy": {
- "id": "AutoscalingPolicy",
- "type": "object",
- "description": "Cloud Autoscaler policy.",
- "properties": {
- "coolDownPeriodSec": {
- "type": "integer",
- "description": "The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.",
- "format": "int32"
- },
- "cpuUtilization": {
- "$ref": "AutoscalingPolicyCpuUtilization",
- "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
- },
- "customMetricUtilizations": {
- "type": "array",
- "description": "Configuration parameters of autoscaling based on a custom metric.",
- "items": {
- "$ref": "AutoscalingPolicyCustomMetricUtilization"
- }
- },
- "loadBalancingUtilization": {
- "$ref": "AutoscalingPolicyLoadBalancingUtilization",
- "description": "Configuration parameters of autoscaling based on load balancer."
- },
- "maxNumReplicas": {
- "type": "integer",
- "description": "The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.",
- "format": "int32"
- },
- "minNumReplicas": {
- "type": "integer",
- "description": "The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.",
- "format": "int32"
- }
- }
- },
- "AutoscalingPolicyCpuUtilization": {
- "id": "AutoscalingPolicyCpuUtilization",
- "type": "object",
- "description": "CPU utilization policy.",
- "properties": {
- "utilizationTarget": {
- "type": "number",
- "description": "The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.",
- "format": "double"
- }
- }
- },
- "AutoscalingPolicyCustomMetricUtilization": {
- "id": "AutoscalingPolicyCustomMetricUtilization",
- "type": "object",
- "description": "Custom utilization metric policy.",
- "properties": {
- "filter": {
- "type": "string",
- "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data.\n\nFor the filter to be valid for autoscaling purposes, the following rules apply: \n- You can only use the AND operator for joining selectors. \n- You can only use direct equality comparison operator (=) without any functions for each selector. \n- You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. \n- The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels.\nIf the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a per-group metric for the purpose of autoscaling.\n\nIf not specified, the type defaults to gce_instance. \n\nYou should provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value."
- },
- "metric": {
- "type": "string",
- "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE."
- },
- "singleInstanceAssignment": {
- "type": "number",
- "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler will keep the number of instances proportional to the value of this metric, the metric itself should not change value due to group resizing.\n\nA good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances.\n\nA bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead.",
- "format": "double"
- },
- "utilizationTarget": {
- "type": "number",
- "description": "The target value of the metric that autoscaler should maintain. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
- "format": "double"
- },
- "utilizationTargetType": {
- "type": "string",
- "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.",
- "enum": [
- "DELTA_PER_MINUTE",
- "DELTA_PER_SECOND",
- "GAUGE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "AutoscalingPolicyLoadBalancingUtilization": {
- "id": "AutoscalingPolicyLoadBalancingUtilization",
- "type": "object",
- "description": "Configuration parameters of autoscaling based on load balancing.",
- "properties": {
- "utilizationTarget": {
- "type": "number",
- "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
- "format": "double"
- }
- }
- },
- "Backend": {
- "id": "Backend",
- "type": "object",
- "description": "Message containing information of one individual backend.",
- "properties": {
- "balancingMode": {
- "type": "string",
- "description": "Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).\n\nFor Internal Load Balancing, the default and only supported mode is CONNECTION.",
- "enum": [
- "CONNECTION",
- "RATE",
- "UTILIZATION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "capacityScaler": {
- "type": "number",
- "description": "A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "group": {
- "type": "string",
- "description": "The fully-qualified URL of a Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.\n\nNote that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.\n\nWhen the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService."
- },
- "maxConnections": {
- "type": "integer",
- "description": "The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxConnectionsPerInstance": {
- "type": "integer",
- "description": "The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxRate": {
- "type": "integer",
- "description": "The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxRatePerInstance": {
- "type": "number",
- "description": "The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- },
- "maxUtilization": {
- "type": "number",
- "description": "Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- }
- }
- },
- "BackendBucket": {
- "id": "BackendBucket",
- "type": "object",
- "description": "A BackendBucket resource. This resource defines a Cloud Storage bucket.",
- "properties": {
- "bucketName": {
- "type": "string",
- "description": "Cloud Storage bucket name."
- },
- "cdnPolicy": {
- "$ref": "BackendBucketCdnPolicy",
- "description": "Cloud CDN Coniguration for this BackendBucket."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource; provided by the client when the resource is created."
- },
- "enableCdn": {
- "type": "boolean",
- "description": "If true, enable Cloud CDN for this BackendBucket."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#backendBucket"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "BackendBucketCdnPolicy": {
- "id": "BackendBucketCdnPolicy",
- "type": "object",
- "description": "Message containing Cloud CDN configuration for a backend bucket.",
- "properties": {
- "signedUrlCacheMaxAgeSec": {
- "type": "string",
- "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this bucket had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
- "format": "int64"
- },
- "signedUrlKeyNames": {
- "type": "array",
- "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend bucket.",
- "items": {
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
"type": "string"
- }
- }
- }
- },
- "BackendBucketList": {
- "id": "BackendBucketList",
- "type": "object",
- "description": "Contains a list of BackendBucket resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of BackendBucket resources.",
- "items": {
- "$ref": "BackendBucket"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#backendBucketList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendService": {
- "id": "BackendService",
- "type": "object",
- "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)",
- "properties": {
- "affinityCookieTtlSec": {
- "type": "integer",
- "description": "Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
- "format": "int32"
- },
- "backends": {
- "type": "array",
- "description": "The list of backends that serve this BackendService.",
- "items": {
- "$ref": "Backend"
- }
- },
- "cdnPolicy": {
- "$ref": "BackendServiceCdnPolicy",
- "description": "Cloud CDN configuration for this BackendService."
- },
- "connectionDraining": {
- "$ref": "ConnectionDraining"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "enableCDN": {
- "type": "boolean",
- "description": "If true, enable Cloud CDN for this BackendService.\n\nWhen the load balancing scheme is INTERNAL, this field is not used."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.",
- "format": "byte"
},
- "healthChecks": {
- "type": "array",
- "description": "The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.\n\nFor internal load balancing, a URL to a HealthCheck resource must be specified instead.",
- "items": {
- "type": "string"
- }
- },
- "iap": {
- "$ref": "BackendServiceIAP"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendService for backend services.",
- "default": "compute#backendService"
- },
- "loadBalancingScheme": {
- "type": "string",
- "description": "Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "INVALID_LOAD_BALANCING_SCHEME"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.\n\nWhen the load balancing scheme is INTERNAL, this field is not used."
- },
- "protocol": {
- "type": "string",
- "description": "The protocol this BackendService uses to communicate with backends.\n\nPossible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.\n\nFor internal load balancing, the possible values are TCP and UDP, and the default is TCP.",
- "enum": [
- "HTTP",
- "HTTPS",
- "SSL",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services."
- },
- "securityPolicy": {
- "type": "string",
- "description": "[Output Only] The resource URL for the security policy associated with this backend service."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sessionAffinity": {
- "type": "string",
- "description": "Type of session affinity to use. The default is NONE.\n\nWhen the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.\n\nWhen the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.\n\nWhen the protocol is UDP, this field is not used.",
- "enum": [
- "CLIENT_IP",
- "CLIENT_IP_PORT_PROTO",
- "CLIENT_IP_PROTO",
- "GENERATED_COOKIE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
- "format": "int32"
- }
- }
- },
- "BackendServiceAggregatedList": {
- "id": "BackendServiceAggregatedList",
- "type": "object",
- "description": "Contains a list of BackendServicesScopedList.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of BackendServicesScopedList resources.",
- "additionalProperties": {
- "$ref": "BackendServicesScopedList",
- "description": "Name of the scope containing this set of BackendServices."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#backendServiceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendServiceCdnPolicy": {
- "id": "BackendServiceCdnPolicy",
- "type": "object",
- "description": "Message containing Cloud CDN configuration for a backend service.",
- "properties": {
- "cacheKeyPolicy": {
- "$ref": "CacheKeyPolicy",
- "description": "The CacheKeyPolicy for this CdnPolicy."
- },
- "signedUrlCacheMaxAgeSec": {
- "type": "string",
- "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this backend had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
- "format": "int64"
- },
- "signedUrlKeyNames": {
- "type": "array",
- "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend service.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "BackendServiceGroupHealth": {
- "id": "BackendServiceGroupHealth",
- "type": "object",
- "properties": {
- "healthStatus": {
- "type": "array",
- "items": {
- "$ref": "HealthStatus"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.",
- "default": "compute#backendServiceGroupHealth"
- }
- }
- },
- "BackendServiceIAP": {
- "id": "BackendServiceIAP",
- "type": "object",
- "description": "Identity-Aware Proxy",
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "oauth2ClientId": {
- "type": "string"
- },
- "oauth2ClientSecret": {
- "type": "string"
- },
- "oauth2ClientSecretSha256": {
- "type": "string",
- "description": "[Output Only] SHA256 hash value for the field oauth2_client_secret above."
- }
- }
- },
- "BackendServiceList": {
- "id": "BackendServiceList",
- "type": "object",
- "description": "Contains a list of BackendService resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of BackendService resources.",
- "items": {
- "$ref": "BackendService"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.",
- "default": "compute#backendServiceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendServicesScopedList": {
- "id": "BackendServicesScopedList",
- "type": "object",
- "properties": {
- "backendServices": {
- "type": "array",
- "description": "List of BackendServices contained in this scope.",
- "items": {
- "$ref": "BackendService"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of backend services when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "Binding": {
- "id": "Binding",
- "type": "object",
- "description": "Associates `members` with a `role`.",
- "properties": {
- "condition": {
- "$ref": "Expr",
- "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently. This field is GOOGLE_INTERNAL."
- },
- "members": {
- "type": "array",
- "description": "Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.\n\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.",
- "items": {
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
"type": "string"
- }
},
- "role": {
- "type": "string",
- "description": "Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`."
- }
- }
- },
- "CacheInvalidationRule": {
- "id": "CacheInvalidationRule",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "If set, this invalidation rule will only apply to requests with a Host header matching host."
- },
- "path": {
- "type": "string"
- }
- }
- },
- "CacheKeyPolicy": {
- "id": "CacheKeyPolicy",
- "type": "object",
- "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
- "properties": {
- "includeHost": {
- "type": "boolean",
- "description": "If true, requests to different hosts will be cached separately."
- },
- "includeProtocol": {
- "type": "boolean",
- "description": "If true, http and https requests will be cached separately."
- },
- "includeQueryString": {
- "type": "boolean",
- "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
- },
- "queryStringBlacklist": {
- "type": "array",
- "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.",
- "items": {
- "type": "string"
- }
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
},
- "queryStringWhitelist": {
- "type": "array",
- "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "Commitment": {
- "id": "Commitment",
- "type": "object",
- "description": "Represents a Commitment resource. Creating a Commitment resource means that you are purchasing a committed use contract with an explicit start and end time. You can create commitments based on vCPUs and memory usage and receive discounted rates. For full details, read Signing Up for Committed Use Discounts.\n\nCommitted use discounts are subject to Google Cloud Platform's Service Specific Terms. By purchasing a committed use discount, you agree to these terms. Committed use discounts will not renew, so you must purchase a new commitment to continue receiving discounts. (== resource_for beta.commitments ==) (== resource_for v1.commitments ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "endTimestamp": {
- "type": "string",
- "description": "[Output Only] Commitment end time in RFC3339 text format."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#commitment for commitments.",
- "default": "compute#commitment"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "plan": {
- "type": "string",
- "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
- "enum": [
- "INVALID",
- "THIRTY_SIX_MONTH",
- "TWELVE_MONTH"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where this commitment may be used."
- },
- "resources": {
- "type": "array",
- "description": "List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
- "items": {
- "$ref": "ResourceCommitment"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "startTimestamp": {
- "type": "string",
- "description": "[Output Only] Commitment start time in RFC3339 text format."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
- "enum": [
- "ACTIVE",
- "CREATING",
- "EXPIRED",
- "NOT_YET_ACTIVE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable explanation of the status."
- }
- }
- },
- "CommitmentAggregatedList": {
- "id": "CommitmentAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of CommitmentsScopedList resources.",
- "additionalProperties": {
- "$ref": "CommitmentsScopedList",
- "description": "[Output Only] Name of the scope containing this set of commitments."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#commitmentAggregatedList for aggregated lists of commitments.",
- "default": "compute#commitmentAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "CommitmentList": {
- "id": "CommitmentList",
- "type": "object",
- "description": "Contains a list of Commitment resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Commitment resources.",
- "items": {
- "$ref": "Commitment"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#commitmentList for lists of commitments.",
- "default": "compute#commitmentList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "CommitmentsScopedList": {
- "id": "CommitmentsScopedList",
- "type": "object",
- "properties": {
- "commitments": {
- "type": "array",
- "description": "[Output Only] List of commitments contained in this scope.",
- "items": {
- "$ref": "Commitment"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of commitments when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "Condition": {
- "id": "Condition",
- "type": "object",
- "description": "A condition to be met.",
- "properties": {
- "iam": {
- "type": "string",
- "description": "Trusted attributes supplied by the IAM system.",
- "enum": [
- "APPROVER",
- "ATTRIBUTION",
- "AUTHORITY",
- "JUSTIFICATION_TYPE",
- "NO_ATTR",
- "SECURITY_REALM"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "op": {
- "type": "string",
- "description": "An operator to apply the subject with.",
- "enum": [
- "DISCHARGED",
- "EQUALS",
- "IN",
- "NOT_EQUALS",
- "NOT_IN",
- "NO_OP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "svc": {
- "type": "string",
- "description": "Trusted attributes discharged by the service."
- },
- "sys": {
- "type": "string",
- "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
- "enum": [
- "IP",
- "NAME",
- "NO_ATTR",
- "REGION",
- "SERVICE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "value": {
- "type": "string",
- "description": "DEPRECATED. Use 'values' instead."
- },
- "values": {
- "type": "array",
- "description": "The objects of the condition. This is mutually exclusive with 'value'.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "ConnectionDraining": {
- "id": "ConnectionDraining",
- "type": "object",
- "description": "Message containing connection draining configuration.",
- "properties": {
- "drainingTimeoutSec": {
- "type": "integer",
- "description": "Time for which instance will be drained (not accept new connections, but still work to finish started).",
- "format": "int32"
- }
- }
- },
- "CustomerEncryptionKey": {
- "id": "CustomerEncryptionKey",
- "type": "object",
- "description": "Represents a customer-supplied encryption key",
- "properties": {
- "rawKey": {
- "type": "string",
- "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource."
- },
- "rsaEncryptedKey": {
- "type": "string",
- "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource.\n\nThe key must meet the following requirements before you can provide it to Compute Engine: \n- The key is wrapped using a RSA public key certificate provided by Google. \n- After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Get the RSA public key certificate provided by Google at:\nhttps://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem"
- },
- "sha256": {
- "type": "string",
- "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource."
- }
- }
- },
- "CustomerEncryptionKeyProtectedDisk": {
- "id": "CustomerEncryptionKeyProtectedDisk",
- "type": "object",
- "properties": {
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Decrypts data associated with the disk with a customer-supplied encryption key."
- },
- "source": {
- "type": "string",
- "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks."
- }
- }
- },
- "DeprecationStatus": {
- "id": "DeprecationStatus",
- "type": "object",
- "description": "Deprecation status for a public resource.",
- "properties": {
- "deleted": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "deprecated": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "obsolete": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "replacement": {
- "type": "string",
- "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
- },
- "state": {
- "type": "string",
- "description": "The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
- "enum": [
- "DELETED",
- "DEPRECATED",
- "OBSOLETE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "Disk": {
- "id": "Disk",
- "type": "object",
- "description": "A Disk resource. (== resource_for beta.disks ==) (== resource_for v1.disks ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#disk for disks.",
- "default": "compute#disk"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a disk.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
- "additionalProperties": {
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
+ "location": "query",
"type": "string"
- }
- },
- "lastAttachTimestamp": {
- "type": "string",
- "description": "[Output Only] Last attach timestamp in RFC3339 text format."
},
- "lastDetachTimestamp": {
- "type": "string",
- "description": "[Output Only] Last detach timestamp in RFC3339 text format."
- },
- "licenseCodes": {
- "type": "array",
- "description": "Integer license codes indicating which licenses are attached to this disk.",
- "items": {
- "type": "string",
- "format": "int64"
- }
- },
- "licenses": {
- "type": "array",
- "description": "Any applicable publicly visible licenses.",
- "items": {
+ "userIp": {
+ "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
+ "location": "query",
"type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.disks.insert"
- ]
- }
- },
- "options": {
- "type": "string",
- "description": "Internal use only."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "sizeGb": {
- "type": "string",
- "description": "Size of the persistent disk, specified in GB. You can specify this field when creating a persistent disk using the sourceImage or sourceSnapshot parameter, or specify it alone to create an empty persistent disk.\n\nIf you specify this field along with sourceImage or sourceSnapshot, the value of sizeGb must not be less than the size of the sourceImage or the size of the snapshot. Acceptable values are 1 to 65536, inclusive.",
- "format": "int64"
- },
- "sourceImage": {
- "type": "string",
- "description": "The source image used to create this disk. If the source image is deleted, this field will not be set.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a custom image that you created, specify the image name in the following format:\n\nglobal/images/my-custom-image \n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-image-family"
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
- },
- "sourceImageId": {
- "type": "string",
- "description": "[Output Only] The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
- },
- "sourceSnapshot": {
- "type": "string",
- "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot \n- projects/project/global/snapshots/snapshot \n- global/snapshots/snapshot"
- },
- "sourceSnapshotEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
- },
- "sourceSnapshotId": {
- "type": "string",
- "description": "[Output Only] The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of disk creation.",
- "enum": [
- "CREATING",
- "FAILED",
- "READY",
- "RESTORING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "storageType": {
- "type": "string",
- "description": "[Deprecated] Storage type of the persistent disk.",
- "enum": [
- "HDD",
- "SSD"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "type": {
- "type": "string",
- "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk."
- },
- "users": {
- "type": "array",
- "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
- "items": {
- "type": "string"
- }
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the disk resides."
- }
- }
- },
- "DiskAggregatedList": {
- "id": "DiskAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of DisksScopedList resources.",
- "additionalProperties": {
- "$ref": "DisksScopedList",
- "description": "[Output Only] Name of the scope containing this set of disks."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskAggregatedList for aggregated lists of persistent disks.",
- "default": "compute#diskAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskInstantiationConfig": {
- "id": "DiskInstantiationConfig",
- "type": "object",
- "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
- "properties": {
- "autoDelete": {
- "type": "boolean",
- "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
- },
- "deviceName": {
- "type": "string",
- "description": "Specifies the device name of the disk to which the configurations apply to."
- },
- "instantiateFrom": {
- "type": "string",
- "description": "Specifies whether to include the disk and what image to use.",
- "enum": [
- "ATTACH_READ_ONLY",
- "BLANK",
- "DEFAULT",
- "DO_NOT_INCLUDE",
- "IMAGE_URL",
- "SOURCE_IMAGE",
- "SOURCE_IMAGE_FAMILY"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "sourceImage": {
- "type": "string",
- "description": "The custom source image to be used to restore this disk when instantiating this instance template."
- }
- }
- },
- "DiskList": {
- "id": "DiskList",
- "type": "object",
- "description": "A list of Disk resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Disk resources.",
- "items": {
- "$ref": "Disk"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskList for lists of disks.",
- "default": "compute#diskList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskMoveRequest": {
- "id": "DiskMoveRequest",
- "type": "object",
- "properties": {
- "destinationZone": {
- "type": "string",
- "description": "The URL of the destination zone to move the disk. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone"
- },
- "targetDisk": {
- "type": "string",
- "description": "The URL of the target disk to move. This can be a full or partial URL. For example, the following are all valid URLs to a disk: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk"
- }
- }
- },
- "DiskType": {
- "id": "DiskType",
- "type": "object",
- "description": "A DiskType resource. (== resource_for beta.diskTypes ==) (== resource_for v1.diskTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultDiskSizeGb": {
- "type": "string",
- "description": "[Output Only] Server-defined default disk size in GB.",
- "format": "int64"
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this disk type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional description of this resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#diskType for disk types.",
- "default": "compute#diskType"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "validDiskSize": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the valid disk size, such as \"10GB-10TB\"."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the disk type resides."
- }
- }
- },
- "DiskTypeAggregatedList": {
- "id": "DiskTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of DiskTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "DiskTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of disk types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskTypeAggregatedList.",
- "default": "compute#diskTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskTypeList": {
- "id": "DiskTypeList",
- "type": "object",
- "description": "Contains a list of disk types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of DiskType resources.",
- "items": {
- "$ref": "DiskType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskTypeList for disk types.",
- "default": "compute#diskTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskTypesScopedList": {
- "id": "DiskTypesScopedList",
- "type": "object",
- "properties": {
- "diskTypes": {
- "type": "array",
- "description": "[Output Only] List of disk types contained in this scope.",
- "items": {
- "$ref": "DiskType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of disk types when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DisksResizeRequest": {
- "id": "DisksResizeRequest",
- "type": "object",
- "properties": {
- "sizeGb": {
- "type": "string",
- "description": "The new size of the persistent disk, which is specified in GB.",
- "format": "int64"
- }
- }
- },
- "DisksScopedList": {
- "id": "DisksScopedList",
- "type": "object",
- "properties": {
- "disks": {
- "type": "array",
- "description": "[Output Only] List of disks contained in this scope.",
- "items": {
- "$ref": "Disk"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of disks when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
}
- }
},
- "DistributionPolicy": {
- "id": "DistributionPolicy",
- "type": "object",
- "properties": {
- "zones": {
- "type": "array",
- "items": {
- "$ref": "DistributionPolicyZoneConfiguration"
- }
- }
- }
- },
- "DistributionPolicyZoneConfiguration": {
- "id": "DistributionPolicyZoneConfiguration",
- "type": "object",
- "properties": {
- "zone": {
- "type": "string",
- "description": "URL of the zone where managed instance group is spawning instances (for regional resources). Zone has to belong to the region where managed instance group is located.",
- "annotations": {
- "required": [
- "compute.regionInstanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.update"
- ]
- }
- }
- }
- },
- "Expr": {
- "id": "Expr",
- "type": "object",
- "description": "Represents an expression text. Example:\n\ntitle: \"User account presence\" description: \"Determines whether the request has a user account\" expression: \"size(request.user) \u003e 0\"",
- "properties": {
- "description": {
- "type": "string",
- "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI."
- },
- "expression": {
- "type": "string",
- "description": "Textual representation of an expression in Common Expression Language syntax.\n\nThe application context of the containing message determines which well-known feature set of CEL is supported."
- },
- "location": {
- "type": "string",
- "description": "An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file."
- },
- "title": {
- "type": "string",
- "description": "An optional title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression."
- }
- }
- },
- "Firewall": {
- "id": "Firewall",
- "type": "object",
- "description": "Represents a Firewall resource.",
- "properties": {
- "allowed": {
- "type": "array",
- "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
- "items": {
- "type": "object",
- "properties": {
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
- },
- "ports": {
- "type": "array",
- "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
- "items": {
- "type": "string"
+ "protocol": "rest",
+ "resources": {
+ "acceleratorTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of accelerator types.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/acceleratorTypes",
+ "response": {
+ "$ref": "AcceleratorTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified accelerator type. Get a list of available accelerator types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "acceleratorType"
+ ],
+ "parameters": {
+ "acceleratorType": {
+ "description": "Name of the accelerator type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/acceleratorTypes/{acceleratorType}",
+ "response": {
+ "$ref": "AcceleratorType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of accelerator types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/acceleratorTypes",
+ "response": {
+ "$ref": "AcceleratorTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
}
- }
}
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "denied": {
- "type": "array",
- "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
- "items": {
- "type": "object",
- "properties": {
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
- },
- "ports": {
- "type": "array",
- "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
- "items": {
- "type": "string"
+ },
+ "addresses": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of addresses.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/addresses",
+ "response": {
+ "$ref": "AddressAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified address resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.addresses.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{address}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified address resource.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{address}",
+ "response": {
+ "$ref": "Address"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an address resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.addresses.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses",
+ "request": {
+ "$ref": "Address"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of addresses contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses",
+ "response": {
+ "$ref": "AddressList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an Address. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.addresses.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.addresses.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
}
- }
}
- }
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
},
- "destinationRanges": {
- "type": "array",
- "description": "If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "direction": {
- "type": "string",
- "description": "Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.",
- "enum": [
- "EGRESS",
- "INGRESS"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#firewall for firewall rules.",
- "default": "compute#firewall"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.firewalls.insert",
- "compute.firewalls.patch"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default"
- },
- "priority": {
- "type": "integer",
- "description": "Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.",
- "format": "int32"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sourceRanges": {
- "type": "array",
- "description": "If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "sourceServiceAccounts": {
- "type": "array",
- "description": "If source service accounts are specified, the firewall will apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both properties for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
- "items": {
- "type": "string"
- }
+ "autoscalers": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of autoscalers.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/autoscalers",
+ "response": {
+ "$ref": "AutoscalerAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified autoscaler.",
+ "httpMethod": "DELETE",
+ "id": "compute.autoscalers.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified autoscaler resource. Get a list of available autoscalers by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Autoscaler"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.autoscalers.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of autoscalers contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "response": {
+ "$ref": "AutoscalerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.autoscalers.patch",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to patch.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.autoscalers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.autoscalers.update",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to update.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "sourceTags": {
- "type": "array",
- "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.",
- "items": {
- "type": "string"
- }
- },
- "targetServiceAccounts": {
- "type": "array",
- "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
- "items": {
- "type": "string"
- }
- },
- "targetTags": {
- "type": "array",
- "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "FirewallList": {
- "id": "FirewallList",
- "type": "object",
- "description": "Contains a list of firewalls.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Firewall resources.",
- "items": {
- "$ref": "Firewall"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#firewallList for lists of firewalls.",
- "default": "compute#firewallList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "backendBuckets": {
+ "methods": {
+ "addSignedUrlKey": {
+ "description": "Adds the given Signed URL Key to the backend bucket.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.addSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey",
+ "request": {
+ "$ref": "SignedUrlKey"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified BackendBucket resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.backendBuckets.delete",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteSignedUrlKey": {
+ "description": "Deletes the given Signed URL Key from the backend bucket.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.deleteSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendBucket",
+ "keyName"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "keyName": {
+ "description": "The name of the Signed URL Key to delete.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.backendBuckets.get",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "response": {
+ "$ref": "BackendBucket"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of BackendBucket resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendBuckets.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets",
+ "response": {
+ "$ref": "BackendBucketList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified BackendBucket resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.backendBuckets.patch",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified BackendBucket resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.backendBuckets.update",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "FixedOrPercent": {
- "id": "FixedOrPercent",
- "type": "object",
- "description": "Encapsulates numeric value that can be either absolute or relative.",
- "properties": {
- "calculated": {
- "type": "integer",
- "description": "[Output Only] Absolute value of VM instances calculated based on the specific mode.\n\n \n- If the value is fixed, then the caculated value is equal to the fixed value. \n- If the value is a percent, then the calculated value is percent/100 * targetSize. For example, the calculated value of a 80% of a managed instance group with 150 instances would be (80/100 * 150) = 120 VM instances. If there is a remainder, the number is rounded up.",
- "format": "int32"
- },
- "fixed": {
- "type": "integer",
- "description": "Specifies a fixed number of VM instances. This must be a positive integer.",
- "format": "int32"
- },
- "percent": {
- "type": "integer",
- "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%.",
- "format": "int32"
- }
- }
- },
- "ForwardingRule": {
- "id": "ForwardingRule",
- "type": "object",
- "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, ports] tuple. (== resource_for beta.forwardingRules ==) (== resource_for v1.forwardingRules ==) (== resource_for beta.globalForwardingRules ==) (== resource_for v1.globalForwardingRules ==) (== resource_for beta.regionForwardingRules ==) (== resource_for v1.regionForwardingRules ==)",
- "properties": {
- "IPAddress": {
- "type": "string",
- "description": "The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing scheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, and for regional forwarding rules, the address must live in the same region as the forwarding rule. If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral internal IP address will be automatically allocated from the IP range of the subnet or network configured for this forwarding rule.\n\nAn address can be specified either by a literal IP address or a URL reference to an existing Address resource. The following examples are all valid: \n- 100.1.2.3 \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address \n- projects/project/regions/region/addresses/address \n- regions/region/addresses/address \n- global/addresses/address \n- address"
- },
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.\n\nWhen the load balancing scheme is INTERNAL, only TCP and UDP are valid.",
- "enum": [
- "AH",
- "ESP",
- "ICMP",
- "SCTP",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "backendService": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the BackendService resource to receive the matched traffic."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipVersion": {
- "type": "string",
- "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6. This can only be specified for a global forwarding rule.",
- "enum": [
- "IPV4",
- "IPV6",
- "UNSPECIFIED_VERSION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
- "default": "compute#forwardingRule"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "loadBalancingScheme": {
- "type": "string",
- "description": "This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "INVALID"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "network": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used."
- },
- "portRange": {
- "type": "string",
- "description": "This field is used along with the target field for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable ports: \n- TargetHttpProxy: 80, 8080 \n- TargetHttpsProxy: 443 \n- TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 \n- TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 \n- TargetVpnGateway: 500, 4500\n-"
- },
- "ports": {
- "type": "array",
- "description": "This field is used along with the backend_service field for internal load balancing.\n\nWhen the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule.\n\nYou may specify a maximum of up to 5 ports.",
- "items": {
- "type": "string"
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
},
- "serviceLabel": {
- "type": "string",
- "description": "An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.\n\nThe label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.\n\nThis field is only used for internal load balancing.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "serviceName": {
- "type": "string",
- "description": "[Output Only] The internal fully qualified service name for this Forwarding Rule.\n\nThis field is only used for internal load balancing."
+ "backendServices": {
+ "methods": {
+ "addSignedUrlKey": {
+ "description": "Adds the given Signed URL Key to the specified backend service.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.addSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/addSignedUrlKey",
+ "request": {
+ "$ref": "SignedUrlKey"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of all BackendService resources, regional and global, available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Name of the project scoping this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/backendServices",
+ "response": {
+ "$ref": "BackendServiceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified BackendService resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.backendServices.delete",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteSignedUrlKey": {
+ "description": "Deletes the given Signed URL Key from the specified backend service.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.deleteSignedUrlKey",
+ "parameterOrder": [
+ "project",
+ "backendService",
+ "keyName"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "keyName": {
+ "description": "The name of the Signed URL Key to delete.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/deleteSignedUrlKey",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified BackendService resource. Get a list of available backend services by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.get",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "response": {
+ "$ref": "BackendService"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for this BackendService.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.getHealth",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the queried instance belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/getHealth",
+ "request": {
+ "$ref": "ResourceGroupReference"
+ },
+ "response": {
+ "$ref": "BackendServiceGroupHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of BackendService resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices",
+ "response": {
+ "$ref": "BackendServiceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.backendServices.patch",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSecurityPolicy": {
+ "description": "Sets the security policy for the specified backend service.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.setSecurityPolicy",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the security policy should be set. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/setSecurityPolicy",
+ "request": {
+ "$ref": "SecurityPolicyReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "PUT",
+ "id": "compute.backendServices.update",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "subnetwork": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.\n\nIf the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified."
+ "diskTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of disk types.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/diskTypes",
+ "response": {
+ "$ref": "DiskTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified disk type. Get a list of available disk types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "diskType"
+ ],
+ "parameters": {
+ "diskType": {
+ "description": "Name of the disk type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/diskTypes/{diskType}",
+ "response": {
+ "$ref": "DiskType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of disk types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/diskTypes",
+ "response": {
+ "$ref": "DiskTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "target": {
- "type": "string",
- "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object.\n\nThis field is not used for internal load balancing."
- }
- }
- },
- "ForwardingRuleAggregatedList": {
- "id": "ForwardingRuleAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of ForwardingRulesScopedList resources.",
- "additionalProperties": {
- "$ref": "ForwardingRulesScopedList",
- "description": "Name of the scope containing this set of addresses."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#forwardingRuleAggregatedList for lists of forwarding rules.",
- "default": "compute#forwardingRuleAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "disks": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of persistent disks.",
+ "httpMethod": "GET",
+ "id": "compute.disks.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/disks",
+ "response": {
+ "$ref": "DiskAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "createSnapshot": {
+ "description": "Creates a snapshot of a specified persistent disk.",
+ "httpMethod": "POST",
+ "id": "compute.disks.createSnapshot",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to snapshot.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "guestFlush": {
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}/createSnapshot",
+ "request": {
+ "$ref": "Snapshot"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified persistent disk. Deleting a disk removes its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
+ "httpMethod": "DELETE",
+ "id": "compute.disks.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns a specified persistent disk. Get a list of available persistent disks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.disks.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}",
+ "response": {
+ "$ref": "Disk"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk with a sourceImage, a sourceSnapshot, or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
+ "httpMethod": "POST",
+ "id": "compute.disks.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "Optional. Source image to restore onto a disk.",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks",
+ "request": {
+ "$ref": "Disk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of persistent disks contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.disks.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks",
+ "response": {
+ "$ref": "DiskList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the specified persistent disk. You can only increase the size of the disk.",
+ "httpMethod": "POST",
+ "id": "compute.disks.resize",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "The name of the persistent disk.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}/resize",
+ "request": {
+ "$ref": "DisksResizeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a disk. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.disks.setLabels",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{resource}/setLabels",
+ "request": {
+ "$ref": "ZoneSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.disks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "ForwardingRuleList": {
- "id": "ForwardingRuleList",
- "type": "object",
- "description": "Contains a list of ForwardingRule resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of ForwardingRule resources.",
- "items": {
- "$ref": "ForwardingRule"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#forwardingRuleList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "firewalls": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified firewall.",
+ "httpMethod": "DELETE",
+ "id": "compute.firewalls.delete",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified firewall.",
+ "httpMethod": "GET",
+ "id": "compute.firewalls.get",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "response": {
+ "$ref": "Firewall"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a firewall rule in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.firewalls.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of firewall rules available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.firewalls.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls",
+ "response": {
+ "$ref": "FirewallList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified firewall rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.firewalls.patch",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.firewalls.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified firewall rule with the data included in the request. The PUT method can only update the following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
+ "httpMethod": "PUT",
+ "id": "compute.firewalls.update",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "ForwardingRulesScopedList": {
- "id": "ForwardingRulesScopedList",
- "type": "object",
- "properties": {
+ },
"forwardingRules": {
- "type": "array",
- "description": "List of forwarding rules contained in this scope.",
- "items": {
- "$ref": "ForwardingRule"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of forwarding rules when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "GlobalSetLabelsRequest": {
- "id": "GlobalSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "A list of labels to apply for this resource. Each label key & value must comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For example, \"webserver-frontend\": \"images\". A label value can also be empty (e.g. \"my-label\": \"\").",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "GuestOsFeature": {
- "id": "GuestOsFeature",
- "type": "object",
- "description": "Guest OS features.",
- "properties": {
- "type": {
- "type": "string",
- "description": "The ID of a supported feature. Read Enabling guest operating system features to see a list of available options.",
- "enum": [
- "FEATURE_TYPE_UNSPECIFIED",
- "MULTI_IP_SUBNET",
- "SECURE_BOOT",
- "UEFI_COMPATIBLE",
- "VIRTIO_SCSI_MULTIQUEUE",
- "WINDOWS"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "HTTPHealthCheck": {
- "id": "HTTPHealthCheck",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTP health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used."
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTP health check request. The default value is /."
- },
- "response": {
- "type": "string",
- "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII."
- }
- }
- },
- "HTTPSHealthCheck": {
- "id": "HTTPSHealthCheck",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used."
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTPS health check request. The default value is /."
- },
- "response": {
- "type": "string",
- "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII."
- }
- }
- },
- "HealthCheck": {
- "id": "HealthCheck",
- "type": "object",
- "description": "An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in 3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "httpHealthCheck": {
- "$ref": "HTTPHealthCheck"
- },
- "httpsHealthCheck": {
- "$ref": "HTTPSHealthCheck"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#healthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sslHealthCheck": {
- "$ref": "SSLHealthCheck"
- },
- "tcpHealthCheck": {
- "$ref": "TCPHealthCheck"
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
- "format": "int32"
- },
- "type": {
- "type": "string",
- "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.",
- "enum": [
- "HTTP",
- "HTTPS",
- "INVALID",
- "SSL",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "udpHealthCheck": {
- "$ref": "UDPHealthCheck"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HealthCheckList": {
- "id": "HealthCheckList",
- "type": "object",
- "description": "Contains a list of HealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HealthCheck resources.",
- "items": {
- "$ref": "HealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#healthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of forwarding rules.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified ForwardingRule resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.forwardingRules.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified ForwardingRule resource.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "ForwardingRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTarget": {
+ "description": "Changes target URL for forwarding rule. The new target should be of the same type as the old target.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.setTarget",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource in which target is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "HealthCheckReference": {
- "id": "HealthCheckReference",
- "type": "object",
- "description": "A full or valid partial URL to a health check. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check \n- projects/project-id/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
- "properties": {
- "healthCheck": {
- "type": "string"
- }
- }
- },
- "HealthStatus": {
- "id": "HealthStatus",
- "type": "object",
- "properties": {
- "healthState": {
- "type": "string",
- "description": "Health state of the instance.",
- "enum": [
- "HEALTHY",
- "UNHEALTHY"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "instance": {
- "type": "string",
- "description": "URL of the instance resource."
- },
- "ipAddress": {
- "type": "string",
- "description": "The IP address represented by this resource."
- },
- "port": {
- "type": "integer",
- "description": "The port on the instance.",
- "format": "int32"
- }
- }
- },
- "HostRule": {
- "id": "HostRule",
- "type": "object",
- "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
- "properties": {
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "hosts": {
- "type": "array",
- "description": "The list of host patterns to match. They must be valid hostnames, except * will match any string of ([a-z0-9-.]*). In that case, * must be the first character and must be followed in the pattern by either - or ..",
- "items": {
- "type": "string"
- }
},
- "pathMatcher": {
- "type": "string",
- "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
- }
- }
- },
- "HttpHealthCheck": {
- "id": "HttpHealthCheck",
- "type": "object",
- "description": "An HttpHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTP.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
- "default": "compute#httpHealthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the HTTP health check request. The default value is 80.",
- "format": "int32"
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTP health check request. The default value is /."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
- "format": "int32"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HttpHealthCheckList": {
- "id": "HttpHealthCheckList",
- "type": "object",
- "description": "Contains a list of HttpHealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HttpHealthCheck resources.",
- "items": {
- "$ref": "HttpHealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#httpHealthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "HttpsHealthCheck": {
- "id": "HttpsHealthCheck",
- "type": "object",
- "description": "An HttpsHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTPS.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#httpsHealthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
- "format": "int32"
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTPS health check request. The default value is \"/\"."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
- "format": "int32"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HttpsHealthCheckList": {
- "id": "HttpsHealthCheckList",
- "type": "object",
- "description": "Contains a list of HttpsHealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HttpsHealthCheck resources.",
- "items": {
- "$ref": "HttpsHealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#httpsHealthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "globalAddresses": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified address resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalAddresses.delete",
+ "parameterOrder": [
+ "project",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{address}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified address resource. Get a list of available addresses by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalAddresses.get",
+ "parameterOrder": [
+ "project",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{address}",
+ "response": {
+ "$ref": "Address"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an address resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.globalAddresses.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses",
+ "request": {
+ "$ref": "Address"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of global addresses.",
+ "httpMethod": "GET",
+ "id": "compute.globalAddresses.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses",
+ "response": {
+ "$ref": "AddressList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a GlobalAddress. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.globalAddresses.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.globalAddresses.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "Image": {
- "id": "Image",
- "type": "object",
- "description": "An Image resource. (== resource_for beta.images ==) (== resource_for v1.images ==)",
- "properties": {
- "archiveSizeBytes": {
- "type": "string",
- "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
- "format": "int64"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "The deprecation status associated with this image."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "Size of the image when restored onto a persistent disk (in GB).",
- "format": "int64"
- },
- "family": {
- "type": "string",
- "description": "The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
- },
- "guestOsFeatures": {
- "type": "array",
- "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
- "items": {
- "$ref": "GuestOsFeature"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "imageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the image using a customer-supplied encryption key.\n\nAfter you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#image for images.",
- "default": "compute#image"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an image.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
- "additionalProperties": {
- "type": "string"
- }
},
- "licenseCodes": {
- "type": "array",
- "description": "Integer license codes indicating which licenses are attached to this image.",
- "items": {
- "type": "string",
- "format": "int64"
- }
- },
- "licenses": {
- "type": "array",
- "description": "Any applicable license URI.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- },
- "rawDisk": {
- "type": "object",
- "description": "The parameters of the raw disk image.",
- "properties": {
- "containerType": {
- "type": "string",
- "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
- "enum": [
- "TAR"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "sha1Checksum": {
- "type": "string",
- "description": "An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.",
- "pattern": "[a-f0-9]{40}"
- },
- "source": {
- "type": "string",
- "description": "The full Google Cloud Storage URL where the disk image is stored. You must provide either this property or the sourceDisk property but not both.",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- }
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sourceDisk": {
- "type": "string",
- "description": "URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk"
- },
- "sourceDiskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
- },
- "sourceDiskId": {
- "type": "string",
- "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name."
- },
- "sourceImage": {
- "type": "string",
- "description": "URL of the source image used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image."
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
- },
- "sourceImageId": {
- "type": "string",
- "description": "[Output Only] The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name."
- },
- "sourceType": {
- "type": "string",
- "description": "The type of the image used to create this disk. The default and only value is RAW",
- "default": "RAW",
- "enum": [
- "RAW"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
- "enum": [
- "FAILED",
- "PENDING",
- "READY"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "ImageList": {
- "id": "ImageList",
- "type": "object",
- "description": "Contains a list of images.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Image resources.",
- "items": {
- "$ref": "Image"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#imageList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "globalForwardingRules": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified GlobalForwardingRule resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalForwardingRules.delete",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified GlobalForwardingRule resource. Get a list of available forwarding rules by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalForwardingRules.get",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "ForwardingRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of GlobalForwardingRule resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.globalForwardingRules.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTarget": {
+ "description": "Changes target URL for the GlobalForwardingRule resource. The new target should be of the same type as the old target.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.setTarget",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource in which target is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}/setTarget",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "Instance": {
- "id": "Instance",
- "type": "object",
- "description": "An Instance resource. (== resource_for beta.instances ==) (== resource_for v1.instances ==)",
- "properties": {
- "canIpForward": {
- "type": "boolean",
- "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding."
- },
- "cpuPlatform": {
- "type": "string",
- "description": "[Output Only] The CPU platform used by this instance."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deletionProtection": {
- "type": "boolean",
- "description": "Whether the resource should be protected against deletion."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
},
- "disks": {
- "type": "array",
- "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
- "items": {
- "$ref": "AttachedDisk"
- }
- },
- "guestAccelerators": {
- "type": "array",
- "description": "List of the type and count of accelerator cards attached to the instance.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#instance for instances.",
- "default": "compute#instance"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "machineType": {
- "type": "string",
- "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type:\n\nzones/us-central1-f/machineTypes/n1-standard-1 \n\nTo create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):\n\nzones/zone/machineTypes/custom-CPUS-MEMORY \n\nFor example: zones/us-central1-f/machineTypes/custom-4-5120 \n\nFor a full list of restrictions, read the Specifications for custom machine types.",
- "annotations": {
- "required": [
- "compute.instances.insert"
- ]
- }
- },
- "metadata": {
- "$ref": "Metadata",
- "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
- },
- "minCpuPlatform": {
- "type": "string",
- "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instances.insert"
- ]
- }
- },
- "networkInterfaces": {
- "type": "array",
- "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
- "items": {
- "$ref": "NetworkInterface"
- }
- },
- "scheduling": {
- "$ref": "Scheduling",
- "description": "Sets the scheduling options for this instance."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "serviceAccounts": {
- "type": "array",
- "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.\n\nService accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
- "items": {
- "$ref": "ServiceAccount"
- }
- },
- "startRestricted": {
- "type": "boolean",
- "description": "[Output Only] Whether a VM has been restricted for start because Compute Engine has detected suspicious activity."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING, SUSPENDED, and TERMINATED.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable explanation of the status."
- },
- "tags": {
- "$ref": "Tags",
- "description": "A list of tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the instance resides."
- }
- }
- },
- "InstanceAggregatedList": {
- "id": "InstanceAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstancesScopedList resources.",
- "additionalProperties": {
- "$ref": "InstancesScopedList",
- "description": "[Output Only] Name of the scope containing this set of instances."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceAggregatedList for aggregated lists of Instance resources.",
- "default": "compute#instanceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroup": {
- "id": "InstanceGroup",
- "type": "object",
- "description": "InstanceGroups (== resource_for beta.instanceGroups ==) (== resource_for v1.instanceGroups ==) (== resource_for beta.regionInstanceGroups ==) (== resource_for v1.regionInstanceGroups ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this instance group in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "[Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this instance group, generated by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroup for instance groups.",
- "default": "compute#instanceGroup"
- },
- "name": {
- "type": "string",
- "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert"
- ]
- }
- },
- "namedPorts": {
- "type": "array",
- "description": "Assigns a name to a port number. For example: {name: \"http\", port: 80}\n\nThis allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] \n\nNamed ports apply to all instances in this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "network": {
- "type": "string",
- "description": "The URL of the network to which all instances in the instance group belong."
- },
- "region": {
- "type": "string",
- "description": "The URL of the region where the instance group is located (for regional resources)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this instance group. The server generates this URL."
- },
- "size": {
- "type": "integer",
- "description": "[Output Only] The total number of instances in the instance group.",
- "format": "int32"
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the subnetwork to which all instances in the instance group belong."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the instance group is located (for zonal resources)."
- }
- }
- },
- "InstanceGroupAggregatedList": {
- "id": "InstanceGroupAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstanceGroupsScopedList resources.",
- "additionalProperties": {
- "$ref": "InstanceGroupsScopedList",
- "description": "The name of the scope that contains this set of instance groups."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupAggregatedList for aggregated lists of instance groups.",
- "default": "compute#instanceGroupAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "globalOperations": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of all operations.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/operations",
+ "response": {
+ "$ref": "OperationAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalOperations.delete",
+ "parameterOrder": [
+ "project",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified Operations resource. Get a list of operations by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.get",
+ "parameterOrder": [
+ "project",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupList": {
- "id": "InstanceGroupList",
- "type": "object",
- "description": "A list of InstanceGroup resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroup resources.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupList for instance group lists.",
- "default": "compute#instanceGroupList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "healthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.healthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HealthCheck resource. Get a list of available health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.healthChecks.get",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "response": {
+ "$ref": "HealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.healthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.healthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks",
+ "response": {
+ "$ref": "HealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.healthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.healthChecks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.healthChecks.update",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManager": {
- "id": "InstanceGroupManager",
- "type": "object",
- "description": "An Instance Group Manager resource. (== resource_for beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers ==) (== resource_for beta.regionInstanceGroupManagers ==) (== resource_for v1.regionInstanceGroupManagers ==)",
- "properties": {
- "autoHealingPolicies": {
- "type": "array",
- "description": "The autohealing policy for this managed instance group. You can specify only one value.",
- "items": {
- "$ref": "InstanceGroupManagerAutoHealingPolicy"
- }
- },
- "baseInstanceName": {
- "type": "string",
- "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
- "pattern": "[a-z][-a-z0-9]{0,57}",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert"
- ]
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this managed instance group in RFC3339 text format."
- },
- "currentActions": {
- "$ref": "InstanceGroupManagerActionsSummary",
- "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "distributionPolicy": {
- "$ref": "DistributionPolicy",
- "description": "Policy valid only for regional managed instance groups."
- },
- "failoverAction": {
- "type": "string",
- "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
- "enum": [
- "NO_FAILOVER",
- "UNKNOWN"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "fingerprint": {
- "type": "string",
- "description": "[Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this resource type. The server generates this identifier.",
- "format": "uint64"
- },
- "instanceGroup": {
- "type": "string",
- "description": "[Output Only] The URL of the Instance Group resource."
- },
- "instanceTemplate": {
- "type": "string",
- "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.",
- "default": "compute#instanceGroupManager"
- },
- "name": {
- "type": "string",
- "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.insert"
- ]
- }
- },
- "namedPorts": {
- "type": "array",
- "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "pendingActions": {
- "$ref": "InstanceGroupManagerPendingActionsSummary",
- "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] The URL of the region where the managed instance group resides (for regional resources)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this managed instance group. The server defines this URL."
- },
- "serviceAccount": {
- "type": "string",
- "description": "[Output Only] The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used."
},
- "targetPools": {
- "type": "array",
- "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
- "items": {
- "type": "string"
- }
- },
- "targetSize": {
- "type": "integer",
- "description": "The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.",
- "format": "int32",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.insert"
- ]
- }
- },
- "updatePolicy": {
- "$ref": "InstanceGroupManagerUpdatePolicy",
- "description": "The update policy for this managed instance group."
- },
- "versions": {
- "type": "array",
- "description": "Specifies the instance templates used by this managed instance group to create instances.\n\nEach version is defined by an instanceTemplate. Every template can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
- "items": {
- "$ref": "InstanceGroupManagerVersion"
- }
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the managed instance group is located (for zonal resources)."
- }
- }
- },
- "InstanceGroupManagerActionsSummary": {
- "id": "InstanceGroupManagerActionsSummary",
- "type": "object",
- "properties": {
- "abandoning": {
- "type": "integer",
- "description": "[Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.",
- "format": "int32"
- },
- "creating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.\n\nIf you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.",
- "format": "int32"
- },
- "creatingWithoutRetries": {
- "type": "integer",
- "description": "[Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.",
- "format": "int32"
- },
- "deleting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.",
- "format": "int32"
- },
- "none": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.",
- "format": "int32"
- },
- "recreating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.",
- "format": "int32"
- },
- "refreshing": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.",
- "format": "int32"
- },
- "restarting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.",
- "format": "int32"
- },
- "verifying": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are being verified. More details regarding verification process are covered in the documentation of ManagedInstance.InstanceAction.VERIFYING enum field.",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagerAggregatedList": {
- "id": "InstanceGroupManagerAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstanceGroupManagersScopedList resources.",
- "additionalProperties": {
- "$ref": "InstanceGroupManagersScopedList",
- "description": "[Output Only] The name of the scope that contains this set of managed instance groups."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerAggregatedList for an aggregated list of managed instance groups.",
- "default": "compute#instanceGroupManagerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "httpHealthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HttpHealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.httpHealthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HttpHealthCheck resource. Get a list of available HTTP health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.httpHealthChecks.get",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "response": {
+ "$ref": "HttpHealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.httpHealthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HttpHealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.httpHealthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks",
+ "response": {
+ "$ref": "HttpHealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.httpHealthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.httpHealthChecks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.httpHealthChecks.update",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManagerAutoHealingPolicy": {
- "id": "InstanceGroupManagerAutoHealingPolicy",
- "type": "object",
- "properties": {
- "healthCheck": {
- "type": "string",
- "description": "The URL for the health check that signals autohealing."
- },
- "initialDelaySec": {
- "type": "integer",
- "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagerList": {
- "id": "InstanceGroupManagerList",
- "type": "object",
- "description": "[Output Only] A list of managed instance groups.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroupManager resources.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups.",
- "default": "compute#instanceGroupManagerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "httpsHealthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HttpsHealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.httpsHealthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HttpsHealthCheck resource. Get a list of available HTTPS health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.httpsHealthChecks.get",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "response": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.httpsHealthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HttpsHealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.httpsHealthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks",
+ "response": {
+ "$ref": "HttpsHealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.httpsHealthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.httpsHealthChecks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.httpsHealthChecks.update",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManagerPendingActionsSummary": {
- "id": "InstanceGroupManagerPendingActionsSummary",
- "type": "object",
- "properties": {
- "creating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be created.",
- "format": "int32"
- },
- "deleting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be deleted.",
- "format": "int32"
- },
- "recreating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be recreated.",
- "format": "int32"
- },
- "restarting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are pending to be restarted.",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagerUpdatePolicy": {
- "id": "InstanceGroupManagerUpdatePolicy",
- "type": "object",
- "properties": {
- "maxSurge": {
- "$ref": "FixedOrPercent",
- "description": "The maximum number of instances that can be created above the specified targetSize during the update process. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
- },
- "maxUnavailable": {
- "$ref": "FixedOrPercent",
- "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied:\n\n \n- The instance's status is RUNNING. \n- If there is a health check on the instance group, the instance's liveness health check result must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
- },
- "minReadySec": {
- "type": "integer",
- "description": "Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].",
- "format": "int32"
- },
- "minimalAction": {
- "type": "string",
- "description": "Minimal action to be taken on an instance. You can specify either RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a code\u003eRESTART, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.",
- "enum": [
- "REPLACE",
- "RESTART"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "type": {
- "type": "string",
- "enum": [
- "OPPORTUNISTIC",
- "PROACTIVE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupManagerVersion": {
- "id": "InstanceGroupManagerVersion",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string"
- },
- "name": {
- "type": "string",
- "description": "Name of the version. Unique among all versions in the scope of this managed instance group."
- },
- "targetSize": {
- "$ref": "FixedOrPercent",
- "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: \n- If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. \n- if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded up. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
- }
- }
- },
- "InstanceGroupManagersAbandonInstancesRequest": {
- "id": "InstanceGroupManagersAbandonInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersDeleteInstancesRequest": {
- "id": "InstanceGroupManagersDeleteInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersListManagedInstancesResponse": {
- "id": "InstanceGroupManagersListManagedInstancesResponse",
- "type": "object",
- "properties": {
- "managedInstances": {
- "type": "array",
- "description": "[Output Only] The list of instances in the managed instance group.",
- "items": {
- "$ref": "ManagedInstance"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- }
- }
- },
- "InstanceGroupManagersRecreateInstancesRequest": {
- "id": "InstanceGroupManagersRecreateInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersResizeAdvancedRequest": {
- "id": "InstanceGroupManagersResizeAdvancedRequest",
- "type": "object",
- "properties": {
- "noCreationRetries": {
- "type": "boolean",
- "description": "If this flag is true, the managed instance group attempts to create all instances initiated by this resize request only once. If there is an error during creation, the managed instance group does not retry create this instance, and we will decrease the targetSize of the request instead. If the flag is false, the group attemps to recreate each instance continuously until it succeeds.\n\nThis flag matters only in the first attempt of creation of an instance. After an instance is successfully created while this flag is enabled, the instance behaves the same way as all the other instances created with a regular resize request. In particular, if a running instance dies unexpectedly at a later time and needs to be recreated, this mode does not affect the recreation behavior in that scenario.\n\nThis flag is applicable only to the current resize request. It does not influence other resize requests in any way.\n\nYou can see which instances is being creating in which mode by calling the get or listManagedInstances API."
- },
- "targetSize": {
- "type": "integer",
- "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagersScopedList": {
- "id": "InstanceGroupManagersScopedList",
- "type": "object",
- "properties": {
- "instanceGroupManagers": {
- "type": "array",
- "description": "[Output Only] The list of managed instance groups that are contained in the specified project and zone.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] The warning that replaces the list of managed instance groups when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "images": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified image.",
+ "httpMethod": "DELETE",
+ "id": "compute.images.delete",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Name of the image resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deprecate": {
+ "description": "Sets the deprecation status of an image.\n\nIf an empty request body is given, clears the deprecation status instead.",
+ "httpMethod": "POST",
+ "id": "compute.images.deprecate",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Image name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}/deprecate",
+ "request": {
+ "$ref": "DeprecationStatus"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified image. Get a list of available images by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.images.get",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Name of the image resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}",
+ "response": {
+ "$ref": "Image"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getFromFamily": {
+ "description": "Returns the latest image that is part of an image family and is not deprecated.",
+ "httpMethod": "GET",
+ "id": "compute.images.getFromFamily",
+ "parameterOrder": [
+ "project",
+ "family"
+ ],
+ "parameters": {
+ "family": {
+ "description": "Name of the image family to search for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/family/{family}",
+ "response": {
+ "$ref": "Image"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an image in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.images.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "forceCreate": {
+ "description": "Force image creation if true.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images",
+ "request": {
+ "$ref": "Image"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of custom images available to the specified project. Custom images are images you create that belong to your project. This method does not get any images that belong to other projects, including publicly-available images, like Debian 8. If you want to get a list of publicly-available images, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
+ "httpMethod": "GET",
+ "id": "compute.images.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images",
+ "response": {
+ "$ref": "ImageList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an image. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.images.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.images.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManagersSetAutoHealingRequest": {
- "id": "InstanceGroupManagersSetAutoHealingRequest",
- "type": "object",
- "properties": {
- "autoHealingPolicies": {
- "type": "array",
- "items": {
- "$ref": "InstanceGroupManagerAutoHealingPolicy"
- }
- }
- }
- },
- "InstanceGroupManagersSetInstanceTemplateRequest": {
- "id": "InstanceGroupManagersSetInstanceTemplateRequest",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group."
- }
- }
- },
- "InstanceGroupManagersSetTargetPoolsRequest": {
- "id": "InstanceGroupManagersSetTargetPoolsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the target pools information. Use this optional property to prevent conflicts when multiple users change the target pools settings concurrently. Obtain the fingerprint with the instanceGroupManagers.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
},
- "targetPools": {
- "type": "array",
- "description": "The list of target pool URLs that instances in this managed instance group belong to. The managed instance group applies these target pools to all of the instances in the group. Existing instances and new instances in the group all receive these target pool settings.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupsAddInstancesRequest": {
- "id": "InstanceGroupsAddInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances to add to the instance group.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "InstanceGroupsListInstances": {
- "id": "InstanceGroupsListInstances",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceWithNamedPorts resources.",
- "items": {
- "$ref": "InstanceWithNamedPorts"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupsListInstances for the list of instances in the specified instance group.",
- "default": "compute#instanceGroupsListInstances"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "instanceGroupManagers": {
+ "methods": {
+ "abandonInstances": {
+ "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.abandonInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersAbandonInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of managed instance groups and groups them by zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instanceGroupManagers",
+ "response": {
+ "$ref": "InstanceGroupManagerAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read Deleting an instance group for more information.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceGroupManagers.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteInstances": {
+ "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.deleteInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersDeleteInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns all of the details about the specified managed instance group. Get a list of available managed instance groups by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "InstanceGroupManager"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of managed instance groups that are contained within the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers",
+ "response": {
+ "$ref": "InstanceGroupManagerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listManagedInstances": {
+ "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.listManagedInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
+ "response": {
+ "$ref": "InstanceGroupManagersListManagedInstancesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listManagedInstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.instanceGroupManagers.patch",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "recreateInstances": {
+ "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.recreateInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersRecreateInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the managed instance group. If you increase the size, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.resize",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager",
+ "size"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "size": {
+ "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
+ "format": "int32",
+ "location": "query",
+ "required": true,
+ "type": "integer"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resizeAdvanced": {
+ "description": "Resizes the managed instance group with advanced configuration options like disabling creation retries. This is an extended version of the resize method.\n\nIf you increase the size of the instance group, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating, creatingWithoutRetries, or deleting actions with the get or listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.resizeAdvanced",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeAdvanced",
+ "request": {
+ "$ref": "InstanceGroupManagersResizeAdvancedRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setAutoHealingPolicies": {
+ "description": "Modifies the autohealing policies.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setAutoHealingPolicies",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
+ "request": {
+ "$ref": "InstanceGroupManagersSetAutoHealingRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setInstanceTemplate": {
+ "description": "Specifies the instance template to use when creating new instances in this group. The templates for existing instances in the group do not change unless you recreate them.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setInstanceTemplate",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
+ "request": {
+ "$ref": "InstanceGroupManagersSetInstanceTemplateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTargetPools": {
+ "description": "Modifies the target pools to which all instances in this managed instance group are assigned. The target pools automatically apply to all of the instances in the managed instance group. This operation is marked DONE when you make the request even if the instances have not yet been added to their target pools. The change might take some time to apply to all of the instances in the group depending on the size of the group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setTargetPools",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
+ "request": {
+ "$ref": "InstanceGroupManagersSetTargetPoolsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listManagedInstances method.",
+ "httpMethod": "PUT",
+ "id": "compute.instanceGroupManagers.update",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupsListInstancesRequest": {
- "id": "InstanceGroupsListInstancesRequest",
- "type": "object",
- "properties": {
- "instanceState": {
- "type": "string",
- "description": "A filter for the state of the instances in the instance group. Valid options are ALL or RUNNING. If you do not specify this parameter the list includes all instances regardless of their state.",
- "enum": [
- "ALL",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupsRemoveInstancesRequest": {
- "id": "InstanceGroupsRemoveInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances to remove from the instance group.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "InstanceGroupsScopedList": {
- "id": "InstanceGroupsScopedList",
- "type": "object",
- "properties": {
+ },
"instanceGroups": {
- "type": "array",
- "description": "[Output Only] The list of instance groups that are contained in this scope.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that replaces the list of instance groups when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupsSetNamedPortsRequest": {
- "id": "InstanceGroupsSetNamedPortsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
- },
- "namedPorts": {
- "type": "array",
- "description": "The list of named ports to set for this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- }
- }
- },
- "InstanceList": {
- "id": "InstanceList",
- "type": "object",
- "description": "Contains a list of instances.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Instance resources.",
- "items": {
- "$ref": "Instance"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceList for lists of Instance resources.",
- "default": "compute#instanceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "addInstances": {
+ "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork. Read Adding instances for more information.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.addInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where you are adding instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
+ "request": {
+ "$ref": "InstanceGroupsAddInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of instance groups and sorts them by zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instanceGroups",
+ "response": {
+ "$ref": "InstanceGroupAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read Deleting an instance group for more information.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceGroups.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified instance group. Get a list of available instance groups by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "InstanceGroup"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups",
+ "request": {
+ "$ref": "InstanceGroup"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instance groups that are located in the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups",
+ "response": {
+ "$ref": "InstanceGroupList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listInstances": {
+ "description": "Lists the instances in the specified instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.listInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "The name of the instance group from which you want to generate a list of included instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances",
+ "request": {
+ "$ref": "InstanceGroupsListInstancesRequest"
+ },
+ "response": {
+ "$ref": "InstanceGroupsListInstances"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "removeInstances": {
+ "description": "Removes one or more instances from the specified instance group, but does not delete those instances.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.removeInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where the specified instances will be removed.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances",
+ "request": {
+ "$ref": "InstanceGroupsRemoveInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setNamedPorts": {
+ "description": "Sets the named ports for the specified instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.setNamedPorts",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where the named ports are updated.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts",
+ "request": {
+ "$ref": "InstanceGroupsSetNamedPortsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceListReferrers": {
- "id": "InstanceListReferrers",
- "type": "object",
- "description": "Contains a list of instance referrers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Reference resources.",
- "items": {
- "$ref": "Reference"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceListReferrers for lists of Instance referrers.",
- "default": "compute#instanceListReferrers"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "instanceTemplates": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceTemplates.delete",
+ "parameterOrder": [
+ "project",
+ "instanceTemplate"
+ ],
+ "parameters": {
+ "instanceTemplate": {
+ "description": "The name of the instance template to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{instanceTemplate}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified instance template. Get a list of available instance templates by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceTemplates.get",
+ "parameterOrder": [
+ "project",
+ "instanceTemplate"
+ ],
+ "parameters": {
+ "instanceTemplate": {
+ "description": "The name of the instance template.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{instanceTemplate}",
+ "response": {
+ "$ref": "InstanceTemplate"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
+ "httpMethod": "POST",
+ "id": "compute.instanceTemplates.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates",
+ "request": {
+ "$ref": "InstanceTemplate"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceTemplates.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates",
+ "response": {
+ "$ref": "InstanceTemplateList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instanceTemplates.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceMoveRequest": {
- "id": "InstanceMoveRequest",
- "type": "object",
- "properties": {
- "destinationZone": {
- "type": "string",
- "description": "The URL of the destination zone to move the instance. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone"
- },
- "targetInstance": {
- "type": "string",
- "description": "The URL of the target instance to move. This can be a full or partial URL. For example, the following are all valid URLs to an instance: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance"
- }
- }
- },
- "InstanceProperties": {
- "id": "InstanceProperties",
- "type": "object",
- "description": "",
- "properties": {
- "canIpForward": {
- "type": "boolean",
- "description": "Enables instances created based on this template to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
- },
- "description": {
- "type": "string",
- "description": "An optional text description for the instances that are created from this instance template."
},
- "disks": {
- "type": "array",
- "description": "An array of disks that are associated with the instances that are created from this template.",
- "items": {
- "$ref": "AttachedDisk"
- }
- },
- "guestAccelerators": {
- "type": "array",
- "description": "A list of guest accelerator cards' type and count to use for instances created from the instance template.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to instances that are created from this template.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "machineType": {
- "type": "string",
- "description": "The machine type to use for instances that are created from this template.",
- "annotations": {
- "required": [
- "compute.instanceTemplates.insert"
- ]
- }
- },
- "metadata": {
- "$ref": "Metadata",
- "description": "The metadata key/value pairs to assign to instances that are created from this template. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
- },
- "minCpuPlatform": {
- "type": "string",
- "description": "Minimum cpu/platform to be used by this instance. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
- },
- "networkInterfaces": {
- "type": "array",
- "description": "An array of network access configurations for this interface.",
- "items": {
- "$ref": "NetworkInterface"
- }
- },
- "scheduling": {
- "$ref": "Scheduling",
- "description": "Specifies the scheduling options for the instances that are created from this template."
- },
- "serviceAccounts": {
- "type": "array",
- "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this template. Use metadata queries to obtain the access tokens for these instances.",
- "items": {
- "$ref": "ServiceAccount"
- }
- },
- "tags": {
- "$ref": "Tags",
- "description": "A list of tags to apply to the instances that are created from this template. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
- }
- }
- },
- "InstanceReference": {
- "id": "InstanceReference",
- "type": "object",
- "properties": {
- "instance": {
- "type": "string",
- "description": "The URL for a specific instance."
- }
- }
- },
- "InstanceTemplate": {
- "id": "InstanceTemplate",
- "type": "object",
- "description": "An Instance Template resource. (== resource_for beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this instance template in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this instance template. The server defines this identifier.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceTemplate for instance templates.",
- "default": "compute#instanceTemplate"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceTemplates.insert"
- ]
- }
- },
- "properties": {
- "$ref": "InstanceProperties",
- "description": "The instance properties for this instance template."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this instance template. The server defines this URL."
- },
- "sourceInstance": {
- "type": "string",
- "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance"
- },
- "sourceInstanceParams": {
- "$ref": "SourceInstanceParams",
- "description": "The source instance params to use to create this instance template."
- }
- }
- },
- "InstanceTemplateList": {
- "id": "InstanceTemplateList",
- "type": "object",
- "description": "A list of instance templates.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceTemplate resources.",
- "items": {
- "$ref": "InstanceTemplate"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceTemplatesListResponse for instance template lists.",
- "default": "compute#instanceTemplateList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceWithNamedPorts": {
- "id": "InstanceWithNamedPorts",
- "type": "object",
- "properties": {
- "instance": {
- "type": "string",
- "description": "[Output Only] The URL of the instance."
- },
- "namedPorts": {
- "type": "array",
- "description": "[Output Only] The named ports that belong to this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the instance.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "InstancesScopedList": {
- "id": "InstancesScopedList",
- "type": "object",
- "properties": {
"instances": {
- "type": "array",
- "description": "[Output Only] List of instances contained in this scope.",
- "items": {
- "$ref": "Instance"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of instances when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "addAccessConfig": {
+ "description": "Adds an access config to an instance's network interface.",
+ "httpMethod": "POST",
+ "id": "compute.instances.addAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface to add to this instance.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/addAccessConfig",
+ "request": {
+ "$ref": "AccessConfig"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves aggregated list of instances.",
+ "httpMethod": "GET",
+ "id": "compute.instances.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instances",
+ "response": {
+ "$ref": "InstanceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "attachDisk": {
+ "description": "Attaches an existing Disk resource to an instance. You must first create the disk before you can attach it. It is not possible to create and attach a disk at the same time. For more information, read Adding a persistent disk to your instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.attachDisk",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "forceAttach": {
+ "description": "Whether to force attach the disk even if it's currently attached to another instance. This is only available for regional disks.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/attachDisk",
+ "request": {
+ "$ref": "AttachedDisk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Instance resource. For more information, see Stopping or Deleting an Instance.",
+ "httpMethod": "DELETE",
+ "id": "compute.instances.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteAccessConfig": {
+ "description": "Deletes an access config from an instance's network interface.",
+ "httpMethod": "POST",
+ "id": "compute.instances.deleteAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "accessConfig",
+ "networkInterface"
+ ],
+ "parameters": {
+ "accessConfig": {
+ "description": "The name of the access config to delete.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/deleteAccessConfig",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "detachDisk": {
+ "description": "Detaches a disk from an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.detachDisk",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "deviceName"
+ ],
+ "parameters": {
+ "deviceName": {
+ "description": "Disk device name to detach.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "Instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/detachDisk",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Instance resource. Get a list of available instances by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instances.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}",
+ "response": {
+ "$ref": "Instance"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getSerialPortOutput": {
+ "description": "Returns the specified instance's serial port output.",
+ "httpMethod": "GET",
+ "id": "compute.instances.getSerialPortOutput",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "port": {
+ "default": "1",
+ "description": "Specifies which COM or serial port to retrieve data from.",
+ "format": "int32",
+ "location": "query",
+ "maximum": "4",
+ "minimum": "1",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "start": {
+ "description": "Returns output starting from a specific byte position. Use this to page through output when the output is too large to return in a single request. For the initial request, leave this field unspecified. For subsequent calls, this field should be set to the next value returned in the previous call.",
+ "format": "int64",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/serialPort",
+ "response": {
+ "$ref": "SerialPortOutput"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sourceInstanceTemplate": {
+ "description": "Specifies instance template to create the instance.\n\nThis field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: \n- https://www.googleapis.com/compute/v1/projects/project/global/global/instanceTemplates/instanceTemplate \n- projects/project/global/global/instanceTemplates/instanceTemplate \n- global/instancesTemplates/instanceTemplate",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances",
+ "request": {
+ "$ref": "Instance"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instances contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.instances.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances",
+ "response": {
+ "$ref": "InstanceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listReferrers": {
+ "description": "Retrieves the list of referrers to instances contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.instances.listReferrers",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instance": {
+ "description": "Name of the target instance scoping this request, or '-' if the request should span over all instances in the container.",
+ "location": "path",
+ "pattern": "-|[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/referrers",
+ "response": {
+ "$ref": "InstanceListReferrers"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "reset": {
+ "description": "Performs a reset on the instance. For more information, see Resetting an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.reset",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/reset",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDeletionProtection": {
+ "description": "Sets deletion protection on the instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setDeletionProtection",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "deletionProtection": {
+ "default": "true",
+ "description": "Whether the resource should be protected against deletion.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDiskAutoDelete": {
+ "description": "Sets the auto-delete flag for a disk attached to an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setDiskAutoDelete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "autoDelete",
+ "deviceName"
+ ],
+ "parameters": {
+ "autoDelete": {
+ "description": "Whether to auto-delete the disk when the instance is deleted.",
+ "location": "query",
+ "required": true,
+ "type": "boolean"
+ },
+ "deviceName": {
+ "description": "The device name of the disk to modify.",
+ "location": "query",
+ "pattern": "\\w[\\w.-]{0,254}",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "The instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets labels on an instance. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setLabels",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setLabels",
+ "request": {
+ "$ref": "InstancesSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMachineResources": {
+ "description": "Changes the number and/or type of accelerator for a stopped instance to the values specified in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMachineResources",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMachineResources",
+ "request": {
+ "$ref": "InstancesSetMachineResourcesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMachineType": {
+ "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMachineType",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
+ "request": {
+ "$ref": "InstancesSetMachineTypeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMetadata": {
+ "description": "Sets metadata for the specified instance to the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMetadata",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMetadata",
+ "request": {
+ "$ref": "Metadata"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMinCpuPlatform": {
+ "description": "Changes the minimum CPU platform that this instance should use. This method can only be called on a stopped instance. For more information, read Specifying a Minimum CPU Platform.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMinCpuPlatform",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform",
+ "request": {
+ "$ref": "InstancesSetMinCpuPlatformRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setScheduling": {
+ "description": "Sets an instance's scheduling options.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setScheduling",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setScheduling",
+ "request": {
+ "$ref": "Scheduling"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setServiceAccount": {
+ "description": "Sets the service account on the instance. For more information, read Changing the service account and access scopes for an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setServiceAccount",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setServiceAccount",
+ "request": {
+ "$ref": "InstancesSetServiceAccountRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTags": {
+ "description": "Sets tags for the specified instance to the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setTags",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setTags",
+ "request": {
+ "$ref": "Tags"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "start": {
+ "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.start",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/start",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "startWithEncryptionKey": {
+ "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.startWithEncryptionKey",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey",
+ "request": {
+ "$ref": "InstancesStartWithEncryptionKeyRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "stop": {
+ "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur VM usage charges while they are stopped. However, resources that the VM is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.stop",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to stop.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/stop",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.instances.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "updateAccessConfig": {
+ "description": "Updates the specified access config from an instance's network interface with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "POST",
+ "id": "compute.instances.updateAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface where the access config is attached.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/updateAccessConfig",
+ "request": {
+ "$ref": "AccessConfig"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "updateNetworkInterface": {
+ "description": "Updates an instance's network interface. This method follows PATCH semantics.",
+ "httpMethod": "PATCH",
+ "id": "compute.instances.updateNetworkInterface",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface to update.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/updateNetworkInterface",
+ "request": {
+ "$ref": "NetworkInterface"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstancesSetLabelsRequest": {
- "id": "InstancesSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "Fingerprint of the previous set of labels for this resource, used to prevent conflicts. Provide the latest fingerprint value when making a request to add or change labels.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "InstancesSetMachineResourcesRequest": {
- "id": "InstancesSetMachineResourcesRequest",
- "type": "object",
- "properties": {
- "guestAccelerators": {
- "type": "array",
- "description": "List of the type and count of accelerator cards attached to the instance.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- }
- }
- },
- "InstancesSetMachineTypeRequest": {
- "id": "InstancesSetMachineTypeRequest",
- "type": "object",
- "properties": {
- "machineType": {
- "type": "string",
- "description": "Full or partial URL of the machine type resource. See Machine Types for a full list of machine types. For example: zones/us-central1-f/machineTypes/n1-standard-1"
- }
- }
- },
- "InstancesSetMinCpuPlatformRequest": {
- "id": "InstancesSetMinCpuPlatformRequest",
- "type": "object",
- "properties": {
- "minCpuPlatform": {
- "type": "string",
- "description": "Minimum cpu/platform this instance should be started at."
- }
- }
- },
- "InstancesSetServiceAccountRequest": {
- "id": "InstancesSetServiceAccountRequest",
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "description": "Email address of the service account."
- },
- "scopes": {
- "type": "array",
- "description": "The list of scopes to be made available for this service account.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstancesStartWithEncryptionKeyRequest": {
- "id": "InstancesStartWithEncryptionKeyRequest",
- "type": "object",
- "properties": {
- "disks": {
- "type": "array",
- "description": "Array of disks associated with this instance that are protected with a customer-supplied encryption key.\n\nIn order to start the instance, the disk url and its corresponding key must be provided.\n\nIf the disk is not protected with a customer-supplied encryption key it should not be specified.",
- "items": {
- "$ref": "CustomerEncryptionKeyProtectedDisk"
- }
- }
- }
- },
- "Interconnect": {
- "id": "Interconnect",
- "type": "object",
- "description": "Represents an Interconnects resource. The Interconnects resource is a dedicated connection between Google's network and your on-premises network. For more information, see the Dedicated overview page. (== resource_for v1.interconnects ==) (== resource_for beta.interconnects ==)",
- "properties": {
- "adminEnabled": {
- "type": "boolean",
- "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
- },
- "circuitInfos": {
- "type": "array",
- "description": "[Output Only] List of CircuitInfo objects, that describe the individual circuits in this LAG.",
- "items": {
- "$ref": "InterconnectCircuitInfo"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customerName": {
- "type": "string",
- "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "expectedOutages": {
- "type": "array",
- "description": "[Output Only] List of outages expected for this Interconnect.",
- "items": {
- "$ref": "InterconnectOutageNotification"
- }
- },
- "googleIpAddress": {
- "type": "string",
- "description": "[Output Only] IP address configured on the Google side of the Interconnect link. This can be used only for ping tests."
- },
- "googleReferenceId": {
- "type": "string",
- "description": "[Output Only] Google reference ID; to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
},
"interconnectAttachments": {
- "type": "array",
- "description": "[Output Only] A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
- "items": {
- "type": "string"
- }
- },
- "interconnectType": {
- "type": "string",
- "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
- "enum": [
- "DEDICATED",
- "IT_PRIVATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnect for interconnects.",
- "default": "compute#interconnect"
- },
- "linkType": {
- "type": "string",
- "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
- "enum": [
- "LINK_TYPE_ETHERNET_10G_LR"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "location": {
- "type": "string",
- "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.interconnects.insert"
- ]
- }
- },
- "nocContactEmail": {
- "type": "string",
- "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Stackdriver logs alerting and Cloud Notifications."
- },
- "operationalStatus": {
- "type": "string",
- "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
- "enum": [
- "OS_ACTIVE",
- "OS_UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "peerIpAddress": {
- "type": "string",
- "description": "[Output Only] IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests."
- },
- "provisionedLinkCount": {
- "type": "integer",
- "description": "[Output Only] Number of links actually provisioned in this interconnect.",
- "format": "int32"
- },
- "requestedLinkCount": {
- "type": "integer",
- "description": "Target number of physical links in the link bundle, as requested by the customer.",
- "format": "int32"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "InterconnectAttachment": {
- "id": "InterconnectAttachment",
- "type": "object",
- "description": "Represents an InterconnectAttachment (VLAN attachment) resource. For more information, see Creating VLAN Attachments. (== resource_for beta.interconnectAttachments ==) (== resource_for v1.interconnectAttachments ==)",
- "properties": {
- "cloudRouterIpAddress": {
- "type": "string",
- "description": "[Output Only] IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customerRouterIpAddress": {
- "type": "string",
- "description": "[Output Only] IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource."
- },
- "googleReferenceId": {
- "type": "string",
- "description": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "interconnect": {
- "type": "string",
- "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
- "default": "compute#interconnectAttachment"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "operationalStatus": {
- "type": "string",
- "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
- "enum": [
- "OS_ACTIVE",
- "OS_UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "privateInterconnectInfo": {
- "$ref": "InterconnectAttachmentPrivateInfo",
- "description": "[Output Only] Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional interconnect attachment resides."
- },
- "router": {
- "type": "string",
- "description": "URL of the cloud router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "InterconnectAttachmentAggregatedList": {
- "id": "InterconnectAttachmentAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InterconnectAttachmentsScopedList resources.",
- "additionalProperties": {
- "$ref": "InterconnectAttachmentsScopedList",
- "description": "Name of the scope containing this set of interconnect attachments."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentAggregatedList for aggregated lists of interconnect attachments.",
- "default": "compute#interconnectAttachmentAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectAttachmentList": {
- "id": "InterconnectAttachmentList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnect attachments.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InterconnectAttachment resources.",
- "items": {
- "$ref": "InterconnectAttachment"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentList for lists of interconnect attachments.",
- "default": "compute#interconnectAttachmentList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectAttachmentPrivateInfo": {
- "id": "InterconnectAttachmentPrivateInfo",
- "type": "object",
- "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
- "properties": {
- "tag8021q": {
- "type": "integer",
- "description": "[Output Only] 802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region.",
- "format": "uint32"
- }
- }
- },
- "InterconnectAttachmentsScopedList": {
- "id": "InterconnectAttachmentsScopedList",
- "type": "object",
- "properties": {
- "interconnectAttachments": {
- "type": "array",
- "description": "List of interconnect attachments contained in this scope.",
- "items": {
- "$ref": "InterconnectAttachment"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectCircuitInfo": {
- "id": "InterconnectCircuitInfo",
- "type": "object",
- "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only. Next id: 4",
- "properties": {
- "customerDemarcId": {
- "type": "string",
- "description": "Customer-side demarc ID for this circuit."
- },
- "googleCircuitId": {
- "type": "string",
- "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up."
- },
- "googleDemarcId": {
- "type": "string",
- "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA."
- }
- }
- },
- "InterconnectList": {
- "id": "InterconnectList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnects.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Interconnect resources.",
- "items": {
- "$ref": "Interconnect"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectList for lists of interconnects.",
- "default": "compute#interconnectList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of interconnect attachments.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/interconnectAttachments",
+ "response": {
+ "$ref": "InterconnectAttachmentAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified interconnect attachment.",
+ "httpMethod": "DELETE",
+ "id": "compute.interconnectAttachments.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified interconnect attachment.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "response": {
+ "$ref": "InterconnectAttachment"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments",
+ "request": {
+ "$ref": "InterconnectAttachment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect attachments contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments",
+ "response": {
+ "$ref": "InterconnectAttachmentList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified interconnect attachment with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.interconnectAttachments.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "request": {
+ "$ref": "InterconnectAttachment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an InterconnectAttachment. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InterconnectLocation": {
- "id": "InterconnectLocation",
- "type": "object",
- "description": "Represents an InterconnectLocations resource. The InterconnectLocations resource describes the locations where you can connect to Google's networks. For more information, see Colocation Facilities.",
- "properties": {
- "address": {
- "type": "string",
- "description": "[Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character."
- },
- "availabilityZone": {
- "type": "string",
- "description": "[Output Only] Availability zone for this location. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: \"zone1\" or \"zone2\"."
- },
- "city": {
- "type": "string",
- "description": "[Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: \"Chicago, IL\", \"Amsterdam, Netherlands\"."
- },
- "continent": {
- "type": "string",
- "description": "[Output Only] Continent for this location.",
- "enum": [
- "AFRICA",
- "ASIA_PAC",
- "C_AFRICA",
- "C_ASIA_PAC",
- "C_EUROPE",
- "C_NORTH_AMERICA",
- "C_SOUTH_AMERICA",
- "EUROPE",
- "NORTH_AMERICA",
- "SOUTH_AMERICA"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional description of the resource."
- },
- "facilityProvider": {
- "type": "string",
- "description": "[Output Only] The name of the provider for this facility (e.g., EQUINIX)."
- },
- "facilityProviderFacilityId": {
- "type": "string",
- "description": "[Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1)."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnectLocation for interconnect locations.",
- "default": "compute#interconnectLocation"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "peeringdbFacilityId": {
- "type": "string",
- "description": "[Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb)."
- },
- "regionInfos": {
- "type": "array",
- "description": "[Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.",
- "items": {
- "$ref": "InterconnectLocationRegionInfo"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "InterconnectLocationList": {
- "id": "InterconnectLocationList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnect locations.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InterconnectLocation resources.",
- "items": {
- "$ref": "InterconnectLocation"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectLocationList for lists of interconnect locations.",
- "default": "compute#interconnectLocationList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "interconnectLocations": {
+ "methods": {
+ "get": {
+ "description": "Returns the details for the specified interconnect location. Get a list of available interconnect locations by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectLocations.get",
+ "parameterOrder": [
+ "project",
+ "interconnectLocation"
+ ],
+ "parameters": {
+ "interconnectLocation": {
+ "description": "Name of the interconnect location to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnectLocations/{interconnectLocation}",
+ "response": {
+ "$ref": "InterconnectLocation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect locations available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectLocations.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnectLocations",
+ "response": {
+ "$ref": "InterconnectLocationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InterconnectLocationRegionInfo": {
- "id": "InterconnectLocationRegionInfo",
- "type": "object",
- "description": "Information about any potential InterconnectAttachments between an Interconnect at a specific InterconnectLocation, and a specific Cloud Region.",
- "properties": {
- "expectedRttMs": {
- "type": "string",
- "description": "Expected round-trip time in milliseconds, from this InterconnectLocation to a VM in this region.",
- "format": "int64"
- },
- "locationPresence": {
- "type": "string",
- "description": "Identifies the network presence of this location.",
- "enum": [
- "GLOBAL",
- "LOCAL_REGION",
- "LP_GLOBAL",
- "LP_LOCAL_REGION"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "URL for the region of this location."
- }
- }
- },
- "InterconnectOutageNotification": {
- "id": "InterconnectOutageNotification",
- "type": "object",
- "description": "Description of a planned outage on this Interconnect. Next id: 9",
- "properties": {
- "affectedCircuits": {
- "type": "array",
- "description": "Iff issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected.",
- "items": {
- "type": "string"
- }
- },
- "description": {
- "type": "string",
- "description": "A description about the purpose of the outage."
- },
- "endTime": {
- "type": "string",
- "description": "Scheduled end time for the outage (milliseconds since Unix epoch).",
- "format": "int64"
- },
- "issueType": {
- "type": "string",
- "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
- "enum": [
- "IT_OUTAGE",
- "IT_PARTIAL_OUTAGE",
- "OUTAGE",
- "PARTIAL_OUTAGE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Unique identifier for this outage notification."
- },
- "source": {
- "type": "string",
- "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
- "enum": [
- "GOOGLE",
- "NSRC_GOOGLE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "startTime": {
- "type": "string",
- "description": "Scheduled start time for the outage (milliseconds since Unix epoch).",
- "format": "int64"
- },
- "state": {
- "type": "string",
- "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
- "enum": [
- "ACTIVE",
- "CANCELLED",
- "NS_ACTIVE",
- "NS_CANCELED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "License": {
- "id": "License",
- "type": "object",
- "description": "A license resource.",
- "properties": {
- "chargesUseFee": {
- "type": "boolean",
- "description": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource; provided by the client when the resource is created."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#license for licenses.",
- "default": "compute#license"
- },
- "licenseCode": {
- "type": "string",
- "description": "[Output Only] The unique code used to attach this license to images, snapshots, and disks.",
- "format": "uint64"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource. The name is 1-63 characters long and complies with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- },
- "resourceRequirements": {
- "$ref": "LicenseResourceRequirements"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "transferable": {
- "type": "boolean",
- "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk."
- }
- }
- },
- "LicenseCode": {
- "id": "LicenseCode",
- "type": "object",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Description of this License Code."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#licenseCode for licenses.",
- "default": "compute#licenseCode"
- },
- "licenseAlias": {
- "type": "array",
- "description": "[Output Only] URL and description aliases of Licenses with the same License Code.",
- "items": {
- "$ref": "LicenseCodeLicenseAlias"
- }
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource. The name is 1-20 characters long and must be a valid 64 bit integer.",
- "pattern": "[0-9]{0,20}?",
- "annotations": {
- "required": [
- "compute.licenses.insert"
- ]
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "state": {
- "type": "string",
- "description": "[Output Only] Current state of this License Code.",
- "enum": [
- "DISABLED",
- "ENABLED",
- "RESTRICTED",
- "STATE_UNSPECIFIED",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "transferable": {
- "type": "boolean",
- "description": "[Output Only] If true, the license will remain attached when creating images or snapshots from disks. Otherwise, the license is not transferred."
- }
- }
- },
- "LicenseCodeLicenseAlias": {
- "id": "LicenseCodeLicenseAlias",
- "type": "object",
- "properties": {
- "description": {
- "type": "string",
- "description": "[Output Only] Description of this License Code."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] URL of license corresponding to this License Code."
- }
- }
- },
- "LicenseResourceRequirements": {
- "id": "LicenseResourceRequirements",
- "type": "object",
- "properties": {
- "minGuestCpuCount": {
- "type": "integer",
- "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start.",
- "format": "int32"
- },
- "minMemoryMb": {
- "type": "integer",
- "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start.",
- "format": "int32"
- }
- }
- },
- "LicensesListResponse": {
- "id": "LicensesListResponse",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of License resources.",
- "items": {
- "$ref": "License"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "interconnects": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified interconnect.",
+ "httpMethod": "DELETE",
+ "id": "compute.interconnects.delete",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified interconnect. Get a list of available interconnects by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.interconnects.get",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "response": {
+ "$ref": "Interconnect"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Interconnect in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects",
+ "request": {
+ "$ref": "Interconnect"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.interconnects.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects",
+ "response": {
+ "$ref": "InterconnectList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified interconnect with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.interconnects.patch",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "request": {
+ "$ref": "Interconnect"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an Interconnect. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "LogConfig": {
- "id": "LogConfig",
- "type": "object",
- "description": "Specifies what kind of log the caller must write",
- "properties": {
- "cloudAudit": {
- "$ref": "LogConfigCloudAuditOptions",
- "description": "Cloud audit options."
- },
- "counter": {
- "$ref": "LogConfigCounterOptions",
- "description": "Counter options."
- },
- "dataAccess": {
- "$ref": "LogConfigDataAccessOptions",
- "description": "Data access options."
- }
- }
- },
- "LogConfigCloudAuditOptions": {
- "id": "LogConfigCloudAuditOptions",
- "type": "object",
- "description": "Write a Cloud Audit log",
- "properties": {
- "authorizationLoggingOptions": {
- "$ref": "AuthorizationLoggingOptions",
- "description": "Information used by the Cloud Audit Logging pipeline."
- },
- "logName": {
- "type": "string",
- "description": "The log_name to populate in the Cloud Audit Record.",
- "enum": [
- "ADMIN_ACTIVITY",
- "DATA_ACCESS",
- "UNSPECIFIED_LOG_NAME"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "LogConfigCounterOptions": {
- "id": "LogConfigCounterOptions",
- "type": "object",
- "description": "Increment a streamz counter with the specified metric and field names.\n\nMetric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended.\n\nField names correspond to IAM request parameters and field values are their respective values.\n\nAt present the only supported field names are - \"iam_principal\", corresponding to IAMContext.principal; - \"\" (empty string), resulting in one aggretated counter with no field.\n\nExamples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==\u003e increment counter /iam/policy/backend_debug_access_count {iam_principal=[value of IAMContext.principal]}\n\nAt this time we do not support: * multiple field names (though this may be supported in the future) * decrementing the counter * incrementing it by anything other than 1",
- "properties": {
- "field": {
- "type": "string",
- "description": "The field value to attribute."
- },
- "metric": {
- "type": "string",
- "description": "The metric to update."
- }
- }
- },
- "LogConfigDataAccessOptions": {
- "id": "LogConfigDataAccessOptions",
- "type": "object",
- "description": "Write a Data Access (Gin) log",
- "properties": {
- "logMode": {
- "type": "string",
- "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.",
- "enum": [
- "LOG_FAIL_CLOSED",
- "LOG_MODE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "MachineType": {
- "id": "MachineType",
- "type": "object",
- "description": "A Machine Type resource. (== resource_for v1.machineTypes ==) (== resource_for beta.machineTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this machine type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "guestCpus": {
- "type": "integer",
- "description": "[Output Only] The number of virtual CPUs that are available to the instance.",
- "format": "int32"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "isSharedCpu": {
- "type": "boolean",
- "description": "[Output Only] Whether this machine type has a shared CPU. See Shared-core machine types for more information."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#machineType for machine types.",
- "default": "compute#machineType"
- },
- "maximumPersistentDisks": {
- "type": "integer",
- "description": "[Output Only] Maximum persistent disks allowed.",
- "format": "int32"
- },
- "maximumPersistentDisksSizeGb": {
- "type": "string",
- "description": "[Output Only] Maximum total persistent disks size (GB) allowed.",
- "format": "int64"
- },
- "memoryMb": {
- "type": "integer",
- "description": "[Output Only] The amount of physical memory available to the instance, defined in MB.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the machine type resides, such as us-central1-a."
- }
- }
- },
- "MachineTypeAggregatedList": {
- "id": "MachineTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of MachineTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "MachineTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of machine types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#machineTypeAggregatedList for aggregated lists of machine types.",
- "default": "compute#machineTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "licenseCodes": {
+ "methods": {
+ "get": {
+ "description": "Return a specified license code. License codes are mirrored across all projects that have permissions to read the License Code.",
+ "httpMethod": "GET",
+ "id": "compute.licenseCodes.get",
+ "parameterOrder": [
+ "project",
+ "licenseCode"
+ ],
+ "parameters": {
+ "licenseCode": {
+ "description": "Number corresponding to the License code resource to return.",
+ "location": "path",
+ "pattern": "[0-9]{0,61}?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenseCodes/{licenseCode}",
+ "response": {
+ "$ref": "LicenseCode"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "MachineTypeList": {
- "id": "MachineTypeList",
- "type": "object",
- "description": "Contains a list of machine types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of MachineType resources.",
- "items": {
- "$ref": "MachineType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#machineTypeList for lists of machine types.",
- "default": "compute#machineTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "licenses": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified license.",
+ "httpMethod": "DELETE",
+ "id": "compute.licenses.delete",
+ "parameterOrder": [
+ "project",
+ "license"
+ ],
+ "parameters": {
+ "license": {
+ "description": "Name of the license resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{license}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified License resource.",
+ "httpMethod": "GET",
+ "id": "compute.licenses.get",
+ "parameterOrder": [
+ "project",
+ "license"
+ ],
+ "parameters": {
+ "license": {
+ "description": "Name of the License resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{license}",
+ "response": {
+ "$ref": "License"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Create a License resource in the specified project.",
+ "httpMethod": "POST",
+ "id": "compute.licenses.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses",
+ "request": {
+ "$ref": "License"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of licenses available in the specified project. This method does not get any licenses that belong to other projects, including licenses attached to publicly-available images, like Debian 8. If you want to get a list of publicly-available licenses, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
+ "httpMethod": "GET",
+ "id": "compute.licenses.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses",
+ "response": {
+ "$ref": "LicensesListResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "MachineTypesScopedList": {
- "id": "MachineTypesScopedList",
- "type": "object",
- "properties": {
+ },
"machineTypes": {
- "type": "array",
- "description": "[Output Only] List of machine types contained in this scope.",
- "items": {
- "$ref": "MachineType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the machine types list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "ManagedInstance": {
- "id": "ManagedInstance",
- "type": "object",
- "properties": {
- "currentAction": {
- "type": "string",
- "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful. \n- CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's targetSize value is decreased instead. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.",
- "enum": [
- "ABANDONING",
- "CREATING",
- "CREATING_WITHOUT_RETRIES",
- "DELETING",
- "NONE",
- "RECREATING",
- "REFRESHING",
- "RESTARTING",
- "VERIFYING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "id": {
- "type": "string",
- "description": "[Output only] The unique identifier for this resource. This field is empty when instance does not exist.",
- "format": "uint64"
- },
- "instance": {
- "type": "string",
- "description": "[Output Only] The URL of the instance. The URL can exist even if the instance has not yet been created."
- },
- "instanceStatus": {
- "type": "string",
- "description": "[Output Only] The status of the instance. This field is empty when the instance does not exist.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "lastAttempt": {
- "$ref": "ManagedInstanceLastAttempt",
- "description": "[Output Only] Information about the last attempt to create or delete the instance."
- },
- "version": {
- "$ref": "ManagedInstanceVersion",
- "description": "[Output Only] Intended version of this instance."
- }
- }
- },
- "ManagedInstanceLastAttempt": {
- "id": "ManagedInstanceLastAttempt",
- "type": "object",
- "properties": {
- "errors": {
- "type": "object",
- "description": "[Output Only] Encountered errors during the last attempt to create or delete the instance.",
- "properties": {
- "errors": {
- "type": "array",
- "description": "[Output Only] The array of errors encountered while processing this operation.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] The error type identifier for this error."
- },
- "location": {
- "type": "string",
- "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional."
- },
- "message": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable error message."
- }
- }
- }
- }
- }
- }
- }
- },
- "ManagedInstanceVersion": {
- "id": "ManagedInstanceVersion",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "[Output Only] The intended template of the instance. This field is empty when current_action is one of { DELETING, ABANDONING }."
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the version."
- }
- }
- },
- "Metadata": {
- "id": "Metadata",
- "type": "object",
- "description": "A metadata key/value entry.",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.",
- "format": "byte"
- },
- "items": {
- "type": "array",
- "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB.",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.",
- "pattern": "[a-zA-Z0-9-_]{1,128}",
- "annotations": {
- "required": [
- "compute.instances.insert",
- "compute.projects.setCommonInstanceMetadata"
- ]
- }
- },
- "value": {
- "type": "string",
- "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB).",
- "annotations": {
- "required": [
- "compute.instances.insert",
- "compute.projects.setCommonInstanceMetadata"
- ]
- }
- }
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of machine types.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/machineTypes",
+ "response": {
+ "$ref": "MachineTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified machine type. Get a list of available machine types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "machineType"
+ ],
+ "parameters": {
+ "machineType": {
+ "description": "Name of the machine type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/machineTypes/{machineType}",
+ "response": {
+ "$ref": "MachineType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of machine types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/machineTypes",
+ "response": {
+ "$ref": "MachineTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#metadata for metadata.",
- "default": "compute#metadata"
- }
- }
- },
- "NamedPort": {
- "id": "NamedPort",
- "type": "object",
- "description": "The named port. For example: .",
- "properties": {
- "name": {
- "type": "string",
- "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
- },
- "port": {
- "type": "integer",
- "description": "The port number, which can be a value between 1 and 65535.",
- "format": "int32"
- }
- }
- },
- "Network": {
- "id": "Network",
- "type": "object",
- "description": "Represents a Network resource. Read Networks and Firewalls for more information. (== resource_for v1.networks ==) (== resource_for beta.networks ==)",
- "properties": {
- "IPv4Range": {
- "type": "string",
- "description": "The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
- "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}/[0-9]{1,2}"
- },
- "autoCreateSubnetworks": {
- "type": "boolean",
- "description": "When set to true, the network is created in \"auto subnet mode\". When set to false, the network is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "gatewayIPv4": {
- "type": "string",
- "description": "A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.",
- "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#network for networks.",
- "default": "compute#network"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.networks.insert"
- ]
- }
- },
- "peerings": {
- "type": "array",
- "description": "[Output Only] List of network peerings for the resource.",
- "items": {
- "$ref": "NetworkPeering"
- }
- },
- "routingConfig": {
- "$ref": "NetworkRoutingConfig",
- "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
},
- "subnetworks": {
- "type": "array",
- "description": "[Output Only] Server-defined fully-qualified URLs for all subnetworks in this network.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "NetworkInterface": {
- "id": "NetworkInterface",
- "type": "object",
- "description": "A network interface resource attached to an instance.",
- "properties": {
- "accessConfigs": {
- "type": "array",
- "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access.",
- "items": {
- "$ref": "AccessConfig"
- }
- },
- "aliasIpRanges": {
- "type": "array",
- "description": "An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks.",
- "items": {
- "$ref": "AliasIpRange"
- }
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint hash of contents stored in this network interface. This field will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface.",
- "format": "byte"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#networkInterface for network interfaces.",
- "default": "compute#networkInterface"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] The name of the network interface, generated by the server. For network devices, these are eth0, eth1, etc."
- },
- "network": {
- "type": "string",
- "description": "URL of the network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used; if the network is not specified but the subnetwork is specified, the network is inferred.\n\nThis field is optional when creating a firewall rule. If not specified when creating a firewall rule, the default network global/networks/default is used.\n\nIf you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/global/networks/network \n- projects/project/global/networks/network \n- global/networks/default"
- },
- "networkIP": {
- "type": "string",
- "description": "An IPv4 internal network address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not provide this property. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode, then this field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork \n- regions/region/subnetworks/subnetwork"
- }
- }
- },
- "NetworkList": {
- "id": "NetworkList",
- "type": "object",
- "description": "Contains a list of networks.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Network resources.",
- "items": {
- "$ref": "Network"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#networkList for lists of networks.",
- "default": "compute#networkList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "NetworkPeering": {
- "id": "NetworkPeering",
- "type": "object",
- "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
- "properties": {
- "autoCreateRoutes": {
- "type": "boolean",
- "description": "Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network."
- },
- "name": {
- "type": "string",
- "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
- },
- "network": {
- "type": "string",
- "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
- },
- "state": {
- "type": "string",
- "description": "[Output Only] State for the peering.",
- "enum": [
- "ACTIVE",
- "INACTIVE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "stateDetails": {
- "type": "string",
- "description": "[Output Only] Details about the current state of the peering."
- }
- }
- },
- "NetworkRoutingConfig": {
- "id": "NetworkRoutingConfig",
- "type": "object",
- "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
- "properties": {
- "routingMode": {
- "type": "string",
- "description": "The network-wide routing mode to use. If set to REGIONAL, this network's cloud routers will only advertise routes with subnetworks of this network in the same region as the router. If set to GLOBAL, this network's cloud routers will advertise routes with all subnetworks of this network, across regions.",
- "enum": [
- "GLOBAL",
- "REGIONAL"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "NetworksAddPeeringRequest": {
- "id": "NetworksAddPeeringRequest",
- "type": "object",
- "properties": {
- "autoCreateRoutes": {
- "type": "boolean",
- "description": "Whether Google Compute Engine manages the routes automatically."
- },
- "name": {
- "type": "string",
- "description": "Name of the peering, which should conform to RFC1035.",
- "annotations": {
- "required": [
- "compute.networks.addPeering"
- ]
- }
- },
- "peerNetwork": {
- "type": "string",
- "description": "URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
- }
- }
- },
- "NetworksRemovePeeringRequest": {
- "id": "NetworksRemovePeeringRequest",
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Name of the peering, which should conform to RFC1035."
- }
- }
- },
- "Operation": {
- "id": "Operation",
- "type": "object",
- "description": "An Operation resource, used to manage asynchronous API requests. (== resource_for v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)",
- "properties": {
- "clientOperationId": {
- "type": "string",
- "description": "[Output Only] Reserved for future use."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Deprecated] This field is deprecated."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] A textual description of the operation, which is set when the operation is created."
- },
- "endTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was completed. This value is in RFC3339 text format."
- },
- "error": {
- "type": "object",
- "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
- "properties": {
- "errors": {
- "type": "array",
- "description": "[Output Only] The array of errors encountered while processing this operation.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] The error type identifier for this error."
- },
- "location": {
- "type": "string",
- "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional."
- },
- "message": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable error message."
- }
- }
- }
+ "networks": {
+ "methods": {
+ "addPeering": {
+ "description": "Adds a peering to the specified network.",
+ "httpMethod": "POST",
+ "id": "compute.networks.addPeering",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network resource to add peering to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/addPeering",
+ "request": {
+ "$ref": "NetworksAddPeeringRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified network.",
+ "httpMethod": "DELETE",
+ "id": "compute.networks.delete",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified network. Get a list of available networks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.networks.get",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "response": {
+ "$ref": "Network"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a network in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.networks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks",
+ "request": {
+ "$ref": "Network"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of networks available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.networks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks",
+ "response": {
+ "$ref": "NetworkList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified network with the data included in the request. Only the following fields can be modified: routingConfig.routingMode.",
+ "httpMethod": "PATCH",
+ "id": "compute.networks.patch",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "request": {
+ "$ref": "Network"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removePeering": {
+ "description": "Removes a peering from the specified network.",
+ "httpMethod": "POST",
+ "id": "compute.networks.removePeering",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network resource to remove peering from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/removePeering",
+ "request": {
+ "$ref": "NetworksRemovePeeringRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "switchToCustomMode": {
+ "description": "Switches the network mode from auto subnet mode to custom subnet mode.",
+ "httpMethod": "POST",
+ "id": "compute.networks.switchToCustomMode",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to be updated.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/switchToCustomMode",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.networks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- },
- "httpErrorMessage": {
- "type": "string",
- "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND."
- },
- "httpErrorStatusCode": {
- "type": "integer",
- "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
- "format": "int32"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "insertTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was requested. This value is in RFC3339 text format."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#operation for Operation resources.",
- "default": "compute#operation"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "operationType": {
- "type": "string",
- "description": "[Output Only] The type of operation, such as insert, update, or delete, and so on."
- },
- "progress": {
- "type": "integer",
- "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
- "format": "int32"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] The URL of the region where the operation resides. Only available when performing regional operations."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "startTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was started by the server. This value is in RFC3339 text format."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.",
- "enum": [
- "DONE",
- "PENDING",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the current status of the operation."
- },
- "targetId": {
- "type": "string",
- "description": "[Output Only] The unique target ID, which identifies a specific incarnation of the target resource.",
- "format": "uint64"
- },
- "targetLink": {
- "type": "string",
- "description": "[Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from."
- },
- "user": {
- "type": "string",
- "description": "[Output Only] User who requested the operation, for example: user@example.com."
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If warning messages are generated during processing of the operation, this field will be populated.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
+ },
+ "projects": {
+ "methods": {
+ "disableXpnHost": {
+ "description": "Disable this project as a shared VPC host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.disableXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/disableXpnHost",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "disableXpnResource": {
+ "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.disableXpnResource",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/disableXpnResource",
+ "request": {
+ "$ref": "ProjectsDisableXpnResourceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "enableXpnHost": {
+ "description": "Enable this project as a shared VPC host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.enableXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/enableXpnHost",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "enableXpnResource": {
+ "description": "Enable service resource (a.k.a service project) for a host project, so that subnets in the host project can be used by instances in the service project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.enableXpnResource",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/enableXpnResource",
+ "request": {
+ "$ref": "ProjectsEnableXpnResourceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Project resource.",
+ "httpMethod": "GET",
+ "id": "compute.projects.get",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}",
+ "response": {
+ "$ref": "Project"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getXpnHost": {
+ "description": "Get the shared VPC host project that this project links to. May be empty if no link exists.",
+ "httpMethod": "GET",
+ "id": "compute.projects.getXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/getXpnHost",
+ "response": {
+ "$ref": "Project"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "getXpnResources": {
+ "description": "Get service resources (a.k.a service project) associated with this host project.",
+ "httpMethod": "GET",
+ "id": "compute.projects.getXpnResources",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/getXpnResources",
+ "response": {
+ "$ref": "ProjectsGetXpnResources"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "listXpnHosts": {
+ "description": "List all shared VPC host projects visible to the user in an organization.",
+ "httpMethod": "POST",
+ "id": "compute.projects.listXpnHosts",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/listXpnHosts",
+ "request": {
+ "$ref": "ProjectsListXpnHostsRequest"
+ },
+ "response": {
+ "$ref": "XpnHostList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "moveDisk": {
+ "description": "Moves a persistent disk from one zone to another.",
+ "httpMethod": "POST",
+ "id": "compute.projects.moveDisk",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/moveDisk",
+ "request": {
+ "$ref": "DiskMoveRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "moveInstance": {
+ "description": "Moves an instance and its attached persistent disks from one zone to another.",
+ "httpMethod": "POST",
+ "id": "compute.projects.moveInstance",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/moveInstance",
+ "request": {
+ "$ref": "InstanceMoveRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setCommonInstanceMetadata": {
+ "description": "Sets metadata common to all instances within the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setCommonInstanceMetadata",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setCommonInstanceMetadata",
+ "request": {
+ "$ref": "Metadata"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDefaultNetworkTier": {
+ "description": "Sets the default network tier of the project. The default network tier is used when an address/forwardingRule/instance is created without specifying the network tier field.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setDefaultNetworkTier",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setDefaultNetworkTier",
+ "request": {
+ "$ref": "ProjectsSetDefaultNetworkTierRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setUsageExportBucket": {
+ "description": "Enables the usage export feature and sets the usage export bucket where reports are stored. If you provide an empty request body using this method, the usage export feature will be disabled.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setUsageExportBucket",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setUsageExportBucket",
+ "request": {
+ "$ref": "UsageExportLocation"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ }
}
- }
},
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations."
- }
- }
- },
- "OperationAggregatedList": {
- "id": "OperationAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "object",
- "description": "[Output Only] A map of scoped operation lists.",
- "additionalProperties": {
- "$ref": "OperationsScopedList",
- "description": "[Output Only] Name of the scope containing this set of operations."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#operationAggregatedList for aggregated lists of operations.",
- "default": "compute#operationAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "regionAutoscalers": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified autoscaler.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionAutoscalers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified autoscaler.",
+ "httpMethod": "GET",
+ "id": "compute.regionAutoscalers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Autoscaler"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionAutoscalers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of autoscalers contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionAutoscalers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "response": {
+ "$ref": "RegionAutoscalerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionAutoscalers.patch",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to patch.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionAutoscalers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.regionAutoscalers.update",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to update.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "OperationList": {
- "id": "OperationList",
- "type": "object",
- "description": "Contains a list of Operation resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output Only] A list of Operation resources.",
- "items": {
- "$ref": "Operation"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#operations for Operations resource.",
- "default": "compute#operationList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regionBackendServices": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified regional BackendService resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionBackendServices.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified regional BackendService resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionBackendServices.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "response": {
+ "$ref": "BackendService"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for this regional BackendService.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.getHealth",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource for which to get health.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}/getHealth",
+ "request": {
+ "$ref": "ResourceGroupReference"
+ },
+ "response": {
+ "$ref": "BackendServiceGroupHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of regional BackendService resources available to the specified project in the given region.",
+ "httpMethod": "GET",
+ "id": "compute.regionBackendServices.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices",
+ "response": {
+ "$ref": "BackendServiceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionBackendServices.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "PUT",
+ "id": "compute.regionBackendServices.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "OperationsScopedList": {
- "id": "OperationsScopedList",
- "type": "object",
- "properties": {
- "operations": {
- "type": "array",
- "description": "[Output Only] List of operations contained in this scope.",
- "items": {
- "$ref": "Operation"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of operations when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regionCommitments": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of commitments.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/commitments",
+ "response": {
+ "$ref": "CommitmentAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified commitment resource. Get a list of available commitments by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "commitment"
+ ],
+ "parameters": {
+ "commitment": {
+ "description": "Name of the commitment to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments/{commitment}",
+ "response": {
+ "$ref": "Commitment"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a commitment in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionCommitments.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments",
+ "request": {
+ "$ref": "Commitment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of commitments contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments",
+ "response": {
+ "$ref": "CommitmentList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "PathMatcher": {
- "id": "PathMatcher",
- "type": "object",
- "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service will be used.",
- "properties": {
- "defaultService": {
- "type": "string",
- "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is matched by the URL's path portion. For example, the following are all valid URLs to a BackendService resource: \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService"
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "name": {
- "type": "string",
- "description": "The name to which this PathMatcher is referred by the HostRule."
- },
- "pathRules": {
- "type": "array",
- "description": "The list of path rules.",
- "items": {
- "$ref": "PathRule"
- }
- }
- }
- },
- "PathRule": {
- "id": "PathRule",
- "type": "object",
- "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
- "properties": {
- "paths": {
- "type": "array",
- "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here.",
- "items": {
- "type": "string"
- }
},
- "service": {
- "type": "string",
- "description": "The URL of the BackendService resource if this rule is matched."
- }
- }
- },
- "Policy": {
- "id": "Policy",
- "type": "object",
- "description": "Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.\n\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.\n\n**Example**\n\n{ \"bindings\": [ { \"role\": \"roles/owner\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-other-app@appspot.gserviceaccount.com\", ] }, { \"role\": \"roles/viewer\", \"members\": [\"user:sean@example.com\"] } ] }\n\nFor a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam).",
- "properties": {
- "auditConfigs": {
- "type": "array",
- "description": "Specifies cloud audit logging configuration for this policy.",
- "items": {
- "$ref": "AuditConfig"
- }
- },
- "bindings": {
- "type": "array",
- "description": "Associates a list of `members` to a `role`. `bindings` with no members will result in an error.",
- "items": {
- "$ref": "Binding"
- }
- },
- "etag": {
- "type": "string",
- "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.",
- "format": "byte"
- },
- "iamOwned": {
- "type": "boolean",
- "description": ""
- },
- "rules": {
- "type": "array",
- "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.",
- "items": {
- "$ref": "Rule"
- }
- },
- "version": {
- "type": "integer",
- "description": "Version of the `Policy`. The default version is 0.",
- "format": "int32"
- }
- }
- },
- "Project": {
- "id": "Project",
- "type": "object",
- "description": "A Project resource. Projects can only be created in the Google Cloud Platform Console. Unless marked otherwise, values can only be modified in the console. (== resource_for v1.projects ==) (== resource_for beta.projects ==)",
- "properties": {
- "commonInstanceMetadata": {
- "$ref": "Metadata",
- "description": "Metadata key/value pairs available to all instances contained in this project. See Custom metadata for more information."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultServiceAccount": {
- "type": "string",
- "description": "[Output Only] Default service account used by VMs running in this project."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource."
- },
- "enabledFeatures": {
- "type": "array",
- "description": "Restricted features enabled for use on this project.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#project for projects.",
- "default": "compute#project"
- },
- "name": {
- "type": "string",
- "description": "The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine."
- },
- "quotas": {
- "type": "array",
- "description": "[Output Only] Quotas assigned to this project.",
- "items": {
- "$ref": "Quota"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "usageExportLocation": {
- "$ref": "UsageExportLocation",
- "description": "The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored."
- },
- "xpnProjectStatus": {
- "type": "string",
- "description": "[Output Only] The role this project has in a shared VPC configuration. Currently only HOST projects are differentiated.",
- "enum": [
- "HOST",
- "UNSPECIFIED_XPN_PROJECT_STATUS"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "ProjectsDisableXpnResourceRequest": {
- "id": "ProjectsDisableXpnResourceRequest",
- "type": "object",
- "properties": {
- "xpnResource": {
- "$ref": "XpnResourceId",
- "description": "Service resource (a.k.a service project) ID."
- }
- }
- },
- "ProjectsEnableXpnResourceRequest": {
- "id": "ProjectsEnableXpnResourceRequest",
- "type": "object",
- "properties": {
- "xpnResource": {
- "$ref": "XpnResourceId",
- "description": "Service resource (a.k.a service project) ID."
- }
- }
- },
- "ProjectsGetXpnResources": {
- "id": "ProjectsGetXpnResources",
- "type": "object",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#projectsGetXpnResources for lists of service resources (a.k.a service projects)",
- "default": "compute#projectsGetXpnResources"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "resources": {
- "type": "array",
- "description": "Service resources (a.k.a service projects) attached to this project as their shared VPC host.",
- "items": {
- "$ref": "XpnResourceId"
- }
- }
- }
- },
- "ProjectsListXpnHostsRequest": {
- "id": "ProjectsListXpnHostsRequest",
- "type": "object",
- "properties": {
- "organization": {
- "type": "string",
- "description": "Optional organization ID managed by Cloud Resource Manager, for which to list shared VPC host projects. If not specified, the organization will be inferred from the project."
- }
- }
- },
- "Quota": {
- "id": "Quota",
- "type": "object",
- "description": "A quotas entry.",
- "properties": {
- "limit": {
- "type": "number",
- "description": "[Output Only] Quota limit for this metric.",
- "format": "double"
- },
- "metric": {
- "type": "string",
- "description": "[Output Only] Name of the quota metric.",
- "enum": [
- "AUTOSCALERS",
- "BACKEND_BUCKETS",
- "BACKEND_SERVICES",
- "COMMITMENTS",
- "CPUS",
- "CPUS_ALL_REGIONS",
- "DISKS_TOTAL_GB",
- "FIREWALLS",
- "FORWARDING_RULES",
- "HEALTH_CHECKS",
- "IMAGES",
- "INSTANCES",
- "INSTANCE_GROUPS",
- "INSTANCE_GROUP_MANAGERS",
- "INSTANCE_TEMPLATES",
- "INTERCONNECTS",
- "INTERNAL_ADDRESSES",
- "IN_USE_ADDRESSES",
- "LOCAL_SSD_TOTAL_GB",
- "NETWORKS",
- "NVIDIA_K80_GPUS",
- "NVIDIA_P100_GPUS",
- "PREEMPTIBLE_CPUS",
- "PREEMPTIBLE_LOCAL_SSD_GB",
- "PREEMPTIBLE_NVIDIA_K80_GPUS",
- "PREEMPTIBLE_NVIDIA_P100_GPUS",
- "REGIONAL_AUTOSCALERS",
- "REGIONAL_INSTANCE_GROUP_MANAGERS",
- "ROUTERS",
- "ROUTES",
- "SECURITY_POLICIES",
- "SECURITY_POLICY_RULES",
- "SNAPSHOTS",
- "SSD_TOTAL_GB",
- "SSL_CERTIFICATES",
- "STATIC_ADDRESSES",
- "SUBNETWORKS",
- "TARGET_HTTPS_PROXIES",
- "TARGET_HTTP_PROXIES",
- "TARGET_INSTANCES",
- "TARGET_POOLS",
- "TARGET_SSL_PROXIES",
- "TARGET_TCP_PROXIES",
- "TARGET_VPN_GATEWAYS",
- "URL_MAPS",
- "VPN_TUNNELS"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "usage": {
- "type": "number",
- "description": "[Output Only] Current usage of this metric.",
- "format": "double"
- }
- }
- },
- "Reference": {
- "id": "Reference",
- "type": "object",
- "description": "Represents a reference to a resource.",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#reference for references.",
- "default": "compute#reference"
- },
- "referenceType": {
- "type": "string",
- "description": "A description of the reference type with no implied semantics. Possible values include: \n- MEMBER_OF"
- },
- "referrer": {
- "type": "string",
- "description": "URL of the resource which refers to the target."
- },
- "target": {
- "type": "string",
- "description": "URL of the resource to which this reference points."
- }
- }
- },
- "Region": {
- "id": "Region",
- "type": "object",
- "description": "Region resource. (== resource_for beta.regions ==) (== resource_for v1.regions ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this region."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#region for regions.",
- "default": "compute#region"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "quotas": {
- "type": "array",
- "description": "[Output Only] Quotas assigned to this region.",
- "items": {
- "$ref": "Quota"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the region, either UP or DOWN.",
- "enum": [
- "DOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
+ "regionDiskTypes": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified regional disk type. Get a list of available disk types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regionDiskTypes.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "diskType"
+ ],
+ "parameters": {
+ "diskType": {
+ "description": "Name of the disk type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/diskTypes/{diskType}",
+ "response": {
+ "$ref": "DiskType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of regional disk types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.regionDiskTypes.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/diskTypes",
+ "response": {
+ "$ref": "RegionDiskTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "zones": {
- "type": "array",
- "description": "[Output Only] A list of zones available in this region, in the form of resource URLs.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionAutoscalerList": {
- "id": "RegionAutoscalerList",
- "type": "object",
- "description": "Contains a list of autoscalers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Autoscaler resources.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#regionAutoscalerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "regionDisks": {
+ "methods": {
+ "createSnapshot": {
+ "description": "Creates a snapshot of this regional disk.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.createSnapshot",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk to snapshot.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}/createSnapshot",
+ "request": {
+ "$ref": "Snapshot"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified regional persistent disk. Deleting a regional disk removes all the replicas of its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionDisks.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns a specified regional persistent disk.",
+ "httpMethod": "GET",
+ "id": "compute.regionDisks.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}",
+ "response": {
+ "$ref": "Disk"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a persistent regional disk in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "Optional. Source image to restore onto a disk.",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks",
+ "request": {
+ "$ref": "Disk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of persistent disks contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionDisks.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks",
+ "response": {
+ "$ref": "DiskList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the specified regional persistent disk.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.resize",
+ "parameterOrder": [
+ "project",
+ "region",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the regional persistent disk.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "The project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{disk}/resize",
+ "request": {
+ "$ref": "RegionDisksResizeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on the target regional disk.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionDisks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/disks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "RegionInstanceGroupList": {
- "id": "RegionInstanceGroupList",
- "type": "object",
- "description": "Contains a list of InstanceGroup resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroup resources.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "kind": {
- "type": "string",
- "description": "The resource type.",
- "default": "compute#regionInstanceGroupList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regionInstanceGroupManagers": {
+ "methods": {
+ "abandonInstances": {
+ "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.abandonInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified managed instance group and all of the instances in that group.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionInstanceGroupManagers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteInstances": {
+ "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.deleteInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersDeleteInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns all of the details about the specified managed instance group.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroupManagers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group to return.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "InstanceGroupManager"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA regional managed instance group can contain up to 2000 instances.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of managed instance groups that are contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroupManagers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers",
+ "response": {
+ "$ref": "RegionInstanceGroupManagerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listManagedInstances": {
+ "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.listManagedInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
+ "response": {
+ "$ref": "RegionInstanceGroupManagersListInstancesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listmanagedinstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionInstanceGroupManagers.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "recreateInstances": {
+ "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.recreateInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersRecreateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resize": {
+ "description": "Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.resize",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager",
+ "size"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "size": {
+ "description": "Number of instances that should exist in this instance group manager.",
+ "format": "int32",
+ "location": "query",
+ "minimum": "0",
+ "required": true,
+ "type": "integer"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setAutoHealingPolicies": {
+ "description": "Modifies the autohealing policy for the instances in this managed instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setAutoHealingPolicies",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetAutoHealingRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setInstanceTemplate": {
+ "description": "Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setInstanceTemplate",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetTemplateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTargetPools": {
+ "description": "Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setTargetPools",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetTargetPoolsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listmanagedinstances method.",
+ "httpMethod": "PUT",
+ "id": "compute.regionInstanceGroupManagers.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the instance group manager.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "RegionInstanceGroupManagerList": {
- "id": "RegionInstanceGroupManagerList",
- "type": "object",
- "description": "Contains a list of managed instance groups.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroupManager resources.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups that exist in th regional scope.",
- "default": "compute#regionInstanceGroupManagerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regionInstanceGroups": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified instance group resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroups.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "Name of the instance group resource to return.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "InstanceGroup"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instance group resources contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroups.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups",
+ "response": {
+ "$ref": "RegionInstanceGroupList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listInstances": {
+ "description": "Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.listInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "Name of the regional instance group for which we want to list the instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupsListInstancesRequest"
+ },
+ "response": {
+ "$ref": "RegionInstanceGroupsListInstances"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setNamedPorts": {
+ "description": "Sets the named ports for the specified regional instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.setNamedPorts",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the regional instance group where the named ports are updated.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts",
+ "request": {
+ "$ref": "RegionInstanceGroupsSetNamedPortsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "RegionInstanceGroupManagersAbandonInstancesRequest": {
- "id": "RegionInstanceGroupManagersAbandonInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersDeleteInstancesRequest": {
- "id": "RegionInstanceGroupManagersDeleteInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersListInstancesResponse": {
- "id": "RegionInstanceGroupManagersListInstancesResponse",
- "type": "object",
- "properties": {
- "managedInstances": {
- "type": "array",
- "description": "List of managed instances.",
- "items": {
- "$ref": "ManagedInstance"
- }
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- }
- }
- },
- "RegionInstanceGroupManagersRecreateRequest": {
- "id": "RegionInstanceGroupManagersRecreateRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetAutoHealingRequest": {
- "id": "RegionInstanceGroupManagersSetAutoHealingRequest",
- "type": "object",
- "properties": {
- "autoHealingPolicies": {
- "type": "array",
- "items": {
- "$ref": "InstanceGroupManagerAutoHealingPolicy"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetTargetPoolsRequest": {
- "id": "RegionInstanceGroupManagersSetTargetPoolsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of the target pools information, which is a hash of the contents. This field is used for optimistic locking when you update the target pool entries. This field is optional.",
- "format": "byte"
},
- "targetPools": {
- "type": "array",
- "description": "The URL of all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetTemplateRequest": {
- "id": "RegionInstanceGroupManagersSetTemplateRequest",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "URL of the InstanceTemplate resource from which all new instances will be created."
- }
- }
- },
- "RegionInstanceGroupsListInstances": {
- "id": "RegionInstanceGroupsListInstances",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceWithNamedPorts resources.",
- "items": {
- "$ref": "InstanceWithNamedPorts"
- }
- },
- "kind": {
- "type": "string",
- "description": "The resource type.",
- "default": "compute#regionInstanceGroupsListInstances"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupsListInstancesRequest": {
- "id": "RegionInstanceGroupsListInstancesRequest",
- "type": "object",
- "properties": {
- "instanceState": {
- "type": "string",
- "description": "Instances in which state should be returned. Valid options are: 'ALL', 'RUNNING'. By default, it lists all instances.",
- "enum": [
- "ALL",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "portName": {
- "type": "string",
- "description": "Name of port user is interested in. It is optional. If it is set, only information about this ports will be returned. If it is not set, all the named ports will be returned. Always lists all instances.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- }
- }
- },
- "RegionInstanceGroupsSetNamedPortsRequest": {
- "id": "RegionInstanceGroupsSetNamedPortsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
- },
- "namedPorts": {
- "type": "array",
- "description": "The list of named ports to set for this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- }
- }
- },
- "RegionList": {
- "id": "RegionList",
- "type": "object",
- "description": "Contains a list of region resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Region resources.",
- "items": {
- "$ref": "Region"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#regionList for lists of regions.",
- "default": "compute#regionList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionSetLabelsRequest": {
- "id": "RegionSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "The labels to set for this resource.",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "ResourceCommitment": {
- "id": "ResourceCommitment",
- "type": "object",
- "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
- "properties": {
- "amount": {
- "type": "string",
- "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU.",
- "format": "int64"
- },
- "type": {
- "type": "string",
- "description": "Type of resource for which this commitment applies. Possible values are VCPU and MEMORY",
- "enum": [
- "MEMORY",
- "UNSPECIFIED",
- "VCPU"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "ResourceGroupReference": {
- "id": "ResourceGroupReference",
- "type": "object",
- "properties": {
- "group": {
- "type": "string",
- "description": "A URI referencing one of the instance groups listed in the backend service."
- }
- }
- },
- "Route": {
- "id": "Route",
- "type": "object",
- "description": "Represents a Route resource. A route specifies how certain packets should be handled by the network. Routes are associated with instances by tags and the set of routes for a particular instance is called its routing table.\n\nFor each packet leaving an instance, the system searches that instance's routing table for a single best matching route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching routes. The packet is then forwarded as specified by the nextHop field of the winning route - either to another instance destination, an instance gateway, or a Google Compute Engine-operated gateway.\n\nPackets that do not match any route in the sending instance's routing table are dropped. (== resource_for beta.routes ==) (== resource_for v1.routes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "destRange": {
- "type": "string",
- "description": "The destination range of outgoing packets that this route applies to. Only IPv4 is supported.",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of this resource. Always compute#routes for Route resources.",
- "default": "compute#route"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "Fully-qualified URL of the network that this route applies to.",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "nextHopGateway": {
- "type": "string",
- "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway"
- },
- "nextHopInstance": {
- "type": "string",
- "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
- },
- "nextHopIp": {
- "type": "string",
- "description": "The network IP address of an instance that should handle matching packets. Only IPv4 is supported."
- },
- "nextHopNetwork": {
- "type": "string",
- "description": "The URL of the local network if it should handle matching packets."
- },
- "nextHopPeering": {
- "type": "string",
- "description": "[Output Only] The network peering name that should handle matching packets, which should conform to RFC1035."
- },
- "nextHopVpnTunnel": {
- "type": "string",
- "description": "The URL to a VpnTunnel that should handle matching packets."
- },
- "priority": {
- "type": "integer",
- "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
- "format": "uint32",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "tags": {
- "type": "array",
- "description": "A list of instance tags to which this route applies.",
- "items": {
- "type": "string"
- },
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- }
- },
- "RouteList": {
- "id": "RouteList",
- "type": "object",
- "description": "Contains a list of Route resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Route resources.",
- "items": {
- "$ref": "Route"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "Router": {
- "id": "Router",
- "type": "object",
- "description": "Router resource.",
- "properties": {
- "bgp": {
- "$ref": "RouterBgp",
- "description": "BGP information specific to this router."
- },
- "bgpPeers": {
- "type": "array",
- "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
- "items": {
- "$ref": "RouterBgpPeer"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "interfaces": {
- "type": "array",
- "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
- "items": {
- "$ref": "RouterInterface"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#router for routers.",
- "default": "compute#router"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.routers.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URI of the network to which this router belongs.",
- "annotations": {
- "required": [
- "compute.routers.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URI of the region where the router resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "RouterAdvertisedIpRange": {
- "id": "RouterAdvertisedIpRange",
- "type": "object",
- "description": "Description-tagged IP ranges for the router to advertise.",
- "properties": {
- "description": {
- "type": "string",
- "description": "User-specified description for the IP range."
- },
- "range": {
- "type": "string",
- "description": "The IP range to advertise. The value must be a CIDR-formatted string."
- }
- }
- },
- "RouterAggregatedList": {
- "id": "RouterAggregatedList",
- "type": "object",
- "description": "Contains a list of routers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of Router resources.",
- "additionalProperties": {
- "$ref": "RoutersScopedList",
- "description": "Name of the scope containing this set of routers."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "regionOperations": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified region-specific Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionOperations.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified region-specific Operations resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionOperations.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionOperations.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "RouterBgp": {
- "id": "RouterBgp",
- "type": "object",
- "properties": {
- "advertiseMode": {
- "type": "string",
- "description": "User-specified flag to indicate which mode to use for advertisement.",
- "enum": [
- "CUSTOM",
- "DEFAULT"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "advertisedGroups": {
- "type": "array",
- "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
- "items": {
- "type": "string",
- "enum": [
- "ALL_SUBNETS"
- ],
- "enumDescriptions": [
- ""
- ]
- }
- },
- "advertisedIpRanges": {
- "type": "array",
- "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
- "items": {
- "$ref": "RouterAdvertisedIpRange"
- }
- },
- "asn": {
- "type": "integer",
- "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN.",
- "format": "uint32"
- }
- }
- },
- "RouterBgpPeer": {
- "id": "RouterBgpPeer",
- "type": "object",
- "properties": {
- "advertiseMode": {
- "type": "string",
- "description": "User-specified flag to indicate which mode to use for advertisement.",
- "enum": [
- "CUSTOM",
- "DEFAULT"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "advertisedGroups": {
- "type": "array",
- "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
- "items": {
- "type": "string",
- "enum": [
- "ALL_SUBNETS"
- ],
- "enumDescriptions": [
- ""
- ]
- }
- },
- "advertisedIpRanges": {
- "type": "array",
- "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
- "items": {
- "$ref": "RouterAdvertisedIpRange"
- }
- },
- "advertisedRoutePriority": {
- "type": "integer",
- "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
- "format": "uint32"
- },
- "interfaceName": {
- "type": "string",
- "description": "Name of the interface the BGP peer is associated with."
- },
- "ipAddress": {
- "type": "string",
- "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
- },
- "name": {
- "type": "string",
- "description": "Name of this BGP peer. The name must be 1-63 characters long and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "peerAsn": {
- "type": "integer",
- "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
- "format": "uint32"
- },
- "peerIpAddress": {
- "type": "string",
- "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported."
- }
- }
- },
- "RouterInterface": {
- "id": "RouterInterface",
- "type": "object",
- "properties": {
- "ipRange": {
- "type": "string",
- "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
- },
- "linkedInterconnectAttachment": {
- "type": "string",
- "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment."
- },
- "linkedVpnTunnel": {
- "type": "string",
- "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment."
- },
- "name": {
- "type": "string",
- "description": "Name of this interface entry. The name must be 1-63 characters long and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- }
- }
- },
- "RouterList": {
- "id": "RouterList",
- "type": "object",
- "description": "Contains a list of Router resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Router resources.",
- "items": {
- "$ref": "Router"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#router for routers.",
- "default": "compute#routerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "regions": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified Region resource. Get a list of available regions by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regions.get",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}",
+ "response": {
+ "$ref": "Region"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of region resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.regions.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions",
+ "response": {
+ "$ref": "RegionList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "RouterStatus": {
- "id": "RouterStatus",
- "type": "object",
- "properties": {
- "bestRoutes": {
- "type": "array",
- "description": "Best routes for this router's network.",
- "items": {
- "$ref": "Route"
- }
- },
- "bestRoutesForRouter": {
- "type": "array",
- "description": "Best routes learned by this router.",
- "items": {
- "$ref": "Route"
- }
- },
- "bgpPeerStatus": {
- "type": "array",
- "items": {
- "$ref": "RouterStatusBgpPeerStatus"
- }
- },
- "network": {
- "type": "string",
- "description": "URI of the network to which this router belongs."
- }
- }
- },
- "RouterStatusBgpPeerStatus": {
- "id": "RouterStatusBgpPeerStatus",
- "type": "object",
- "properties": {
- "advertisedRoutes": {
- "type": "array",
- "description": "Routes that were advertised to the remote BGP peer",
- "items": {
- "$ref": "Route"
- }
- },
- "ipAddress": {
- "type": "string",
- "description": "IP address of the local BGP interface."
- },
- "linkedVpnTunnel": {
- "type": "string",
- "description": "URL of the VPN tunnel that this BGP peer controls."
- },
- "name": {
- "type": "string",
- "description": "Name of this BGP peer. Unique within the Routers resource."
- },
- "numLearnedRoutes": {
- "type": "integer",
- "description": "Number of routes learned from the remote BGP Peer.",
- "format": "uint32"
- },
- "peerIpAddress": {
- "type": "string",
- "description": "IP address of the remote BGP interface."
- },
- "state": {
- "type": "string",
- "description": "BGP state as specified in RFC1771."
- },
- "status": {
- "type": "string",
- "description": "Status of the BGP peer: {UP, DOWN}",
- "enum": [
- "DOWN",
- "UNKNOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "uptime": {
- "type": "string",
- "description": "Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23 hours, 59 minutes, 59 seconds"
- },
- "uptimeSeconds": {
- "type": "string",
- "description": "Time this session has been up, in seconds. Format: 145"
- }
- }
- },
- "RouterStatusResponse": {
- "id": "RouterStatusResponse",
- "type": "object",
- "properties": {
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routerStatusResponse"
- },
- "result": {
- "$ref": "RouterStatus"
- }
- }
- },
- "RoutersPreviewResponse": {
- "id": "RoutersPreviewResponse",
- "type": "object",
- "properties": {
- "resource": {
- "$ref": "Router",
- "description": "Preview of given router."
- }
- }
- },
- "RoutersScopedList": {
- "id": "RoutersScopedList",
- "type": "object",
- "properties": {
+ },
"routers": {
- "type": "array",
- "description": "List of routers contained in this scope.",
- "items": {
- "$ref": "Router"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of routers when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of routers.",
+ "httpMethod": "GET",
+ "id": "compute.routers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/routers",
+ "response": {
+ "$ref": "RouterAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Router resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.routers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Router resource. Get a list of available routers by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.routers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "response": {
+ "$ref": "Router"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getRouterStatus": {
+ "description": "Retrieves runtime information of the specified router.",
+ "httpMethod": "GET",
+ "id": "compute.routers.getRouterStatus",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to query.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}/getRouterStatus",
+ "response": {
+ "$ref": "RouterStatusResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Router resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.routers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Router resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.routers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers",
+ "response": {
+ "$ref": "RouterList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified Router resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.routers.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "preview": {
+ "description": "Preview fields auto-generated during router create and update operations. Calling this method does NOT create or update the router.",
+ "httpMethod": "POST",
+ "id": "compute.routers.preview",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to query.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}/preview",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "RoutersPreviewResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.routers.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified Router resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.routers.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "Rule": {
- "id": "Rule",
- "type": "object",
- "description": "A rule to be applied in a Policy.",
- "properties": {
- "action": {
- "type": "string",
- "description": "Required",
- "enum": [
- "ALLOW",
- "ALLOW_WITH_LOG",
- "DENY",
- "DENY_WITH_LOG",
- "LOG",
- "NO_ACTION"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "conditions": {
- "type": "array",
- "description": "Additional restrictions that must be met. All conditions must pass for the rule to match.",
- "items": {
- "$ref": "Condition"
- }
- },
- "description": {
- "type": "string",
- "description": "Human-readable description of the rule."
- },
- "ins": {
- "type": "array",
- "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.",
- "items": {
- "type": "string"
- }
- },
- "logConfigs": {
- "type": "array",
- "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.",
- "items": {
- "$ref": "LogConfig"
- }
- },
- "notIns": {
- "type": "array",
- "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.",
- "items": {
- "type": "string"
- }
},
- "permissions": {
- "type": "array",
- "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SSLHealthCheck": {
- "id": "SSLHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "request": {
- "type": "string",
- "description": "The application data to send once the SSL connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII."
- }
- }
- },
- "Scheduling": {
- "id": "Scheduling",
- "type": "object",
- "description": "Sets the scheduling options for an Instance.",
- "properties": {
- "automaticRestart": {
- "type": "boolean",
- "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted.\n\nBy default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
- },
- "onHostMaintenance": {
- "type": "string",
- "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Setting Instance Scheduling Options.",
- "enum": [
- "MIGRATE",
- "TERMINATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "preemptible": {
- "type": "boolean",
- "description": "Defines whether the instance is preemptible. This can only be set during instance creation, it cannot be set or changed after the instance has been created."
- }
- }
- },
- "SecurityPolicy": {
- "id": "SecurityPolicy",
- "type": "object",
- "description": "A security policy is comprised of one or more rules. It can also be associated with one or more 'targets'.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the security policy.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
- "default": "compute#securityPolicy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "rules": {
- "type": "array",
- "description": "List of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
- "items": {
- "$ref": "SecurityPolicyRule"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "SecurityPolicyList": {
- "id": "SecurityPolicyList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of SecurityPolicy resources.",
- "items": {
- "$ref": "SecurityPolicy"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#securityPolicyList for listsof securityPolicies",
- "default": "compute#securityPolicyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "routes": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified Route resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.routes.delete",
+ "parameterOrder": [
+ "project",
+ "route"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "route": {
+ "description": "Name of the Route resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{route}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Route resource. Get a list of available routes by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.routes.get",
+ "parameterOrder": [
+ "project",
+ "route"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "route": {
+ "description": "Name of the Route resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{route}",
+ "response": {
+ "$ref": "Route"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Route resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.routes.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes",
+ "request": {
+ "$ref": "Route"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Route resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.routes.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes",
+ "response": {
+ "$ref": "RouteList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.routes.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "SecurityPolicyReference": {
- "id": "SecurityPolicyReference",
- "type": "object",
- "properties": {
- "securityPolicy": {
- "type": "string"
- }
- }
- },
- "SecurityPolicyRule": {
- "id": "SecurityPolicyRule",
- "type": "object",
- "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
- "properties": {
- "action": {
- "type": "string",
- "description": "The Action to preform when the client connection triggers the rule. Can currently be either \"allow\" or \"deny()\" where valid values for status are 403, 404, and 502."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "kind": {
- "type": "string",
- "description": "[Output only] Type of the resource. Always compute#securityPolicyRule for security policy rules",
- "default": "compute#securityPolicyRule"
- },
- "match": {
- "$ref": "SecurityPolicyRuleMatcher",
- "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding ?action? is enforced."
- },
- "preview": {
- "type": "boolean",
- "description": "If set to true, the specified action is not enforced."
- },
- "priority": {
- "type": "integer",
- "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated in the increasing order of priority.",
- "format": "int32"
- }
- }
- },
- "SecurityPolicyRuleMatcher": {
- "id": "SecurityPolicyRuleMatcher",
- "type": "object",
- "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
- "properties": {
- "config": {
- "$ref": "SecurityPolicyRuleMatcherConfig",
- "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
- },
- "srcIpRanges": {
- "type": "array",
- "description": "CIDR IP address range. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "versionedExpr": {
- "type": "string",
- "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
- "enum": [
- "SRC_IPS_V1",
- "VERSIONED_EXPR_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "SecurityPolicyRuleMatcherConfig": {
- "id": "SecurityPolicyRuleMatcherConfig",
- "type": "object",
- "properties": {
- "srcIpRanges": {
- "type": "array",
- "description": "CIDR IP address range. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SerialPortOutput": {
- "id": "SerialPortOutput",
- "type": "object",
- "description": "An instance's serial console output.",
- "properties": {
- "contents": {
- "type": "string",
- "description": "[Output Only] The contents of the console output."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#serialPortOutput for serial port output.",
- "default": "compute#serialPortOutput"
- },
- "next": {
- "type": "string",
- "description": "[Output Only] The position of the next byte of content from the serial console output. Use this value in the next request as the start parameter.",
- "format": "int64"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "start": {
- "type": "string",
- "description": "The starting byte position of the output that was returned. This should match the start parameter sent with the request. If the serial console output exceeds the size of the buffer, older output will be overwritten by newer content and the start values will be mismatched.",
- "format": "int64"
- }
- }
- },
- "ServiceAccount": {
- "id": "ServiceAccount",
- "type": "object",
- "description": "A service account.",
- "properties": {
- "email": {
- "type": "string",
- "description": "Email address of the service account."
- },
- "scopes": {
- "type": "array",
- "description": "The list of scopes to be made available for this service account.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SignedUrlKey": {
- "id": "SignedUrlKey",
- "type": "object",
- "description": "Represents a customer-supplied Signing Key used by Cloud CDN Signed URLs",
- "properties": {
- "keyName": {
- "type": "string",
- "description": "Name of the key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "keyValue": {
- "type": "string",
- "description": "128-bit key value used for signing the URL. The key value must be a valid RFC 4648 Section 5 base64url encoded string."
- }
- }
- },
- "Snapshot": {
- "id": "Snapshot",
- "type": "object",
- "description": "A persistent disk snapshot resource. (== resource_for beta.snapshots ==) (== resource_for v1.snapshots ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "[Output Only] Size of the snapshot, specified in GB.",
- "format": "int64"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#snapshot for Snapshot resources.",
- "default": "compute#snapshot"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a snapshot.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "licenseCodes": {
- "type": "array",
- "description": "Integer license codes indicating which licenses are attached to this snapshot.",
- "items": {
- "type": "string",
- "format": "int64"
- }
},
- "licenses": {
- "type": "array",
- "description": "[Output Only] A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "snapshotEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
- },
- "sourceDisk": {
- "type": "string",
- "description": "[Output Only] The source disk used to create this snapshot."
- },
- "sourceDiskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
- },
- "sourceDiskId": {
- "type": "string",
- "description": "[Output Only] The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
- "enum": [
- "CREATING",
- "DELETING",
- "FAILED",
- "READY",
- "UPLOADING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "storageBytes": {
- "type": "string",
- "description": "[Output Only] A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
- "format": "int64"
- },
- "storageBytesStatus": {
- "type": "string",
- "description": "[Output Only] An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
- "enum": [
- "UPDATING",
- "UP_TO_DATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "SnapshotList": {
- "id": "SnapshotList",
- "type": "object",
- "description": "Contains a list of Snapshot resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Snapshot resources.",
- "items": {
- "$ref": "Snapshot"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#snapshotList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SourceInstanceParams": {
- "id": "SourceInstanceParams",
- "type": "object",
- "description": "A specification of the parameters to use when creating the instance template from a source instance.",
- "properties": {
- "diskConfigs": {
- "type": "array",
- "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.",
- "items": {
- "$ref": "DiskInstantiationConfig"
- }
- }
- }
- },
- "SslCertificate": {
- "id": "SslCertificate",
- "type": "object",
- "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==)",
- "properties": {
- "certificate": {
- "type": "string",
- "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.",
- "default": "compute#sslCertificate"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "privateKey": {
- "type": "string",
- "description": "A write-only private key in PEM format. Only insert requests will include this field."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output only] Server-defined URL for the resource."
- }
- }
- },
- "SslCertificateList": {
- "id": "SslCertificateList",
- "type": "object",
- "description": "Contains a list of SslCertificate resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of SslCertificate resources.",
- "items": {
- "$ref": "SslCertificate"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#sslCertificateList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SslPoliciesList": {
- "id": "SslPoliciesList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of SslPolicy resources.",
- "items": {
- "$ref": "SslPolicy"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#sslPoliciesList for lists of sslPolicies.",
- "default": "compute#sslPoliciesList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "securityPolicies": {
+ "methods": {
+ "addRule": {
+ "description": "Inserts a rule into a security policy.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.addRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/addRule",
+ "request": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified policy.",
+ "httpMethod": "DELETE",
+ "id": "compute.securityPolicies.delete",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "List all of the ordered rules present in a single specified policy.",
+ "httpMethod": "GET",
+ "id": "compute.securityPolicies.get",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to get.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}",
+ "response": {
+ "$ref": "SecurityPolicy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getRule": {
+ "description": "Gets a rule at the specified priority.",
+ "httpMethod": "GET",
+ "id": "compute.securityPolicies.getRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "priority": {
+ "description": "The priority of the rule to get from the security policy.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to which the queried rule belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/getRule",
+ "response": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a new policy in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies",
+ "request": {
+ "$ref": "SecurityPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "List all the policies that have been configured for the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.securityPolicies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies",
+ "response": {
+ "$ref": "SecurityPolicyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified policy with the data included in the request.",
+ "httpMethod": "PATCH",
+ "id": "compute.securityPolicies.patch",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}",
+ "request": {
+ "$ref": "SecurityPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "patchRule": {
+ "description": "Patches a rule at the specified priority.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.patchRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "priority": {
+ "description": "The priority of the rule to patch.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/patchRule",
+ "request": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removeRule": {
+ "description": "Deletes a rule at the specified priority.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.removeRule",
+ "parameterOrder": [
+ "project",
+ "securityPolicy"
+ ],
+ "parameters": {
+ "priority": {
+ "description": "The priority of the rule to remove from the security policy.",
+ "format": "int32",
+ "location": "query",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "Name of the security policy to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{securityPolicy}/removeRule",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.securityPolicies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/securityPolicies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "SslPoliciesListAvailableFeaturesResponse": {
- "id": "SslPoliciesListAvailableFeaturesResponse",
- "type": "object",
- "properties": {
- "features": {
- "type": "array",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "SslPolicy": {
- "id": "SslPolicy",
- "type": "object",
- "description": "A SSL policy specifies the server-side support for SSL features. This can be attached to a TargetHttpsProxy or a TargetSslProxy. This affects connections between clients and the HTTPS or SSL proxy load balancer. They do not affect the connection between the load balancers and the backends.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customFeatures": {
- "type": "array",
- "description": "List of features enabled when the selected profile is CUSTOM. The\n- method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
- "items": {
- "type": "string"
- }
},
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "enabledFeatures": {
- "type": "array",
- "description": "[Output Only] The list of features enabled in the SSL policy.",
- "items": {
- "type": "string"
- }
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
- "default": "compute#sslPolicy"
- },
- "minTlsVersion": {
- "type": "string",
- "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2, TLS_1_3.",
- "enum": [
- "TLS_1_0",
- "TLS_1_1",
- "TLS_1_2",
- "TLS_1_3"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "profile": {
- "type": "string",
- "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
- "enum": [
- "COMPATIBLE",
- "CUSTOM",
- "MODERN",
- "RESTRICTED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
+ "snapshots": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not necessarily delete all the data on that snapshot. If any data on the snapshot that is marked for deletion is needed for subsequent snapshots, the data will be moved to the next corresponding snapshot.\n\nFor more information, see Deleting snaphots.",
+ "httpMethod": "DELETE",
+ "id": "compute.snapshots.delete",
+ "parameterOrder": [
+ "project",
+ "snapshot"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "snapshot": {
+ "description": "Name of the Snapshot resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{snapshot}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Snapshot resource. Get a list of available snapshots by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.snapshots.get",
+ "parameterOrder": [
+ "project",
+ "snapshot"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "snapshot": {
+ "description": "Name of the Snapshot resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{snapshot}",
+ "response": {
+ "$ref": "Snapshot"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Snapshot resources contained within the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.snapshots.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots",
+ "response": {
+ "$ref": "SnapshotList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a snapshot. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.snapshots.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.snapshots.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "SslPolicyReference": {
- "id": "SslPolicyReference",
- "type": "object",
- "properties": {
- "sslPolicy": {
- "type": "string",
- "description": "URL of the SSL policy resource. Set this to empty string to clear any existing SSL policy associated with the target proxy resource."
- }
- }
- },
- "Subnetwork": {
- "id": "Subnetwork",
- "type": "object",
- "description": "A Subnetwork resource. (== resource_for beta.subnetworks ==) (== resource_for v1.subnetworks ==)",
- "properties": {
- "allowSubnetCidrRoutesOverlap": {
- "type": "boolean",
- "description": "Whether this subnetwork can conflict with static routes. Setting this to true allows this subnetwork's primary and secondary ranges to conflict with routes that have already been configured on the corresponding network. Static routes will take precedence over the subnetwork route if the route prefix length is at least as large as the subnetwork prefix length.\n\nAlso, packets destined to IPs within subnetwork may contain private/sensitive data and are prevented from leaving the virtual network. Setting this field to true will disable this feature.\n\nThe default value is false and applies to all existing subnetworks and automatically created subnetworks.\n\nThis field cannot be set to true at resource creation time."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork.",
- "format": "byte"
- },
- "gatewayAddress": {
- "type": "string",
- "description": "[Output Only] The gateway address for default routes to reach destination addresses outside this subnetwork. This field can be set only at resource creation time."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipCidrRange": {
- "type": "string",
- "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field can be set only at resource creation time."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#subnetwork for Subnetwork resources.",
- "default": "compute#subnetwork"
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "network": {
- "type": "string",
- "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. Only networks that are in the distributed mode can have subnetworks. This field can be set only at resource creation time."
- },
- "privateIpGoogleAccess": {
- "type": "boolean",
- "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
- },
- "region": {
- "type": "string",
- "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time."
- },
- "secondaryIpRanges": {
- "type": "array",
- "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges.",
- "items": {
- "$ref": "SubnetworkSecondaryRange"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "SubnetworkAggregatedList": {
- "id": "SubnetworkAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of SubnetworksScopedList resources.",
- "additionalProperties": {
- "$ref": "SubnetworksScopedList",
- "description": "Name of the scope containing this set of Subnetworks."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#subnetworkAggregatedList for aggregated lists of subnetworks.",
- "default": "compute#subnetworkAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "sslCertificates": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified SslCertificate resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.sslCertificates.delete",
+ "parameterOrder": [
+ "project",
+ "sslCertificate"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sslCertificate": {
+ "description": "Name of the SslCertificate resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{sslCertificate}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified SslCertificate resource. Get a list of available SSL certificates by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.sslCertificates.get",
+ "parameterOrder": [
+ "project",
+ "sslCertificate"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "sslCertificate": {
+ "description": "Name of the SslCertificate resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{sslCertificate}",
+ "response": {
+ "$ref": "SslCertificate"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.sslCertificates.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates",
+ "request": {
+ "$ref": "SslCertificate"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of SslCertificate resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.sslCertificates.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates",
+ "response": {
+ "$ref": "SslCertificateList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.sslCertificates.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "SubnetworkList": {
- "id": "SubnetworkList",
- "type": "object",
- "description": "Contains a list of Subnetwork resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Subnetwork resources.",
- "items": {
- "$ref": "Subnetwork"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#subnetworkList for lists of subnetworks.",
- "default": "compute#subnetworkList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "sslPolicies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified SSL policy. The SSL policy resource can be deleted only if it is not in use by any TargetHttpsProxy or TargetSslProxy resources.",
+ "httpMethod": "DELETE",
+ "id": "compute.sslPolicies.delete",
+ "parameterOrder": [
+ "project",
+ "sslPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sslPolicy": {
+ "description": "Name of the SSL policy to delete. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{sslPolicy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "List all of the ordered rules present in a single specified policy.",
+ "httpMethod": "GET",
+ "id": "compute.sslPolicies.get",
+ "parameterOrder": [
+ "project",
+ "sslPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "sslPolicy": {
+ "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{sslPolicy}",
+ "response": {
+ "$ref": "SslPolicy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Returns the specified SSL policy resource. Get a list of available SSL policies by making a list() request.",
+ "httpMethod": "POST",
+ "id": "compute.sslPolicies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies",
+ "request": {
+ "$ref": "SslPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "List all the SSL policies that have been configured for the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.sslPolicies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies",
+ "response": {
+ "$ref": "SslPoliciesList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listAvailableFeatures": {
+ "description": "Lists all features that can be specified in the SSL policy when using custom profile.",
+ "httpMethod": "GET",
+ "id": "compute.sslPolicies.listAvailableFeatures",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/listAvailableFeatures",
+ "response": {
+ "$ref": "SslPoliciesListAvailableFeaturesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified SSL policy with the data included in the request.",
+ "httpMethod": "PATCH",
+ "id": "compute.sslPolicies.patch",
+ "parameterOrder": [
+ "project",
+ "sslPolicy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sslPolicy": {
+ "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{sslPolicy}",
+ "request": {
+ "$ref": "SslPolicy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.sslPolicies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslPolicies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "SubnetworkSecondaryRange": {
- "id": "SubnetworkSecondaryRange",
- "type": "object",
- "description": "Represents a secondary IP range of a subnetwork.",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported."
- },
- "rangeName": {
- "type": "string",
- "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
- }
- }
- },
- "SubnetworksExpandIpCidrRangeRequest": {
- "id": "SubnetworksExpandIpCidrRangeRequest",
- "type": "object",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The IP (in CIDR format or netmask) of internal addresses that are legal on this Subnetwork. This range should be disjoint from other subnetworks within this network. This range can only be larger than (i.e. a superset of) the range previously defined before the update."
- }
- }
- },
- "SubnetworksScopedList": {
- "id": "SubnetworksScopedList",
- "type": "object",
- "properties": {
+ },
"subnetworks": {
- "type": "array",
- "description": "List of subnetworks contained in this scope.",
- "items": {
- "$ref": "Subnetwork"
- }
- },
- "warning": {
- "type": "object",
- "description": "An informational warning that appears when the list of addresses is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SubnetworksSetPrivateIpGoogleAccessRequest": {
- "id": "SubnetworksSetPrivateIpGoogleAccessRequest",
- "type": "object",
- "properties": {
- "privateIpGoogleAccess": {
- "type": "boolean"
- }
- }
- },
- "TCPHealthCheck": {
- "id": "TCPHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "request": {
- "type": "string",
- "description": "The application data to send once the TCP connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII."
- }
- }
- },
- "Tags": {
- "id": "Tags",
- "type": "object",
- "description": "A set of instance tags.",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
- "format": "byte"
- },
- "items": {
- "type": "array",
- "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetHttpProxy": {
- "id": "TargetHttpProxy",
- "type": "object",
- "description": "A TargetHttpProxy resource. This resource defines an HTTP proxy. (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
- "default": "compute#targetHttpProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "urlMap": {
- "type": "string",
- "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
- }
- }
- },
- "TargetHttpProxyList": {
- "id": "TargetHttpProxyList",
- "type": "object",
- "description": "A list of TargetHttpProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetHttpProxy resources.",
- "items": {
- "$ref": "TargetHttpProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource. Always compute#targetHttpProxyList for lists of target HTTP proxies.",
- "default": "compute#targetHttpProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of subnetworks.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/subnetworks",
+ "response": {
+ "$ref": "SubnetworkAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified subnetwork.",
+ "httpMethod": "DELETE",
+ "id": "compute.subnetworks.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "expandIpCidrRange": {
+ "description": "Expands the IP CIDR range of the subnetwork to a specified value.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.expandIpCidrRange",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange",
+ "request": {
+ "$ref": "SubnetworksExpandIpCidrRangeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified subnetwork. Get a list of available subnetworks list() request.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "response": {
+ "$ref": "Subnetwork"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getIamPolicy": {
+ "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.getIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{resource}/getIamPolicy",
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a subnetwork in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks",
+ "request": {
+ "$ref": "Subnetwork"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of subnetworks available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks",
+ "response": {
+ "$ref": "SubnetworkList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listUsable": {
+ "description": "Retrieves an aggregated list of usable subnetworks.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.listUsable",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/subnetworks/listUsable",
+ "response": {
+ "$ref": "UsableSubnetworksAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified subnetwork with the data included in the request. Only the following fields within the subnetwork resource can be specified in the request: secondary_ip_range and allow_subnet_cidr_routes_overlap. It is also mandatory to specify the current fingeprint of the subnetwork resource being patched.",
+ "httpMethod": "PATCH",
+ "id": "compute.subnetworks.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "request": {
+ "$ref": "Subnetwork"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setIamPolicy": {
+ "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.setIamPolicy",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{resource}/setIamPolicy",
+ "request": {
+ "$ref": "Policy"
+ },
+ "response": {
+ "$ref": "Policy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setPrivateIpGoogleAccess": {
+ "description": "Set whether VMs in this subnet can access Google services without assigning external IP addresses through Private Google Access.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.setPrivateIpGoogleAccess",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess",
+ "request": {
+ "$ref": "SubnetworksSetPrivateIpGoogleAccessRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetHttpsProxiesSetQuicOverrideRequest": {
- "id": "TargetHttpsProxiesSetQuicOverrideRequest",
- "type": "object",
- "properties": {
- "quicOverride": {
- "type": "string",
- "description": "QUIC policy for the TargetHttpsProxy resource.",
- "enum": [
- "DISABLE",
- "ENABLE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "TargetHttpsProxiesSetSslCertificatesRequest": {
- "id": "TargetHttpsProxiesSetSslCertificatesRequest",
- "type": "object",
- "properties": {
- "sslCertificates": {
- "type": "array",
- "description": "New set of SslCertificate resources to associate with this TargetHttpsProxy resource. Currently exactly one SslCertificate resource must be specified.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetHttpsProxy": {
- "id": "TargetHttpsProxy",
- "type": "object",
- "description": "A TargetHttpsProxy resource. This resource defines an HTTPS proxy. (== resource_for beta.targetHttpsProxies ==) (== resource_for v1.targetHttpsProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
- "default": "compute#targetHttpsProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "quicOverride": {
- "type": "string",
- "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This determines whether the load balancer will attempt to negotiate QUIC with clients or not. Can specify one of NONE, ENABLE, or DISABLE. Specify ENABLE to always enable QUIC, Enables QUIC when set to ENABLE, and disables QUIC when set to DISABLE. If NONE is specified, uses the QUIC policy with no user overrides, which is equivalent to DISABLE. Not specifying this field is equivalent to specifying NONE.",
- "enum": [
- "DISABLE",
- "ENABLE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sslCertificates": {
- "type": "array",
- "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. Currently, exactly one SSL certificate must be specified.",
- "items": {
- "type": "string"
- }
- },
- "sslPolicy": {
- "type": "string",
- "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource will not have any SSL policy configured."
},
- "urlMap": {
- "type": "string",
- "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: \n- https://www.googleapis.compute/v1/projects/project/global/urlMaps/url-map \n- projects/project/global/urlMaps/url-map \n- global/urlMaps/url-map"
- }
- }
- },
- "TargetHttpsProxyList": {
- "id": "TargetHttpsProxyList",
- "type": "object",
- "description": "Contains a list of TargetHttpsProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetHttpsProxy resources.",
- "items": {
- "$ref": "TargetHttpsProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource. Always compute#targetHttpsProxyList for lists of target HTTPS proxies.",
- "default": "compute#targetHttpsProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetInstance": {
- "id": "TargetInstance",
- "type": "object",
- "description": "A TargetInstance resource. This resource defines an endpoint instance that terminates traffic of certain protocols. (== resource_for beta.targetInstances ==) (== resource_for v1.targetInstances ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "instance": {
- "type": "string",
- "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#targetInstance for target instances.",
- "default": "compute#targetInstance"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "natPolicy": {
- "type": "string",
- "description": "NAT option controlling how IPs are NAT'ed to the instance. Currently only NO_NAT (default value) is supported.",
- "enum": [
- "NO_NAT"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the target instance resides."
- }
- }
- },
- "TargetInstanceAggregatedList": {
- "id": "TargetInstanceAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetInstance resources.",
- "additionalProperties": {
- "$ref": "TargetInstancesScopedList",
- "description": "Name of the scope containing this set of target instances."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetInstanceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "targetHttpProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetHttpProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetHttpProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetHttpProxy resource. Get a list of available target HTTP proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
+ "response": {
+ "$ref": "TargetHttpProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies",
+ "request": {
+ "$ref": "TargetHttpProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetHttpProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies",
+ "response": {
+ "$ref": "TargetHttpProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setUrlMap": {
+ "description": "Changes the URL map for TargetHttpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.setUrlMap",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy to set a URL map for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
+ "request": {
+ "$ref": "UrlMapReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetInstanceList": {
- "id": "TargetInstanceList",
- "type": "object",
- "description": "Contains a list of TargetInstance resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetInstance resources.",
- "items": {
- "$ref": "TargetInstance"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetInstanceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "targetHttpsProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetHttpsProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetHttpsProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetHttpsProxy resource. Get a list of available target HTTPS proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpsProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
+ "response": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies",
+ "request": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpsProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies",
+ "response": {
+ "$ref": "TargetHttpsProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setQuicOverride": {
+ "description": "Sets the QUIC override policy for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setQuicOverride",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to set the QUIC override policy for. The name should conform to RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setQuicOverride",
+ "request": {
+ "$ref": "TargetHttpsProxiesSetQuicOverrideRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslCertificates": {
+ "description": "Replaces SslCertificates for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setSslCertificates",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
+ "request": {
+ "$ref": "TargetHttpsProxiesSetSslCertificatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslPolicy": {
+ "description": "Sets the SSL policy for TargetHttpsProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the HTTPS proxy load balancer. They do not affect the connection between the load balancer and the backends.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setSslPolicy",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setSslPolicy",
+ "request": {
+ "$ref": "SslPolicyReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setUrlMap": {
+ "description": "Changes the URL map for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setUrlMap",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource whose URL map is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
+ "request": {
+ "$ref": "UrlMapReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetInstancesScopedList": {
- "id": "TargetInstancesScopedList",
- "type": "object",
- "properties": {
+ },
"targetInstances": {
- "type": "array",
- "description": "List of target instances contained in this scope.",
- "items": {
- "$ref": "TargetInstance"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target instances.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetInstances",
+ "response": {
+ "$ref": "TargetInstanceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified TargetInstance resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetInstances.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "targetInstance"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "Name of the TargetInstance resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetInstance resource. Get a list of available target instances by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "targetInstance"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "Name of the TargetInstance resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
+ "response": {
+ "$ref": "TargetInstance"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetInstances.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances",
+ "request": {
+ "$ref": "TargetInstance"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances",
+ "response": {
+ "$ref": "TargetInstanceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetInstances.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetPool": {
- "id": "TargetPool",
- "type": "object",
- "description": "A TargetPool resource. This resource defines a pool of instances, an associated HttpHealthCheck resource, and the fallback target pool. (== resource_for beta.targetPools ==) (== resource_for v1.targetPools ==)",
- "properties": {
- "backupPool": {
- "type": "string",
- "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1].\n\nbackupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "failoverRatio": {
- "type": "number",
- "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1].\n\nIf set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
- "format": "float"
- },
- "healthChecks": {
- "type": "array",
- "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. An empty list means all member instances will be considered healthy at all times. Only HttpHealthChecks are supported. Only one health check may be specified.",
- "items": {
- "type": "string"
- }
},
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "instances": {
- "type": "array",
- "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
- "items": {
- "type": "string"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetPool for target pools.",
- "default": "compute#targetPool"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the target pool resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sessionAffinity": {
- "type": "string",
- "description": "Sesssion affinity option, must be one of the following values:\nNONE: Connections from the same client IP may go to any instance in the pool.\nCLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy.\nCLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
- "enum": [
- "CLIENT_IP",
- "CLIENT_IP_PORT_PROTO",
- "CLIENT_IP_PROTO",
- "GENERATED_COOKIE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "TargetPoolAggregatedList": {
- "id": "TargetPoolAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetPool resources.",
- "additionalProperties": {
- "$ref": "TargetPoolsScopedList",
- "description": "Name of the scope containing this set of target pools."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolAggregatedList for aggregated lists of target pools.",
- "default": "compute#targetPoolAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetPoolInstanceHealth": {
- "id": "TargetPoolInstanceHealth",
- "type": "object",
- "properties": {
- "healthStatus": {
- "type": "array",
- "items": {
- "$ref": "HealthStatus"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolInstanceHealth when checking the health of an instance.",
- "default": "compute#targetPoolInstanceHealth"
- }
- }
- },
- "TargetPoolList": {
- "id": "TargetPoolList",
- "type": "object",
- "description": "Contains a list of TargetPool resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetPool resources.",
- "items": {
- "$ref": "TargetPool"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolList for lists of target pools.",
- "default": "compute#targetPoolList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetPoolsAddHealthCheckRequest": {
- "id": "TargetPoolsAddHealthCheckRequest",
- "type": "object",
- "properties": {
- "healthChecks": {
- "type": "array",
- "description": "The HttpHealthCheck to add to the target pool.",
- "items": {
- "$ref": "HealthCheckReference"
- }
- }
- }
- },
- "TargetPoolsAddInstanceRequest": {
- "id": "TargetPoolsAddInstanceRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "A full or partial URL to an instance to add to this target pool. This can be a full or partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name \n- projects/project-id/zones/zone/instances/instance-name \n- zones/zone/instances/instance-name",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "TargetPoolsRemoveHealthCheckRequest": {
- "id": "TargetPoolsRemoveHealthCheckRequest",
- "type": "object",
- "properties": {
- "healthChecks": {
- "type": "array",
- "description": "Health check URL to be removed. This can be a full or valid partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project/global/httpHealthChecks/health-check \n- projects/project/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
- "items": {
- "$ref": "HealthCheckReference"
- }
- }
- }
- },
- "TargetPoolsRemoveInstanceRequest": {
- "id": "TargetPoolsRemoveInstanceRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "URLs of the instances to be removed from target pool.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "TargetPoolsScopedList": {
- "id": "TargetPoolsScopedList",
- "type": "object",
- "properties": {
"targetPools": {
- "type": "array",
- "description": "List of target pools contained in this scope.",
- "items": {
- "$ref": "TargetPool"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "addHealthCheck": {
+ "description": "Adds health check URLs to a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.addHealthCheck",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the target pool to add a health check to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck",
+ "request": {
+ "$ref": "TargetPoolsAddHealthCheckRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "addInstance": {
+ "description": "Adds an instance to a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.addInstance",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to add instances to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/addInstance",
+ "request": {
+ "$ref": "TargetPoolsAddInstanceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target pools.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetPools",
+ "response": {
+ "$ref": "TargetPoolAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified target pool.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetPools.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified target pool. Get a list of available target pools by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}",
+ "response": {
+ "$ref": "TargetPool"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for each IP for the instance that is referenced by the given target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.getHealth",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to which the queried instance belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/getHealth",
+ "request": {
+ "$ref": "InstanceReference"
+ },
+ "response": {
+ "$ref": "TargetPoolInstanceHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a target pool in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools",
+ "request": {
+ "$ref": "TargetPool"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of target pools available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools",
+ "response": {
+ "$ref": "TargetPoolList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "removeHealthCheck": {
+ "description": "Removes health check URL from a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.removeHealthCheck",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the target pool to remove health checks from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck",
+ "request": {
+ "$ref": "TargetPoolsRemoveHealthCheckRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removeInstance": {
+ "description": "Removes instance URL from a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.removeInstance",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to remove instances from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/removeInstance",
+ "request": {
+ "$ref": "TargetPoolsRemoveInstanceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setBackup": {
+ "description": "Changes a backup target pool's configurations.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.setBackup",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "failoverRatio": {
+ "description": "New failoverRatio value for the target pool.",
+ "format": "float",
+ "location": "query",
+ "type": "number"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to set a backup pool for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/setBackup",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetReference": {
- "id": "TargetReference",
- "type": "object",
- "properties": {
- "target": {
- "type": "string"
- }
- }
- },
- "TargetSslProxiesSetBackendServiceRequest": {
- "id": "TargetSslProxiesSetBackendServiceRequest",
- "type": "object",
- "properties": {
- "service": {
- "type": "string",
- "description": "The URL of the new BackendService resource for the targetSslProxy."
- }
- }
- },
- "TargetSslProxiesSetProxyHeaderRequest": {
- "id": "TargetSslProxiesSetProxyHeaderRequest",
- "type": "object",
- "properties": {
- "proxyHeader": {
- "type": "string",
- "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "TargetSslProxiesSetSslCertificatesRequest": {
- "id": "TargetSslProxiesSetSslCertificatesRequest",
- "type": "object",
- "properties": {
- "sslCertificates": {
- "type": "array",
- "description": "New set of URLs to SslCertificate resources to associate with this TargetSslProxy. Currently exactly one ssl certificate must be specified.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetSslProxy": {
- "id": "TargetSslProxy",
- "type": "object",
- "description": "A TargetSslProxy resource. This resource defines an SSL proxy. (== resource_for beta.targetSslProxies ==) (== resource_for v1.targetSslProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
- "default": "compute#targetSslProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "service": {
- "type": "string",
- "description": "URL to the BackendService resource."
- },
- "sslCertificates": {
- "type": "array",
- "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. Currently exactly one SSL certificate must be specified.",
- "items": {
- "type": "string"
- }
},
- "sslPolicy": {
- "type": "string",
- "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured."
- }
- }
- },
- "TargetSslProxyList": {
- "id": "TargetSslProxyList",
- "type": "object",
- "description": "Contains a list of TargetSslProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetSslProxy resources.",
- "items": {
- "$ref": "TargetSslProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetSslProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetTcpProxiesSetBackendServiceRequest": {
- "id": "TargetTcpProxiesSetBackendServiceRequest",
- "type": "object",
- "properties": {
- "service": {
- "type": "string",
- "description": "The URL of the new BackendService resource for the targetTcpProxy."
- }
- }
- },
- "TargetTcpProxiesSetProxyHeaderRequest": {
- "id": "TargetTcpProxiesSetProxyHeaderRequest",
- "type": "object",
- "properties": {
- "proxyHeader": {
- "type": "string",
- "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "TargetTcpProxy": {
- "id": "TargetTcpProxy",
- "type": "object",
- "description": "A TargetTcpProxy resource. This resource defines a TCP proxy. (== resource_for beta.targetTcpProxies ==) (== resource_for v1.targetTcpProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
- "default": "compute#targetTcpProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "service": {
- "type": "string",
- "description": "URL to the BackendService resource."
- }
- }
- },
- "TargetTcpProxyList": {
- "id": "TargetTcpProxyList",
- "type": "object",
- "description": "Contains a list of TargetTcpProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetTcpProxy resources.",
- "items": {
- "$ref": "TargetTcpProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetTcpProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetVpnGateway": {
- "id": "TargetVpnGateway",
- "type": "object",
- "description": "Represents a Target VPN gateway resource. (== resource_for beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "forwardingRules": {
- "type": "array",
- "description": "[Output Only] A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated to a VPN gateway.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGateway"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an TargetVpnGateway.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this TargetVpnGateway resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.targetVpnGateways.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
- "annotations": {
- "required": [
- "compute.targetVpnGateways.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the target VPN gateway resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the VPN gateway.",
- "enum": [
- "CREATING",
- "DELETING",
- "FAILED",
- "READY"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "tunnels": {
- "type": "array",
- "description": "[Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are created using compute.vpntunnels.insert method and associated to a VPN gateway.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetVpnGatewayAggregatedList": {
- "id": "TargetVpnGatewayAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetVpnGateway resources.",
- "additionalProperties": {
- "$ref": "TargetVpnGatewaysScopedList",
- "description": "[Output Only] Name of the scope containing this set of target VPN gateways."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGatewayAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "targetSslProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetSslProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetSslProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetSslProxy resource. Get a list of available target SSL proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetSslProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}",
+ "response": {
+ "$ref": "TargetSslProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies",
+ "request": {
+ "$ref": "TargetSslProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetSslProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetSslProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies",
+ "response": {
+ "$ref": "TargetSslProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setBackendService": {
+ "description": "Changes the BackendService for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setBackendService",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose BackendService resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setBackendService",
+ "request": {
+ "$ref": "TargetSslProxiesSetBackendServiceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setProxyHeader": {
+ "description": "Changes the ProxyHeaderType for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setProxyHeader",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose ProxyHeader is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader",
+ "request": {
+ "$ref": "TargetSslProxiesSetProxyHeaderRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslCertificates": {
+ "description": "Changes SslCertificates for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setSslCertificates",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose SslCertificate resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates",
+ "request": {
+ "$ref": "TargetSslProxiesSetSslCertificatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslPolicy": {
+ "description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setSslPolicy",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
+ "request": {
+ "$ref": "SslPolicyReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetVpnGatewayList": {
- "id": "TargetVpnGatewayList",
- "type": "object",
- "description": "Contains a list of TargetVpnGateway resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetVpnGateway resources.",
- "items": {
- "$ref": "TargetVpnGateway"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGatewayList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "targetTcpProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetTcpProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetTcpProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetTcpProxy resource. Get a list of available target TCP proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetTcpProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
+ "response": {
+ "$ref": "TargetTcpProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies",
+ "request": {
+ "$ref": "TargetTcpProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetTcpProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetTcpProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies",
+ "response": {
+ "$ref": "TargetTcpProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setBackendService": {
+ "description": "Changes the BackendService for TargetTcpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.setBackendService",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource whose BackendService resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService",
+ "request": {
+ "$ref": "TargetTcpProxiesSetBackendServiceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setProxyHeader": {
+ "description": "Changes the ProxyHeaderType for TargetTcpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.setProxyHeader",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource whose ProxyHeader is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader",
+ "request": {
+ "$ref": "TargetTcpProxiesSetProxyHeaderRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "TargetVpnGatewaysScopedList": {
- "id": "TargetVpnGatewaysScopedList",
- "type": "object",
- "properties": {
+ },
"targetVpnGateways": {
- "type": "array",
- "description": "[Output Only] List of target vpn gateways contained in this scope.",
- "items": {
- "$ref": "TargetVpnGateway"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target VPN gateways.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetVpnGateways",
+ "response": {
+ "$ref": "TargetVpnGatewayAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified target VPN gateway.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetVpnGateways.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetVpnGateway"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "Name of the target VPN gateway to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified target VPN gateway. Get a list of available target VPN gateways by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetVpnGateway"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "Name of the target VPN gateway to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
+ "response": {
+ "$ref": "TargetVpnGateway"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetVpnGateways.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways",
+ "request": {
+ "$ref": "TargetVpnGateway"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of target VPN gateways available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways",
+ "response": {
+ "$ref": "TargetVpnGatewayList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a TargetVpnGateway. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.targetVpnGateways.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.targetVpnGateways.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "TestFailure": {
- "id": "TestFailure",
- "type": "object",
- "properties": {
- "actualService": {
- "type": "string"
},
- "expectedService": {
- "type": "string"
+ "urlMaps": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified UrlMap resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.urlMaps.delete",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified UrlMap resource. Get a list of available URL maps by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.urlMaps.get",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "response": {
+ "$ref": "UrlMap"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "invalidateCache": {
+ "description": "Initiates a cache invalidation operation, invalidating the specified path, scoped to the specified UrlMap.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.invalidateCache",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}/invalidateCache",
+ "request": {
+ "$ref": "CacheInvalidationRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of UrlMap resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.urlMaps.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps",
+ "response": {
+ "$ref": "UrlMapList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified UrlMap resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.urlMaps.patch",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified UrlMap resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.urlMaps.update",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "validate": {
+ "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.validate",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to be validated as.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}/validate",
+ "request": {
+ "$ref": "UrlMapsValidateRequest"
+ },
+ "response": {
+ "$ref": "UrlMapsValidateResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "host": {
- "type": "string"
+ "vpnTunnels": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of VPN tunnels.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/vpnTunnels",
+ "response": {
+ "$ref": "VpnTunnelAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified VpnTunnel resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.vpnTunnels.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "vpnTunnel"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "vpnTunnel": {
+ "description": "Name of the VpnTunnel resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified VpnTunnel resource. Get a list of available VPN tunnels by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "vpnTunnel"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "vpnTunnel": {
+ "description": "Name of the VpnTunnel resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
+ "response": {
+ "$ref": "VpnTunnel"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.vpnTunnels.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels",
+ "request": {
+ "$ref": "VpnTunnel"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels",
+ "response": {
+ "$ref": "VpnTunnelList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a VpnTunnel. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.vpnTunnels.setLabels",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{resource}/setLabels",
+ "request": {
+ "$ref": "RegionSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "testIamPermissions": {
+ "description": "Returns permissions that a caller has on the specified resource.",
+ "httpMethod": "POST",
+ "id": "compute.vpnTunnels.testIamPermissions",
+ "parameterOrder": [
+ "project",
+ "region",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "The name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{resource}/testIamPermissions",
+ "request": {
+ "$ref": "TestPermissionsRequest"
+ },
+ "response": {
+ "$ref": "TestPermissionsResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "path": {
- "type": "string"
- }
- }
- },
- "TestPermissionsRequest": {
- "id": "TestPermissionsRequest",
- "type": "object",
- "properties": {
- "permissions": {
- "type": "array",
- "description": "The set of permissions to check for the 'resource'. Permissions with wildcards (such as '*' or 'storage.*') are not allowed.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TestPermissionsResponse": {
- "id": "TestPermissionsResponse",
- "type": "object",
- "properties": {
- "permissions": {
- "type": "array",
- "description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "UDPHealthCheck": {
- "id": "UDPHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The UDP port number for the health check request. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "request": {
- "type": "string",
- "description": "Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII."
- }
- }
- },
- "UrlMap": {
- "id": "UrlMap",
- "type": "object",
- "description": "A UrlMap resource. This resource defines the mapping from URL to the BackendService resource, based on the \"longest-match\" of the URL's host and path.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultService": {
- "type": "string",
- "description": "The URL of the BackendService resource if none of the hostRules match."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap.",
- "format": "byte"
- },
- "hostRules": {
- "type": "array",
- "description": "The list of HostRules to use against the URL.",
- "items": {
- "$ref": "HostRule"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#urlMaps for url maps.",
- "default": "compute#urlMap"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "pathMatchers": {
- "type": "array",
- "description": "The list of named PathMatchers to use against the URL.",
- "items": {
- "$ref": "PathMatcher"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "tests": {
- "type": "array",
- "description": "The list of expected URL mappings. Request to update this UrlMap will succeed only if all of the test cases pass.",
- "items": {
- "$ref": "UrlMapTest"
- }
- }
- }
- },
- "UrlMapList": {
- "id": "UrlMapList",
- "type": "object",
- "description": "Contains a list of UrlMap resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of UrlMap resources.",
- "items": {
- "$ref": "UrlMap"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#urlMapList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "zoneOperations": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified zone-specific Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.zoneOperations.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified zone-specific Operations resource.",
+ "httpMethod": "GET",
+ "id": "compute.zoneOperations.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.zoneOperations.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
+ },
+ "zones": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified Zone resource. Get a list of available zones by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.zones.get",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}",
+ "response": {
+ "$ref": "Zone"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Zone resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.zones.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones",
+ "response": {
+ "$ref": "ZoneList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "UrlMapReference": {
- "id": "UrlMapReference",
- "type": "object",
- "properties": {
- "urlMap": {
- "type": "string"
- }
- }
- },
- "UrlMapTest": {
- "id": "UrlMapTest",
- "type": "object",
- "description": "Message for the expected URL mappings.",
- "properties": {
- "description": {
- "type": "string",
- "description": "Description of this test case."
- },
- "host": {
- "type": "string",
- "description": "Host portion of the URL."
- },
- "path": {
- "type": "string",
- "description": "Path portion of the URL."
- },
- "service": {
- "type": "string",
- "description": "Expected BackendService resource the given URL should be mapped to."
}
- }
},
- "UrlMapValidationResult": {
- "id": "UrlMapValidationResult",
- "type": "object",
- "description": "Message representing the validation result for a UrlMap.",
- "properties": {
- "loadErrors": {
- "type": "array",
- "items": {
- "type": "string"
- }
+ "revision": "20180220",
+ "rootUrl": "https://www.googleapis.com/",
+ "schemas": {
+ "AcceleratorConfig": {
+ "description": "A specification of the type and number of accelerator cards attached to the instance.",
+ "id": "AcceleratorConfig",
+ "properties": {
+ "acceleratorCount": {
+ "description": "The number of the guest accelerator cards exposed to this instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "acceleratorType": {
+ "description": "Full or partial URL of the accelerator type resource to attach to this instance. If you are creating an instance template, specify only the accelerator name.",
+ "type": "string"
+ }
+ },
+ "type": "object"
},
- "loadSucceeded": {
- "type": "boolean",
- "description": "Whether the given UrlMap can be successfully loaded. If false, 'loadErrors' indicates the reasons."
+ "AcceleratorType": {
+ "description": "An Accelerator Type resource. (== resource_for beta.acceleratorTypes ==) (== resource_for v1.acceleratorTypes ==)",
+ "id": "AcceleratorType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this accelerator type."
+ },
+ "description": {
+ "description": "[Output Only] An optional textual description of the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#acceleratorType",
+ "description": "[Output Only] The type of the resource. Always compute#acceleratorType for accelerator types.",
+ "type": "string"
+ },
+ "maximumCardsPerInstance": {
+ "description": "[Output Only] Maximum accelerator cards allowed per instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The name of the zone where the accelerator type resides, such as us-central1-a. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
},
- "testFailures": {
- "type": "array",
- "items": {
- "$ref": "TestFailure"
- }
+ "AcceleratorTypeAggregatedList": {
+ "id": "AcceleratorTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AcceleratorTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of accelerator types."
+ },
+ "description": "A list of AcceleratorTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#acceleratorTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#acceleratorTypeAggregatedList for aggregated lists of accelerator types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
},
- "testPassed": {
- "type": "boolean",
- "description": "If successfully loaded, this field indicates whether the test passed. If false, 'testFailures's indicate the reason of failure."
- }
- }
- },
- "UrlMapsValidateRequest": {
- "id": "UrlMapsValidateRequest",
- "type": "object",
- "properties": {
- "resource": {
- "$ref": "UrlMap",
- "description": "Content of the UrlMap to be validated."
- }
- }
- },
- "UrlMapsValidateResponse": {
- "id": "UrlMapsValidateResponse",
- "type": "object",
- "properties": {
- "result": {
- "$ref": "UrlMapValidationResult"
- }
- }
- },
- "UsageExportLocation": {
- "id": "UsageExportLocation",
- "type": "object",
- "description": "The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix.",
- "properties": {
- "bucketName": {
- "type": "string",
- "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket."
- },
- "reportNamePrefix": {
- "type": "string",
- "description": "An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions."
- }
- }
- },
- "VpnTunnel": {
- "id": "VpnTunnel",
- "type": "object",
- "description": "VPN tunnel resource. (== resource_for beta.vpnTunnels ==) (== resource_for v1.vpnTunnels ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "detailedStatus": {
- "type": "string",
- "description": "[Output Only] Detailed status message for the VPN tunnel."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ikeVersion": {
- "type": "integer",
- "description": "IKE protocol version to use when establishing the VPN tunnel with peer VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.",
- "format": "int32"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnel"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a VpnTunnel.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this VpnTunnel. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
+ "AcceleratorTypeList": {
+ "description": "Contains a list of accelerator types.",
+ "id": "AcceleratorTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of AcceleratorType resources.",
+ "items": {
+ "$ref": "AcceleratorType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#acceleratorTypeList",
+ "description": "[Output Only] Type of resource. Always compute#acceleratorTypeList for lists of accelerator types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
},
- "localTrafficSelector": {
- "type": "array",
- "description": "Local traffic selector to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.vpnTunnels.insert"
- ]
- }
- },
- "peerIp": {
- "type": "string",
- "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the VPN tunnel resides."
- },
- "remoteTrafficSelector": {
- "type": "array",
- "description": "Remote traffic selectors to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "router": {
- "type": "string",
- "description": "URL of router resource to be used for dynamic routing."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sharedSecret": {
- "type": "string",
- "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
- },
- "sharedSecretHash": {
- "type": "string",
- "description": "Hash of the shared secret."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the VPN tunnel.",
- "enum": [
- "ALLOCATING_RESOURCES",
- "AUTHORIZATION_ERROR",
- "DEPROVISIONING",
- "ESTABLISHED",
- "FAILED",
- "FIRST_HANDSHAKE",
- "NEGOTIATION_FAILURE",
- "NETWORK_ERROR",
- "NO_INCOMING_PACKETS",
- "PROVISIONING",
- "REJECTED",
- "WAITING_FOR_FULL_CONFIG"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "targetVpnGateway": {
- "type": "string",
- "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
- "annotations": {
- "required": [
- "compute.vpnTunnels.insert"
- ]
- }
- }
- }
- },
- "VpnTunnelAggregatedList": {
- "id": "VpnTunnelAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of VpnTunnelsScopedList resources.",
- "additionalProperties": {
- "$ref": "VpnTunnelsScopedList",
- "description": "Name of the scope containing this set of vpn tunnels."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnelAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "VpnTunnelList": {
- "id": "VpnTunnelList",
- "type": "object",
- "description": "Contains a list of VpnTunnel resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of VpnTunnel resources.",
- "items": {
- "$ref": "VpnTunnel"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnelList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "VpnTunnelsScopedList": {
- "id": "VpnTunnelsScopedList",
- "type": "object",
- "properties": {
- "vpnTunnels": {
- "type": "array",
- "description": "List of vpn tunnels contained in this scope.",
- "items": {
- "$ref": "VpnTunnel"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "XpnHostList": {
- "id": "XpnHostList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output Only] A list of shared VPC host project URLs.",
- "items": {
- "$ref": "Project"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#xpnHostList for lists of shared VPC hosts.",
- "default": "compute#xpnHostList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "XpnResourceId": {
- "id": "XpnResourceId",
- "type": "object",
- "description": "Service resource (a.k.a service project) ID.",
- "properties": {
- "id": {
- "type": "string",
- "description": "The ID of the service resource. In the case of projects, this field matches the project ID (e.g., my-project), not the project number (e.g., 12345678)."
- },
- "type": {
- "type": "string",
- "description": "The type of the service resource.",
- "enum": [
- "PROJECT",
- "XPN_RESOURCE_TYPE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "Zone": {
- "id": "Zone",
- "type": "object",
- "description": "A Zone resource. (== resource_for beta.zones ==) (== resource_for v1.zones ==)",
- "properties": {
- "availableCpuPlatforms": {
- "type": "array",
- "description": "[Output Only] Available cpu/platform selections for the zone.",
- "items": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this zone."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#zone for zones.",
- "default": "compute#zone"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] Full URL reference to the region which hosts the zone."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the zone, either UP or DOWN.",
- "enum": [
- "DOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "ZoneList": {
- "id": "ZoneList",
- "type": "object",
- "description": "Contains a list of zone resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Zone resources.",
- "items": {
- "$ref": "Zone"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#zoneList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "ZoneSetLabelsRequest": {
- "id": "ZoneSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "The labels to set for this resource.",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- }
- },
- "resources": {
- "acceleratorTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.acceleratorTypes.aggregatedList",
- "path": "{project}/aggregated/acceleratorTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of accelerator types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AcceleratorTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.acceleratorTypes.get",
- "path": "{project}/zones/{zone}/acceleratorTypes/{acceleratorType}",
- "httpMethod": "GET",
- "description": "Returns the specified accelerator type. Get a list of available accelerator types by making a list() request.",
- "parameters": {
- "acceleratorType": {
- "type": "string",
- "description": "Name of the accelerator type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "acceleratorType"
- ],
- "response": {
- "$ref": "AcceleratorType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.acceleratorTypes.list",
- "path": "{project}/zones/{zone}/acceleratorTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of accelerator types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "AcceleratorTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "addresses": {
- "methods": {
- "aggregatedList": {
- "id": "compute.addresses.aggregatedList",
- "path": "{project}/aggregated/addresses",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of addresses.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AddressAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.addresses.delete",
- "path": "{project}/regions/{region}/addresses/{address}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "address"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.addresses.get",
- "path": "{project}/regions/{region}/addresses/{address}",
- "httpMethod": "GET",
- "description": "Returns the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "address"
- ],
- "response": {
- "$ref": "Address"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.addresses.insert",
- "path": "{project}/regions/{region}/addresses",
- "httpMethod": "POST",
- "description": "Creates an address resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Address"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.addresses.list",
- "path": "{project}/regions/{region}/addresses",
- "httpMethod": "GET",
- "description": "Retrieves a list of addresses contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "AddressList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.addresses.setLabels",
- "path": "{project}/regions/{region}/addresses/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on an Address. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.addresses.testIamPermissions",
- "path": "{project}/regions/{region}/addresses/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "autoscalers": {
- "methods": {
- "aggregatedList": {
- "id": "compute.autoscalers.aggregatedList",
- "path": "{project}/aggregated/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of autoscalers.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AutoscalerAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.autoscalers.delete",
- "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "autoscaler"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.autoscalers.get",
- "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
- "httpMethod": "GET",
- "description": "Returns the specified autoscaler resource. Get a list of available autoscalers by making a list() request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "autoscaler"
- ],
- "response": {
- "$ref": "Autoscaler"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.autoscalers.insert",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "POST",
- "description": "Creates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.autoscalers.list",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves a list of autoscalers contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "AutoscalerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.autoscalers.patch",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "PATCH",
- "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to patch.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.autoscalers.testIamPermissions",
- "path": "{project}/zones/{zone}/autoscalers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.autoscalers.update",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "PUT",
- "description": "Updates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to update.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "backendBuckets": {
- "methods": {
- "addSignedUrlKey": {
- "id": "compute.backendBuckets.addSignedUrlKey",
- "path": "{project}/global/backendBuckets/{backendBucket}/addSignedUrlKey",
- "httpMethod": "POST",
- "description": "Adds the given Signed URL Key to the backend bucket.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "SignedUrlKey"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.backendBuckets.delete",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified BackendBucket resource.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteSignedUrlKey": {
- "id": "compute.backendBuckets.deleteSignedUrlKey",
- "path": "{project}/global/backendBuckets/{backendBucket}/deleteSignedUrlKey",
- "httpMethod": "POST",
- "description": "Deletes the given Signed URL Key from the backend bucket.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "keyName": {
- "type": "string",
- "description": "The name of the Signed URL Key to delete.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket",
- "keyName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.backendBuckets.get",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "GET",
- "description": "Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "response": {
- "$ref": "BackendBucket"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.backendBuckets.insert",
- "path": "{project}/global/backendBuckets",
- "httpMethod": "POST",
- "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.backendBuckets.list",
- "path": "{project}/global/backendBuckets",
- "httpMethod": "GET",
- "description": "Retrieves the list of BackendBucket resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendBucketList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.backendBuckets.patch",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "PATCH",
- "description": "Updates the specified BackendBucket resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.backendBuckets.update",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "PUT",
- "description": "Updates the specified BackendBucket resource with the data included in the request.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "backendServices": {
- "methods": {
- "addSignedUrlKey": {
- "id": "compute.backendServices.addSignedUrlKey",
- "path": "{project}/global/backendServices/{backendService}/addSignedUrlKey",
- "httpMethod": "POST",
- "description": "Adds the given Signed URL Key to the specified backend service.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "SignedUrlKey"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.backendServices.aggregatedList",
- "path": "{project}/aggregated/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of all BackendService resources, regional and global, available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Name of the project scoping this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendServiceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.backendServices.delete",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteSignedUrlKey": {
- "id": "compute.backendServices.deleteSignedUrlKey",
- "path": "{project}/global/backendServices/{backendService}/deleteSignedUrlKey",
- "httpMethod": "POST",
- "description": "Deletes the given Signed URL Key from the specified backend service.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the Signed URL Key should be added. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "keyName": {
- "type": "string",
- "description": "The name of the Signed URL Key to delete.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService",
- "keyName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.backendServices.get",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "GET",
- "description": "Returns the specified BackendService resource. Get a list of available backend services by making a list() request.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "response": {
- "$ref": "BackendService"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.backendServices.getHealth",
- "path": "{project}/global/backendServices/{backendService}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for this BackendService.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "ResourceGroupReference"
- },
- "response": {
- "$ref": "BackendServiceGroupHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.backendServices.insert",
- "path": "{project}/global/backendServices",
- "httpMethod": "POST",
- "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.backendServices.list",
- "path": "{project}/global/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of BackendService resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendServiceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.backendServices.patch",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "PATCH",
- "description": "Patches the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSecurityPolicy": {
- "id": "compute.backendServices.setSecurityPolicy",
- "path": "{project}/global/backendServices/{backendService}/setSecurityPolicy",
- "httpMethod": "POST",
- "description": "Sets the security policy for the specified backend service.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the security policy should be set. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "SecurityPolicyReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.backendServices.testIamPermissions",
- "path": "{project}/global/backendServices/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.backendServices.update",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "PUT",
- "description": "Updates the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "diskTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.diskTypes.aggregatedList",
- "path": "{project}/aggregated/diskTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of disk types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "DiskTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.diskTypes.get",
- "path": "{project}/zones/{zone}/diskTypes/{diskType}",
- "httpMethod": "GET",
- "description": "Returns the specified disk type. Get a list of available disk types by making a list() request.",
- "parameters": {
- "diskType": {
- "type": "string",
- "description": "Name of the disk type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "diskType"
- ],
- "response": {
- "$ref": "DiskType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.diskTypes.list",
- "path": "{project}/zones/{zone}/diskTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of disk types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "DiskTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "disks": {
- "methods": {
- "aggregatedList": {
- "id": "compute.disks.aggregatedList",
- "path": "{project}/aggregated/disks",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of persistent disks.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "DiskAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "createSnapshot": {
- "id": "compute.disks.createSnapshot",
- "path": "{project}/zones/{zone}/disks/{disk}/createSnapshot",
- "httpMethod": "POST",
- "description": "Creates a snapshot of a specified persistent disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to snapshot.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "guestFlush": {
- "type": "boolean",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "request": {
- "$ref": "Snapshot"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.disks.delete",
- "path": "{project}/zones/{zone}/disks/{disk}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified persistent disk. Deleting a disk removes its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.disks.get",
- "path": "{project}/zones/{zone}/disks/{disk}",
- "httpMethod": "GET",
- "description": "Returns a specified persistent disk. Get a list of available persistent disks by making a list() request.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "response": {
- "$ref": "Disk"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.disks.insert",
- "path": "{project}/zones/{zone}/disks",
- "httpMethod": "POST",
- "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk with a sourceImage, a sourceSnapshot, or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sourceImage": {
- "type": "string",
- "description": "Optional. Source image to restore onto a disk.",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Disk"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.disks.list",
- "path": "{project}/zones/{zone}/disks",
- "httpMethod": "GET",
- "description": "Retrieves a list of persistent disks contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "DiskList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "resize": {
- "id": "compute.disks.resize",
- "path": "{project}/zones/{zone}/disks/{disk}/resize",
- "httpMethod": "POST",
- "description": "Resizes the specified persistent disk. You can only increase the size of the disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "The name of the persistent disk.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "request": {
- "$ref": "DisksResizeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.disks.setLabels",
- "path": "{project}/zones/{zone}/disks/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a disk. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "ZoneSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.disks.testIamPermissions",
- "path": "{project}/zones/{zone}/disks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "firewalls": {
- "methods": {
- "delete": {
- "id": "compute.firewalls.delete",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified firewall.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.firewalls.get",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "GET",
- "description": "Returns the specified firewall.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "response": {
- "$ref": "Firewall"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.firewalls.insert",
- "path": "{project}/global/firewalls",
- "httpMethod": "POST",
- "description": "Creates a firewall rule in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.firewalls.list",
- "path": "{project}/global/firewalls",
- "httpMethod": "GET",
- "description": "Retrieves the list of firewall rules available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "FirewallList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.firewalls.patch",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "PATCH",
- "description": "Updates the specified firewall rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.firewalls.testIamPermissions",
- "path": "{project}/global/firewalls/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.firewalls.update",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "PUT",
- "description": "Updates the specified firewall rule with the data included in the request. Using PUT method, can only update following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "forwardingRules": {
- "methods": {
- "aggregatedList": {
- "id": "compute.forwardingRules.aggregatedList",
- "path": "{project}/aggregated/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of forwarding rules.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ForwardingRuleAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.forwardingRules.delete",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified ForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.forwardingRules.get",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
- "httpMethod": "GET",
- "description": "Returns the specified ForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "response": {
- "$ref": "ForwardingRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.forwardingRules.insert",
- "path": "{project}/regions/{region}/forwardingRules",
- "httpMethod": "POST",
- "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.forwardingRules.list",
- "path": "{project}/regions/{region}/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "ForwardingRuleList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.forwardingRules.setLabels",
- "path": "{project}/regions/{region}/forwardingRules/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTarget": {
- "id": "compute.forwardingRules.setTarget",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget",
- "httpMethod": "POST",
- "description": "Changes target URL for forwarding rule. The new target should be of the same type as the old target.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource in which target is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.forwardingRules.testIamPermissions",
- "path": "{project}/regions/{region}/forwardingRules/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "globalAddresses": {
- "methods": {
- "delete": {
- "id": "compute.globalAddresses.delete",
- "path": "{project}/global/addresses/{address}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "address"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalAddresses.get",
- "path": "{project}/global/addresses/{address}",
- "httpMethod": "GET",
- "description": "Returns the specified address resource. Get a list of available addresses by making a list() request.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "address"
- ],
- "response": {
- "$ref": "Address"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.globalAddresses.insert",
- "path": "{project}/global/addresses",
- "httpMethod": "POST",
- "description": "Creates an address resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Address"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.globalAddresses.list",
- "path": "{project}/global/addresses",
- "httpMethod": "GET",
- "description": "Retrieves a list of global addresses.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AddressList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.globalAddresses.setLabels",
- "path": "{project}/global/addresses/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a GlobalAddress. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.globalAddresses.testIamPermissions",
- "path": "{project}/global/addresses/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "globalForwardingRules": {
- "methods": {
- "delete": {
- "id": "compute.globalForwardingRules.delete",
- "path": "{project}/global/forwardingRules/{forwardingRule}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified GlobalForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalForwardingRules.get",
- "path": "{project}/global/forwardingRules/{forwardingRule}",
- "httpMethod": "GET",
- "description": "Returns the specified GlobalForwardingRule resource. Get a list of available forwarding rules by making a list() request.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "response": {
- "$ref": "ForwardingRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.globalForwardingRules.insert",
- "path": "{project}/global/forwardingRules",
- "httpMethod": "POST",
- "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.globalForwardingRules.list",
- "path": "{project}/global/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves a list of GlobalForwardingRule resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ForwardingRuleList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.globalForwardingRules.setLabels",
- "path": "{project}/global/forwardingRules/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on the specified resource. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTarget": {
- "id": "compute.globalForwardingRules.setTarget",
- "path": "{project}/global/forwardingRules/{forwardingRule}/setTarget",
- "httpMethod": "POST",
- "description": "Changes target URL for the GlobalForwardingRule resource. The new target should be of the same type as the old target.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource in which target is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.globalForwardingRules.testIamPermissions",
- "path": "{project}/global/forwardingRules/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "globalOperations": {
- "methods": {
- "aggregatedList": {
- "id": "compute.globalOperations.aggregatedList",
- "path": "{project}/aggregated/operations",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of all operations.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "OperationAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.globalOperations.delete",
- "path": "{project}/global/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalOperations.get",
- "path": "{project}/global/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified Operations resource. Get a list of operations by making a list() request.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.globalOperations.list",
- "path": "{project}/global/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "healthChecks": {
- "methods": {
- "delete": {
- "id": "compute.healthChecks.delete",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HealthCheck resource.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.healthChecks.get",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HealthCheck resource. Get a list of available health checks by making a list() request.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "response": {
- "$ref": "HealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.healthChecks.insert",
- "path": "{project}/global/healthChecks",
- "httpMethod": "POST",
- "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.healthChecks.list",
- "path": "{project}/global/healthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.healthChecks.patch",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.healthChecks.testIamPermissions",
- "path": "{project}/global/healthChecks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.healthChecks.update",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "httpHealthChecks": {
- "methods": {
- "delete": {
- "id": "compute.httpHealthChecks.delete",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HttpHealthCheck resource.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.httpHealthChecks.get",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HttpHealthCheck resource. Get a list of available HTTP health checks by making a list() request.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "response": {
- "$ref": "HttpHealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.httpHealthChecks.insert",
- "path": "{project}/global/httpHealthChecks",
- "httpMethod": "POST",
- "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.httpHealthChecks.list",
- "path": "{project}/global/httpHealthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HttpHealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HttpHealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.httpHealthChecks.patch",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.httpHealthChecks.testIamPermissions",
- "path": "{project}/global/httpHealthChecks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.httpHealthChecks.update",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "httpsHealthChecks": {
- "methods": {
- "delete": {
- "id": "compute.httpsHealthChecks.delete",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HttpsHealthCheck resource.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.httpsHealthChecks.get",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HttpsHealthCheck resource. Get a list of available HTTPS health checks by making a list() request.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "response": {
- "$ref": "HttpsHealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.httpsHealthChecks.insert",
- "path": "{project}/global/httpsHealthChecks",
- "httpMethod": "POST",
- "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.httpsHealthChecks.list",
- "path": "{project}/global/httpsHealthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HttpsHealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HttpsHealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.httpsHealthChecks.patch",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.httpsHealthChecks.testIamPermissions",
- "path": "{project}/global/httpsHealthChecks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.httpsHealthChecks.update",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "images": {
- "methods": {
- "delete": {
- "id": "compute.images.delete",
- "path": "{project}/global/images/{image}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified image.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Name of the image resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deprecate": {
- "id": "compute.images.deprecate",
- "path": "{project}/global/images/{image}/deprecate",
- "httpMethod": "POST",
- "description": "Sets the deprecation status of an image.\n\nIf an empty request body is given, clears the deprecation status instead.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Image name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "request": {
- "$ref": "DeprecationStatus"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.images.get",
- "path": "{project}/global/images/{image}",
- "httpMethod": "GET",
- "description": "Returns the specified image. Get a list of available images by making a list() request.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Name of the image resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "response": {
- "$ref": "Image"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getFromFamily": {
- "id": "compute.images.getFromFamily",
- "path": "{project}/global/images/family/{family}",
- "httpMethod": "GET",
- "description": "Returns the latest image that is part of an image family and is not deprecated.",
- "parameters": {
- "family": {
- "type": "string",
- "description": "Name of the image family to search for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "family"
- ],
- "response": {
- "$ref": "Image"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.images.insert",
- "path": "{project}/global/images",
- "httpMethod": "POST",
- "description": "Creates an image in the specified project using the data included in the request.",
- "parameters": {
- "forceCreate": {
- "type": "boolean",
- "description": "Force image creation if true.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Image"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- },
- "list": {
- "id": "compute.images.list",
- "path": "{project}/global/images",
- "httpMethod": "GET",
- "description": "Retrieves the list of custom images available to the specified project. Custom images are images you create that belong to your project. This method does not get any images that belong to other projects, including publicly-available images, like Debian 8. If you want to get a list of publicly-available images, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ImageList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.images.setLabels",
- "path": "{project}/global/images/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on an image. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.images.testIamPermissions",
- "path": "{project}/global/images/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "instanceGroupManagers": {
- "methods": {
- "abandonInstances": {
- "id": "compute.instanceGroupManagers.abandonInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersAbandonInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instanceGroupManagers.aggregatedList",
- "path": "{project}/aggregated/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves the list of managed instance groups and groups them by zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceGroupManagerAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.instanceGroupManagers.delete",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read Deleting an instance group for more information.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteInstances": {
- "id": "compute.instanceGroupManagers.deleteInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersDeleteInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceGroupManagers.get",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "GET",
- "description": "Returns all of the details about the specified managed instance group. Get a list of available managed instance groups by making a list() request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManager"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceGroupManagers.insert",
- "path": "{project}/zones/{zone}/instanceGroupManagers",
- "httpMethod": "POST",
- "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the managed instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceGroupManagers.list",
- "path": "{project}/zones/{zone}/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves a list of managed instance groups that are contained within the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceGroupManagerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listManagedInstances": {
- "id": "compute.instanceGroupManagers.listManagedInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
- "httpMethod": "POST",
- "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManagersListManagedInstancesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.instanceGroupManagers.patch",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PATCH",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listManagedInstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the managed instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "recreateInstances": {
- "id": "compute.instanceGroupManagers.recreateInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersRecreateInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resize": {
- "id": "compute.instanceGroupManagers.resize",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize",
- "httpMethod": "POST",
- "description": "Resizes the managed instance group. If you increase the size, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "size": {
- "type": "integer",
- "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
- "required": true,
- "format": "int32",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager",
- "size"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resizeAdvanced": {
- "id": "compute.instanceGroupManagers.resizeAdvanced",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resizeAdvanced",
- "httpMethod": "POST",
- "description": "Resizes the managed instance group with advanced configuration options like disabling creation retries. This is an extended version of the resize method.\n\nIf you increase the size of the instance group, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating, creatingWithoutRetries, or deleting actions with the get or listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersResizeAdvancedRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setAutoHealingPolicies": {
- "id": "compute.instanceGroupManagers.setAutoHealingPolicies",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
- "httpMethod": "POST",
- "description": "Modifies the autohealing policies.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetAutoHealingRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setInstanceTemplate": {
- "id": "compute.instanceGroupManagers.setInstanceTemplate",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
- "httpMethod": "POST",
- "description": "Specifies the instance template to use when creating new instances in this group. The templates for existing instances in the group do not change unless you recreate them.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetInstanceTemplateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTargetPools": {
- "id": "compute.instanceGroupManagers.setTargetPools",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
- "httpMethod": "POST",
- "description": "Modifies the target pools to which all instances in this managed instance group are assigned. The target pools automatically apply to all of the instances in the managed instance group. This operation is marked DONE when you make the request even if the instances have not yet been added to their target pools. The change might take some time to apply to all of the instances in the group depending on the size of the group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetTargetPoolsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instanceGroupManagers.testIamPermissions",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.instanceGroupManagers.update",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PUT",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listManagedInstances method.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the managed instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "instanceGroups": {
- "methods": {
- "addInstances": {
- "id": "compute.instanceGroups.addInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
- "httpMethod": "POST",
- "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork. Read Adding instances for more information.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where you are adding instances.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsAddInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instanceGroups.aggregatedList",
- "path": "{project}/aggregated/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance groups and sorts them by zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceGroupAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.instanceGroups.delete",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read Deleting an instance group for more information.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceGroups.get",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
- "httpMethod": "GET",
- "description": "Returns the specified instance group. Get a list of available instance groups by making a list() request.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "response": {
- "$ref": "InstanceGroup"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceGroups.insert",
- "path": "{project}/zones/{zone}/instanceGroups",
- "httpMethod": "POST",
- "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "InstanceGroup"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceGroups.list",
- "path": "{project}/zones/{zone}/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance groups that are located in the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceGroupList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listInstances": {
- "id": "compute.instanceGroups.listInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the specified instance group.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group from which you want to generate a list of included instances.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsListInstancesRequest"
- },
- "response": {
- "$ref": "InstanceGroupsListInstances"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "removeInstances": {
- "id": "compute.instanceGroups.removeInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances",
- "httpMethod": "POST",
- "description": "Removes one or more instances from the specified instance group, but does not delete those instances.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where the specified instances will be removed.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsRemoveInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setNamedPorts": {
- "id": "compute.instanceGroups.setNamedPorts",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts",
- "httpMethod": "POST",
- "description": "Sets the named ports for the specified instance group.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where the named ports are updated.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsSetNamedPortsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instanceGroups.testIamPermissions",
- "path": "{project}/zones/{zone}/instanceGroups/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "instanceTemplates": {
- "methods": {
- "delete": {
- "id": "compute.instanceTemplates.delete",
- "path": "{project}/global/instanceTemplates/{instanceTemplate}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified instance template. If you delete an instance template that is being referenced from another instance group, the instance group will not be able to create or recreate virtual machine instances. Deleting an instance template is permanent and cannot be undone.",
- "parameters": {
- "instanceTemplate": {
- "type": "string",
- "description": "The name of the instance template to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "instanceTemplate"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceTemplates.get",
- "path": "{project}/global/instanceTemplates/{instanceTemplate}",
- "httpMethod": "GET",
- "description": "Returns the specified instance template. Get a list of available instance templates by making a list() request.",
- "parameters": {
- "instanceTemplate": {
- "type": "string",
- "description": "The name of the instance template.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "instanceTemplate"
- ],
- "response": {
- "$ref": "InstanceTemplate"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceTemplates.insert",
- "path": "{project}/global/instanceTemplates",
- "httpMethod": "POST",
- "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "InstanceTemplate"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceTemplates.list",
- "path": "{project}/global/instanceTemplates",
- "httpMethod": "GET",
- "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceTemplateList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instanceTemplates.testIamPermissions",
- "path": "{project}/global/instanceTemplates/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "instances": {
- "methods": {
- "addAccessConfig": {
- "id": "compute.instances.addAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/addAccessConfig",
- "httpMethod": "POST",
- "description": "Adds an access config to an instance's network interface.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface to add to this instance.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "networkInterface"
- ],
- "request": {
- "$ref": "AccessConfig"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instances.aggregatedList",
- "path": "{project}/aggregated/instances",
- "httpMethod": "GET",
- "description": "Retrieves aggregated list of instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "attachDisk": {
- "id": "compute.instances.attachDisk",
- "path": "{project}/zones/{zone}/instances/{instance}/attachDisk",
- "httpMethod": "POST",
- "description": "Attaches an existing Disk resource to an instance. You must first create the disk before you can attach it. It is not possible to create and attach a disk at the same time. For more information, read Adding a persistent disk to your instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "AttachedDisk"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.instances.delete",
- "path": "{project}/zones/{zone}/instances/{instance}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Instance resource. For more information, see Stopping or Deleting an Instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteAccessConfig": {
- "id": "compute.instances.deleteAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/deleteAccessConfig",
- "httpMethod": "POST",
- "description": "Deletes an access config from an instance's network interface.",
- "parameters": {
- "accessConfig": {
- "type": "string",
- "description": "The name of the access config to delete.",
- "required": true,
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "accessConfig",
- "networkInterface"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "detachDisk": {
- "id": "compute.instances.detachDisk",
- "path": "{project}/zones/{zone}/instances/{instance}/detachDisk",
- "httpMethod": "POST",
- "description": "Detaches a disk from an instance.",
- "parameters": {
- "deviceName": {
- "type": "string",
- "description": "Disk device name to detach.",
- "required": true,
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "Instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "deviceName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instances.get",
- "path": "{project}/zones/{zone}/instances/{instance}",
- "httpMethod": "GET",
- "description": "Returns the specified Instance resource. Get a list of available instances by making a list() request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Instance"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getSerialPortOutput": {
- "id": "compute.instances.getSerialPortOutput",
- "path": "{project}/zones/{zone}/instances/{instance}/serialPort",
- "httpMethod": "GET",
- "description": "Returns the specified instance's serial port output.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "port": {
- "type": "integer",
- "description": "Specifies which COM or serial port to retrieve data from.",
- "default": "1",
- "format": "int32",
- "minimum": "1",
- "maximum": "4",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "start": {
- "type": "string",
- "description": "Returns output starting from a specific byte position. Use this to page through output when the output is too large to return in a single request. For the initial request, leave this field unspecified. For subsequent calls, this field should be set to the next value returned in the previous call.",
- "format": "int64",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "SerialPortOutput"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instances.insert",
- "path": "{project}/zones/{zone}/instances",
- "httpMethod": "POST",
- "description": "Creates an instance resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sourceInstanceTemplate": {
- "type": "string",
- "description": "Specifies instance template to create the instance.\n\nThis field is optional. It can be a full or partial URL. For example, the following are all valid URLs to an instance template: \n- https://www.googleapis.com/compute/v1/projects/project/global/global/instanceTemplates/instanceTemplate \n- projects/project/global/global/instanceTemplates/instanceTemplate \n- global/instancesTemplates/instanceTemplate",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Instance"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instances.list",
- "path": "{project}/zones/{zone}/instances",
- "httpMethod": "GET",
- "description": "Retrieves the list of instances contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listReferrers": {
- "id": "compute.instances.listReferrers",
- "path": "{project}/zones/{zone}/instances/{instance}/referrers",
- "httpMethod": "GET",
- "description": "Retrieves the list of referrers to instances contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "Name of the target instance scoping this request, or '-' if the request should span over all instances in the container.",
- "required": true,
- "pattern": "-|[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "InstanceListReferrers"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "reset": {
- "id": "compute.instances.reset",
- "path": "{project}/zones/{zone}/instances/{instance}/reset",
- "httpMethod": "POST",
- "description": "Performs a reset on the instance. For more information, see Resetting an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDeletionProtection": {
- "id": "compute.instances.setDeletionProtection",
- "path": "{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
- "httpMethod": "POST",
- "description": "Sets deletion protection on the instance.",
- "parameters": {
- "deletionProtection": {
- "type": "boolean",
- "description": "Whether the resource should be protected against deletion.",
- "default": "true",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDiskAutoDelete": {
- "id": "compute.instances.setDiskAutoDelete",
- "path": "{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete",
- "httpMethod": "POST",
- "description": "Sets the auto-delete flag for a disk attached to an instance.",
- "parameters": {
- "autoDelete": {
- "type": "boolean",
- "description": "Whether to auto-delete the disk when the instance is deleted.",
- "required": true,
- "location": "query"
- },
- "deviceName": {
- "type": "string",
- "description": "The device name of the disk to modify.",
- "required": true,
- "pattern": "\\w[\\w.-]{0,254}",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "The instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "autoDelete",
- "deviceName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.instances.setLabels",
- "path": "{project}/zones/{zone}/instances/{instance}/setLabels",
- "httpMethod": "POST",
- "description": "Sets labels on an instance. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMachineResources": {
- "id": "compute.instances.setMachineResources",
- "path": "{project}/zones/{zone}/instances/{instance}/setMachineResources",
- "httpMethod": "POST",
- "description": "Changes the number and/or type of accelerator for a stopped instance to the values specified in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMachineResourcesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMachineType": {
- "id": "compute.instances.setMachineType",
- "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
- "httpMethod": "POST",
- "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMachineTypeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMetadata": {
- "id": "compute.instances.setMetadata",
- "path": "{project}/zones/{zone}/instances/{instance}/setMetadata",
- "httpMethod": "POST",
- "description": "Sets metadata for the specified instance to the data included in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Metadata"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMinCpuPlatform": {
- "id": "compute.instances.setMinCpuPlatform",
- "path": "{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform",
- "httpMethod": "POST",
- "description": "Changes the minimum CPU platform that this instance should use. This method can only be called on a stopped instance. For more information, read Specifying a Minimum CPU Platform.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMinCpuPlatformRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setScheduling": {
- "id": "compute.instances.setScheduling",
- "path": "{project}/zones/{zone}/instances/{instance}/setScheduling",
- "httpMethod": "POST",
- "description": "Sets an instance's scheduling options.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Scheduling"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setServiceAccount": {
- "id": "compute.instances.setServiceAccount",
- "path": "{project}/zones/{zone}/instances/{instance}/setServiceAccount",
- "httpMethod": "POST",
- "description": "Sets the service account on the instance. For more information, read Changing the service account and access scopes for an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetServiceAccountRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTags": {
- "id": "compute.instances.setTags",
- "path": "{project}/zones/{zone}/instances/{instance}/setTags",
- "httpMethod": "POST",
- "description": "Sets tags for the specified instance to the data included in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Tags"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "start": {
- "id": "compute.instances.start",
- "path": "{project}/zones/{zone}/instances/{instance}/start",
- "httpMethod": "POST",
- "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "startWithEncryptionKey": {
- "id": "compute.instances.startWithEncryptionKey",
- "path": "{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey",
- "httpMethod": "POST",
- "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesStartWithEncryptionKeyRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "stop": {
- "id": "compute.instances.stop",
- "path": "{project}/zones/{zone}/instances/{instance}/stop",
- "httpMethod": "POST",
- "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur VM usage charges while they are stopped. However, resources that the VM is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to stop.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.instances.testIamPermissions",
- "path": "{project}/zones/{zone}/instances/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "updateAccessConfig": {
- "id": "compute.instances.updateAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/updateAccessConfig",
- "httpMethod": "POST",
- "description": "Updates the specified access config from an instance's network interface with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface where the access config is attached.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "networkInterface"
- ],
- "request": {
- "$ref": "AccessConfig"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "updateNetworkInterface": {
- "id": "compute.instances.updateNetworkInterface",
- "path": "{project}/zones/{zone}/instances/{instance}/updateNetworkInterface",
- "httpMethod": "PATCH",
- "description": "Updates an instance's network interface. This method follows PATCH semantics.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface to update.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "networkInterface"
- ],
- "request": {
- "$ref": "NetworkInterface"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "interconnectAttachments": {
- "methods": {
- "aggregatedList": {
- "id": "compute.interconnectAttachments.aggregatedList",
- "path": "{project}/aggregated/interconnectAttachments",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of interconnect attachments.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectAttachmentAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.interconnectAttachments.delete",
- "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified interconnect attachment.",
- "parameters": {
- "interconnectAttachment": {
- "type": "string",
- "description": "Name of the interconnect attachment to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "interconnectAttachment"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.interconnectAttachments.get",
- "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
- "httpMethod": "GET",
- "description": "Returns the specified interconnect attachment.",
- "parameters": {
- "interconnectAttachment": {
- "type": "string",
- "description": "Name of the interconnect attachment to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "interconnectAttachment"
- ],
- "response": {
- "$ref": "InterconnectAttachment"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.interconnectAttachments.insert",
- "path": "{project}/regions/{region}/interconnectAttachments",
- "httpMethod": "POST",
- "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "InterconnectAttachment"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.interconnectAttachments.list",
- "path": "{project}/regions/{region}/interconnectAttachments",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect attachments contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "InterconnectAttachmentList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.interconnectAttachments.testIamPermissions",
- "path": "{project}/regions/{region}/interconnectAttachments/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "interconnectLocations": {
- "methods": {
- "get": {
- "id": "compute.interconnectLocations.get",
- "path": "{project}/global/interconnectLocations/{interconnectLocation}",
- "httpMethod": "GET",
- "description": "Returns the details for the specified interconnect location. Get a list of available interconnect locations by making a list() request.",
- "parameters": {
- "interconnectLocation": {
- "type": "string",
- "description": "Name of the interconnect location to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "interconnectLocation"
- ],
- "response": {
- "$ref": "InterconnectLocation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.interconnectLocations.list",
- "path": "{project}/global/interconnectLocations",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect locations available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectLocationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "interconnects": {
- "methods": {
- "delete": {
- "id": "compute.interconnects.delete",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified interconnect.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.interconnects.get",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "GET",
- "description": "Returns the specified interconnect. Get a list of available interconnects by making a list() request.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "response": {
- "$ref": "Interconnect"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.interconnects.insert",
- "path": "{project}/global/interconnects",
- "httpMethod": "POST",
- "description": "Creates a Interconnect in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Interconnect"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.interconnects.list",
- "path": "{project}/global/interconnects",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.interconnects.patch",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "PATCH",
- "description": "Updates the specified interconnect with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "request": {
- "$ref": "Interconnect"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.interconnects.testIamPermissions",
- "path": "{project}/global/interconnects/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "licenseCodes": {
- "methods": {
- "get": {
- "id": "compute.licenseCodes.get",
- "path": "{project}/global/licenseCodes/{licenseCode}",
- "httpMethod": "GET",
- "description": "Return a specified license code. License codes are mirrored across all projects that have permissions to read the License Code.",
- "parameters": {
- "licenseCode": {
- "type": "string",
- "description": "Number corresponding to the License code resource to return.",
- "required": true,
- "pattern": "[0-9]{0,61}?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "licenseCode"
- ],
- "response": {
- "$ref": "LicenseCode"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "licenses": {
- "methods": {
- "delete": {
- "id": "compute.licenses.delete",
- "path": "{project}/global/licenses/{license}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified license.",
- "parameters": {
- "license": {
- "type": "string",
- "description": "Name of the license resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "license"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.licenses.get",
- "path": "{project}/global/licenses/{license}",
- "httpMethod": "GET",
- "description": "Returns the specified License resource.",
- "parameters": {
- "license": {
- "type": "string",
- "description": "Name of the License resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "license"
- ],
- "response": {
- "$ref": "License"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.licenses.insert",
- "path": "{project}/global/licenses",
- "httpMethod": "POST",
- "description": "Create a License resource in the specified project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "License"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- },
- "list": {
- "id": "compute.licenses.list",
- "path": "{project}/global/licenses",
- "httpMethod": "GET",
- "description": "Retrieves the list of licenses available in the specified project. This method does not get any licenses that belong to other projects, including licenses attached to publicly-available images, like Debian 8. If you want to get a list of publicly-available licenses, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "LicensesListResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "machineTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.machineTypes.aggregatedList",
- "path": "{project}/aggregated/machineTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of machine types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "MachineTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.machineTypes.get",
- "path": "{project}/zones/{zone}/machineTypes/{machineType}",
- "httpMethod": "GET",
- "description": "Returns the specified machine type. Get a list of available machine types by making a list() request.",
- "parameters": {
- "machineType": {
- "type": "string",
- "description": "Name of the machine type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "machineType"
- ],
- "response": {
- "$ref": "MachineType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.machineTypes.list",
- "path": "{project}/zones/{zone}/machineTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of machine types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "MachineTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "networks": {
- "methods": {
- "addPeering": {
- "id": "compute.networks.addPeering",
- "path": "{project}/global/networks/{network}/addPeering",
- "httpMethod": "POST",
- "description": "Adds a peering to the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network resource to add peering to.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "NetworksAddPeeringRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.networks.delete",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.networks.get",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "GET",
- "description": "Returns the specified network. Get a list of available networks by making a list() request.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Network"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.networks.insert",
- "path": "{project}/global/networks",
- "httpMethod": "POST",
- "description": "Creates a network in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Network"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.networks.list",
- "path": "{project}/global/networks",
- "httpMethod": "GET",
- "description": "Retrieves the list of networks available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "NetworkList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.networks.patch",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "PATCH",
- "description": "Patches the specified network with the data included in the request. Only the following fields can be modified: routingConfig.routingMode.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "Network"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "removePeering": {
- "id": "compute.networks.removePeering",
- "path": "{project}/global/networks/{network}/removePeering",
- "httpMethod": "POST",
- "description": "Removes a peering from the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network resource to remove peering from.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "NetworksRemovePeeringRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "switchToCustomMode": {
- "id": "compute.networks.switchToCustomMode",
- "path": "{project}/global/networks/{network}/switchToCustomMode",
- "httpMethod": "POST",
- "description": "Switches the network mode from auto subnet mode to custom subnet mode.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to be updated.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.networks.testIamPermissions",
- "path": "{project}/global/networks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "projects": {
- "methods": {
- "disableXpnHost": {
- "id": "compute.projects.disableXpnHost",
- "path": "{project}/disableXpnHost",
- "httpMethod": "POST",
- "description": "Disable this project as a shared VPC host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "disableXpnResource": {
- "id": "compute.projects.disableXpnResource",
- "path": "{project}/disableXpnResource",
- "httpMethod": "POST",
- "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsDisableXpnResourceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "enableXpnHost": {
- "id": "compute.projects.enableXpnHost",
- "path": "{project}/enableXpnHost",
- "httpMethod": "POST",
- "description": "Enable this project as a shared VPC host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "enableXpnResource": {
- "id": "compute.projects.enableXpnResource",
- "path": "{project}/enableXpnResource",
- "httpMethod": "POST",
- "description": "Enable service resource (a.k.a service project) for a host project, so that subnets in the host project can be used by instances in the service project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsEnableXpnResourceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.projects.get",
- "path": "{project}",
- "httpMethod": "GET",
- "description": "Returns the specified Project resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Project"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getXpnHost": {
- "id": "compute.projects.getXpnHost",
- "path": "{project}/getXpnHost",
- "httpMethod": "GET",
- "description": "Get the shared VPC host project that this project links to. May be empty if no link exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Project"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "getXpnResources": {
- "id": "compute.projects.getXpnResources",
- "path": "{project}/getXpnResources",
- "httpMethod": "GET",
- "description": "Get service resources (a.k.a service project) associated with this host project.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ProjectsGetXpnResources"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "listXpnHosts": {
- "id": "compute.projects.listXpnHosts",
- "path": "{project}/listXpnHosts",
- "httpMethod": "POST",
- "description": "List all shared VPC host projects visible to the user in an organization.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsListXpnHostsRequest"
- },
- "response": {
- "$ref": "XpnHostList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "moveDisk": {
- "id": "compute.projects.moveDisk",
- "path": "{project}/moveDisk",
- "httpMethod": "POST",
- "description": "Moves a persistent disk from one zone to another.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "DiskMoveRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "moveInstance": {
- "id": "compute.projects.moveInstance",
- "path": "{project}/moveInstance",
- "httpMethod": "POST",
- "description": "Moves an instance and its attached persistent disks from one zone to another.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "InstanceMoveRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setCommonInstanceMetadata": {
- "id": "compute.projects.setCommonInstanceMetadata",
- "path": "{project}/setCommonInstanceMetadata",
- "httpMethod": "POST",
- "description": "Sets metadata common to all instances within the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Metadata"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setUsageExportBucket": {
- "id": "compute.projects.setUsageExportBucket",
- "path": "{project}/setUsageExportBucket",
- "httpMethod": "POST",
- "description": "Enables the usage export feature and sets the usage export bucket where reports are stored. If you provide an empty request body using this method, the usage export feature will be disabled.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "UsageExportLocation"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- }
- }
- },
- "regionAutoscalers": {
- "methods": {
- "delete": {
- "id": "compute.regionAutoscalers.delete",
- "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "autoscaler"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionAutoscalers.get",
- "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
- "httpMethod": "GET",
- "description": "Returns the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "autoscaler"
- ],
- "response": {
- "$ref": "Autoscaler"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionAutoscalers.insert",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "POST",
- "description": "Creates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionAutoscalers.list",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves a list of autoscalers contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionAutoscalerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionAutoscalers.patch",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "PATCH",
- "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to patch.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionAutoscalers.testIamPermissions",
- "path": "{project}/regions/{region}/autoscalers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.regionAutoscalers.update",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "PUT",
- "description": "Updates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to update.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionBackendServices": {
- "methods": {
- "delete": {
- "id": "compute.regionBackendServices.delete",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified regional BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionBackendServices.get",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "GET",
- "description": "Returns the specified regional BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "response": {
- "$ref": "BackendService"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.regionBackendServices.getHealth",
- "path": "{project}/regions/{region}/backendServices/{backendService}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for this regional BackendService.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "ResourceGroupReference"
- },
- "response": {
- "$ref": "BackendServiceGroupHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionBackendServices.insert",
- "path": "{project}/regions/{region}/backendServices",
- "httpMethod": "POST",
- "description": "Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionBackendServices.list",
- "path": "{project}/regions/{region}/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of regional BackendService resources available to the specified project in the given region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "BackendServiceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionBackendServices.patch",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "PATCH",
- "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionBackendServices.testIamPermissions",
- "path": "{project}/regions/{region}/backendServices/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.regionBackendServices.update",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "PUT",
- "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionCommitments": {
- "methods": {
- "aggregatedList": {
- "id": "compute.regionCommitments.aggregatedList",
- "path": "{project}/aggregated/commitments",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of commitments.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "CommitmentAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.regionCommitments.get",
- "path": "{project}/regions/{region}/commitments/{commitment}",
- "httpMethod": "GET",
- "description": "Returns the specified commitment resource. Get a list of available commitments by making a list() request.",
- "parameters": {
- "commitment": {
- "type": "string",
- "description": "Name of the commitment to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "commitment"
- ],
- "response": {
- "$ref": "Commitment"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionCommitments.insert",
- "path": "{project}/regions/{region}/commitments",
- "httpMethod": "POST",
- "description": "Creates a commitment in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Commitment"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionCommitments.list",
- "path": "{project}/regions/{region}/commitments",
- "httpMethod": "GET",
- "description": "Retrieves a list of commitments contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "CommitmentList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regionInstanceGroupManagers": {
- "methods": {
- "abandonInstances": {
- "id": "compute.regionInstanceGroupManagers.abandonInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.regionInstanceGroupManagers.delete",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified managed instance group and all of the instances in that group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteInstances": {
- "id": "compute.regionInstanceGroupManagers.deleteInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersDeleteInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionInstanceGroupManagers.get",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "GET",
- "description": "Returns all of the details about the specified managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group to return.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManager"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionInstanceGroupManagers.insert",
- "path": "{project}/regions/{region}/instanceGroupManagers",
- "httpMethod": "POST",
- "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA regional managed instance group can contain up to 2000 instances.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionInstanceGroupManagers.list",
- "path": "{project}/regions/{region}/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves the list of managed instance groups that are contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionInstanceGroupManagerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listManagedInstances": {
- "id": "compute.regionInstanceGroupManagers.listManagedInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "RegionInstanceGroupManagersListInstancesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionInstanceGroupManagers.patch",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PATCH",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is patched even if the instances in the group are still in the process of being patched. You must separately verify the status of the individual instances with the listmanagedinstances method. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "recreateInstances": {
- "id": "compute.regionInstanceGroupManagers.recreateInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersRecreateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resize": {
- "id": "compute.regionInstanceGroupManagers.resize",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize",
- "httpMethod": "POST",
- "description": "Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "size": {
- "type": "integer",
- "description": "Number of instances that should exist in this instance group manager.",
- "required": true,
- "format": "int32",
- "minimum": "0",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager",
- "size"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setAutoHealingPolicies": {
- "id": "compute.regionInstanceGroupManagers.setAutoHealingPolicies",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setAutoHealingPolicies",
- "httpMethod": "POST",
- "description": "Modifies the autohealing policy for the instances in this managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetAutoHealingRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setInstanceTemplate": {
- "id": "compute.regionInstanceGroupManagers.setInstanceTemplate",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
- "httpMethod": "POST",
- "description": "Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetTemplateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTargetPools": {
- "id": "compute.regionInstanceGroupManagers.setTargetPools",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
- "httpMethod": "POST",
- "description": "Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetTargetPoolsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionInstanceGroupManagers.testIamPermissions",
- "path": "{project}/regions/{region}/instanceGroupManagers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.regionInstanceGroupManagers.update",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "PUT",
- "description": "Updates a managed instance group using the information that you specify in the request. This operation is marked as DONE when the group is updated even if the instances in the group have not yet been updated. You must separately verify the status of the individual instances with the listmanagedinstances method.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the instance group manager.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionInstanceGroups": {
- "methods": {
- "get": {
- "id": "compute.regionInstanceGroups.get",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}",
- "httpMethod": "GET",
- "description": "Returns the specified instance group resource.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "Name of the instance group resource to return.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "response": {
- "$ref": "InstanceGroup"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regionInstanceGroups.list",
- "path": "{project}/regions/{region}/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance group resources contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionInstanceGroupList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listInstances": {
- "id": "compute.regionInstanceGroups.listInstances",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroup": {
- "type": "string",
- "description": "Name of the regional instance group for which we want to list the instances.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "request": {
- "$ref": "RegionInstanceGroupsListInstancesRequest"
- },
- "response": {
- "$ref": "RegionInstanceGroupsListInstances"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setNamedPorts": {
- "id": "compute.regionInstanceGroups.setNamedPorts",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts",
- "httpMethod": "POST",
- "description": "Sets the named ports for the specified regional instance group.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the regional instance group where the named ports are updated.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "request": {
- "$ref": "RegionInstanceGroupsSetNamedPortsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.regionInstanceGroups.testIamPermissions",
- "path": "{project}/regions/{region}/instanceGroups/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regionOperations": {
- "methods": {
- "delete": {
- "id": "compute.regionOperations.delete",
- "path": "{project}/regions/{region}/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified region-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionOperations.get",
- "path": "{project}/regions/{region}/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified region-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regionOperations.list",
- "path": "{project}/regions/{region}/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regions": {
- "methods": {
- "get": {
- "id": "compute.regions.get",
- "path": "{project}/regions/{region}",
- "httpMethod": "GET",
- "description": "Returns the specified Region resource. Get a list of available regions by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "Region"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regions.list",
- "path": "{project}/regions",
- "httpMethod": "GET",
- "description": "Retrieves the list of region resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RegionList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "routers": {
- "methods": {
- "aggregatedList": {
- "id": "compute.routers.aggregatedList",
- "path": "{project}/aggregated/routers",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of routers.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RouterAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.routers.delete",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Router resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.routers.get",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "GET",
- "description": "Returns the specified Router resource. Get a list of available routers by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "Router"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getRouterStatus": {
- "id": "compute.routers.getRouterStatus",
- "path": "{project}/regions/{region}/routers/{router}/getRouterStatus",
- "httpMethod": "GET",
- "description": "Retrieves runtime information of the specified router.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to query.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "RouterStatusResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.routers.insert",
- "path": "{project}/regions/{region}/routers",
- "httpMethod": "POST",
- "description": "Creates a Router resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.routers.list",
- "path": "{project}/regions/{region}/routers",
- "httpMethod": "GET",
- "description": "Retrieves a list of Router resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RouterList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.routers.patch",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "PATCH",
- "description": "Patches the specified Router resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "preview": {
- "id": "compute.routers.preview",
- "path": "{project}/regions/{region}/routers/{router}/preview",
- "httpMethod": "POST",
- "description": "Preview fields auto-generated during router create and update operations. Calling this method does NOT create or update the router.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to query.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "RoutersPreviewResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.routers.testIamPermissions",
- "path": "{project}/regions/{region}/routers/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.routers.update",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "PUT",
- "description": "Updates the specified Router resource with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "router": {
- "type": "string",
- "description": "Name of the Router resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "routes": {
- "methods": {
- "delete": {
- "id": "compute.routes.delete",
- "path": "{project}/global/routes/{route}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Route resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "route": {
- "type": "string",
- "description": "Name of the Route resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "route"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.routes.get",
- "path": "{project}/global/routes/{route}",
- "httpMethod": "GET",
- "description": "Returns the specified Route resource. Get a list of available routes by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "route": {
- "type": "string",
- "description": "Name of the Route resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "route"
- ],
- "response": {
- "$ref": "Route"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.routes.insert",
- "path": "{project}/global/routes",
- "httpMethod": "POST",
- "description": "Creates a Route resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Route"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.routes.list",
- "path": "{project}/global/routes",
- "httpMethod": "GET",
- "description": "Retrieves the list of Route resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RouteList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.routes.testIamPermissions",
- "path": "{project}/global/routes/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "securityPolicies": {
- "methods": {
- "addRule": {
- "id": "compute.securityPolicies.addRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/addRule",
- "httpMethod": "POST",
- "description": "Inserts a rule into a security policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "request": {
- "$ref": "SecurityPolicyRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.securityPolicies.delete",
- "path": "{project}/global/securityPolicies/{securityPolicy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.securityPolicies.get",
- "path": "{project}/global/securityPolicies/{securityPolicy}",
- "httpMethod": "GET",
- "description": "List all of the ordered rules present in a single specified policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to get.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "SecurityPolicy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getRule": {
- "id": "compute.securityPolicies.getRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/getRule",
- "httpMethod": "GET",
- "description": "Gets a rule at the specified priority.",
- "parameters": {
- "priority": {
- "type": "integer",
- "description": "The priority of the rule to get from the security policy.",
- "format": "int32",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to which the queried rule belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "SecurityPolicyRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.securityPolicies.insert",
- "path": "{project}/global/securityPolicies",
- "httpMethod": "POST",
- "description": "Creates a new policy in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "SecurityPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.securityPolicies.list",
- "path": "{project}/global/securityPolicies",
- "httpMethod": "GET",
- "description": "List all the policies that have been configured for the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SecurityPolicyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.securityPolicies.patch",
- "path": "{project}/global/securityPolicies/{securityPolicy}",
- "httpMethod": "PATCH",
- "description": "Patches the specified policy with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "request": {
- "$ref": "SecurityPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "patchRule": {
- "id": "compute.securityPolicies.patchRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/patchRule",
- "httpMethod": "POST",
- "description": "Patches a rule at the specified priority.",
- "parameters": {
- "priority": {
- "type": "integer",
- "description": "The priority of the rule to patch.",
- "format": "int32",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "request": {
- "$ref": "SecurityPolicyRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "removeRule": {
- "id": "compute.securityPolicies.removeRule",
- "path": "{project}/global/securityPolicies/{securityPolicy}/removeRule",
- "httpMethod": "POST",
- "description": "Deletes a rule at the specified priority.",
- "parameters": {
- "priority": {
- "type": "integer",
- "description": "The priority of the rule to remove from the security policy.",
- "format": "int32",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "securityPolicy": {
- "type": "string",
- "description": "Name of the security policy to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "securityPolicy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.securityPolicies.testIamPermissions",
- "path": "{project}/global/securityPolicies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "snapshots": {
- "methods": {
- "delete": {
- "id": "compute.snapshots.delete",
- "path": "{project}/global/snapshots/{snapshot}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not necessarily delete all the data on that snapshot. If any data on the snapshot that is marked for deletion is needed for subsequent snapshots, the data will be moved to the next corresponding snapshot.\n\nFor more information, see Deleting snaphots.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "snapshot": {
- "type": "string",
- "description": "Name of the Snapshot resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "snapshot"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.snapshots.get",
- "path": "{project}/global/snapshots/{snapshot}",
- "httpMethod": "GET",
- "description": "Returns the specified Snapshot resource. Get a list of available snapshots by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "snapshot": {
- "type": "string",
- "description": "Name of the Snapshot resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "snapshot"
- ],
- "response": {
- "$ref": "Snapshot"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.snapshots.list",
- "path": "{project}/global/snapshots",
- "httpMethod": "GET",
- "description": "Retrieves the list of Snapshot resources contained within the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SnapshotList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.snapshots.setLabels",
- "path": "{project}/global/snapshots/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a snapshot. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.snapshots.testIamPermissions",
- "path": "{project}/global/snapshots/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "sslCertificates": {
- "methods": {
- "delete": {
- "id": "compute.sslCertificates.delete",
- "path": "{project}/global/sslCertificates/{sslCertificate}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified SslCertificate resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sslCertificate": {
- "type": "string",
- "description": "Name of the SslCertificate resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslCertificate"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.sslCertificates.get",
- "path": "{project}/global/sslCertificates/{sslCertificate}",
- "httpMethod": "GET",
- "description": "Returns the specified SslCertificate resource. Get a list of available SSL certificates by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "sslCertificate": {
- "type": "string",
- "description": "Name of the SslCertificate resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslCertificate"
- ],
- "response": {
- "$ref": "SslCertificate"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.sslCertificates.insert",
- "path": "{project}/global/sslCertificates",
- "httpMethod": "POST",
- "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "SslCertificate"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.sslCertificates.list",
- "path": "{project}/global/sslCertificates",
- "httpMethod": "GET",
- "description": "Retrieves the list of SslCertificate resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SslCertificateList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.sslCertificates.testIamPermissions",
- "path": "{project}/global/sslCertificates/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "sslPolicies": {
- "methods": {
- "delete": {
- "id": "compute.sslPolicies.delete",
- "path": "{project}/global/sslPolicies/{sslPolicy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified SSL policy. The SSL policy resource can be deleted only if it is not in use by any TargetHttpsProxy or TargetSslProxy resources.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sslPolicy": {
- "type": "string",
- "description": "Name of the SSL policy to delete. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslPolicy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.sslPolicies.get",
- "path": "{project}/global/sslPolicies/{sslPolicy}",
- "httpMethod": "GET",
- "description": "List all of the ordered rules present in a single specified policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "sslPolicy": {
- "type": "string",
- "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslPolicy"
- ],
- "response": {
- "$ref": "SslPolicy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.sslPolicies.insert",
- "path": "{project}/global/sslPolicies",
- "httpMethod": "POST",
- "description": "Returns the specified SSL policy resource. Get a list of available SSL policies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "SslPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.sslPolicies.list",
- "path": "{project}/global/sslPolicies",
- "httpMethod": "GET",
- "description": "List all the SSL policies that have been configured for the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SslPoliciesList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listAvailableFeatures": {
- "id": "compute.sslPolicies.listAvailableFeatures",
- "path": "{project}/global/sslPolicies/listAvailableFeatures",
- "httpMethod": "GET",
- "description": "Lists all features that can be specified in the SSL policy when using custom profile.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SslPoliciesListAvailableFeaturesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.sslPolicies.patch",
- "path": "{project}/global/sslPolicies/{sslPolicy}",
- "httpMethod": "PATCH",
- "description": "Patches the specified SSL policy with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sslPolicy": {
- "type": "string",
- "description": "Name of the SSL policy to update. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslPolicy"
- ],
- "request": {
- "$ref": "SslPolicy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.sslPolicies.testIamPermissions",
- "path": "{project}/global/sslPolicies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "subnetworks": {
- "methods": {
- "aggregatedList": {
- "id": "compute.subnetworks.aggregatedList",
- "path": "{project}/aggregated/subnetworks",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of subnetworks.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SubnetworkAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.subnetworks.delete",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified subnetwork.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "expandIpCidrRange": {
- "id": "compute.subnetworks.expandIpCidrRange",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange",
- "httpMethod": "POST",
- "description": "Expands the IP CIDR range of the subnetwork to a specified value.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "SubnetworksExpandIpCidrRangeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.subnetworks.get",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "GET",
- "description": "Returns the specified subnetwork. Get a list of available subnetworks list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "response": {
- "$ref": "Subnetwork"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getIamPolicy": {
- "id": "compute.subnetworks.getIamPolicy",
- "path": "{project}/regions/{region}/subnetworks/{resource}/getIamPolicy",
- "httpMethod": "GET",
- "description": "Gets the access control policy for a resource. May be empty if no such policy or resource exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.subnetworks.insert",
- "path": "{project}/regions/{region}/subnetworks",
- "httpMethod": "POST",
- "description": "Creates a subnetwork in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Subnetwork"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.subnetworks.list",
- "path": "{project}/regions/{region}/subnetworks",
- "httpMethod": "GET",
- "description": "Retrieves a list of subnetworks available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "SubnetworkList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.subnetworks.patch",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "PATCH",
- "description": "Patches the specified subnetwork with the data included in the request. Only the following fields within the subnetwork resource can be specified in the request: secondary_ip_range and allow_subnet_cidr_routes_overlap. It is also mandatory to specify the current fingeprint of the subnetwork resource being patched.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "Subnetwork"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setIamPolicy": {
- "id": "compute.subnetworks.setIamPolicy",
- "path": "{project}/regions/{region}/subnetworks/{resource}/setIamPolicy",
- "httpMethod": "POST",
- "description": "Sets the access control policy on the specified resource. Replaces any existing policy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "Policy"
- },
- "response": {
- "$ref": "Policy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setPrivateIpGoogleAccess": {
- "id": "compute.subnetworks.setPrivateIpGoogleAccess",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess",
- "httpMethod": "POST",
- "description": "Set whether VMs in this subnet can access Google services without assigning external IP addresses through Private Google Access.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "SubnetworksSetPrivateIpGoogleAccessRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.subnetworks.testIamPermissions",
- "path": "{project}/regions/{region}/subnetworks/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetHttpProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetHttpProxies.delete",
- "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetHttpProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetHttpProxies.get",
- "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetHttpProxy resource. Get a list of available target HTTP proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "response": {
- "$ref": "TargetHttpProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetHttpProxies.insert",
- "path": "{project}/global/targetHttpProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetHttpProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetHttpProxies.list",
- "path": "{project}/global/targetHttpProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetHttpProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetHttpProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setUrlMap": {
- "id": "compute.targetHttpProxies.setUrlMap",
- "path": "{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
- "httpMethod": "POST",
- "description": "Changes the URL map for TargetHttpProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy to set a URL map for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "request": {
- "$ref": "UrlMapReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetHttpProxies.testIamPermissions",
- "path": "{project}/global/targetHttpProxies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetHttpsProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetHttpsProxies.delete",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetHttpsProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetHttpsProxies.get",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetHttpsProxy resource. Get a list of available target HTTPS proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "response": {
- "$ref": "TargetHttpsProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetHttpsProxies.insert",
- "path": "{project}/global/targetHttpsProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetHttpsProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetHttpsProxies.list",
- "path": "{project}/global/targetHttpsProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetHttpsProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setQuicOverride": {
- "id": "compute.targetHttpsProxies.setQuicOverride",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setQuicOverride",
- "httpMethod": "POST",
- "description": "Sets the QUIC override policy for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to set the QUIC override policy for. The name should conform to RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "TargetHttpsProxiesSetQuicOverrideRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslCertificates": {
- "id": "compute.targetHttpsProxies.setSslCertificates",
- "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
- "httpMethod": "POST",
- "description": "Replaces SslCertificates for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "TargetHttpsProxiesSetSslCertificatesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslPolicy": {
- "id": "compute.targetHttpsProxies.setSslPolicy",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}/setSslPolicy",
- "httpMethod": "POST",
- "description": "Sets the SSL policy for TargetHttpsProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the HTTPS proxy load balancer. They do not affect the connection between the load balancer and the backends.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "SslPolicyReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setUrlMap": {
- "id": "compute.targetHttpsProxies.setUrlMap",
- "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
- "httpMethod": "POST",
- "description": "Changes the URL map for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource whose URL map is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "UrlMapReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetHttpsProxies.testIamPermissions",
- "path": "{project}/global/targetHttpsProxies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetInstances": {
- "methods": {
- "aggregatedList": {
- "id": "compute.targetInstances.aggregatedList",
- "path": "{project}/aggregated/targetInstances",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of target instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetInstanceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.targetInstances.delete",
- "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetInstance resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetInstance": {
- "type": "string",
- "description": "Name of the TargetInstance resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "targetInstance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetInstances.get",
- "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetInstance resource. Get a list of available target instances by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetInstance": {
- "type": "string",
- "description": "Name of the TargetInstance resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "targetInstance"
- ],
- "response": {
- "$ref": "TargetInstance"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetInstances.insert",
- "path": "{project}/zones/{zone}/targetInstances",
- "httpMethod": "POST",
- "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "TargetInstance"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetInstances.list",
- "path": "{project}/zones/{zone}/targetInstances",
- "httpMethod": "GET",
- "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "TargetInstanceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetInstances.testIamPermissions",
- "path": "{project}/zones/{zone}/targetInstances/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetPools": {
- "methods": {
- "addHealthCheck": {
- "id": "compute.targetPools.addHealthCheck",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck",
- "httpMethod": "POST",
- "description": "Adds health check URLs to a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the target pool to add a health check to.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsAddHealthCheckRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "addInstance": {
- "id": "compute.targetPools.addInstance",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/addInstance",
- "httpMethod": "POST",
- "description": "Adds an instance to a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to add instances to.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsAddInstanceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.targetPools.aggregatedList",
- "path": "{project}/aggregated/targetPools",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of target pools.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetPoolAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.targetPools.delete",
- "path": "{project}/regions/{region}/targetPools/{targetPool}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetPools.get",
- "path": "{project}/regions/{region}/targetPools/{targetPool}",
- "httpMethod": "GET",
- "description": "Returns the specified target pool. Get a list of available target pools by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "response": {
- "$ref": "TargetPool"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.targetPools.getHealth",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for each IP for the instance that is referenced by the given target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "InstanceReference"
- },
- "response": {
- "$ref": "TargetPoolInstanceHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetPools.insert",
- "path": "{project}/regions/{region}/targetPools",
- "httpMethod": "POST",
- "description": "Creates a target pool in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "TargetPool"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetPools.list",
- "path": "{project}/regions/{region}/targetPools",
- "httpMethod": "GET",
- "description": "Retrieves a list of target pools available to the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "TargetPoolList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "removeHealthCheck": {
- "id": "compute.targetPools.removeHealthCheck",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck",
- "httpMethod": "POST",
- "description": "Removes health check URL from a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the target pool to remove health checks from.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsRemoveHealthCheckRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "removeInstance": {
- "id": "compute.targetPools.removeInstance",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/removeInstance",
- "httpMethod": "POST",
- "description": "Removes instance URL from a target pool.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to remove instances from.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetPoolsRemoveInstanceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setBackup": {
- "id": "compute.targetPools.setBackup",
- "path": "{project}/regions/{region}/targetPools/{targetPool}/setBackup",
- "httpMethod": "POST",
- "description": "Changes a backup target pool's configurations.",
- "parameters": {
- "failoverRatio": {
- "type": "number",
- "description": "New failoverRatio value for the target pool.",
- "format": "float",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetPool": {
- "type": "string",
- "description": "Name of the TargetPool resource to set a backup pool for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetPool"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetPools.testIamPermissions",
- "path": "{project}/regions/{region}/targetPools/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetSslProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetSslProxies.delete",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetSslProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetSslProxies.get",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetSslProxy resource. Get a list of available target SSL proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "response": {
- "$ref": "TargetSslProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetSslProxies.insert",
- "path": "{project}/global/targetSslProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetSslProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetSslProxies.list",
- "path": "{project}/global/targetSslProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetSslProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetSslProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setBackendService": {
- "id": "compute.targetSslProxies.setBackendService",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setBackendService",
- "httpMethod": "POST",
- "description": "Changes the BackendService for TargetSslProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose BackendService resource is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "TargetSslProxiesSetBackendServiceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setProxyHeader": {
- "id": "compute.targetSslProxies.setProxyHeader",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader",
- "httpMethod": "POST",
- "description": "Changes the ProxyHeaderType for TargetSslProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose ProxyHeader is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "TargetSslProxiesSetProxyHeaderRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslCertificates": {
- "id": "compute.targetSslProxies.setSslCertificates",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates",
- "httpMethod": "POST",
- "description": "Changes SslCertificates for TargetSslProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose SslCertificate resource is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "TargetSslProxiesSetSslCertificatesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setSslPolicy": {
- "id": "compute.targetSslProxies.setSslPolicy",
- "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslPolicy",
- "httpMethod": "POST",
- "description": "Sets the SSL policy for TargetSslProxy. The SSL policy specifies the server-side support for SSL features. This affects connections between clients and the SSL proxy load balancer. They do not affect the connection between the load balancer and the backends.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetSslProxy": {
- "type": "string",
- "description": "Name of the TargetSslProxy resource whose SSL policy is to be set. The name must be 1-63 characters long, and comply with RFC1035.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetSslProxy"
- ],
- "request": {
- "$ref": "SslPolicyReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetSslProxies.testIamPermissions",
- "path": "{project}/global/targetSslProxies/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "targetTcpProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetTcpProxies.delete",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetTcpProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetTcpProxies.get",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetTcpProxy resource. Get a list of available target TCP proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "response": {
- "$ref": "TargetTcpProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetTcpProxies.insert",
- "path": "{project}/global/targetTcpProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetTcpProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetTcpProxies.list",
- "path": "{project}/global/targetTcpProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetTcpProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetTcpProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setBackendService": {
- "id": "compute.targetTcpProxies.setBackendService",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService",
- "httpMethod": "POST",
- "description": "Changes the BackendService for TargetTcpProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource whose BackendService resource is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "request": {
- "$ref": "TargetTcpProxiesSetBackendServiceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setProxyHeader": {
- "id": "compute.targetTcpProxies.setProxyHeader",
- "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader",
- "httpMethod": "POST",
- "description": "Changes the ProxyHeaderType for TargetTcpProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetTcpProxy": {
- "type": "string",
- "description": "Name of the TargetTcpProxy resource whose ProxyHeader is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetTcpProxy"
- ],
- "request": {
- "$ref": "TargetTcpProxiesSetProxyHeaderRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "targetVpnGateways": {
- "methods": {
- "aggregatedList": {
- "id": "compute.targetVpnGateways.aggregatedList",
- "path": "{project}/aggregated/targetVpnGateways",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of target VPN gateways.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetVpnGatewayAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.targetVpnGateways.delete",
- "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified target VPN gateway.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "targetVpnGateway": {
- "type": "string",
- "description": "Name of the target VPN gateway to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetVpnGateway"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetVpnGateways.get",
- "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
- "httpMethod": "GET",
- "description": "Returns the specified target VPN gateway. Get a list of available target VPN gateways by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "targetVpnGateway": {
- "type": "string",
- "description": "Name of the target VPN gateway to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "targetVpnGateway"
- ],
- "response": {
- "$ref": "TargetVpnGateway"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetVpnGateways.insert",
- "path": "{project}/regions/{region}/targetVpnGateways",
- "httpMethod": "POST",
- "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "TargetVpnGateway"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetVpnGateways.list",
- "path": "{project}/regions/{region}/targetVpnGateways",
- "httpMethod": "GET",
- "description": "Retrieves a list of target VPN gateways available to the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "TargetVpnGatewayList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.targetVpnGateways.setLabels",
- "path": "{project}/regions/{region}/targetVpnGateways/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a TargetVpnGateway. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.targetVpnGateways.testIamPermissions",
- "path": "{project}/regions/{region}/targetVpnGateways/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "urlMaps": {
- "methods": {
- "delete": {
- "id": "compute.urlMaps.delete",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified UrlMap resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.urlMaps.get",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "GET",
- "description": "Returns the specified UrlMap resource. Get a list of available URL maps by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "response": {
- "$ref": "UrlMap"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.urlMaps.insert",
- "path": "{project}/global/urlMaps",
- "httpMethod": "POST",
- "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "UrlMap"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "invalidateCache": {
- "id": "compute.urlMaps.invalidateCache",
- "path": "{project}/global/urlMaps/{urlMap}/invalidateCache",
- "httpMethod": "POST",
- "description": "Initiates a cache invalidation operation, invalidating the specified path, scoped to the specified UrlMap.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "CacheInvalidationRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.urlMaps.list",
- "path": "{project}/global/urlMaps",
- "httpMethod": "GET",
- "description": "Retrieves the list of UrlMap resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "UrlMapList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.urlMaps.patch",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "PATCH",
- "description": "Patches the specified UrlMap resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "UrlMap"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.urlMaps.testIamPermissions",
- "path": "{project}/global/urlMaps/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "(?:[-a-z0-9_]{0,62}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.urlMaps.update",
- "path": "{project}/global/urlMaps/{urlMap}",
- "httpMethod": "PUT",
- "description": "Updates the specified UrlMap resource with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "UrlMap"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "validate": {
- "id": "compute.urlMaps.validate",
- "path": "{project}/global/urlMaps/{urlMap}/validate",
- "httpMethod": "POST",
- "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "urlMap": {
- "type": "string",
- "description": "Name of the UrlMap resource to be validated as.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "urlMap"
- ],
- "request": {
- "$ref": "UrlMapsValidateRequest"
- },
- "response": {
- "$ref": "UrlMapsValidateResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "vpnTunnels": {
- "methods": {
- "aggregatedList": {
- "id": "compute.vpnTunnels.aggregatedList",
- "path": "{project}/aggregated/vpnTunnels",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of VPN tunnels.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "VpnTunnelAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.vpnTunnels.delete",
- "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified VpnTunnel resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "vpnTunnel": {
- "type": "string",
- "description": "Name of the VpnTunnel resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "vpnTunnel"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.vpnTunnels.get",
- "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
- "httpMethod": "GET",
- "description": "Returns the specified VpnTunnel resource. Get a list of available VPN tunnels by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "vpnTunnel": {
- "type": "string",
- "description": "Name of the VpnTunnel resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "vpnTunnel"
- ],
- "response": {
- "$ref": "VpnTunnel"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.vpnTunnels.insert",
- "path": "{project}/regions/{region}/vpnTunnels",
- "httpMethod": "POST",
- "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "VpnTunnel"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.vpnTunnels.list",
- "path": "{project}/regions/{region}/vpnTunnels",
- "httpMethod": "GET",
- "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "VpnTunnelList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.vpnTunnels.setLabels",
- "path": "{project}/regions/{region}/vpnTunnels/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a VpnTunnel. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "RegionSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "testIamPermissions": {
- "id": "compute.vpnTunnels.testIamPermissions",
- "path": "{project}/regions/{region}/vpnTunnels/{resource}/testIamPermissions",
- "httpMethod": "POST",
- "description": "Returns permissions that a caller has on the specified resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "The name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "resource"
- ],
- "request": {
- "$ref": "TestPermissionsRequest"
- },
- "response": {
- "$ref": "TestPermissionsResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "zoneOperations": {
- "methods": {
- "delete": {
- "id": "compute.zoneOperations.delete",
- "path": "{project}/zones/{zone}/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified zone-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.zoneOperations.get",
- "path": "{project}/zones/{zone}/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified zone-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.zoneOperations.list",
- "path": "{project}/zones/{zone}/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
+ "AcceleratorTypesScopedList": {
+ "id": "AcceleratorTypesScopedList",
+ "properties": {
+ "acceleratorTypes": {
+ "description": "[Output Only] List of accelerator types contained in this scope.",
+ "items": {
+ "$ref": "AcceleratorType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that appears when the accelerator types list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AccessConfig": {
+ "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
+ "id": "AccessConfig",
+ "properties": {
+ "kind": {
+ "default": "compute#accessConfig",
+ "description": "[Output Only] Type of the resource. Always compute#accessConfig for access configs.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of this access configuration. The default and recommended name is External NAT but you can use any arbitrary string you would like. For example, My external IP or Network Access.",
+ "type": "string"
+ },
+ "natIP": {
+ "description": "An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.",
+ "type": "string"
+ },
+ "networkTier": {
+ "description": "This signifies the networking tier used for configuring this access configuration and can only take the following values: PREMIUM, STANDARD.\n\nIf an AccessConfig is specified without a valid external IP address, an ephemeral IP will be created with this networkTier.\n\nIf an AccessConfig with a valid external IP address is specified, it must match that of the networkTier associated with the Address resource owning that IP.",
+ "enum": [
+ "PREMIUM",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "publicPtrDomainName": {
+ "description": "The DNS domain name for the public PTR record. This field can only be set when the set_public_ptr field is enabled.",
+ "type": "string"
+ },
+ "setPublicPtr": {
+ "description": "Specifies whether a public DNS ?PTR? record should be created to map the external IP address of the instance to a DNS domain name.",
+ "type": "boolean"
+ },
+ "type": {
+ "default": "ONE_TO_ONE_NAT",
+ "description": "The type of configuration. The default and only option is ONE_TO_ONE_NAT.",
+ "enum": [
+ "ONE_TO_ONE_NAT"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Address": {
+ "description": "A reserved address resource. (== resource_for beta.addresses ==) (== resource_for v1.addresses ==) (== resource_for beta.globalAddresses ==) (== resource_for v1.globalAddresses ==)",
+ "id": "Address",
+ "properties": {
+ "address": {
+ "description": "The static IP address represented by this resource.",
+ "type": "string"
+ },
+ "addressType": {
+ "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "UNSPECIFIED_TYPE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipVersion": {
+ "description": "The IP Version that will be used by this address. Valid options are IPV4 or IPV6. This can only be specified for a global address.",
+ "enum": [
+ "IPV4",
+ "IPV6",
+ "UNSPECIFIED_VERSION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#address",
+ "description": "[Output Only] Type of the resource. Always compute#address for addresses.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this Address, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an Address.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this Address resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.addresses.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "networkTier": {
+ "description": "This signifies the networking tier used for configuring this Address and can only take the following values: PREMIUM , STANDARD.\n\nIf this field is not specified, it is assumed to be PREMIUM.",
+ "enum": [
+ "PREMIUM",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses. You must specify this field as part of the HTTP request URL. You cannot set this field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
+ "enum": [
+ "IN_USE",
+ "RESERVED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with GCE_ENDPOINT/DNS_RESOLVER purposes.",
+ "type": "string"
+ },
+ "users": {
+ "description": "[Output Only] The URLs of the resources that are using this address.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "AddressAggregatedList": {
+ "id": "AddressAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AddressesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of addresses."
+ },
+ "description": "A list of AddressesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#addressAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#addressAggregatedList for aggregated lists of addresses.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AddressList": {
+ "description": "Contains a list of addresses.",
+ "id": "AddressList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Address resources.",
+ "items": {
+ "$ref": "Address"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#addressList",
+ "description": "[Output Only] Type of resource. Always compute#addressList for lists of addresses.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AddressesScopedList": {
+ "id": "AddressesScopedList",
+ "properties": {
+ "addresses": {
+ "description": "[Output Only] List of addresses contained in this scope.",
+ "items": {
+ "$ref": "Address"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AliasIpRange": {
+ "description": "An alias IP range attached to an instance's network interface.",
+ "id": "AliasIpRange",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24).",
+ "type": "string"
+ },
+ "subnetworkRangeName": {
+ "description": "Optional subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AttachedDisk": {
+ "description": "An instance-attached disk resource.",
+ "id": "AttachedDisk",
+ "properties": {
+ "autoDelete": {
+ "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).",
+ "type": "boolean"
+ },
+ "boot": {
+ "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.",
+ "type": "boolean"
+ },
+ "deviceName": {
+ "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance.\n\nIf not specified, the server chooses a default device name to apply to this disk, in the form persistent-disks-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
+ "type": "string"
+ },
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "index": {
+ "description": "[Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "initializeParams": {
+ "$ref": "AttachedDiskInitializeParams",
+ "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both."
+ },
+ "interface": {
+ "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
+ "enum": [
+ "NVME",
+ "SCSI"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#attachedDisk",
+ "description": "[Output Only] Type of the resource. Always compute#attachedDisk for attached disks.",
+ "type": "string"
+ },
+ "licenses": {
+ "description": "[Output Only] Any valid publicly visible licenses.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "mode": {
+ "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
+ "enum": [
+ "READ_ONLY",
+ "READ_WRITE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "source": {
+ "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
+ "enum": [
+ "PERSISTENT",
+ "SCRATCH"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AttachedDiskInitializeParams": {
+ "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both.",
+ "id": "AttachedDiskInitializeParams",
+ "properties": {
+ "diskName": {
+ "description": "Specifies the disk name. If not specified, the default is to use the name of the instance.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "Specifies the size of the disk in base-2 GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "diskStorageType": {
+ "description": "[Deprecated] Storage type of the disk.",
+ "enum": [
+ "HDD",
+ "SSD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "diskType": {
+ "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard\n\n\nOther values include pd-ssd and local-ssd. If you define this field, you can provide either the full or partial URL. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType \n- projects/project/zones/zone/diskTypes/diskType \n- zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is the name of the disk type, not URL.",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks.",
+ "type": "object"
+ },
+ "sourceImage": {
+ "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\nprojects/debian-cloud/global/images/family/debian-8\n\n\nAlternatively, use a specific version of a public operating system image:\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD\n\n\nTo create a disk with a custom image that you created, specify the image name in the following format:\nglobal/images/my-custom-image\n\n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\nglobal/images/family/my-image-family\n\n\nIf the source image is deleted later, this field will not be set.",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys."
+ }
+ },
+ "type": "object"
+ },
+ "AuditConfig": {
+ "description": "Specifies the audit configuration for a service. The configuration determines which permission types are logged, and what identities, if any, are exempted from logging. An AuditConfig must have one or more AuditLogConfigs.\n\nIf there are AuditConfigs for both `allServices` and a specific service, the union of the two AuditConfigs is used for that service: the log_types specified in each AuditConfig are enabled, and the exempted_members in each AuditLogConfig are exempted.\n\nExample Policy with multiple AuditConfigs:\n\n{ \"audit_configs\": [ { \"service\": \"allServices\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", }, { \"log_type\": \"ADMIN_READ\", } ] }, { \"service\": \"fooservice.googleapis.com\" \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", }, { \"log_type\": \"DATA_WRITE\", \"exempted_members\": [ \"user:bar@gmail.com\" ] } ] } ] }\n\nFor fooservice, this policy enables DATA_READ, DATA_WRITE and ADMIN_READ logging. It also exempts foo@gmail.com from DATA_READ logging, and bar@gmail.com from DATA_WRITE logging.",
+ "id": "AuditConfig",
+ "properties": {
+ "auditLogConfigs": {
+ "description": "The configuration for logging of each type of permission.",
+ "items": {
+ "$ref": "AuditLogConfig"
+ },
+ "type": "array"
+ },
+ "exemptedMembers": {
+ "description": "",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "service": {
+ "description": "Specifies a service that will be enabled for audit logging. For example, `storage.googleapis.com`, `cloudsql.googleapis.com`. `allServices` is a special value that covers all services.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AuditLogConfig": {
+ "description": "Provides the configuration for logging a type of permissions. Example:\n\n{ \"audit_log_configs\": [ { \"log_type\": \"DATA_READ\", \"exempted_members\": [ \"user:foo@gmail.com\" ] }, { \"log_type\": \"DATA_WRITE\", } ] }\n\nThis enables 'DATA_READ' and 'DATA_WRITE' logging, while exempting foo@gmail.com from DATA_READ logging.",
+ "id": "AuditLogConfig",
+ "properties": {
+ "exemptedMembers": {
+ "description": "Specifies the identities that do not cause logging for this type of permission. Follows the same format of [Binding.members][].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "logType": {
+ "description": "The log type that this config enables.",
+ "enum": [
+ "ADMIN_READ",
+ "DATA_READ",
+ "DATA_WRITE",
+ "LOG_TYPE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AuthorizationLoggingOptions": {
+ "description": "Authorization-related information used by Cloud Audit Logging.",
+ "id": "AuthorizationLoggingOptions",
+ "properties": {
+ "permissionType": {
+ "description": "The type of the permission that was checked.",
+ "enum": [
+ "ADMIN_READ",
+ "ADMIN_WRITE",
+ "DATA_READ",
+ "DATA_WRITE",
+ "PERMISSION_TYPE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Autoscaler": {
+ "description": "Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances. (== resource_for beta.autoscalers ==) (== resource_for v1.autoscalers ==) (== resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==)",
+ "id": "Autoscaler",
+ "properties": {
+ "autoscalingPolicy": {
+ "$ref": "AutoscalingPolicy",
+ "description": "The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#autoscaler",
+ "description": "[Output Only] Type of the resource. Always compute#autoscaler for autoscalers.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroups.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the autoscaler configuration.",
+ "enum": [
+ "ACTIVE",
+ "DELETING",
+ "ERROR",
+ "PENDING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusDetails": {
+ "description": "[Output Only] Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
+ "items": {
+ "$ref": "AutoscalerStatusDetails"
+ },
+ "type": "array"
+ },
+ "target": {
+ "description": "URL of the managed instance group that this autoscaler will scale.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalerAggregatedList": {
+ "id": "AutoscalerAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AutoscalersScopedList",
+ "description": "[Output Only] Name of the scope containing this set of autoscalers."
+ },
+ "description": "A list of AutoscalersScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#autoscalerAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#autoscalerAggregatedList for aggregated lists of autoscalers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalerList": {
+ "description": "Contains a list of Autoscaler resources.",
+ "id": "AutoscalerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Autoscaler resources.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#autoscalerList",
+ "description": "[Output Only] Type of resource. Always compute#autoscalerList for lists of autoscalers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalerStatusDetails": {
+ "id": "AutoscalerStatusDetails",
+ "properties": {
+ "message": {
+ "description": "The status message.",
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of error returned.",
+ "enum": [
+ "ALL_INSTANCES_UNHEALTHY",
+ "BACKEND_SERVICE_DOES_NOT_EXIST",
+ "CAPPED_AT_MAX_NUM_REPLICAS",
+ "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE",
+ "CUSTOM_METRIC_INVALID",
+ "MIN_EQUALS_MAX",
+ "MISSING_CUSTOM_METRIC_DATA_POINTS",
+ "MISSING_LOAD_BALANCING_DATA_POINTS",
+ "MORE_THAN_ONE_BACKEND_SERVICE",
+ "NOT_ENOUGH_QUOTA_AVAILABLE",
+ "REGION_RESOURCE_STOCKOUT",
+ "SCALING_TARGET_DOES_NOT_EXIST",
+ "UNKNOWN",
+ "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION",
+ "ZONE_RESOURCE_STOCKOUT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalersScopedList": {
+ "id": "AutoscalersScopedList",
+ "properties": {
+ "autoscalers": {
+ "description": "[Output Only] List of autoscalers contained in this scope.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of autoscalers when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicy": {
+ "description": "Cloud Autoscaler policy.",
+ "id": "AutoscalingPolicy",
+ "properties": {
+ "coolDownPeriodSec": {
+ "description": "The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "cpuUtilization": {
+ "$ref": "AutoscalingPolicyCpuUtilization",
+ "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
+ },
+ "customMetricUtilizations": {
+ "description": "Configuration parameters of autoscaling based on a custom metric.",
+ "items": {
+ "$ref": "AutoscalingPolicyCustomMetricUtilization"
+ },
+ "type": "array"
+ },
+ "loadBalancingUtilization": {
+ "$ref": "AutoscalingPolicyLoadBalancingUtilization",
+ "description": "Configuration parameters of autoscaling based on load balancer."
+ },
+ "maxNumReplicas": {
+ "description": "The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minNumReplicas": {
+ "description": "The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyCpuUtilization": {
+ "description": "CPU utilization policy.",
+ "id": "AutoscalingPolicyCpuUtilization",
+ "properties": {
+ "utilizationTarget": {
+ "description": "The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.",
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyCustomMetricUtilization": {
+ "description": "Custom utilization metric policy.",
+ "id": "AutoscalingPolicyCustomMetricUtilization",
+ "properties": {
+ "filter": {
+ "description": "A filter string, compatible with a Stackdriver Monitoring filter string for TimeSeries.list API call. This filter is used to select a specific TimeSeries for the purpose of autoscaling and to determine whether the metric is exporting per-instance or per-group data.\n\nFor the filter to be valid for autoscaling purposes, the following rules apply: \n- You can only use the AND operator for joining selectors. \n- You can only use direct equality comparison operator (=) without any functions for each selector. \n- You can specify the metric in both the filter string and in the metric field. However, if specified in both places, the metric must be identical. \n- The monitored resource type determines what kind of values are expected for the metric. If it is a gce_instance, the autoscaler expects the metric to include a separate TimeSeries for each instance in a group. In such a case, you cannot filter on resource labels.\nIf the resource type is any other value, the autoscaler expects this metric to contain values that apply to the entire autoscaled instance group and resource label filtering can be performed to point autoscaler at the correct TimeSeries to scale upon. This is called a per-group metric for the purpose of autoscaling.\n\nIf not specified, the type defaults to gce_instance. \n\nYou should provide a filter that is selective enough to pick just one TimeSeries for the autoscaled group or for each of the instances (if you are using gce_instance resource type). If multiple TimeSeries are returned upon the query execution, the autoscaler will sum their respective values to obtain its scaling value.",
+ "type": "string"
+ },
+ "metric": {
+ "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE.",
+ "type": "string"
+ },
+ "singleInstanceAssignment": {
+ "description": "If scaling is based on a per-group metric value that represents the total amount of work to be done or resource usage, set this value to an amount assigned for a single instance of the scaled group. Autoscaler will keep the number of instances proportional to the value of this metric, the metric itself should not change value due to group resizing.\n\nA good metric to use with the target is for example pubsub.googleapis.com/subscription/num_undelivered_messages or a custom metric exporting the total number of requests coming to your instances.\n\nA bad example would be a metric exporting an average or median latency, since this value can't include a chunk assignable to a single instance, it could be better used with utilization_target instead.",
+ "format": "double",
+ "type": "number"
+ },
+ "utilizationTarget": {
+ "description": "The target value of the metric that autoscaler should maintain. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
+ "format": "double",
+ "type": "number"
+ },
+ "utilizationTargetType": {
+ "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.",
+ "enum": [
+ "DELTA_PER_MINUTE",
+ "DELTA_PER_SECOND",
+ "GAUGE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "AutoscalingPolicyLoadBalancingUtilization": {
+ "description": "Configuration parameters of autoscaling based on load balancing.",
+ "id": "AutoscalingPolicyLoadBalancingUtilization",
+ "properties": {
+ "utilizationTarget": {
+ "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Backend": {
+ "description": "Message containing information of one individual backend.",
+ "id": "Backend",
+ "properties": {
+ "balancingMode": {
+ "description": "Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).\n\nFor Internal Load Balancing, the default and only supported mode is CONNECTION.",
+ "enum": [
+ "CONNECTION",
+ "RATE",
+ "UTILIZATION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "capacityScaler": {
+ "description": "A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "group": {
+ "description": "The fully-qualified URL of a Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.\n\nNote that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.\n\nWhen the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService.",
+ "type": "string"
+ },
+ "maxConnections": {
+ "description": "The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxConnectionsPerInstance": {
+ "description": "The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxRate": {
+ "description": "The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxRatePerInstance": {
+ "description": "The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ },
+ "maxUtilization": {
+ "description": "Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "BackendBucket": {
+ "description": "A BackendBucket resource. This resource defines a Cloud Storage bucket.",
+ "id": "BackendBucket",
+ "properties": {
+ "bucketName": {
+ "description": "Cloud Storage bucket name.",
+ "type": "string"
+ },
+ "cdnPolicy": {
+ "$ref": "BackendBucketCdnPolicy",
+ "description": "Cloud CDN Coniguration for this BackendBucket."
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional textual description of the resource; provided by the client when the resource is created.",
+ "type": "string"
+ },
+ "enableCdn": {
+ "description": "If true, enable Cloud CDN for this BackendBucket.",
+ "type": "boolean"
+ },
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#backendBucket",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendBucketCdnPolicy": {
+ "description": "Message containing Cloud CDN configuration for a backend bucket.",
+ "id": "BackendBucketCdnPolicy",
+ "properties": {
+ "signedUrlCacheMaxAgeSec": {
+ "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this bucket had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
+ "format": "int64",
+ "type": "string"
+ },
+ "signedUrlKeyNames": {
+ "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend bucket.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "BackendBucketList": {
+ "description": "Contains a list of BackendBucket resources.",
+ "id": "BackendBucketList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of BackendBucket resources.",
+ "items": {
+ "$ref": "BackendBucket"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendBucketList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "BackendService": {
+ "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)",
+ "id": "BackendService",
+ "properties": {
+ "affinityCookieTtlSec": {
+ "description": "Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "backends": {
+ "description": "The list of backends that serve this BackendService.",
+ "items": {
+ "$ref": "Backend"
+ },
+ "type": "array"
+ },
+ "cdnPolicy": {
+ "$ref": "BackendServiceCdnPolicy",
+ "description": "Cloud CDN configuration for this BackendService."
+ },
+ "connectionDraining": {
+ "$ref": "ConnectionDraining"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "enableCDN": {
+ "description": "If true, enable Cloud CDN for this BackendService.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "type": "boolean"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.",
+ "format": "byte",
+ "type": "string"
+ },
+ "healthChecks": {
+ "description": "The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.\n\nFor internal load balancing, a URL to a HealthCheck resource must be specified instead.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "iap": {
+ "$ref": "BackendServiceIAP"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#backendService",
+ "description": "[Output Only] Type of resource. Always compute#backendService for backend services.",
+ "type": "string"
+ },
+ "loadBalancingScheme": {
+ "description": "Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "INVALID_LOAD_BALANCING_SCHEME"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "type": "string"
+ },
+ "protocol": {
+ "description": "The protocol this BackendService uses to communicate with backends.\n\nPossible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.\n\nFor internal load balancing, the possible values are TCP and UDP, and the default is TCP.",
+ "enum": [
+ "HTTP",
+ "HTTPS",
+ "SSL",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "securityPolicy": {
+ "description": "[Output Only] The resource URL for the security policy associated with this backend service.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sessionAffinity": {
+ "description": "Type of session affinity to use. The default is NONE.\n\nWhen the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.\n\nWhen the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.\n\nWhen the protocol is UDP, this field is not used.",
+ "enum": [
+ "CLIENT_IP",
+ "CLIENT_IP_PORT_PROTO",
+ "CLIENT_IP_PROTO",
+ "GENERATED_COOKIE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceAggregatedList": {
+ "description": "Contains a list of BackendServicesScopedList.",
+ "id": "BackendServiceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "BackendServicesScopedList",
+ "description": "Name of the scope containing this set of BackendServices."
+ },
+ "description": "A list of BackendServicesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#backendServiceAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceCdnPolicy": {
+ "description": "Message containing Cloud CDN configuration for a backend service.",
+ "id": "BackendServiceCdnPolicy",
+ "properties": {
+ "cacheKeyPolicy": {
+ "$ref": "CacheKeyPolicy",
+ "description": "The CacheKeyPolicy for this CdnPolicy."
+ },
+ "signedUrlCacheMaxAgeSec": {
+ "description": "Number of seconds up to which the response to a signed URL request will be cached in the CDN. After this time period, the Signed URL will be revalidated before being served. Defaults to 1hr (3600s). If this field is set, Cloud CDN will internally act as though all responses from this backend had a ?Cache-Control: public, max-age=[TTL]? header, regardless of any existing Cache-Control header. The actual headers served in responses will not be altered.",
+ "format": "int64",
+ "type": "string"
+ },
+ "signedUrlKeyNames": {
+ "description": "[Output Only] Names of the keys currently configured for Cloud CDN Signed URL on this backend service.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceGroupHealth": {
+ "id": "BackendServiceGroupHealth",
+ "properties": {
+ "healthStatus": {
+ "items": {
+ "$ref": "HealthStatus"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendServiceGroupHealth",
+ "description": "[Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceIAP": {
+ "description": "Identity-Aware Proxy",
+ "id": "BackendServiceIAP",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "oauth2ClientId": {
+ "type": "string"
+ },
+ "oauth2ClientSecret": {
+ "type": "string"
+ },
+ "oauth2ClientSecretSha256": {
+ "description": "[Output Only] SHA256 hash value for the field oauth2_client_secret above.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServiceList": {
+ "description": "Contains a list of BackendService resources.",
+ "id": "BackendServiceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of BackendService resources.",
+ "items": {
+ "$ref": "BackendService"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendServiceList",
+ "description": "[Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "BackendServicesScopedList": {
+ "id": "BackendServicesScopedList",
+ "properties": {
+ "backendServices": {
+ "description": "List of BackendServices contained in this scope.",
+ "items": {
+ "$ref": "BackendService"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of backend services when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Binding": {
+ "description": "Associates `members` with a `role`.",
+ "id": "Binding",
+ "properties": {
+ "condition": {
+ "$ref": "Expr",
+ "description": "The condition that is associated with this binding. NOTE: an unsatisfied condition will not allow user access via current binding. Different bindings, including their conditions, are examined independently. This field is only visible as GOOGLE_INTERNAL or CONDITION_TRUSTED_TESTER."
+ },
+ "members": {
+ "description": "Specifies the identities requesting access for a Cloud Platform resource. `members` can have the following values:\n\n* `allUsers`: A special identifier that represents anyone who is on the internet; with or without a Google account.\n\n* `allAuthenticatedUsers`: A special identifier that represents anyone who is authenticated with a Google account or a service account.\n\n* `user:{emailid}`: An email address that represents a specific Google account. For example, `alice@gmail.com` or `joe@example.com`.\n\n\n\n* `serviceAccount:{emailid}`: An email address that represents a service account. For example, `my-other-app@appspot.gserviceaccount.com`.\n\n* `group:{emailid}`: An email address that represents a Google group. For example, `admins@example.com`.\n\n\n\n* `domain:{domain}`: A Google Apps domain name that represents all the users of that domain. For example, `google.com` or `example.com`.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "role": {
+ "description": "Role that is assigned to `members`. For example, `roles/viewer`, `roles/editor`, or `roles/owner`.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CacheInvalidationRule": {
+ "id": "CacheInvalidationRule",
+ "properties": {
+ "host": {
+ "description": "If set, this invalidation rule will only apply to requests with a Host header matching host.",
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CacheKeyPolicy": {
+ "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
+ "id": "CacheKeyPolicy",
+ "properties": {
+ "includeHost": {
+ "description": "If true, requests to different hosts will be cached separately.",
+ "type": "boolean"
+ },
+ "includeProtocol": {
+ "description": "If true, http and https requests will be cached separately.",
+ "type": "boolean"
+ },
+ "includeQueryString": {
+ "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.",
+ "type": "boolean"
+ },
+ "queryStringBlacklist": {
+ "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '\u0026' and '=' will be percent encoded and not treated as delimiters.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "queryStringWhitelist": {
+ "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '\u0026' and '=' will be percent encoded and not treated as delimiters.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Commitment": {
+ "description": "Represents a Commitment resource. Creating a Commitment resource means that you are purchasing a committed use contract with an explicit start and end time. You can create commitments based on vCPUs and memory usage and receive discounted rates. For full details, read Signing Up for Committed Use Discounts.\n\nCommitted use discounts are subject to Google Cloud Platform's Service Specific Terms. By purchasing a committed use discount, you agree to these terms. Committed use discounts will not renew, so you must purchase a new commitment to continue receiving discounts. (== resource_for beta.commitments ==) (== resource_for v1.commitments ==)",
+ "id": "Commitment",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "endTimestamp": {
+ "description": "[Output Only] Commitment end time in RFC3339 text format.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#commitment",
+ "description": "[Output Only] Type of the resource. Always compute#commitment for commitments.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "plan": {
+ "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
+ "enum": [
+ "INVALID",
+ "THIRTY_SIX_MONTH",
+ "TWELVE_MONTH"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where this commitment may be used.",
+ "type": "string"
+ },
+ "resources": {
+ "description": "List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
+ "items": {
+ "$ref": "ResourceCommitment"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "startTimestamp": {
+ "description": "[Output Only] Commitment start time in RFC3339 text format.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
+ "enum": [
+ "ACTIVE",
+ "CREATING",
+ "EXPIRED",
+ "NOT_YET_ACTIVE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional, human-readable explanation of the status.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CommitmentAggregatedList": {
+ "id": "CommitmentAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "CommitmentsScopedList",
+ "description": "[Output Only] Name of the scope containing this set of commitments."
+ },
+ "description": "A list of CommitmentsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#commitmentAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#commitmentAggregatedList for aggregated lists of commitments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "CommitmentList": {
+ "description": "Contains a list of Commitment resources.",
+ "id": "CommitmentList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Commitment resources.",
+ "items": {
+ "$ref": "Commitment"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#commitmentList",
+ "description": "[Output Only] Type of resource. Always compute#commitmentList for lists of commitments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "CommitmentsScopedList": {
+ "id": "CommitmentsScopedList",
+ "properties": {
+ "commitments": {
+ "description": "[Output Only] List of commitments contained in this scope.",
+ "items": {
+ "$ref": "Commitment"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of commitments when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Condition": {
+ "description": "A condition to be met.",
+ "id": "Condition",
+ "properties": {
+ "iam": {
+ "description": "Trusted attributes supplied by the IAM system.",
+ "enum": [
+ "APPROVER",
+ "ATTRIBUTION",
+ "AUTHORITY",
+ "CREDENTIALS_TYPE",
+ "JUSTIFICATION_TYPE",
+ "NO_ATTR",
+ "SECURITY_REALM"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "op": {
+ "description": "An operator to apply the subject with.",
+ "enum": [
+ "DISCHARGED",
+ "EQUALS",
+ "IN",
+ "NOT_EQUALS",
+ "NOT_IN",
+ "NO_OP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "svc": {
+ "description": "Trusted attributes discharged by the service.",
+ "type": "string"
+ },
+ "sys": {
+ "description": "Trusted attributes supplied by any service that owns resources and uses the IAM system for access control.",
+ "enum": [
+ "IP",
+ "NAME",
+ "NO_ATTR",
+ "REGION",
+ "SERVICE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "value": {
+ "description": "DEPRECATED. Use 'values' instead.",
+ "type": "string"
+ },
+ "values": {
+ "description": "The objects of the condition. This is mutually exclusive with 'value'.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ConnectionDraining": {
+ "description": "Message containing connection draining configuration.",
+ "id": "ConnectionDraining",
+ "properties": {
+ "drainingTimeoutSec": {
+ "description": "Time for which instance will be drained (not accept new connections, but still work to finish started).",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "CustomerEncryptionKey": {
+ "description": "Represents a customer-supplied encryption key",
+ "id": "CustomerEncryptionKey",
+ "properties": {
+ "rawKey": {
+ "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource.",
+ "type": "string"
+ },
+ "rsaEncryptedKey": {
+ "description": "Specifies an RFC 4648 base64 encoded, RSA-wrapped 2048-bit customer-supplied encryption key to either encrypt or decrypt this resource.\n\nThe key must meet the following requirements before you can provide it to Compute Engine: \n- The key is wrapped using a RSA public key certificate provided by Google. \n- After being wrapped, the key must be encoded in RFC 4648 base64 encoding. Get the RSA public key certificate provided by Google at:\nhttps://cloud-certs.storage.googleapis.com/google-cloud-csek-ingress.pem",
+ "type": "string"
+ },
+ "sha256": {
+ "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "CustomerEncryptionKeyProtectedDisk": {
+ "id": "CustomerEncryptionKeyProtectedDisk",
+ "properties": {
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Decrypts data associated with the disk with a customer-supplied encryption key."
+ },
+ "source": {
+ "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DeprecationStatus": {
+ "description": "Deprecation status for a public resource.",
+ "id": "DeprecationStatus",
+ "properties": {
+ "deleted": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "deprecated": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "obsolete": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "replacement": {
+ "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.",
+ "type": "string"
+ },
+ "state": {
+ "description": "The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
+ "enum": [
+ "DELETED",
+ "DEPRECATED",
+ "OBSOLETE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Disk": {
+ "description": "A Disk resource. (== resource_for beta.disks ==) (== resource_for v1.disks ==)",
+ "id": "Disk",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later."
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#disk",
+ "description": "[Output Only] Type of the resource. Always compute#disk for disks.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a disk.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "lastAttachTimestamp": {
+ "description": "[Output Only] Last attach timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "lastDetachTimestamp": {
+ "description": "[Output Only] Last detach timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "licenseCodes": {
+ "description": "Integer license codes indicating which licenses are attached to this disk.",
+ "items": {
+ "format": "int64",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "description": "Any applicable publicly visible licenses.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.disks.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "options": {
+ "description": "Internal use only.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the disk resides. Only applicable for regional resources. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "replicaZones": {
+ "description": "URLs of the zones where the disk should be replicated to. Only applicable for regional resources.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "sizeGb": {
+ "description": "Size of the persistent disk, specified in GB. You can specify this field when creating a persistent disk using the sourceImage or sourceSnapshot parameter, or specify it alone to create an empty persistent disk.\n\nIf you specify this field along with sourceImage or sourceSnapshot, the value of sizeGb must not be less than the size of the sourceImage or the size of the snapshot. Acceptable values are 1 to 65536, inclusive.",
+ "format": "int64",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "The source image used to create this disk. If the source image is deleted, this field will not be set.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\nprojects/debian-cloud/global/images/family/debian-8\n\n\nAlternatively, use a specific version of a public operating system image:\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD\n\n\nTo create a disk with a custom image that you created, specify the image name in the following format:\nglobal/images/my-custom-image\n\n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\nglobal/images/family/my-image-family",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
+ },
+ "sourceImageId": {
+ "description": "[Output Only] The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
+ "type": "string"
+ },
+ "sourceSnapshot": {
+ "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot \n- projects/project/global/snapshots/snapshot \n- global/snapshots/snapshot",
+ "type": "string"
+ },
+ "sourceSnapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
+ },
+ "sourceSnapshotId": {
+ "description": "[Output Only] The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of disk creation.",
+ "enum": [
+ "CREATING",
+ "FAILED",
+ "READY",
+ "RESTORING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "storageType": {
+ "description": "[Deprecated] Storage type of the persistent disk.",
+ "enum": [
+ "HDD",
+ "SSD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: project/zones/zone/diskTypes/pd-standard or pd-ssd",
+ "type": "string"
+ },
+ "users": {
+ "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskAggregatedList": {
+ "id": "DiskAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "DisksScopedList",
+ "description": "[Output Only] Name of the scope containing this set of disks."
+ },
+ "description": "A list of DisksScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#diskAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#diskAggregatedList for aggregated lists of persistent disks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskInstantiationConfig": {
+ "description": "A specification of the desired way to instantiate a disk in the instance template when its created from a source instance.",
+ "id": "DiskInstantiationConfig",
+ "properties": {
+ "autoDelete": {
+ "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).",
+ "type": "boolean"
+ },
+ "customImage": {
+ "description": "The custom source image to be used to restore this disk when instantiating this instance template.",
+ "type": "string"
+ },
+ "deviceName": {
+ "description": "Specifies the device name of the disk to which the configurations apply to.",
+ "type": "string"
+ },
+ "instantiateFrom": {
+ "description": "Specifies whether to include the disk and what image to use. Possible values are: \n- source-image: to use the same image that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. \n- source-image-family: to use the same image family that was used to create the source instance's corresponding disk. Applicable to the boot disk and additional read-write disks. \n- custom-image: to use a user-provided image url for disk creation. Applicable to the boot disk and additional read-write disks. \n- attach-read-only: to attach a read-only disk. Applicable to read-only disks. \n- do-not-include: to exclude a disk from the template. Applicable to additional read-write disks, local SSDs, and read-only disks.",
+ "enum": [
+ "ATTACH_READ_ONLY",
+ "BLANK",
+ "CUSTOM_IMAGE",
+ "DEFAULT",
+ "DO_NOT_INCLUDE",
+ "SOURCE_IMAGE",
+ "SOURCE_IMAGE_FAMILY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskList": {
+ "description": "A list of Disk resources.",
+ "id": "DiskList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Disk resources.",
+ "items": {
+ "$ref": "Disk"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#diskList",
+ "description": "[Output Only] Type of resource. Always compute#diskList for lists of disks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskMoveRequest": {
+ "id": "DiskMoveRequest",
+ "properties": {
+ "destinationZone": {
+ "description": "The URL of the destination zone to move the disk. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone",
+ "type": "string"
+ },
+ "targetDisk": {
+ "description": "The URL of the target disk to move. This can be a full or partial URL. For example, the following are all valid URLs to a disk: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskType": {
+ "description": "A DiskType resource. (== resource_for beta.diskTypes ==) (== resource_for v1.diskTypes ==)",
+ "id": "DiskType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "defaultDiskSizeGb": {
+ "description": "[Output Only] Server-defined default disk size in GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this disk type."
+ },
+ "description": {
+ "description": "[Output Only] An optional description of this resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#diskType",
+ "description": "[Output Only] Type of the resource. Always compute#diskType for disk types.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "validDiskSize": {
+ "description": "[Output Only] An optional textual description of the valid disk size, such as \"10GB-10TB\".",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the disk type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DiskTypeAggregatedList": {
+ "id": "DiskTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "DiskTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of disk types."
+ },
+ "description": "A list of DiskTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#diskTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#diskTypeAggregatedList.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskTypeList": {
+ "description": "Contains a list of disk types.",
+ "id": "DiskTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of DiskType resources.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#diskTypeList",
+ "description": "[Output Only] Type of resource. Always compute#diskTypeList for disk types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DiskTypesScopedList": {
+ "id": "DiskTypesScopedList",
+ "properties": {
+ "diskTypes": {
+ "description": "[Output Only] List of disk types contained in this scope.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of disk types when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DisksResizeRequest": {
+ "id": "DisksResizeRequest",
+ "properties": {
+ "sizeGb": {
+ "description": "The new size of the persistent disk, which is specified in GB.",
+ "format": "int64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "DisksScopedList": {
+ "id": "DisksScopedList",
+ "properties": {
+ "disks": {
+ "description": "[Output Only] List of disks contained in this scope.",
+ "items": {
+ "$ref": "Disk"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of disks when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "DistributionPolicy": {
+ "id": "DistributionPolicy",
+ "properties": {
+ "zones": {
+ "items": {
+ "$ref": "DistributionPolicyZoneConfiguration"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "DistributionPolicyZoneConfiguration": {
+ "id": "DistributionPolicyZoneConfiguration",
+ "properties": {
+ "zone": {
+ "annotations": {
+ "required": [
+ "compute.regionInstanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.update"
+ ]
+ },
+ "description": "URL of the zone where managed instance group is spawning instances (for regional resources). Zone has to belong to the region where managed instance group is located.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Expr": {
+ "description": "Represents an expression text. Example:\n\ntitle: \"User account presence\" description: \"Determines whether the request has a user account\" expression: \"size(request.user) \u003e 0\"",
+ "id": "Expr",
+ "properties": {
+ "description": {
+ "description": "An optional description of the expression. This is a longer text which describes the expression, e.g. when hovered over it in a UI.",
+ "type": "string"
+ },
+ "expression": {
+ "description": "Textual representation of an expression in Common Expression Language syntax.\n\nThe application context of the containing message determines which well-known feature set of CEL is supported.",
+ "type": "string"
+ },
+ "location": {
+ "description": "An optional string indicating the location of the expression for error reporting, e.g. a file name and a position in the file.",
+ "type": "string"
+ },
+ "title": {
+ "description": "An optional title for the expression, i.e. a short string describing its purpose. This can be used e.g. in UIs which allow to enter the expression.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Firewall": {
+ "description": "Represents a Firewall resource.",
+ "id": "Firewall",
+ "properties": {
+ "allowed": {
+ "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
+ "items": {
+ "properties": {
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "denied": {
+ "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection.",
+ "items": {
+ "properties": {
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "destinationRanges": {
+ "description": "If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "direction": {
+ "description": "Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.",
+ "enum": [
+ "EGRESS",
+ "INGRESS"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#firewall",
+ "description": "[Output Only] Type of the resource. Always compute#firewall for firewall rules.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.firewalls.insert",
+ "compute.firewalls.patch"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default",
+ "type": "string"
+ },
+ "priority": {
+ "description": "Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sourceRanges": {
+ "description": "If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceServiceAccounts": {
+ "description": "If source service accounts are specified, the firewall will apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both properties for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceTags": {
+ "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetServiceAccounts": {
+ "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetTags": {
+ "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "FirewallList": {
+ "description": "Contains a list of firewalls.",
+ "id": "FirewallList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Firewall resources.",
+ "items": {
+ "$ref": "Firewall"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#firewallList",
+ "description": "[Output Only] Type of resource. Always compute#firewallList for lists of firewalls.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "FixedOrPercent": {
+ "description": "Encapsulates numeric value that can be either absolute or relative.",
+ "id": "FixedOrPercent",
+ "properties": {
+ "calculated": {
+ "description": "[Output Only] Absolute value of VM instances calculated based on the specific mode.\n\n \n- If the value is fixed, then the caculated value is equal to the fixed value. \n- If the value is a percent, then the calculated value is percent/100 * targetSize. For example, the calculated value of a 80% of a managed instance group with 150 instances would be (80/100 * 150) = 120 VM instances. If there is a remainder, the number is rounded up.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "fixed": {
+ "description": "Specifies a fixed number of VM instances. This must be a positive integer.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "percent": {
+ "description": "Specifies a percentage of instances between 0 to 100%, inclusive. For example, specify 80 for 80%.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRule": {
+ "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, ports] tuple. (== resource_for beta.forwardingRules ==) (== resource_for v1.forwardingRules ==) (== resource_for beta.globalForwardingRules ==) (== resource_for v1.globalForwardingRules ==) (== resource_for beta.regionForwardingRules ==) (== resource_for v1.regionForwardingRules ==)",
+ "id": "ForwardingRule",
+ "properties": {
+ "IPAddress": {
+ "description": "The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing scheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, and for regional forwarding rules, the address must live in the same region as the forwarding rule. If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral internal IP address will be automatically allocated from the IP range of the subnet or network configured for this forwarding rule.\n\nAn address can be specified either by a literal IP address or a URL reference to an existing Address resource. The following examples are all valid: \n- 100.1.2.3 \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address \n- projects/project/regions/region/addresses/address \n- regions/region/addresses/address \n- global/addresses/address \n- address",
+ "type": "string"
+ },
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.\n\nWhen the load balancing scheme is INTERNAL, only TCP and UDP are valid.",
+ "enum": [
+ "AH",
+ "ESP",
+ "ICMP",
+ "SCTP",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "backendService": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the BackendService resource to receive the matched traffic.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipVersion": {
+ "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6. This can only be specified for a global forwarding rule.",
+ "enum": [
+ "IPV4",
+ "IPV6",
+ "UNSPECIFIED_VERSION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#forwardingRule",
+ "description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this resource, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a ForwardingRule.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this resource. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "loadBalancingScheme": {
+ "description": "This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "INVALID"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.",
+ "type": "string"
+ },
+ "networkTier": {
+ "description": "This signifies the networking tier used for configuring this load balancer and can only take the following values: PREMIUM , STANDARD.\n\nFor regional ForwardingRule, the valid values are PREMIUM and STANDARD. For GlobalForwardingRule, the valid value is PREMIUM.\n\nIf this field is not specified, it is assumed to be PREMIUM. If IPAddress is specified, this value must be equal to the networkTier of the Address.",
+ "enum": [
+ "PREMIUM",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "portRange": {
+ "description": "This field is used along with the target field for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable ports: \n- TargetHttpProxy: 80, 8080 \n- TargetHttpsProxy: 443 \n- TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1688, 1883, 5222 \n- TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1688, 1883, 5222 \n- TargetVpnGateway: 500, 4500",
+ "type": "string"
+ },
+ "ports": {
+ "description": "This field is used along with the backend_service field for internal load balancing.\n\nWhen the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule.\n\nYou may specify a maximum of up to 5 ports.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "serviceLabel": {
+ "description": "An optional prefix to the service name for this Forwarding Rule. If specified, will be the first label of the fully qualified service name.\n\nThe label must be 1-63 characters long, and comply with RFC1035. Specifically, the label must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.\n\nThis field is only used for internal load balancing.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "serviceName": {
+ "description": "[Output Only] The internal fully qualified service name for this Forwarding Rule.\n\nThis field is only used for internal load balancing.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.\n\nIf the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.",
+ "type": "string"
+ },
+ "target": {
+ "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRuleAggregatedList": {
+ "id": "ForwardingRuleAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "ForwardingRulesScopedList",
+ "description": "Name of the scope containing this set of addresses."
+ },
+ "description": "A list of ForwardingRulesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#forwardingRuleAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#forwardingRuleAggregatedList for lists of forwarding rules.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRuleList": {
+ "description": "Contains a list of ForwardingRule resources.",
+ "id": "ForwardingRuleList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of ForwardingRule resources.",
+ "items": {
+ "$ref": "ForwardingRule"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#forwardingRuleList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ForwardingRulesScopedList": {
+ "id": "ForwardingRulesScopedList",
+ "properties": {
+ "forwardingRules": {
+ "description": "List of forwarding rules contained in this scope.",
+ "items": {
+ "$ref": "ForwardingRule"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of forwarding rules when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "GlobalSetLabelsRequest": {
+ "id": "GlobalSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a get() request to the resource to get the latest fingerprint.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A list of labels to apply for this resource. Each label key \u0026 value must comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For example, \"webserver-frontend\": \"images\". A label value can also be empty (e.g. \"my-label\": \"\").",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "GuestOsFeature": {
+ "description": "Guest OS features.",
+ "id": "GuestOsFeature",
+ "properties": {
+ "type": {
+ "description": "The ID of a supported feature. Read Enabling guest operating system features to see a list of available options.",
+ "enum": [
+ "FEATURE_TYPE_UNSPECIFIED",
+ "MULTI_IP_SUBNET",
+ "SECURE_BOOT",
+ "UEFI_COMPATIBLE",
+ "VIRTIO_SCSI_MULTIQUEUE",
+ "WINDOWS"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HTTPHealthCheck": {
+ "id": "HTTPHealthCheck",
+ "properties": {
+ "host": {
+ "description": "The value of the host header in the HTTP health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTP health check request. The default value is /.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HTTPSHealthCheck": {
+ "id": "HTTPSHealthCheck",
+ "properties": {
+ "host": {
+ "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTPS health check request. The default value is /.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The string to match anywhere in the first 1024 bytes of the response body. If left empty (the default value), the status code determines health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HealthCheck": {
+ "description": "An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.",
+ "id": "HealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in 3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "httpHealthCheck": {
+ "$ref": "HTTPHealthCheck"
+ },
+ "httpsHealthCheck": {
+ "$ref": "HTTPSHealthCheck"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#healthCheck",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sslHealthCheck": {
+ "$ref": "SSLHealthCheck"
+ },
+ "tcpHealthCheck": {
+ "$ref": "TCPHealthCheck"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "type": {
+ "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.",
+ "enum": [
+ "HTTP",
+ "HTTPS",
+ "INVALID",
+ "SSL",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "udpHealthCheck": {
+ "$ref": "UDPHealthCheck"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HealthCheckList": {
+ "description": "Contains a list of HealthCheck resources.",
+ "id": "HealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HealthCheck resources.",
+ "items": {
+ "$ref": "HealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#healthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HealthCheckReference": {
+ "description": "A full or valid partial URL to a health check. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check \n- projects/project-id/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
+ "id": "HealthCheckReference",
+ "properties": {
+ "healthCheck": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HealthStatus": {
+ "id": "HealthStatus",
+ "properties": {
+ "healthState": {
+ "description": "Health state of the instance.",
+ "enum": [
+ "HEALTHY",
+ "UNHEALTHY"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "instance": {
+ "description": "URL of the instance resource.",
+ "type": "string"
+ },
+ "ipAddress": {
+ "description": "The IP address represented by this resource.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The port on the instance.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HostRule": {
+ "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
+ "id": "HostRule",
+ "properties": {
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "hosts": {
+ "description": "The list of host patterns to match. They must be valid hostnames, except * will match any string of ([a-z0-9-.]*). In that case, * must be the first character and must be followed in the pattern by either - or ..",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pathMatcher": {
+ "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "HttpHealthCheck": {
+ "description": "An HttpHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTP.",
+ "id": "HttpHealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "host": {
+ "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#httpHealthCheck",
+ "description": "[Output Only] Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the HTTP health check request. The default value is 80.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTP health check request. The default value is /.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HttpHealthCheckList": {
+ "description": "Contains a list of HttpHealthCheck resources.",
+ "id": "HttpHealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HttpHealthCheck resources.",
+ "items": {
+ "$ref": "HttpHealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#httpHealthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "HttpsHealthCheck": {
+ "description": "An HttpsHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTPS.",
+ "id": "HttpsHealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "host": {
+ "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#httpsHealthCheck",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTPS health check request. The default value is \"/\".",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "HttpsHealthCheckList": {
+ "description": "Contains a list of HttpsHealthCheck resources.",
+ "id": "HttpsHealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HttpsHealthCheck resources.",
+ "items": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#httpsHealthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Image": {
+ "description": "An Image resource. (== resource_for beta.images ==) (== resource_for v1.images ==)",
+ "id": "Image",
+ "properties": {
+ "archiveSizeBytes": {
+ "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
+ "format": "int64",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "The deprecation status associated with this image."
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "Size of the image when restored onto a persistent disk (in GB).",
+ "format": "int64",
+ "type": "string"
+ },
+ "family": {
+ "description": "The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.",
+ "type": "string"
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "imageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the image using a customer-supplied encryption key.\n\nAfter you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
+ },
+ "kind": {
+ "default": "compute#image",
+ "description": "[Output Only] Type of the resource. Always compute#image for images.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an image.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "licenseCodes": {
+ "description": "Integer license codes indicating which licenses are attached to this image.",
+ "items": {
+ "format": "int64",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "description": "Any applicable license URI.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "rawDisk": {
+ "description": "The parameters of the raw disk image.",
+ "properties": {
+ "containerType": {
+ "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
+ "enum": [
+ "TAR"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "sha1Checksum": {
+ "description": "An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.",
+ "pattern": "[a-f0-9]{40}",
+ "type": "string"
+ },
+ "source": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "The full Google Cloud Storage URL where the disk image is stored. You must provide either this property or the sourceDisk property but not both.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sourceDisk": {
+ "description": "URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk",
+ "type": "string"
+ },
+ "sourceDiskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
+ },
+ "sourceDiskId": {
+ "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "URL of the source image used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image.",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
+ },
+ "sourceImageId": {
+ "description": "[Output Only] The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name.",
+ "type": "string"
+ },
+ "sourceSnapshot": {
+ "description": "URL of the source snapshot used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the sourceImage property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image.",
+ "type": "string"
+ },
+ "sourceSnapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
+ },
+ "sourceSnapshotId": {
+ "description": "[Output Only] The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name.",
+ "type": "string"
+ },
+ "sourceType": {
+ "default": "RAW",
+ "description": "The type of the image used to create this disk. The default and only value is RAW",
+ "enum": [
+ "RAW"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
+ "enum": [
+ "FAILED",
+ "PENDING",
+ "READY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ImageList": {
+ "description": "Contains a list of images.",
+ "id": "ImageList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Image resources.",
+ "items": {
+ "$ref": "Image"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#imageList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Instance": {
+ "description": "An Instance resource. (== resource_for beta.instances ==) (== resource_for v1.instances ==)",
+ "id": "Instance",
+ "properties": {
+ "canIpForward": {
+ "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding.",
+ "type": "boolean"
+ },
+ "cpuPlatform": {
+ "description": "[Output Only] The CPU platform used by this instance.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deletionProtection": {
+ "description": "Whether the resource should be protected against deletion.",
+ "type": "boolean"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "disks": {
+ "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
+ "items": {
+ "$ref": "AttachedDisk"
+ },
+ "type": "array"
+ },
+ "guestAccelerators": {
+ "description": "List of the type and count of accelerator cards attached to the instance.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instance",
+ "description": "[Output Only] Type of the resource. Always compute#instance for instances.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "machineType": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert"
+ ]
+ },
+ "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type:\nzones/us-central1-f/machineTypes/n1-standard-1\n\n\nTo create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):\nzones/zone/machineTypes/custom-CPUS-MEMORY\n\n\nFor example: zones/us-central1-f/machineTypes/custom-4-5120 \n\nFor a full list of restrictions, read the Specifications for custom machine types.",
+ "type": "string"
+ },
+ "metadata": {
+ "$ref": "Metadata",
+ "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
+ },
+ "minCpuPlatform": {
+ "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\".",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert"
+ ]
+ },
+ "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "networkInterfaces": {
+ "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
+ "items": {
+ "$ref": "NetworkInterface"
+ },
+ "type": "array"
+ },
+ "scheduling": {
+ "$ref": "Scheduling",
+ "description": "Sets the scheduling options for this instance."
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "serviceAccounts": {
+ "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.\n\nService accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
+ "items": {
+ "$ref": "ServiceAccount"
+ },
+ "type": "array"
+ },
+ "startRestricted": {
+ "description": "[Output Only] Whether a VM has been restricted for start because Compute Engine has detected suspicious activity.",
+ "type": "boolean"
+ },
+ "status": {
+ "description": "[Output Only] The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING, SUSPENDED, and TERMINATED.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional, human-readable explanation of the status.",
+ "type": "string"
+ },
+ "tags": {
+ "$ref": "Tags",
+ "description": "A list of tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035."
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceAggregatedList": {
+ "id": "InstanceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstancesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of instances."
+ },
+ "description": "A list of InstancesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#instanceAggregatedList for aggregated lists of Instance resources.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroup": {
+ "description": "InstanceGroups (== resource_for beta.instanceGroups ==) (== resource_for v1.instanceGroups ==) (== resource_for beta.regionInstanceGroups ==) (== resource_for v1.regionInstanceGroups ==)",
+ "id": "InstanceGroup",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this instance group in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "[Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this instance group, generated by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceGroup",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroup for instance groups.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert"
+ ]
+ },
+ "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "Assigns a name to a port number. For example: {name: \"http\", port: 80}\n\nThis allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] \n\nNamed ports apply to all instances in this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "network": {
+ "description": "The URL of the network to which all instances in the instance group belong.",
+ "type": "string"
+ },
+ "region": {
+ "description": "The URL of the region where the instance group is located (for regional resources).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this instance group. The server generates this URL.",
+ "type": "string"
+ },
+ "size": {
+ "description": "[Output Only] The total number of instances in the instance group.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "subnetwork": {
+ "description": "The URL of the subnetwork to which all instances in the instance group belong.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the instance group is located (for zonal resources).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupAggregatedList": {
+ "id": "InstanceGroupAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstanceGroupsScopedList",
+ "description": "The name of the scope that contains this set of instance groups."
+ },
+ "description": "A list of InstanceGroupsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceGroupAggregatedList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupAggregatedList for aggregated lists of instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupList": {
+ "description": "A list of InstanceGroup resources.",
+ "id": "InstanceGroupList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroup resources.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupList for instance group lists.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManager": {
+ "description": "An Instance Group Manager resource. (== resource_for beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers ==) (== resource_for beta.regionInstanceGroupManagers ==) (== resource_for v1.regionInstanceGroupManagers ==)",
+ "id": "InstanceGroupManager",
+ "properties": {
+ "autoHealingPolicies": {
+ "description": "The autohealing policy for this managed instance group. You can specify only one value.",
+ "items": {
+ "$ref": "InstanceGroupManagerAutoHealingPolicy"
+ },
+ "type": "array"
+ },
+ "baseInstanceName": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert"
+ ]
+ },
+ "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
+ "pattern": "[a-z][-a-z0-9]{0,57}",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this managed instance group in RFC3339 text format.",
+ "type": "string"
+ },
+ "currentActions": {
+ "$ref": "InstanceGroupManagerActionsSummary",
+ "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "distributionPolicy": {
+ "$ref": "DistributionPolicy",
+ "description": "Policy valid only for regional managed instance groups."
+ },
+ "failoverAction": {
+ "description": "The action to perform in case of zone failure. Only one value is supported, NO_FAILOVER. The default is NO_FAILOVER.",
+ "enum": [
+ "NO_FAILOVER",
+ "UNKNOWN"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "[Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this resource type. The server generates this identifier.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "[Output Only] The URL of the Instance Group resource.",
+ "type": "string"
+ },
+ "instanceTemplate": {
+ "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManager",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.insert"
+ ]
+ },
+ "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "pendingActions": {
+ "$ref": "InstanceGroupManagerPendingActionsSummary",
+ "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are pending for each of those actions."
+ },
+ "region": {
+ "description": "[Output Only] The URL of the region where the managed instance group resides (for regional resources).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this managed instance group. The server defines this URL.",
+ "type": "string"
+ },
+ "serviceAccount": {
+ "description": "[Output Only] The service account to be used as credentials for all operations performed by the managed instance group on instances. The service accounts needs all permissions required to create and delete instances. By default, the service account {projectNumber}@cloudservices.gserviceaccount.com is used.",
+ "type": "string"
+ },
+ "targetPools": {
+ "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetSize": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.insert"
+ ]
+ },
+ "description": "The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "updatePolicy": {
+ "$ref": "InstanceGroupManagerUpdatePolicy",
+ "description": "The update policy for this managed instance group."
+ },
+ "versions": {
+ "description": "Specifies the instance templates used by this managed instance group to create instances.\n\nEach version is defined by an instanceTemplate. Every template can appear at most once per instance group. This field overrides the top-level instanceTemplate field. Read more about the relationships between these fields. Exactly one version must leave the targetSize field unset. That version will be applied to all remaining instances. For more information, read about canary updates.",
+ "items": {
+ "$ref": "InstanceGroupManagerVersion"
+ },
+ "type": "array"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the managed instance group is located (for zonal resources).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerActionsSummary": {
+ "id": "InstanceGroupManagerActionsSummary",
+ "properties": {
+ "abandoning": {
+ "description": "[Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.\n\nIf you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creatingWithoutRetries": {
+ "description": "[Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "deleting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "none": {
+ "description": "[Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "recreating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "refreshing": {
+ "description": "[Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "restarting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "verifying": {
+ "description": "[Output Only] The number of instances in the managed instance group that are being verified. See the managedInstances[].currentAction property in the listManagedInstances method documentation.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerAggregatedList": {
+ "id": "InstanceGroupManagerAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstanceGroupManagersScopedList",
+ "description": "[Output Only] The name of the scope that contains this set of managed instance groups."
+ },
+ "description": "A list of InstanceGroupManagersScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManagerAggregatedList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerAggregatedList for an aggregated list of managed instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerAutoHealingPolicy": {
+ "id": "InstanceGroupManagerAutoHealingPolicy",
+ "properties": {
+ "healthCheck": {
+ "description": "The URL for the health check that signals autohealing.",
+ "type": "string"
+ },
+ "initialDelaySec": {
+ "description": "The number of seconds that the managed instance group waits before it applies autohealing policies to new instances or recently recreated instances. This initial delay allows instances to initialize and run their startup scripts before the instance group determines that they are UNHEALTHY. This prevents the managed instance group from recreating its instances prematurely. This value must be from range [0, 3600].",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerList": {
+ "description": "[Output Only] A list of managed instance groups.",
+ "id": "InstanceGroupManagerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroupManager resources.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManagerList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerPendingActionsSummary": {
+ "id": "InstanceGroupManagerPendingActionsSummary",
+ "properties": {
+ "creating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be created.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "deleting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be deleted.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "recreating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be recreated.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "restarting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are pending to be restarted.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerUpdatePolicy": {
+ "id": "InstanceGroupManagerUpdatePolicy",
+ "properties": {
+ "maxSurge": {
+ "$ref": "FixedOrPercent",
+ "description": "The maximum number of instances that can be created above the specified targetSize during the update process. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxSurge."
+ },
+ "maxUnavailable": {
+ "$ref": "FixedOrPercent",
+ "description": "The maximum number of instances that can be unavailable during the update process. An instance is considered available if all of the following conditions are satisfied:\n\n \n- The instance's status is RUNNING. \n- If there is a health check on the instance group, the instance's liveness health check result must be HEALTHY at least once. If there is no health check on the group, then the instance only needs to have a status of RUNNING to be considered available. By default, a fixed value of 1 is used. This value can be either a fixed number or a percentage if the instance group has 10 or more instances. If you set a percentage, the number of instances will be rounded up if necessary.\n\nAt least one of either maxSurge or maxUnavailable must be greater than 0. Learn more about maxUnavailable."
+ },
+ "minReadySec": {
+ "description": "Minimum number of seconds to wait for after a newly created instance becomes available. This value must be from range [0, 3600].",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minimalAction": {
+ "description": "Minimal action to be taken on an instance. You can specify either RESTART to restart existing instances or REPLACE to delete and create new instances from the target template. If you specify a code\u003eRESTART, the Updater will attempt to perform that action only. However, if the Updater determines that the minimal action you specify is not enough to perform the update, it might perform a more disruptive action.",
+ "enum": [
+ "REPLACE",
+ "RESTART"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "OPPORTUNISTIC",
+ "PROACTIVE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagerVersion": {
+ "id": "InstanceGroupManagerVersion",
+ "properties": {
+ "instanceTemplate": {
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the version. Unique among all versions in the scope of this managed instance group.",
+ "type": "string"
+ },
+ "targetSize": {
+ "$ref": "FixedOrPercent",
+ "description": "Specifies the intended number of instances to be created from the instanceTemplate. The final number of instances created from the template will be equal to: \n- If expressed as a fixed number, the minimum of either targetSize.fixed or instanceGroupManager.targetSize is used. \n- if expressed as a percent, the targetSize would be (targetSize.percent/100 * InstanceGroupManager.targetSize) If there is a remainder, the number is rounded up. If unset, this version will update any remaining instances not updated by another version. Read Starting a canary update for more information."
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersAbandonInstancesRequest": {
+ "id": "InstanceGroupManagersAbandonInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersDeleteInstancesRequest": {
+ "id": "InstanceGroupManagersDeleteInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersListManagedInstancesResponse": {
+ "id": "InstanceGroupManagersListManagedInstancesResponse",
+ "properties": {
+ "managedInstances": {
+ "description": "[Output Only] The list of instances in the managed instance group.",
+ "items": {
+ "$ref": "ManagedInstance"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersRecreateInstancesRequest": {
+ "id": "InstanceGroupManagersRecreateInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersResizeAdvancedRequest": {
+ "id": "InstanceGroupManagersResizeAdvancedRequest",
+ "properties": {
+ "noCreationRetries": {
+ "description": "If this flag is true, the managed instance group attempts to create all instances initiated by this resize request only once. If there is an error during creation, the managed instance group does not retry create this instance, and we will decrease the targetSize of the request instead. If the flag is false, the group attemps to recreate each instance continuously until it succeeds.\n\nThis flag matters only in the first attempt of creation of an instance. After an instance is successfully created while this flag is enabled, the instance behaves the same way as all the other instances created with a regular resize request. In particular, if a running instance dies unexpectedly at a later time and needs to be recreated, this mode does not affect the recreation behavior in that scenario.\n\nThis flag is applicable only to the current resize request. It does not influence other resize requests in any way.\n\nYou can see which instances is being creating in which mode by calling the get or listManagedInstances API.",
+ "type": "boolean"
+ },
+ "targetSize": {
+ "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersScopedList": {
+ "id": "InstanceGroupManagersScopedList",
+ "properties": {
+ "instanceGroupManagers": {
+ "description": "[Output Only] The list of managed instance groups that are contained in the specified project and zone.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] The warning that replaces the list of managed instance groups when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersSetAutoHealingRequest": {
+ "id": "InstanceGroupManagersSetAutoHealingRequest",
+ "properties": {
+ "autoHealingPolicies": {
+ "items": {
+ "$ref": "InstanceGroupManagerAutoHealingPolicy"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersSetInstanceTemplateRequest": {
+ "id": "InstanceGroupManagersSetInstanceTemplateRequest",
+ "properties": {
+ "instanceTemplate": {
+ "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupManagersSetTargetPoolsRequest": {
+ "id": "InstanceGroupManagersSetTargetPoolsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the target pools information. Use this optional property to prevent conflicts when multiple users change the target pools settings concurrently. Obtain the fingerprint with the instanceGroupManagers.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "targetPools": {
+ "description": "The list of target pool URLs that instances in this managed instance group belong to. The managed instance group applies these target pools to all of the instances in the group. Existing instances and new instances in the group all receive these target pool settings.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsAddInstancesRequest": {
+ "id": "InstanceGroupsAddInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of instances to add to the instance group.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsListInstances": {
+ "id": "InstanceGroupsListInstances",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceWithNamedPorts resources.",
+ "items": {
+ "$ref": "InstanceWithNamedPorts"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupsListInstances",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupsListInstances for the list of instances in the specified instance group.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsListInstancesRequest": {
+ "id": "InstanceGroupsListInstancesRequest",
+ "properties": {
+ "instanceState": {
+ "description": "A filter for the state of the instances in the instance group. Valid options are ALL or RUNNING. If you do not specify this parameter the list includes all instances regardless of their state.",
+ "enum": [
+ "ALL",
+ "RUNNING"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsRemoveInstancesRequest": {
+ "id": "InstanceGroupsRemoveInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of instances to remove from the instance group.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsScopedList": {
+ "id": "InstanceGroupsScopedList",
+ "properties": {
+ "instanceGroups": {
+ "description": "[Output Only] The list of instance groups that are contained in this scope.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that replaces the list of instance groups when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceGroupsSetNamedPortsRequest": {
+ "id": "InstanceGroupsSetNamedPortsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "The list of named ports to set for this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceList": {
+ "description": "Contains a list of instances.",
+ "id": "InstanceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Instance resources.",
+ "items": {
+ "$ref": "Instance"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceList",
+ "description": "[Output Only] Type of resource. Always compute#instanceList for lists of Instance resources.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceListReferrers": {
+ "description": "Contains a list of instance referrers.",
+ "id": "InstanceListReferrers",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Reference resources.",
+ "items": {
+ "$ref": "Reference"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceListReferrers",
+ "description": "[Output Only] Type of resource. Always compute#instanceListReferrers for lists of Instance referrers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceMoveRequest": {
+ "id": "InstanceMoveRequest",
+ "properties": {
+ "destinationZone": {
+ "description": "The URL of the destination zone to move the instance. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone",
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "The URL of the target instance to move. This can be a full or partial URL. For example, the following are all valid URLs to an instance: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceProperties": {
+ "description": "",
+ "id": "InstanceProperties",
+ "properties": {
+ "canIpForward": {
+ "description": "Enables instances created based on this template to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information.",
+ "type": "boolean"
+ },
+ "description": {
+ "description": "An optional text description for the instances that are created from this instance template.",
+ "type": "string"
+ },
+ "disks": {
+ "description": "An array of disks that are associated with the instances that are created from this template.",
+ "items": {
+ "$ref": "AttachedDisk"
+ },
+ "type": "array"
+ },
+ "guestAccelerators": {
+ "description": "A list of guest accelerator cards' type and count to use for instances created from the instance template.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to instances that are created from this template.",
+ "type": "object"
+ },
+ "machineType": {
+ "annotations": {
+ "required": [
+ "compute.instanceTemplates.insert"
+ ]
+ },
+ "description": "The machine type to use for instances that are created from this template.",
+ "type": "string"
+ },
+ "metadata": {
+ "$ref": "Metadata",
+ "description": "The metadata key/value pairs to assign to instances that are created from this template. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
+ },
+ "minCpuPlatform": {
+ "description": "Minimum cpu/platform to be used by this instance. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform.",
+ "type": "string"
+ },
+ "networkInterfaces": {
+ "description": "An array of network access configurations for this interface.",
+ "items": {
+ "$ref": "NetworkInterface"
+ },
+ "type": "array"
+ },
+ "scheduling": {
+ "$ref": "Scheduling",
+ "description": "Specifies the scheduling options for the instances that are created from this template."
+ },
+ "serviceAccounts": {
+ "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this template. Use metadata queries to obtain the access tokens for these instances.",
+ "items": {
+ "$ref": "ServiceAccount"
+ },
+ "type": "array"
+ },
+ "tags": {
+ "$ref": "Tags",
+ "description": "A list of tags to apply to the instances that are created from this template. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
+ }
+ },
+ "type": "object"
+ },
+ "InstanceReference": {
+ "id": "InstanceReference",
+ "properties": {
+ "instance": {
+ "description": "The URL for a specific instance.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceTemplate": {
+ "description": "An Instance Template resource. (== resource_for beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==)",
+ "id": "InstanceTemplate",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this instance template in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this instance template. The server defines this identifier.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceTemplate",
+ "description": "[Output Only] The resource type, which is always compute#instanceTemplate for instance templates.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceTemplates.insert"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "properties": {
+ "$ref": "InstanceProperties",
+ "description": "The instance properties for this instance template."
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this instance template. The server defines this URL.",
+ "type": "string"
+ },
+ "sourceInstance": {
+ "description": "The source instance used to create the template. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance",
+ "type": "string"
+ },
+ "sourceInstanceParams": {
+ "$ref": "SourceInstanceParams",
+ "description": "The source instance params to use to create this instance template."
+ }
+ },
+ "type": "object"
+ },
+ "InstanceTemplateList": {
+ "description": "A list of instance templates.",
+ "id": "InstanceTemplateList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceTemplate resources.",
+ "items": {
+ "$ref": "InstanceTemplate"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceTemplateList",
+ "description": "[Output Only] The resource type, which is always compute#instanceTemplatesListResponse for instance template lists.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstanceWithNamedPorts": {
+ "id": "InstanceWithNamedPorts",
+ "properties": {
+ "instance": {
+ "description": "[Output Only] The URL of the instance.",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "[Output Only] The named ports that belong to this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "status": {
+ "description": "[Output Only] The status of the instance.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesScopedList": {
+ "id": "InstancesScopedList",
+ "properties": {
+ "instances": {
+ "description": "[Output Only] List of instances contained in this scope.",
+ "items": {
+ "$ref": "Instance"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of instances when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetLabelsRequest": {
+ "id": "InstancesSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "Fingerprint of the previous set of labels for this resource, used to prevent conflicts. Provide the latest fingerprint value when making a request to add or change labels.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetMachineResourcesRequest": {
+ "id": "InstancesSetMachineResourcesRequest",
+ "properties": {
+ "guestAccelerators": {
+ "description": "List of the type and count of accelerator cards attached to the instance.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetMachineTypeRequest": {
+ "id": "InstancesSetMachineTypeRequest",
+ "properties": {
+ "machineType": {
+ "description": "Full or partial URL of the machine type resource. See Machine Types for a full list of machine types. For example: zones/us-central1-f/machineTypes/n1-standard-1",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetMinCpuPlatformRequest": {
+ "id": "InstancesSetMinCpuPlatformRequest",
+ "properties": {
+ "minCpuPlatform": {
+ "description": "Minimum cpu/platform this instance should be started at.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesSetServiceAccountRequest": {
+ "id": "InstancesSetServiceAccountRequest",
+ "properties": {
+ "email": {
+ "description": "Email address of the service account.",
+ "type": "string"
+ },
+ "scopes": {
+ "description": "The list of scopes to be made available for this service account.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "InstancesStartWithEncryptionKeyRequest": {
+ "id": "InstancesStartWithEncryptionKeyRequest",
+ "properties": {
+ "disks": {
+ "description": "Array of disks associated with this instance that are protected with a customer-supplied encryption key.\n\nIn order to start the instance, the disk url and its corresponding key must be provided.\n\nIf the disk is not protected with a customer-supplied encryption key it should not be specified.",
+ "items": {
+ "$ref": "CustomerEncryptionKeyProtectedDisk"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "Interconnect": {
+ "description": "Represents an Interconnects resource. The Interconnects resource is a dedicated connection between Google's network and your on-premises network. For more information, see the Dedicated overview page. (== resource_for v1.interconnects ==) (== resource_for beta.interconnects ==)",
+ "id": "Interconnect",
+ "properties": {
+ "adminEnabled": {
+ "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true.",
+ "type": "boolean"
+ },
+ "circuitInfos": {
+ "description": "[Output Only] List of CircuitInfo objects, that describe the individual circuits in this LAG.",
+ "items": {
+ "$ref": "InterconnectCircuitInfo"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "customerName": {
+ "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "expectedOutages": {
+ "description": "[Output Only] List of outages expected for this Interconnect.",
+ "items": {
+ "$ref": "InterconnectOutageNotification"
+ },
+ "type": "array"
+ },
+ "googleIpAddress": {
+ "description": "[Output Only] IP address configured on the Google side of the Interconnect link. This can be used only for ping tests.",
+ "type": "string"
+ },
+ "googleReferenceId": {
+ "description": "[Output Only] Google reference ID; to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "interconnectAttachments": {
+ "description": "[Output Only] A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "interconnectType": {
+ "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
+ "enum": [
+ "DEDICATED",
+ "IT_PRIVATE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#interconnect",
+ "description": "[Output Only] Type of the resource. Always compute#interconnect for interconnects.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this Interconnect, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an Interconnect.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this Interconnect resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "linkType": {
+ "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
+ "enum": [
+ "LINK_TYPE_ETHERNET_10G_LR"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "location": {
+ "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.interconnects.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "nocContactEmail": {
+ "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Stackdriver logs alerting and Cloud Notifications.",
+ "type": "string"
+ },
+ "operationalStatus": {
+ "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
+ "enum": [
+ "OS_ACTIVE",
+ "OS_UNPROVISIONED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "peerIpAddress": {
+ "description": "[Output Only] IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests.",
+ "type": "string"
+ },
+ "provisionedLinkCount": {
+ "description": "[Output Only] Number of links actually provisioned in this interconnect.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestedLinkCount": {
+ "description": "Target number of physical links in the link bundle, as requested by the customer.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachment": {
+ "description": "Represents an InterconnectAttachment (VLAN attachment) resource. For more information, see Creating VLAN Attachments. (== resource_for beta.interconnectAttachments ==) (== resource_for v1.interconnectAttachments ==)",
+ "id": "InterconnectAttachment",
+ "properties": {
+ "adminEnabled": {
+ "description": "Determines whether this Attachment will carry packets. Not present for PARTNER_PROVIDER.",
+ "type": "boolean"
+ },
+ "candidateSubnets": {
+ "description": "Up to 16 candidate prefixes that can be used to restrict the allocation of cloudRouterIpAddress and customerRouterIpAddress for this attachment. All prefixes must be within link-local address space (169.254.0.0/16) and must be /29 or shorter (/28, /27, etc). Google will attempt to select an unused /29 from the supplied candidate prefix(es). The request will fail if all possible /29s are in use on Google?s edge. If not supplied, Google will randomly select an unused /29 from all of link-local space.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "cloudRouterIpAddress": {
+ "description": "[Output Only] IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "customerRouterIpAddress": {
+ "description": "[Output Only] IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource.",
+ "type": "string"
+ },
+ "googleReferenceId": {
+ "description": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "interconnect": {
+ "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#interconnectAttachment",
+ "description": "[Output Only] Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this InterconnectAttachment, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an InterconnectAttachment.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this InterconnectAttachment resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "operationalStatus": {
+ "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
+ "enum": [
+ "OS_ACTIVE",
+ "OS_UNPROVISIONED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "privateInterconnectInfo": {
+ "$ref": "InterconnectAttachmentPrivateInfo",
+ "description": "[Output Only] Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional interconnect attachment resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "router": {
+ "description": "URL of the cloud router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network \u0026 region within which the Cloud Router is configured.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "type": {
+ "enum": [
+ "DEDICATED"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "vlanTag8021q": {
+ "description": "Available only for DEDICATED and PARTNER_PROVIDER. Desired VLAN tag for this attachment, in the range 2-4094. This field refers to 802.1q VLAN tag, also known as IEEE 802.1Q Only specified at creation time.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentAggregatedList": {
+ "id": "InterconnectAttachmentAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InterconnectAttachmentsScopedList",
+ "description": "Name of the scope containing this set of interconnect attachments."
+ },
+ "description": "A list of InterconnectAttachmentsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#interconnectAttachmentAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentAggregatedList for aggregated lists of interconnect attachments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentList": {
+ "description": "Response to the list request, and contains a list of interconnect attachments.",
+ "id": "InterconnectAttachmentList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InterconnectAttachment resources.",
+ "items": {
+ "$ref": "InterconnectAttachment"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#interconnectAttachmentList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentList for lists of interconnect attachments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentPrivateInfo": {
+ "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
+ "id": "InterconnectAttachmentPrivateInfo",
+ "properties": {
+ "tag8021q": {
+ "description": "[Output Only] 802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region.",
+ "format": "uint32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectAttachmentsScopedList": {
+ "id": "InterconnectAttachmentsScopedList",
+ "properties": {
+ "interconnectAttachments": {
+ "description": "List of interconnect attachments contained in this scope.",
+ "items": {
+ "$ref": "InterconnectAttachment"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectCircuitInfo": {
+ "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only. Next id: 4",
+ "id": "InterconnectCircuitInfo",
+ "properties": {
+ "customerDemarcId": {
+ "description": "Customer-side demarc ID for this circuit.",
+ "type": "string"
+ },
+ "googleCircuitId": {
+ "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up.",
+ "type": "string"
+ },
+ "googleDemarcId": {
+ "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectList": {
+ "description": "Response to the list request, and contains a list of interconnects.",
+ "id": "InterconnectList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Interconnect resources.",
+ "items": {
+ "$ref": "Interconnect"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#interconnectList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectList for lists of interconnects.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectLocation": {
+ "description": "Represents an InterconnectLocations resource. The InterconnectLocations resource describes the locations where you can connect to Google's networks. For more information, see Colocation Facilities.",
+ "id": "InterconnectLocation",
+ "properties": {
+ "address": {
+ "description": "[Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character.",
+ "type": "string"
+ },
+ "availabilityZone": {
+ "description": "[Output Only] Availability zone for this location. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: \"zone1\" or \"zone2\".",
+ "type": "string"
+ },
+ "city": {
+ "description": "[Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: \"Chicago, IL\", \"Amsterdam, Netherlands\".",
+ "type": "string"
+ },
+ "continent": {
+ "description": "[Output Only] Continent for this location.",
+ "enum": [
+ "AFRICA",
+ "ASIA_PAC",
+ "C_AFRICA",
+ "C_ASIA_PAC",
+ "C_EUROPE",
+ "C_NORTH_AMERICA",
+ "C_SOUTH_AMERICA",
+ "EUROPE",
+ "NORTH_AMERICA",
+ "SOUTH_AMERICA"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "[Output Only] An optional description of the resource.",
+ "type": "string"
+ },
+ "facilityProvider": {
+ "description": "[Output Only] The name of the provider for this facility (e.g., EQUINIX).",
+ "type": "string"
+ },
+ "facilityProviderFacilityId": {
+ "description": "[Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1).",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#interconnectLocation",
+ "description": "[Output Only] Type of the resource. Always compute#interconnectLocation for interconnect locations.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "peeringdbFacilityId": {
+ "description": "[Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb).",
+ "type": "string"
+ },
+ "regionInfos": {
+ "description": "[Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.",
+ "items": {
+ "$ref": "InterconnectLocationRegionInfo"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectLocationList": {
+ "description": "Response to the list request, and contains a list of interconnect locations.",
+ "id": "InterconnectLocationList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InterconnectLocation resources.",
+ "items": {
+ "$ref": "InterconnectLocation"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#interconnectLocationList",
+ "description": "[Output Only] Type of resource. Always compute#interconnectLocationList for lists of interconnect locations.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectLocationRegionInfo": {
+ "description": "Information about any potential InterconnectAttachments between an Interconnect at a specific InterconnectLocation, and a specific Cloud Region.",
+ "id": "InterconnectLocationRegionInfo",
+ "properties": {
+ "expectedRttMs": {
+ "description": "Expected round-trip time in milliseconds, from this InterconnectLocation to a VM in this region.",
+ "format": "int64",
+ "type": "string"
+ },
+ "locationPresence": {
+ "description": "Identifies the network presence of this location.",
+ "enum": [
+ "GLOBAL",
+ "LOCAL_REGION",
+ "LP_GLOBAL",
+ "LP_LOCAL_REGION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "URL for the region of this location.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "InterconnectOutageNotification": {
+ "description": "Description of a planned outage on this Interconnect. Next id: 9",
+ "id": "InterconnectOutageNotification",
+ "properties": {
+ "affectedCircuits": {
+ "description": "Iff issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "A description about the purpose of the outage.",
+ "type": "string"
+ },
+ "endTime": {
+ "description": "Scheduled end time for the outage (milliseconds since Unix epoch).",
+ "format": "int64",
+ "type": "string"
+ },
+ "issueType": {
+ "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+ "enum": [
+ "IT_OUTAGE",
+ "IT_PARTIAL_OUTAGE",
+ "OUTAGE",
+ "PARTIAL_OUTAGE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Unique identifier for this outage notification.",
+ "type": "string"
+ },
+ "source": {
+ "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
+ "enum": [
+ "GOOGLE",
+ "NSRC_GOOGLE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "startTime": {
+ "description": "Scheduled start time for the outage (milliseconds since Unix epoch).",
+ "format": "int64",
+ "type": "string"
+ },
+ "state": {
+ "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
+ "enum": [
+ "ACTIVE",
+ "CANCELLED",
+ "NS_ACTIVE",
+ "NS_CANCELED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "License": {
+ "description": "A license resource.",
+ "id": "License",
+ "properties": {
+ "chargesUseFee": {
+ "description": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee.",
+ "type": "boolean"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional textual description of the resource; provided by the client when the resource is created.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#license",
+ "description": "[Output Only] Type of resource. Always compute#license for licenses.",
+ "type": "string"
+ },
+ "licenseCode": {
+ "description": "[Output Only] The unique code used to attach this license to images, snapshots, and disks.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "[Output Only] Name of the resource. The name is 1-63 characters long and complies with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "resourceRequirements": {
+ "$ref": "LicenseResourceRequirements"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "transferable": {
+ "description": "If false, licenses will not be copied from the source resource when creating an image from a disk, disk from snapshot, or snapshot from disk.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "LicenseCode": {
+ "id": "LicenseCode",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "[Output Only] Description of this License Code.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#licenseCode",
+ "description": "[Output Only] Type of resource. Always compute#licenseCode for licenses.",
+ "type": "string"
+ },
+ "licenseAlias": {
+ "description": "[Output Only] URL and description aliases of Licenses with the same License Code.",
+ "items": {
+ "$ref": "LicenseCodeLicenseAlias"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.licenses.insert"
+ ]
+ },
+ "description": "[Output Only] Name of the resource. The name is 1-20 characters long and must be a valid 64 bit integer.",
+ "pattern": "[0-9]{0,20}?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "state": {
+ "description": "[Output Only] Current state of this License Code.",
+ "enum": [
+ "DISABLED",
+ "ENABLED",
+ "RESTRICTED",
+ "STATE_UNSPECIFIED",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "transferable": {
+ "description": "[Output Only] If true, the license will remain attached when creating images or snapshots from disks. Otherwise, the license is not transferred.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "LicenseCodeLicenseAlias": {
+ "id": "LicenseCodeLicenseAlias",
+ "properties": {
+ "description": {
+ "description": "[Output Only] Description of this License Code.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] URL of license corresponding to this License Code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LicenseResourceRequirements": {
+ "id": "LicenseResourceRequirements",
+ "properties": {
+ "minGuestCpuCount": {
+ "description": "Minimum number of guest cpus required to use the Instance. Enforced at Instance creation and Instance start.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minMemoryMb": {
+ "description": "Minimum memory required to use the Instance. Enforced at Instance creation and Instance start.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "LicensesListResponse": {
+ "id": "LicensesListResponse",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of License resources.",
+ "items": {
+ "$ref": "License"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfig": {
+ "description": "Specifies what kind of log the caller must write",
+ "id": "LogConfig",
+ "properties": {
+ "cloudAudit": {
+ "$ref": "LogConfigCloudAuditOptions",
+ "description": "Cloud audit options."
+ },
+ "counter": {
+ "$ref": "LogConfigCounterOptions",
+ "description": "Counter options."
+ },
+ "dataAccess": {
+ "$ref": "LogConfigDataAccessOptions",
+ "description": "Data access options."
+ }
+ },
+ "type": "object"
+ },
+ "LogConfigCloudAuditOptions": {
+ "description": "Write a Cloud Audit log",
+ "id": "LogConfigCloudAuditOptions",
+ "properties": {
+ "authorizationLoggingOptions": {
+ "$ref": "AuthorizationLoggingOptions",
+ "description": "Information used by the Cloud Audit Logging pipeline."
+ },
+ "logName": {
+ "description": "The log_name to populate in the Cloud Audit Record.",
+ "enum": [
+ "ADMIN_ACTIVITY",
+ "DATA_ACCESS",
+ "UNSPECIFIED_LOG_NAME"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfigCounterOptions": {
+ "description": "Increment a streamz counter with the specified metric and field names.\n\nMetric names should start with a '/', generally be lowercase-only, and end in \"_count\". Field names should not contain an initial slash. The actual exported metric names will have \"/iam/policy\" prepended.\n\nField names correspond to IAM request parameters and field values are their respective values.\n\nAt present the only supported field names are - \"iam_principal\", corresponding to IAMContext.principal; - \"\" (empty string), resulting in one aggretated counter with no field.\n\nExamples: counter { metric: \"/debug_access_count\" field: \"iam_principal\" } ==\u003e increment counter /iam/policy/backend_debug_access_count {iam_principal=[value of IAMContext.principal]}\n\nAt this time we do not support: * multiple field names (though this may be supported in the future) * decrementing the counter * incrementing it by anything other than 1",
+ "id": "LogConfigCounterOptions",
+ "properties": {
+ "field": {
+ "description": "The field value to attribute.",
+ "type": "string"
+ },
+ "metric": {
+ "description": "The metric to update.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "LogConfigDataAccessOptions": {
+ "description": "Write a Data Access (Gin) log",
+ "id": "LogConfigDataAccessOptions",
+ "properties": {
+ "logMode": {
+ "description": "Whether Gin logging should happen in a fail-closed manner at the caller. This is relevant only in the LocalIAM implementation, for now.",
+ "enum": [
+ "LOG_FAIL_CLOSED",
+ "LOG_MODE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MachineType": {
+ "description": "A Machine Type resource. (== resource_for v1.machineTypes ==) (== resource_for beta.machineTypes ==)",
+ "id": "MachineType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this machine type."
+ },
+ "description": {
+ "description": "[Output Only] An optional textual description of the resource.",
+ "type": "string"
+ },
+ "guestCpus": {
+ "description": "[Output Only] The number of virtual CPUs that are available to the instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "isSharedCpu": {
+ "description": "[Output Only] Whether this machine type has a shared CPU. See Shared-core machine types for more information.",
+ "type": "boolean"
+ },
+ "kind": {
+ "default": "compute#machineType",
+ "description": "[Output Only] The type of the resource. Always compute#machineType for machine types.",
+ "type": "string"
+ },
+ "maximumPersistentDisks": {
+ "description": "[Output Only] Maximum persistent disks allowed.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maximumPersistentDisksSizeGb": {
+ "description": "[Output Only] Maximum total persistent disks size (GB) allowed.",
+ "format": "int64",
+ "type": "string"
+ },
+ "memoryMb": {
+ "description": "[Output Only] The amount of physical memory available to the instance, defined in MB.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The name of the zone where the machine type resides, such as us-central1-a.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "MachineTypeAggregatedList": {
+ "id": "MachineTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "MachineTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of machine types."
+ },
+ "description": "A list of MachineTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#machineTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#machineTypeAggregatedList for aggregated lists of machine types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MachineTypeList": {
+ "description": "Contains a list of machine types.",
+ "id": "MachineTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of MachineType resources.",
+ "items": {
+ "$ref": "MachineType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#machineTypeList",
+ "description": "[Output Only] Type of resource. Always compute#machineTypeList for lists of machine types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "MachineTypesScopedList": {
+ "id": "MachineTypesScopedList",
+ "properties": {
+ "machineTypes": {
+ "description": "[Output Only] List of machine types contained in this scope.",
+ "items": {
+ "$ref": "MachineType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that appears when the machine types list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstance": {
+ "description": "Next available tag: 12",
+ "id": "ManagedInstance",
+ "properties": {
+ "currentAction": {
+ "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful. \n- CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's targetSize value is decreased instead. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance. \n- VERIFYING The managed instance group has created the instance and it is in the process of being verified.",
+ "enum": [
+ "ABANDONING",
+ "CREATING",
+ "CREATING_WITHOUT_RETRIES",
+ "DELETING",
+ "NONE",
+ "RECREATING",
+ "REFRESHING",
+ "RESTARTING",
+ "VERIFYING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output only] The unique identifier for this resource. This field is empty when instance does not exist.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instance": {
+ "description": "[Output Only] The URL of the instance. The URL can exist even if the instance has not yet been created.",
+ "type": "string"
+ },
+ "instanceStatus": {
+ "description": "[Output Only] The status of the instance. This field is empty when the instance does not exist.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "lastAttempt": {
+ "$ref": "ManagedInstanceLastAttempt",
+ "description": "[Output Only] Information about the last attempt to create or delete the instance."
+ },
+ "version": {
+ "$ref": "ManagedInstanceVersion",
+ "description": "[Output Only] Intended version of this instance."
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstanceLastAttempt": {
+ "id": "ManagedInstanceLastAttempt",
+ "properties": {
+ "errors": {
+ "description": "[Output Only] Encountered errors during the last attempt to create or delete the instance.",
+ "properties": {
+ "errors": {
+ "description": "[Output Only] The array of errors encountered while processing this operation.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] The error type identifier for this error.",
+ "type": "string"
+ },
+ "location": {
+ "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional.",
+ "type": "string"
+ },
+ "message": {
+ "description": "[Output Only] An optional, human-readable error message.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ManagedInstanceVersion": {
+ "id": "ManagedInstanceVersion",
+ "properties": {
+ "instanceTemplate": {
+ "description": "[Output Only] The intended template of the instance. This field is empty when current_action is one of { DELETING, ABANDONING }.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the version.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Metadata": {
+ "description": "A metadata key/value entry.",
+ "id": "Metadata",
+ "properties": {
+ "fingerprint": {
+ "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.",
+ "format": "byte",
+ "type": "string"
+ },
+ "items": {
+ "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB.",
+ "items": {
+ "properties": {
+ "key": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert",
+ "compute.projects.setCommonInstanceMetadata"
+ ]
+ },
+ "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.",
+ "pattern": "[a-zA-Z0-9-_]{1,128}",
+ "type": "string"
+ },
+ "value": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert",
+ "compute.projects.setCommonInstanceMetadata"
+ ]
+ },
+ "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB).",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#metadata",
+ "description": "[Output Only] Type of the resource. Always compute#metadata for metadata.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NamedPort": {
+ "description": "The named port. For example: .",
+ "id": "NamedPort",
+ "properties": {
+ "name": {
+ "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The port number, which can be a value between 1 and 65535.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Network": {
+ "description": "Represents a Network resource. Read Networks and Firewalls for more information. (== resource_for v1.networks ==) (== resource_for beta.networks ==)",
+ "id": "Network",
+ "properties": {
+ "IPv4Range": {
+ "description": "The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
+ "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}/[0-9]{1,2}",
+ "type": "string"
+ },
+ "autoCreateSubnetworks": {
+ "description": "When set to true, the network is created in \"auto subnet mode\". When set to false, the network is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region.",
+ "type": "boolean"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "gatewayIPv4": {
+ "description": "A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.",
+ "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#network",
+ "description": "[Output Only] Type of the resource. Always compute#network for networks.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.networks.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "peerings": {
+ "description": "[Output Only] List of network peerings for the resource.",
+ "items": {
+ "$ref": "NetworkPeering"
+ },
+ "type": "array"
+ },
+ "routingConfig": {
+ "$ref": "NetworkRoutingConfig",
+ "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "subnetworks": {
+ "description": "[Output Only] Server-defined fully-qualified URLs for all subnetworks in this network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkInterface": {
+ "description": "A network interface resource attached to an instance.",
+ "id": "NetworkInterface",
+ "properties": {
+ "accessConfigs": {
+ "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access.",
+ "items": {
+ "$ref": "AccessConfig"
+ },
+ "type": "array"
+ },
+ "aliasIpRanges": {
+ "description": "An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks.",
+ "items": {
+ "$ref": "AliasIpRange"
+ },
+ "type": "array"
+ },
+ "fingerprint": {
+ "description": "Fingerprint hash of contents stored in this network interface. This field will be ignored when inserting an Instance or adding a NetworkInterface. An up-to-date fingerprint must be provided in order to update the NetworkInterface.",
+ "format": "byte",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#networkInterface",
+ "description": "[Output Only] Type of the resource. Always compute#networkInterface for network interfaces.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] The name of the network interface, generated by the server. For network devices, these are eth0, eth1, etc.",
+ "type": "string"
+ },
+ "network": {
+ "description": "URL of the network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used; if the network is not specified but the subnetwork is specified, the network is inferred.\n\nThis field is optional when creating a firewall rule. If not specified when creating a firewall rule, the default network global/networks/default is used.\n\nIf you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/global/networks/network \n- projects/project/global/networks/network \n- global/networks/default",
+ "type": "string"
+ },
+ "networkIP": {
+ "description": "An IPv4 internal network address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not provide this property. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode, then this field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork \n- regions/region/subnetworks/subnetwork",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkList": {
+ "description": "Contains a list of networks.",
+ "id": "NetworkList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Network resources.",
+ "items": {
+ "$ref": "Network"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#networkList",
+ "description": "[Output Only] Type of resource. Always compute#networkList for lists of networks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkPeering": {
+ "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
+ "id": "NetworkPeering",
+ "properties": {
+ "autoCreateRoutes": {
+ "description": "Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network.",
+ "type": "boolean"
+ },
+ "name": {
+ "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "type": "string"
+ },
+ "network": {
+ "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.",
+ "type": "string"
+ },
+ "state": {
+ "description": "[Output Only] State for the peering.",
+ "enum": [
+ "ACTIVE",
+ "INACTIVE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "stateDetails": {
+ "description": "[Output Only] Details about the current state of the peering.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworkRoutingConfig": {
+ "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
+ "id": "NetworkRoutingConfig",
+ "properties": {
+ "routingMode": {
+ "description": "The network-wide routing mode to use. If set to REGIONAL, this network's cloud routers will only advertise routes with subnetworks of this network in the same region as the router. If set to GLOBAL, this network's cloud routers will advertise routes with all subnetworks of this network, across regions.",
+ "enum": [
+ "GLOBAL",
+ "REGIONAL"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworksAddPeeringRequest": {
+ "id": "NetworksAddPeeringRequest",
+ "properties": {
+ "autoCreateRoutes": {
+ "description": "Whether Google Compute Engine manages the routes automatically.",
+ "type": "boolean"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.networks.addPeering"
+ ]
+ },
+ "description": "Name of the peering, which should conform to RFC1035.",
+ "type": "string"
+ },
+ "peerNetwork": {
+ "description": "URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "NetworksRemovePeeringRequest": {
+ "id": "NetworksRemovePeeringRequest",
+ "properties": {
+ "name": {
+ "description": "Name of the peering, which should conform to RFC1035.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Operation": {
+ "description": "An Operation resource, used to manage asynchronous API requests. (== resource_for v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)",
+ "id": "Operation",
+ "properties": {
+ "clientOperationId": {
+ "description": "[Output Only] Reserved for future use.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Deprecated] This field is deprecated.",
+ "type": "string"
+ },
+ "description": {
+ "description": "[Output Only] A textual description of the operation, which is set when the operation is created.",
+ "type": "string"
+ },
+ "endTime": {
+ "description": "[Output Only] The time that this operation was completed. This value is in RFC3339 text format.",
+ "type": "string"
+ },
+ "error": {
+ "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
+ "properties": {
+ "errors": {
+ "description": "[Output Only] The array of errors encountered while processing this operation.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] The error type identifier for this error.",
+ "type": "string"
+ },
+ "location": {
+ "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional.",
+ "type": "string"
+ },
+ "message": {
+ "description": "[Output Only] An optional, human-readable error message.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "httpErrorMessage": {
+ "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND.",
+ "type": "string"
+ },
+ "httpErrorStatusCode": {
+ "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "insertTime": {
+ "description": "[Output Only] The time that this operation was requested. This value is in RFC3339 text format.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#operation",
+ "description": "[Output Only] Type of the resource. Always compute#operation for Operation resources.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "operationType": {
+ "description": "[Output Only] The type of operation, such as insert, update, or delete, and so on.",
+ "type": "string"
+ },
+ "progress": {
+ "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "region": {
+ "description": "[Output Only] The URL of the region where the operation resides. Only available when performing regional operations. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "startTime": {
+ "description": "[Output Only] The time that this operation was started by the server. This value is in RFC3339 text format.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.",
+ "enum": [
+ "DONE",
+ "PENDING",
+ "RUNNING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional textual description of the current status of the operation.",
+ "type": "string"
+ },
+ "targetId": {
+ "description": "[Output Only] The unique target ID, which identifies a specific incarnation of the target resource.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "targetLink": {
+ "description": "[Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from.",
+ "type": "string"
+ },
+ "user": {
+ "description": "[Output Only] User who requested the operation, for example: user@example.com.",
+ "type": "string"
+ },
+ "warnings": {
+ "description": "[Output Only] If warning messages are generated during processing of the operation, this field will be populated.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "OperationAggregatedList": {
+ "id": "OperationAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "OperationsScopedList",
+ "description": "[Output Only] Name of the scope containing this set of operations."
+ },
+ "description": "[Output Only] A map of scoped operation lists.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#operationAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#operationAggregatedList for aggregated lists of operations.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "OperationList": {
+ "description": "Contains a list of Operation resources.",
+ "id": "OperationList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "[Output Only] A list of Operation resources.",
+ "items": {
+ "$ref": "Operation"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#operationList",
+ "description": "[Output Only] Type of resource. Always compute#operations for Operations resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "OperationsScopedList": {
+ "id": "OperationsScopedList",
+ "properties": {
+ "operations": {
+ "description": "[Output Only] List of operations contained in this scope.",
+ "items": {
+ "$ref": "Operation"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of operations when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "PathMatcher": {
+ "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service will be used.",
+ "id": "PathMatcher",
+ "properties": {
+ "defaultService": {
+ "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is matched by the URL's path portion. For example, the following are all valid URLs to a BackendService resource: \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name to which this PathMatcher is referred by the HostRule.",
+ "type": "string"
+ },
+ "pathRules": {
+ "description": "The list of path rules.",
+ "items": {
+ "$ref": "PathRule"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "PathRule": {
+ "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
+ "id": "PathRule",
+ "properties": {
+ "paths": {
+ "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "service": {
+ "description": "The URL of the BackendService resource if this rule is matched.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Policy": {
+ "description": "Defines an Identity and Access Management (IAM) policy. It is used to specify access control policies for Cloud Platform resources.\n\n\n\nA `Policy` consists of a list of `bindings`. A `Binding` binds a list of `members` to a `role`, where the members can be user accounts, Google groups, Google domains, and service accounts. A `role` is a named list of permissions defined by IAM.\n\n**Example**\n\n{ \"bindings\": [ { \"role\": \"roles/owner\", \"members\": [ \"user:mike@example.com\", \"group:admins@example.com\", \"domain:google.com\", \"serviceAccount:my-other-app@appspot.gserviceaccount.com\", ] }, { \"role\": \"roles/viewer\", \"members\": [\"user:sean@example.com\"] } ] }\n\nFor a description of IAM and its features, see the [IAM developer's guide](https://cloud.google.com/iam/docs).",
+ "id": "Policy",
+ "properties": {
+ "auditConfigs": {
+ "description": "Specifies cloud audit logging configuration for this policy.",
+ "items": {
+ "$ref": "AuditConfig"
+ },
+ "type": "array"
+ },
+ "bindings": {
+ "description": "Associates a list of `members` to a `role`. `bindings` with no members will result in an error.",
+ "items": {
+ "$ref": "Binding"
+ },
+ "type": "array"
+ },
+ "etag": {
+ "description": "`etag` is used for optimistic concurrency control as a way to help prevent simultaneous updates of a policy from overwriting each other. It is strongly suggested that systems make use of the `etag` in the read-modify-write cycle to perform policy updates in order to avoid race conditions: An `etag` is returned in the response to `getIamPolicy`, and systems are expected to put that etag in the request to `setIamPolicy` to ensure that their change will be applied to the same version of the policy.\n\nIf no `etag` is provided in the call to `setIamPolicy`, then the existing policy is overwritten blindly.",
+ "format": "byte",
+ "type": "string"
+ },
+ "iamOwned": {
+ "description": "",
+ "type": "boolean"
+ },
+ "rules": {
+ "description": "If more than one rule is specified, the rules are applied in the following manner: - All matching LOG rules are always applied. - If any DENY/DENY_WITH_LOG rule matches, permission is denied. Logging will be applied if one or more matching rule requires logging. - Otherwise, if any ALLOW/ALLOW_WITH_LOG rule matches, permission is granted. Logging will be applied if one or more matching rule requires logging. - Otherwise, if no rule applies, permission is denied.",
+ "items": {
+ "$ref": "Rule"
+ },
+ "type": "array"
+ },
+ "version": {
+ "description": "Deprecated.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "Project": {
+ "description": "A Project resource. For an overview of projects, see Cloud Platform Resource Hierarchy. (== resource_for v1.projects ==) (== resource_for beta.projects ==)",
+ "id": "Project",
+ "properties": {
+ "commonInstanceMetadata": {
+ "$ref": "Metadata",
+ "description": "Metadata key/value pairs available to all instances contained in this project. See Custom metadata for more information."
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "defaultNetworkTier": {
+ "description": "This signifies the default network tier used for configuring resources of the project and can only take the following values: PREMIUM, STANDARD. Initially the default network tier is PREMIUM.",
+ "enum": [
+ "PREMIUM",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "defaultServiceAccount": {
+ "description": "[Output Only] Default service account used by VMs running in this project.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional textual description of the resource.",
+ "type": "string"
+ },
+ "enabledFeatures": {
+ "description": "Restricted features enabled for use on this project.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#project",
+ "description": "[Output Only] Type of the resource. Always compute#project for projects.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine.",
+ "type": "string"
+ },
+ "quotas": {
+ "description": "[Output Only] Quotas assigned to this project.",
+ "items": {
+ "$ref": "Quota"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "usageExportLocation": {
+ "$ref": "UsageExportLocation",
+ "description": "The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored."
+ },
+ "xpnProjectStatus": {
+ "description": "[Output Only] The role this project has in a shared VPC configuration. Currently only HOST projects are differentiated.",
+ "enum": [
+ "HOST",
+ "UNSPECIFIED_XPN_PROJECT_STATUS"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsDisableXpnResourceRequest": {
+ "id": "ProjectsDisableXpnResourceRequest",
+ "properties": {
+ "xpnResource": {
+ "$ref": "XpnResourceId",
+ "description": "Service resource (a.k.a service project) ID."
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsEnableXpnResourceRequest": {
+ "id": "ProjectsEnableXpnResourceRequest",
+ "properties": {
+ "xpnResource": {
+ "$ref": "XpnResourceId",
+ "description": "Service resource (a.k.a service project) ID."
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsGetXpnResources": {
+ "id": "ProjectsGetXpnResources",
+ "properties": {
+ "kind": {
+ "default": "compute#projectsGetXpnResources",
+ "description": "[Output Only] Type of resource. Always compute#projectsGetXpnResources for lists of service resources (a.k.a service projects)",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "resources": {
+ "description": "Service resources (a.k.a service projects) attached to this project as their shared VPC host.",
+ "items": {
+ "$ref": "XpnResourceId"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsListXpnHostsRequest": {
+ "id": "ProjectsListXpnHostsRequest",
+ "properties": {
+ "organization": {
+ "description": "Optional organization ID managed by Cloud Resource Manager, for which to list shared VPC host projects. If not specified, the organization will be inferred from the project.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ProjectsSetDefaultNetworkTierRequest": {
+ "id": "ProjectsSetDefaultNetworkTierRequest",
+ "properties": {
+ "networkTier": {
+ "description": "Default network tier to be set.",
+ "enum": [
+ "PREMIUM",
+ "STANDARD"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Quota": {
+ "description": "A quotas entry.",
+ "id": "Quota",
+ "properties": {
+ "limit": {
+ "description": "[Output Only] Quota limit for this metric.",
+ "format": "double",
+ "type": "number"
+ },
+ "metric": {
+ "description": "[Output Only] Name of the quota metric.",
+ "enum": [
+ "AUTOSCALERS",
+ "BACKEND_BUCKETS",
+ "BACKEND_SERVICES",
+ "COMMITMENTS",
+ "CPUS",
+ "CPUS_ALL_REGIONS",
+ "DISKS_TOTAL_GB",
+ "FIREWALLS",
+ "FORWARDING_RULES",
+ "HEALTH_CHECKS",
+ "IMAGES",
+ "INSTANCES",
+ "INSTANCE_GROUPS",
+ "INSTANCE_GROUP_MANAGERS",
+ "INSTANCE_TEMPLATES",
+ "INTERCONNECTS",
+ "INTERNAL_ADDRESSES",
+ "IN_USE_ADDRESSES",
+ "LOCAL_SSD_TOTAL_GB",
+ "NETWORKS",
+ "NVIDIA_K80_GPUS",
+ "NVIDIA_P100_GPUS",
+ "PREEMPTIBLE_CPUS",
+ "PREEMPTIBLE_LOCAL_SSD_GB",
+ "PREEMPTIBLE_NVIDIA_K80_GPUS",
+ "PREEMPTIBLE_NVIDIA_P100_GPUS",
+ "REGIONAL_AUTOSCALERS",
+ "REGIONAL_INSTANCE_GROUP_MANAGERS",
+ "ROUTERS",
+ "ROUTES",
+ "SECURITY_POLICIES",
+ "SECURITY_POLICY_RULES",
+ "SNAPSHOTS",
+ "SSD_TOTAL_GB",
+ "SSL_CERTIFICATES",
+ "STATIC_ADDRESSES",
+ "SUBNETWORKS",
+ "TARGET_HTTPS_PROXIES",
+ "TARGET_HTTP_PROXIES",
+ "TARGET_INSTANCES",
+ "TARGET_POOLS",
+ "TARGET_SSL_PROXIES",
+ "TARGET_TCP_PROXIES",
+ "TARGET_VPN_GATEWAYS",
+ "URL_MAPS",
+ "VPN_TUNNELS"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "usage": {
+ "description": "[Output Only] Current usage of this metric.",
+ "format": "double",
+ "type": "number"
+ }
+ },
+ "type": "object"
+ },
+ "Reference": {
+ "description": "Represents a reference to a resource.",
+ "id": "Reference",
+ "properties": {
+ "kind": {
+ "default": "compute#reference",
+ "description": "[Output Only] Type of the resource. Always compute#reference for references.",
+ "type": "string"
+ },
+ "referenceType": {
+ "description": "A description of the reference type with no implied semantics. Possible values include: \n- MEMBER_OF",
+ "type": "string"
+ },
+ "referrer": {
+ "description": "URL of the resource which refers to the target.",
+ "type": "string"
+ },
+ "target": {
+ "description": "URL of the resource to which this reference points.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Region": {
+ "description": "Region resource. (== resource_for beta.regions ==) (== resource_for v1.regions ==)",
+ "id": "Region",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this region."
+ },
+ "description": {
+ "description": "[Output Only] Textual description of the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#region",
+ "description": "[Output Only] Type of the resource. Always compute#region for regions.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "quotas": {
+ "description": "[Output Only] Quotas assigned to this region.",
+ "items": {
+ "$ref": "Quota"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] Status of the region, either UP or DOWN.",
+ "enum": [
+ "DOWN",
+ "UP"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "zones": {
+ "description": "[Output Only] A list of zones available in this region, in the form of resource URLs.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionAutoscalerList": {
+ "description": "Contains a list of autoscalers.",
+ "id": "RegionAutoscalerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Autoscaler resources.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionAutoscalerList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionDiskTypeList": {
+ "id": "RegionDiskTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of DiskType resources.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionDiskTypeList",
+ "description": "[Output Only] Type of resource. Always compute#regionDiskTypeList for region disk types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionDisksResizeRequest": {
+ "id": "RegionDisksResizeRequest",
+ "properties": {
+ "sizeGb": {
+ "description": "The new size of the regional persistent disk, which is specified in GB.",
+ "format": "int64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupList": {
+ "description": "Contains a list of InstanceGroup resources.",
+ "id": "RegionInstanceGroupList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroup resources.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionInstanceGroupList",
+ "description": "The resource type.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagerList": {
+ "description": "Contains a list of managed instance groups.",
+ "id": "RegionInstanceGroupManagerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroupManager resources.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionInstanceGroupManagerList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups that exist in th regional scope.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersAbandonInstancesRequest": {
+ "id": "RegionInstanceGroupManagersAbandonInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersDeleteInstancesRequest": {
+ "id": "RegionInstanceGroupManagersDeleteInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersListInstancesResponse": {
+ "id": "RegionInstanceGroupManagersListInstancesResponse",
+ "properties": {
+ "managedInstances": {
+ "description": "List of managed instances.",
+ "items": {
+ "$ref": "ManagedInstance"
+ },
+ "type": "array"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersRecreateRequest": {
+ "id": "RegionInstanceGroupManagersRecreateRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersSetAutoHealingRequest": {
+ "id": "RegionInstanceGroupManagersSetAutoHealingRequest",
+ "properties": {
+ "autoHealingPolicies": {
+ "items": {
+ "$ref": "InstanceGroupManagerAutoHealingPolicy"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersSetTargetPoolsRequest": {
+ "id": "RegionInstanceGroupManagersSetTargetPoolsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "Fingerprint of the target pools information, which is a hash of the contents. This field is used for optimistic locking when you update the target pool entries. This field is optional.",
+ "format": "byte",
+ "type": "string"
+ },
+ "targetPools": {
+ "description": "The URL of all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupManagersSetTemplateRequest": {
+ "id": "RegionInstanceGroupManagersSetTemplateRequest",
+ "properties": {
+ "instanceTemplate": {
+ "description": "URL of the InstanceTemplate resource from which all new instances will be created.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupsListInstances": {
+ "id": "RegionInstanceGroupsListInstances",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceWithNamedPorts resources.",
+ "items": {
+ "$ref": "InstanceWithNamedPorts"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionInstanceGroupsListInstances",
+ "description": "The resource type.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupsListInstancesRequest": {
+ "id": "RegionInstanceGroupsListInstancesRequest",
+ "properties": {
+ "instanceState": {
+ "description": "Instances in which state should be returned. Valid options are: 'ALL', 'RUNNING'. By default, it lists all instances.",
+ "enum": [
+ "ALL",
+ "RUNNING"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "portName": {
+ "description": "Name of port user is interested in. It is optional. If it is set, only information about this ports will be returned. If it is not set, all the named ports will be returned. Always lists all instances.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RegionInstanceGroupsSetNamedPortsRequest": {
+ "id": "RegionInstanceGroupsSetNamedPortsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "The list of named ports to set for this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RegionList": {
+ "description": "Contains a list of region resources.",
+ "id": "RegionList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Region resources.",
+ "items": {
+ "$ref": "Region"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#regionList",
+ "description": "[Output Only] Type of resource. Always compute#regionList for lists of regions.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RegionSetLabelsRequest": {
+ "id": "RegionSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The labels to set for this resource.",
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ResourceCommitment": {
+ "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
+ "id": "ResourceCommitment",
+ "properties": {
+ "amount": {
+ "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU.",
+ "format": "int64",
+ "type": "string"
+ },
+ "type": {
+ "description": "Type of resource for which this commitment applies. Possible values are VCPU and MEMORY",
+ "enum": [
+ "MEMORY",
+ "UNSPECIFIED",
+ "VCPU"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ResourceGroupReference": {
+ "id": "ResourceGroupReference",
+ "properties": {
+ "group": {
+ "description": "A URI referencing one of the instance groups listed in the backend service.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Route": {
+ "description": "Represents a Route resource. A route specifies how certain packets should be handled by the network. Routes are associated with instances by tags and the set of routes for a particular instance is called its routing table.\n\nFor each packet leaving an instance, the system searches that instance's routing table for a single best matching route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching routes. The packet is then forwarded as specified by the nextHop field of the winning route - either to another instance destination, an instance gateway, or a Google Compute Engine-operated gateway.\n\nPackets that do not match any route in the sending instance's routing table are dropped. (== resource_for beta.routes ==) (== resource_for v1.routes ==)",
+ "id": "Route",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "destRange": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "The destination range of outgoing packets that this route applies to. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#route",
+ "description": "[Output Only] Type of this resource. Always compute#routes for Route resources.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "Fully-qualified URL of the network that this route applies to.",
+ "type": "string"
+ },
+ "nextHopGateway": {
+ "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway",
+ "type": "string"
+ },
+ "nextHopInstance": {
+ "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/",
+ "type": "string"
+ },
+ "nextHopIp": {
+ "description": "The network IP address of an instance that should handle matching packets. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "nextHopNetwork": {
+ "description": "The URL of the local network if it should handle matching packets.",
+ "type": "string"
+ },
+ "nextHopPeering": {
+ "description": "[Output Only] The network peering name that should handle matching packets, which should conform to RFC1035.",
+ "type": "string"
+ },
+ "nextHopVpnTunnel": {
+ "description": "The URL to a VpnTunnel that should handle matching packets.",
+ "type": "string"
+ },
+ "priority": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "tags": {
+ "annotations": {
+ "required": [
+ "compute.routes.insert"
+ ]
+ },
+ "description": "A list of instance tags to which this route applies.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "warnings": {
+ "description": "[Output Only] If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "RouteList": {
+ "description": "Contains a list of Route resources.",
+ "id": "RouteList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Route resources.",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#routeList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Router": {
+ "description": "Router resource.",
+ "id": "Router",
+ "properties": {
+ "bgp": {
+ "$ref": "RouterBgp",
+ "description": "BGP information specific to this router."
+ },
+ "bgpPeers": {
+ "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
+ "items": {
+ "$ref": "RouterBgpPeer"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "interfaces": {
+ "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
+ "items": {
+ "$ref": "RouterInterface"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#router",
+ "description": "[Output Only] Type of resource. Always compute#router for routers.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.routers.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "annotations": {
+ "required": [
+ "compute.routers.insert"
+ ]
+ },
+ "description": "URI of the network to which this router belongs.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URI of the region where the router resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterAdvertisedIpRange": {
+ "description": "Description-tagged IP ranges for the router to advertise.",
+ "id": "RouterAdvertisedIpRange",
+ "properties": {
+ "description": {
+ "description": "User-specified description for the IP range.",
+ "type": "string"
+ },
+ "range": {
+ "description": "The IP range to advertise. The value must be a CIDR-formatted string.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterAggregatedList": {
+ "description": "Contains a list of routers.",
+ "id": "RouterAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "RoutersScopedList",
+ "description": "Name of the scope containing this set of routers."
+ },
+ "description": "A list of Router resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#routerAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RouterBgp": {
+ "id": "RouterBgp",
+ "properties": {
+ "advertiseMode": {
+ "description": "User-specified flag to indicate which mode to use for advertisement.",
+ "enum": [
+ "CUSTOM",
+ "DEFAULT"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "advertisedGroups": {
+ "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
+ "items": {
+ "enum": [
+ "ALL_SUBNETS"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "advertisedIpRanges": {
+ "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and is advertised to all peers of the router. These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
+ "items": {
+ "$ref": "RouterAdvertisedIpRange"
+ },
+ "type": "array"
+ },
+ "asn": {
+ "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN.",
+ "format": "uint32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "RouterBgpPeer": {
+ "id": "RouterBgpPeer",
+ "properties": {
+ "advertiseMode": {
+ "description": "User-specified flag to indicate which mode to use for advertisement.",
+ "enum": [
+ "CUSTOM",
+ "DEFAULT"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "advertisedGroups": {
+ "description": "User-specified list of prefix groups to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These groups will be advertised in addition to any specified prefixes. Leave this field blank to advertise no custom groups.",
+ "items": {
+ "enum": [
+ "ALL_SUBNETS"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "advertisedIpRanges": {
+ "description": "User-specified list of individual IP ranges to advertise in custom mode. This field can only be populated if advertise_mode is CUSTOM and overrides the list defined for the router (in Bgp message). These IP ranges will be advertised in addition to any specified groups. Leave this field blank to advertise no custom IP ranges.",
+ "items": {
+ "$ref": "RouterAdvertisedIpRange"
+ },
+ "type": "array"
+ },
+ "advertisedRoutePriority": {
+ "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "interfaceName": {
+ "description": "Name of the interface the BGP peer is associated with.",
+ "type": "string"
+ },
+ "ipAddress": {
+ "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of this BGP peer. The name must be 1-63 characters long and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "peerAsn": {
+ "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "peerIpAddress": {
+ "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterInterface": {
+ "id": "RouterInterface",
+ "properties": {
+ "ipRange": {
+ "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface.",
+ "type": "string"
+ },
+ "linkedInterconnectAttachment": {
+ "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+ "type": "string"
+ },
+ "linkedVpnTunnel": {
+ "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of this interface entry. The name must be 1-63 characters long and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterList": {
+ "description": "Contains a list of Router resources.",
+ "id": "RouterList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Router resources.",
+ "items": {
+ "$ref": "Router"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#routerList",
+ "description": "[Output Only] Type of resource. Always compute#router for routers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "RouterStatus": {
+ "id": "RouterStatus",
+ "properties": {
+ "bestRoutes": {
+ "description": "Best routes for this router's network.",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "bestRoutesForRouter": {
+ "description": "Best routes learned by this router.",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "bgpPeerStatus": {
+ "items": {
+ "$ref": "RouterStatusBgpPeerStatus"
+ },
+ "type": "array"
+ },
+ "network": {
+ "description": "URI of the network to which this router belongs.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterStatusBgpPeerStatus": {
+ "id": "RouterStatusBgpPeerStatus",
+ "properties": {
+ "advertisedRoutes": {
+ "description": "Routes that were advertised to the remote BGP peer",
+ "items": {
+ "$ref": "Route"
+ },
+ "type": "array"
+ },
+ "ipAddress": {
+ "description": "IP address of the local BGP interface.",
+ "type": "string"
+ },
+ "linkedVpnTunnel": {
+ "description": "URL of the VPN tunnel that this BGP peer controls.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of this BGP peer. Unique within the Routers resource.",
+ "type": "string"
+ },
+ "numLearnedRoutes": {
+ "description": "Number of routes learned from the remote BGP Peer.",
+ "format": "uint32",
+ "type": "integer"
+ },
+ "peerIpAddress": {
+ "description": "IP address of the remote BGP interface.",
+ "type": "string"
+ },
+ "state": {
+ "description": "BGP state as specified in RFC1771.",
+ "type": "string"
+ },
+ "status": {
+ "description": "Status of the BGP peer: {UP, DOWN}",
+ "enum": [
+ "DOWN",
+ "UNKNOWN",
+ "UP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "uptime": {
+ "description": "Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23 hours, 59 minutes, 59 seconds",
+ "type": "string"
+ },
+ "uptimeSeconds": {
+ "description": "Time this session has been up, in seconds. Format: 145",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "RouterStatusResponse": {
+ "id": "RouterStatusResponse",
+ "properties": {
+ "kind": {
+ "default": "compute#routerStatusResponse",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "result": {
+ "$ref": "RouterStatus"
+ }
+ },
+ "type": "object"
+ },
+ "RoutersPreviewResponse": {
+ "id": "RoutersPreviewResponse",
+ "properties": {
+ "resource": {
+ "$ref": "Router",
+ "description": "Preview of given router."
+ }
+ },
+ "type": "object"
+ },
+ "RoutersScopedList": {
+ "id": "RoutersScopedList",
+ "properties": {
+ "routers": {
+ "description": "List of routers contained in this scope.",
+ "items": {
+ "$ref": "Router"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of routers when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "Rule": {
+ "description": "A rule to be applied in a Policy.",
+ "id": "Rule",
+ "properties": {
+ "action": {
+ "description": "Required",
+ "enum": [
+ "ALLOW",
+ "ALLOW_WITH_LOG",
+ "DENY",
+ "DENY_WITH_LOG",
+ "LOG",
+ "NO_ACTION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "conditions": {
+ "description": "Additional restrictions that must be met. All conditions must pass for the rule to match.",
+ "items": {
+ "$ref": "Condition"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "Human-readable description of the rule.",
+ "type": "string"
+ },
+ "ins": {
+ "description": "If one or more 'in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in at least one of these entries.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "logConfigs": {
+ "description": "The config returned to callers of tech.iam.IAM.CheckPolicy for any entries that match the LOG action.",
+ "items": {
+ "$ref": "LogConfig"
+ },
+ "type": "array"
+ },
+ "notIns": {
+ "description": "If one or more 'not_in' clauses are specified, the rule matches if the PRINCIPAL/AUTHORITY_SELECTOR is in none of the entries.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "permissions": {
+ "description": "A permission is a string of form '..' (e.g., 'storage.buckets.list'). A value of '*' matches all permissions, and a verb part of '*' (e.g., 'storage.buckets.*') matches all verbs.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SSLHealthCheck": {
+ "id": "SSLHealthCheck",
+ "properties": {
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "request": {
+ "description": "The application data to send once the SSL connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Scheduling": {
+ "description": "Sets the scheduling options for an Instance.",
+ "id": "Scheduling",
+ "properties": {
+ "automaticRestart": {
+ "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted.\n\nBy default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine.",
+ "type": "boolean"
+ },
+ "onHostMaintenance": {
+ "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Setting Instance Scheduling Options.",
+ "enum": [
+ "MIGRATE",
+ "TERMINATE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "preemptible": {
+ "description": "Defines whether the instance is preemptible. This can only be set during instance creation, it cannot be set or changed after the instance has been created.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicy": {
+ "description": "A security policy is comprised of one or more rules. It can also be associated with one or more 'targets'.",
+ "id": "SecurityPolicy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "Specifies a fingerprint for this resource, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the security policy.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#securityPolicy",
+ "description": "[Output only] Type of the resource. Always compute#securityPolicyfor security policies",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "rules": {
+ "description": "List of rules that belong to this policy. There must always be a default rule (rule with priority 2147483647 and match \"*\"). If no rules are provided when creating a security policy, a default rule with action \"allow\" will be added.",
+ "items": {
+ "$ref": "SecurityPolicyRule"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyList": {
+ "id": "SecurityPolicyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of SecurityPolicy resources.",
+ "items": {
+ "$ref": "SecurityPolicy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#securityPolicyList",
+ "description": "[Output Only] Type of resource. Always compute#securityPolicyList for listsof securityPolicies",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyReference": {
+ "id": "SecurityPolicyReference",
+ "properties": {
+ "securityPolicy": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyRule": {
+ "description": "Represents a rule that describes one or more match conditions along with the action to be taken when traffic matches this condition (allow or deny).",
+ "id": "SecurityPolicyRule",
+ "properties": {
+ "action": {
+ "description": "The Action to preform when the client connection triggers the rule. Can currently be either \"allow\" or \"deny()\" where valid values for status are 403, 404, and 502.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#securityPolicyRule",
+ "description": "[Output only] Type of the resource. Always compute#securityPolicyRule for security policy rules",
+ "type": "string"
+ },
+ "match": {
+ "$ref": "SecurityPolicyRuleMatcher",
+ "description": "A match condition that incoming traffic is evaluated against. If it evaluates to true, the corresponding ?action? is enforced."
+ },
+ "preview": {
+ "description": "If set to true, the specified action is not enforced.",
+ "type": "boolean"
+ },
+ "priority": {
+ "description": "An integer indicating the priority of a rule in the list. The priority must be a positive value between 0 and 2147483647. Rules are evaluated in the increasing order of priority.",
+ "format": "int32",
+ "type": "integer"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyRuleMatcher": {
+ "description": "Represents a match condition that incoming traffic is evaluated against. Exactly one field must be specified.",
+ "id": "SecurityPolicyRuleMatcher",
+ "properties": {
+ "config": {
+ "$ref": "SecurityPolicyRuleMatcherConfig",
+ "description": "The configuration options available when specifying versioned_expr. This field must be specified if versioned_expr is specified and cannot be specified if versioned_expr is not specified."
+ },
+ "srcIpRanges": {
+ "description": "CIDR IP address range.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "versionedExpr": {
+ "description": "Preconfigured versioned expression. If this field is specified, config must also be specified. Available preconfigured expressions along with their requirements are: SRC_IPS_V1 - must specify the corresponding src_ip_range field in config.",
+ "enum": [
+ "SRC_IPS_V1",
+ "VERSIONED_EXPR_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SecurityPolicyRuleMatcherConfig": {
+ "id": "SecurityPolicyRuleMatcherConfig",
+ "properties": {
+ "srcIpRanges": {
+ "description": "CIDR IP address range.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SerialPortOutput": {
+ "description": "An instance's serial console output.",
+ "id": "SerialPortOutput",
+ "properties": {
+ "contents": {
+ "description": "[Output Only] The contents of the console output.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#serialPortOutput",
+ "description": "[Output Only] Type of the resource. Always compute#serialPortOutput for serial port output.",
+ "type": "string"
+ },
+ "next": {
+ "description": "[Output Only] The position of the next byte of content from the serial console output. Use this value in the next request as the start parameter.",
+ "format": "int64",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "start": {
+ "description": "The starting byte position of the output that was returned. This should match the start parameter sent with the request. If the serial console output exceeds the size of the buffer, older output will be overwritten by newer content and the start values will be mismatched.",
+ "format": "int64",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ServiceAccount": {
+ "description": "A service account.",
+ "id": "ServiceAccount",
+ "properties": {
+ "email": {
+ "description": "Email address of the service account.",
+ "type": "string"
+ },
+ "scopes": {
+ "description": "The list of scopes to be made available for this service account.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SignedUrlKey": {
+ "description": "Represents a customer-supplied Signing Key used by Cloud CDN Signed URLs",
+ "id": "SignedUrlKey",
+ "properties": {
+ "keyName": {
+ "description": "Name of the key. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "keyValue": {
+ "description": "128-bit key value used for signing the URL. The key value must be a valid RFC 4648 Section 5 base64url encoded string.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Snapshot": {
+ "description": "A persistent disk snapshot resource. (== resource_for beta.snapshots ==) (== resource_for v1.snapshots ==)",
+ "id": "Snapshot",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "[Output Only] Size of the snapshot, specified in GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#snapshot",
+ "description": "[Output Only] Type of the resource. Always compute#snapshot for Snapshot resources.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a snapshot.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
+ "type": "object"
+ },
+ "licenseCodes": {
+ "description": "Integer license codes indicating which licenses are attached to this snapshot.",
+ "items": {
+ "format": "int64",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "licenses": {
+ "description": "[Output Only] A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "snapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
+ },
+ "sourceDisk": {
+ "description": "[Output Only] The source disk used to create this snapshot.",
+ "type": "string"
+ },
+ "sourceDiskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
+ },
+ "sourceDiskId": {
+ "description": "[Output Only] The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
+ "enum": [
+ "CREATING",
+ "DELETING",
+ "FAILED",
+ "READY",
+ "UPLOADING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "storageBytes": {
+ "description": "[Output Only] A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
+ "format": "int64",
+ "type": "string"
+ },
+ "storageBytesStatus": {
+ "description": "[Output Only] An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
+ "enum": [
+ "UPDATING",
+ "UP_TO_DATE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SnapshotList": {
+ "description": "Contains a list of Snapshot resources.",
+ "id": "SnapshotList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Snapshot resources.",
+ "items": {
+ "$ref": "Snapshot"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#snapshotList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SourceInstanceParams": {
+ "description": "A specification of the parameters to use when creating the instance template from a source instance.",
+ "id": "SourceInstanceParams",
+ "properties": {
+ "diskConfigs": {
+ "description": "Attached disks configuration. If not provided, defaults are applied: For boot disk and any other R/W disks, new custom images will be created from each disk. For read-only disks, they will be attached in read-only mode. Local SSD disks will be created as blank volumes.",
+ "items": {
+ "$ref": "DiskInstantiationConfig"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SslCertificate": {
+ "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==)",
+ "id": "SslCertificate",
+ "properties": {
+ "certificate": {
+ "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#sslCertificate",
+ "description": "[Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "privateKey": {
+ "description": "A write-only private key in PEM format. Only insert requests will include this field.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SslCertificateList": {
+ "description": "Contains a list of SslCertificate resources.",
+ "id": "SslCertificateList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of SslCertificate resources.",
+ "items": {
+ "$ref": "SslCertificate"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#sslCertificateList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SslPoliciesList": {
+ "id": "SslPoliciesList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of SslPolicy resources.",
+ "items": {
+ "$ref": "SslPolicy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#sslPoliciesList",
+ "description": "[Output Only] Type of the resource. Always compute#sslPoliciesList for lists of sslPolicies.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SslPoliciesListAvailableFeaturesResponse": {
+ "id": "SslPoliciesListAvailableFeaturesResponse",
+ "properties": {
+ "features": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SslPolicy": {
+ "description": "A SSL policy specifies the server-side support for SSL features. This can be attached to a TargetHttpsProxy or a TargetSslProxy. This affects connections between clients and the HTTPS or SSL proxy load balancer. They do not affect the connection between the load balancers and the backends.",
+ "id": "SslPolicy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "customFeatures": {
+ "description": "List of features enabled when the selected profile is CUSTOM. The\n- method returns the set of features that can be specified in this list. This field must be empty if the profile is not CUSTOM.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "enabledFeatures": {
+ "description": "[Output Only] The list of features enabled in the SSL policy.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a SslPolicy. An up-to-date fingerprint must be provided in order to update the SslPolicy.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#sslPolicy",
+ "description": "[Output only] Type of the resource. Always compute#sslPolicyfor SSL policies.",
+ "type": "string"
+ },
+ "minTlsVersion": {
+ "description": "The minimum version of SSL protocol that can be used by the clients to establish a connection with the load balancer. This can be one of TLS_1_0, TLS_1_1, TLS_1_2, TLS_1_3.",
+ "enum": [
+ "TLS_1_0",
+ "TLS_1_1",
+ "TLS_1_2",
+ "TLS_1_3"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "profile": {
+ "description": "Profile specifies the set of SSL features that can be used by the load balancer when negotiating SSL with clients. This can be one of COMPATIBLE, MODERN, RESTRICTED, or CUSTOM. If using CUSTOM, the set of SSL features to enable must be specified in the customFeatures field.",
+ "enum": [
+ "COMPATIBLE",
+ "CUSTOM",
+ "MODERN",
+ "RESTRICTED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "warnings": {
+ "description": "[Output Only] If potential misconfigurations are detected for this SSL policy, this field will be populated with warning messages.",
+ "items": {
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "SslPolicyReference": {
+ "id": "SslPolicyReference",
+ "properties": {
+ "sslPolicy": {
+ "description": "URL of the SSL policy resource. Set this to empty string to clear any existing SSL policy associated with the target proxy resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Subnetwork": {
+ "description": "A Subnetwork resource. (== resource_for beta.subnetworks ==) (== resource_for v1.subnetworks ==)",
+ "id": "Subnetwork",
+ "properties": {
+ "allowSubnetCidrRoutesOverlap": {
+ "description": "Whether this subnetwork can conflict with static routes. Setting this to true allows this subnetwork's primary and secondary ranges to conflict with routes that have already been configured on the corresponding network. Static routes will take precedence over the subnetwork route if the route prefix length is at least as large as the subnetwork prefix length.\n\nAlso, packets destined to IPs within subnetwork may contain private/sensitive data and are prevented from leaving the virtual network. Setting this field to true will disable this feature.\n\nThe default value is false and applies to all existing subnetworks and automatically created subnetworks.\n\nThis field cannot be set to true at resource creation time.",
+ "type": "boolean"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a Subnetwork. An up-to-date fingerprint must be provided in order to update the Subnetwork.",
+ "format": "byte",
+ "type": "string"
+ },
+ "gatewayAddress": {
+ "description": "[Output Only] The gateway address for default routes to reach destination addresses outside this subnetwork.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipCidrRange": {
+ "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#subnetwork",
+ "description": "[Output Only] Type of the resource. Always compute#subnetwork for Subnetwork resources.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. Only networks that are in the distributed mode can have subnetworks. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "privateIpGoogleAccess": {
+ "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess.",
+ "type": "boolean"
+ },
+ "region": {
+ "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time.",
+ "type": "string"
+ },
+ "secondaryIpRanges": {
+ "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges.",
+ "items": {
+ "$ref": "SubnetworkSecondaryRange"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworkAggregatedList": {
+ "id": "SubnetworkAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "SubnetworksScopedList",
+ "description": "Name of the scope containing this set of Subnetworks."
+ },
+ "description": "A list of SubnetworksScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#subnetworkAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#subnetworkAggregatedList for aggregated lists of subnetworks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworkList": {
+ "description": "Contains a list of Subnetwork resources.",
+ "id": "SubnetworkList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Subnetwork resources.",
+ "items": {
+ "$ref": "Subnetwork"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#subnetworkList",
+ "description": "[Output Only] Type of resource. Always compute#subnetworkList for lists of subnetworks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworkSecondaryRange": {
+ "description": "Represents a secondary IP range of a subnetwork.",
+ "id": "SubnetworkSecondaryRange",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "rangeName": {
+ "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworksExpandIpCidrRangeRequest": {
+ "id": "SubnetworksExpandIpCidrRangeRequest",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The IP (in CIDR format or netmask) of internal addresses that are legal on this Subnetwork. This range should be disjoint from other subnetworks within this network. This range can only be larger than (i.e. a superset of) the range previously defined before the update.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworksScopedList": {
+ "id": "SubnetworksScopedList",
+ "properties": {
+ "subnetworks": {
+ "description": "List of subnetworks contained in this scope.",
+ "items": {
+ "$ref": "Subnetwork"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "An informational warning that appears when the list of addresses is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "SubnetworksSetPrivateIpGoogleAccessRequest": {
+ "id": "SubnetworksSetPrivateIpGoogleAccessRequest",
+ "properties": {
+ "privateIpGoogleAccess": {
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "TCPHealthCheck": {
+ "id": "TCPHealthCheck",
+ "properties": {
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "request": {
+ "description": "The application data to send once the TCP connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Tags": {
+ "description": "A set of instance tags.",
+ "id": "Tags",
+ "properties": {
+ "fingerprint": {
+ "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
+ "format": "byte",
+ "type": "string"
+ },
+ "items": {
+ "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpProxy": {
+ "description": "A TargetHttpProxy resource. This resource defines an HTTP proxy. (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==)",
+ "id": "TargetHttpProxy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetHttpProxy",
+ "description": "[Output Only] Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpProxyList": {
+ "description": "A list of TargetHttpProxy resources.",
+ "id": "TargetHttpProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetHttpProxy resources.",
+ "items": {
+ "$ref": "TargetHttpProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetHttpProxyList",
+ "description": "Type of resource. Always compute#targetHttpProxyList for lists of target HTTP proxies.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxiesSetQuicOverrideRequest": {
+ "id": "TargetHttpsProxiesSetQuicOverrideRequest",
+ "properties": {
+ "quicOverride": {
+ "description": "QUIC policy for the TargetHttpsProxy resource.",
+ "enum": [
+ "DISABLE",
+ "ENABLE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxiesSetSslCertificatesRequest": {
+ "id": "TargetHttpsProxiesSetSslCertificatesRequest",
+ "properties": {
+ "sslCertificates": {
+ "description": "New set of SslCertificate resources to associate with this TargetHttpsProxy resource. Currently exactly one SslCertificate resource must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxy": {
+ "description": "A TargetHttpsProxy resource. This resource defines an HTTPS proxy. (== resource_for beta.targetHttpsProxies ==) (== resource_for v1.targetHttpsProxies ==)",
+ "id": "TargetHttpsProxy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetHttpsProxy",
+ "description": "[Output Only] Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "quicOverride": {
+ "description": "Specifies the QUIC override policy for this TargetHttpsProxy resource. This determines whether the load balancer will attempt to negotiate QUIC with clients or not. Can specify one of NONE, ENABLE, or DISABLE. Specify ENABLE to always enable QUIC, Enables QUIC when set to ENABLE, and disables QUIC when set to DISABLE. If NONE is specified, uses the QUIC policy with no user overrides, which is equivalent to DISABLE. Not specifying this field is equivalent to specifying NONE.",
+ "enum": [
+ "DISABLE",
+ "ENABLE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sslCertificates": {
+ "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. Currently, exactly one SSL certificate must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sslPolicy": {
+ "description": "URL of SslPolicy resource that will be associated with the TargetHttpsProxy resource. If not set, the TargetHttpsProxy resource will not have any SSL policy configured.",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: \n- https://www.googleapis.compute/v1/projects/project/global/urlMaps/url-map \n- projects/project/global/urlMaps/url-map \n- global/urlMaps/url-map",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetHttpsProxyList": {
+ "description": "Contains a list of TargetHttpsProxy resources.",
+ "id": "TargetHttpsProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetHttpsProxy resources.",
+ "items": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetHttpsProxyList",
+ "description": "Type of resource. Always compute#targetHttpsProxyList for lists of target HTTPS proxies.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstance": {
+ "description": "A TargetInstance resource. This resource defines an endpoint instance that terminates traffic of certain protocols. (== resource_for beta.targetInstances ==) (== resource_for v1.targetInstances ==)",
+ "id": "TargetInstance",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instance": {
+ "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetInstance",
+ "description": "[Output Only] The type of the resource. Always compute#targetInstance for target instances.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "natPolicy": {
+ "description": "NAT option controlling how IPs are NAT'ed to the instance. Currently only NO_NAT (default value) is supported.",
+ "enum": [
+ "NO_NAT"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the target instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstanceAggregatedList": {
+ "id": "TargetInstanceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "TargetInstancesScopedList",
+ "description": "Name of the scope containing this set of target instances."
+ },
+ "description": "A list of TargetInstance resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#targetInstanceAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstanceList": {
+ "description": "Contains a list of TargetInstance resources.",
+ "id": "TargetInstanceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetInstance resources.",
+ "items": {
+ "$ref": "TargetInstance"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetInstanceList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetInstancesScopedList": {
+ "id": "TargetInstancesScopedList",
+ "properties": {
+ "targetInstances": {
+ "description": "List of target instances contained in this scope.",
+ "items": {
+ "$ref": "TargetInstance"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPool": {
+ "description": "A TargetPool resource. This resource defines a pool of instances, an associated HttpHealthCheck resource, and the fallback target pool. (== resource_for beta.targetPools ==) (== resource_for v1.targetPools ==)",
+ "id": "TargetPool",
+ "properties": {
+ "backupPool": {
+ "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1].\n\nbackupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "failoverRatio": {
+ "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1].\n\nIf set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
+ "format": "float",
+ "type": "number"
+ },
+ "healthChecks": {
+ "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. An empty list means all member instances will be considered healthy at all times. Only HttpHealthChecks are supported. Only one health check may be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instances": {
+ "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetPool",
+ "description": "[Output Only] Type of the resource. Always compute#targetPool for target pools.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the target pool resides.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sessionAffinity": {
+ "description": "Sesssion affinity option, must be one of the following values:\nNONE: Connections from the same client IP may go to any instance in the pool.\nCLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy.\nCLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
+ "enum": [
+ "CLIENT_IP",
+ "CLIENT_IP_PORT_PROTO",
+ "CLIENT_IP_PROTO",
+ "GENERATED_COOKIE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolAggregatedList": {
+ "id": "TargetPoolAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "TargetPoolsScopedList",
+ "description": "Name of the scope containing this set of target pools."
+ },
+ "description": "A list of TargetPool resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#targetPoolAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#targetPoolAggregatedList for aggregated lists of target pools.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolInstanceHealth": {
+ "id": "TargetPoolInstanceHealth",
+ "properties": {
+ "healthStatus": {
+ "items": {
+ "$ref": "HealthStatus"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetPoolInstanceHealth",
+ "description": "[Output Only] Type of resource. Always compute#targetPoolInstanceHealth when checking the health of an instance.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolList": {
+ "description": "Contains a list of TargetPool resources.",
+ "id": "TargetPoolList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetPool resources.",
+ "items": {
+ "$ref": "TargetPool"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetPoolList",
+ "description": "[Output Only] Type of resource. Always compute#targetPoolList for lists of target pools.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsAddHealthCheckRequest": {
+ "id": "TargetPoolsAddHealthCheckRequest",
+ "properties": {
+ "healthChecks": {
+ "description": "The HttpHealthCheck to add to the target pool.",
+ "items": {
+ "$ref": "HealthCheckReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsAddInstanceRequest": {
+ "id": "TargetPoolsAddInstanceRequest",
+ "properties": {
+ "instances": {
+ "description": "A full or partial URL to an instance to add to this target pool. This can be a full or partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name \n- projects/project-id/zones/zone/instances/instance-name \n- zones/zone/instances/instance-name",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsRemoveHealthCheckRequest": {
+ "id": "TargetPoolsRemoveHealthCheckRequest",
+ "properties": {
+ "healthChecks": {
+ "description": "Health check URL to be removed. This can be a full or valid partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project/global/httpHealthChecks/health-check \n- projects/project/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
+ "items": {
+ "$ref": "HealthCheckReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsRemoveInstanceRequest": {
+ "id": "TargetPoolsRemoveInstanceRequest",
+ "properties": {
+ "instances": {
+ "description": "URLs of the instances to be removed from target pool.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetPoolsScopedList": {
+ "id": "TargetPoolsScopedList",
+ "properties": {
+ "targetPools": {
+ "description": "List of target pools contained in this scope.",
+ "items": {
+ "$ref": "TargetPool"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetReference": {
+ "id": "TargetReference",
+ "properties": {
+ "target": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxiesSetBackendServiceRequest": {
+ "id": "TargetSslProxiesSetBackendServiceRequest",
+ "properties": {
+ "service": {
+ "description": "The URL of the new BackendService resource for the targetSslProxy.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxiesSetProxyHeaderRequest": {
+ "id": "TargetSslProxiesSetProxyHeaderRequest",
+ "properties": {
+ "proxyHeader": {
+ "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxiesSetSslCertificatesRequest": {
+ "id": "TargetSslProxiesSetSslCertificatesRequest",
+ "properties": {
+ "sslCertificates": {
+ "description": "New set of URLs to SslCertificate resources to associate with this TargetSslProxy. Currently exactly one ssl certificate must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxy": {
+ "description": "A TargetSslProxy resource. This resource defines an SSL proxy. (== resource_for beta.targetSslProxies ==) (== resource_for v1.targetSslProxies ==)",
+ "id": "TargetSslProxy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetSslProxy",
+ "description": "[Output Only] Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "service": {
+ "description": "URL to the BackendService resource.",
+ "type": "string"
+ },
+ "sslCertificates": {
+ "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. Currently exactly one SSL certificate must be specified.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sslPolicy": {
+ "description": "URL of SslPolicy resource that will be associated with the TargetSslProxy resource. If not set, the TargetSslProxy resource will not have any SSL policy configured.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetSslProxyList": {
+ "description": "Contains a list of TargetSslProxy resources.",
+ "id": "TargetSslProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetSslProxy resources.",
+ "items": {
+ "$ref": "TargetSslProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetSslProxyList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxiesSetBackendServiceRequest": {
+ "id": "TargetTcpProxiesSetBackendServiceRequest",
+ "properties": {
+ "service": {
+ "description": "The URL of the new BackendService resource for the targetTcpProxy.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxiesSetProxyHeaderRequest": {
+ "id": "TargetTcpProxiesSetProxyHeaderRequest",
+ "properties": {
+ "proxyHeader": {
+ "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxy": {
+ "description": "A TargetTcpProxy resource. This resource defines a TCP proxy. (== resource_for beta.targetTcpProxies ==) (== resource_for v1.targetTcpProxies ==)",
+ "id": "TargetTcpProxy",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetTcpProxy",
+ "description": "[Output Only] Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "service": {
+ "description": "URL to the BackendService resource.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TargetTcpProxyList": {
+ "description": "Contains a list of TargetTcpProxy resources.",
+ "id": "TargetTcpProxyList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetTcpProxy resources.",
+ "items": {
+ "$ref": "TargetTcpProxy"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetTcpProxyList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGateway": {
+ "description": "Represents a Target VPN gateway resource. (== resource_for beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==)",
+ "id": "TargetVpnGateway",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "forwardingRules": {
+ "description": "[Output Only] A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated to a VPN gateway.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#targetVpnGateway",
+ "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this TargetVpnGateway, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an TargetVpnGateway.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this TargetVpnGateway resource. These can be later modified by the setLabels method. Each label key/value must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.targetVpnGateways.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "annotations": {
+ "required": [
+ "compute.targetVpnGateways.insert"
+ ]
+ },
+ "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the target VPN gateway resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the VPN gateway.",
+ "enum": [
+ "CREATING",
+ "DELETING",
+ "FAILED",
+ "READY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "tunnels": {
+ "description": "[Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are created using compute.vpntunnels.insert method and associated to a VPN gateway.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGatewayAggregatedList": {
+ "id": "TargetVpnGatewayAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "TargetVpnGatewaysScopedList",
+ "description": "[Output Only] Name of the scope containing this set of target VPN gateways."
+ },
+ "description": "A list of TargetVpnGateway resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#targetVpnGatewayAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGatewayList": {
+ "description": "Contains a list of TargetVpnGateway resources.",
+ "id": "TargetVpnGatewayList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of TargetVpnGateway resources.",
+ "items": {
+ "$ref": "TargetVpnGateway"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#targetVpnGatewayList",
+ "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TargetVpnGatewaysScopedList": {
+ "id": "TargetVpnGatewaysScopedList",
+ "properties": {
+ "targetVpnGateways": {
+ "description": "[Output Only] List of target vpn gateways contained in this scope.",
+ "items": {
+ "$ref": "TargetVpnGateway"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "TestFailure": {
+ "id": "TestFailure",
+ "properties": {
+ "actualService": {
+ "type": "string"
+ },
+ "expectedService": {
+ "type": "string"
+ },
+ "host": {
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "TestPermissionsRequest": {
+ "id": "TestPermissionsRequest",
+ "properties": {
+ "permissions": {
+ "description": "The set of permissions to check for the 'resource'. Permissions with wildcards (such as '*' or 'storage.*') are not allowed.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "TestPermissionsResponse": {
+ "id": "TestPermissionsResponse",
+ "properties": {
+ "permissions": {
+ "description": "A subset of `TestPermissionsRequest.permissions` that the caller is allowed.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "UDPHealthCheck": {
+ "id": "UDPHealthCheck",
+ "properties": {
+ "port": {
+ "description": "The UDP port number for the health check request. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "request": {
+ "description": "Raw data of request to send in payload of UDP packet. It is an error if this is empty. The request data can only be ASCII.",
+ "type": "string"
+ },
+ "response": {
+ "description": "The bytes to match against the beginning of the response data. It is an error if this is empty. The response data can only be ASCII.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMap": {
+ "description": "A UrlMap resource. This resource defines the mapping from URL to the BackendService resource, based on the \"longest-match\" of the URL's host and path.",
+ "id": "UrlMap",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "defaultService": {
+ "description": "The URL of the BackendService resource if none of the hostRules match.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap.",
+ "format": "byte",
+ "type": "string"
+ },
+ "hostRules": {
+ "description": "The list of HostRules to use against the URL.",
+ "items": {
+ "$ref": "HostRule"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#urlMap",
+ "description": "[Output Only] Type of the resource. Always compute#urlMaps for url maps.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "pathMatchers": {
+ "description": "The list of named PathMatchers to use against the URL.",
+ "items": {
+ "$ref": "PathMatcher"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "tests": {
+ "description": "The list of expected URL mapping tests. Request to update this UrlMap will succeed only if all of the test cases pass. You can specify a maximum of 100 tests per UrlMap.",
+ "items": {
+ "$ref": "UrlMapTest"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapList": {
+ "description": "Contains a list of UrlMap resources.",
+ "id": "UrlMapList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of UrlMap resources.",
+ "items": {
+ "$ref": "UrlMap"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#urlMapList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapReference": {
+ "id": "UrlMapReference",
+ "properties": {
+ "urlMap": {
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapTest": {
+ "description": "Message for the expected URL mappings.",
+ "id": "UrlMapTest",
+ "properties": {
+ "description": {
+ "description": "Description of this test case.",
+ "type": "string"
+ },
+ "host": {
+ "description": "Host portion of the URL.",
+ "type": "string"
+ },
+ "path": {
+ "description": "Path portion of the URL.",
+ "type": "string"
+ },
+ "service": {
+ "description": "Expected BackendService resource the given URL should be mapped to.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapValidationResult": {
+ "description": "Message representing the validation result for a UrlMap.",
+ "id": "UrlMapValidationResult",
+ "properties": {
+ "loadErrors": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "loadSucceeded": {
+ "description": "Whether the given UrlMap can be successfully loaded. If false, 'loadErrors' indicates the reasons.",
+ "type": "boolean"
+ },
+ "testFailures": {
+ "items": {
+ "$ref": "TestFailure"
+ },
+ "type": "array"
+ },
+ "testPassed": {
+ "description": "If successfully loaded, this field indicates whether the test passed. If false, 'testFailures's indicate the reason of failure.",
+ "type": "boolean"
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapsValidateRequest": {
+ "id": "UrlMapsValidateRequest",
+ "properties": {
+ "resource": {
+ "$ref": "UrlMap",
+ "description": "Content of the UrlMap to be validated."
+ }
+ },
+ "type": "object"
+ },
+ "UrlMapsValidateResponse": {
+ "id": "UrlMapsValidateResponse",
+ "properties": {
+ "result": {
+ "$ref": "UrlMapValidationResult"
+ }
+ },
+ "type": "object"
+ },
+ "UsableSubnetwork": {
+ "description": "Subnetwork which the current user has compute.subnetworks.use permission on.",
+ "id": "UsableSubnetwork",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The range of internal addresses that are owned by this subnetwork.",
+ "type": "string"
+ },
+ "network": {
+ "description": "Network URL.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Subnetwork URL.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "UsableSubnetworksAggregatedList": {
+ "id": "UsableSubnetworksAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "[Output] A list of usable subnetwork URLs.",
+ "items": {
+ "$ref": "UsableSubnetwork"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#usableSubnetworksAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#usableSubnetworksAggregatedList for aggregated lists of usable subnetworks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "UsageExportLocation": {
+ "description": "The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix.",
+ "id": "UsageExportLocation",
+ "properties": {
+ "bucketName": {
+ "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket.",
+ "type": "string"
+ },
+ "reportNamePrefix": {
+ "description": "An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnel": {
+ "description": "VPN tunnel resource. (== resource_for beta.vpnTunnels ==) (== resource_for v1.vpnTunnels ==)",
+ "id": "VpnTunnel",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "detailedStatus": {
+ "description": "[Output Only] Detailed status message for the VPN tunnel.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ikeVersion": {
+ "description": "IKE protocol version to use when establishing the VPN tunnel with peer VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "kind": {
+ "default": "compute#vpnTunnel",
+ "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this VpnTunnel, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a VpnTunnel.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this VpnTunnel. These can be later modified by the setLabels method. Each label key/value pair must comply with RFC1035. Label values may be empty.",
+ "type": "object"
+ },
+ "localTrafficSelector": {
+ "description": "Local traffic selector to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.vpnTunnels.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "peerIp": {
+ "description": "IP address of the peer VPN gateway. Only IPv4 is supported.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the VPN tunnel resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "remoteTrafficSelector": {
+ "description": "Remote traffic selectors to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "router": {
+ "description": "URL of router resource to be used for dynamic routing.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sharedSecret": {
+ "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway.",
+ "type": "string"
+ },
+ "sharedSecretHash": {
+ "description": "Hash of the shared secret.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the VPN tunnel.",
+ "enum": [
+ "ALLOCATING_RESOURCES",
+ "AUTHORIZATION_ERROR",
+ "DEPROVISIONING",
+ "ESTABLISHED",
+ "FAILED",
+ "FIRST_HANDSHAKE",
+ "NEGOTIATION_FAILURE",
+ "NETWORK_ERROR",
+ "NO_INCOMING_PACKETS",
+ "PROVISIONING",
+ "REJECTED",
+ "WAITING_FOR_FULL_CONFIG"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "URL of the Target VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnelAggregatedList": {
+ "id": "VpnTunnelAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "VpnTunnelsScopedList",
+ "description": "Name of the scope containing this set of vpn tunnels."
+ },
+ "description": "A list of VpnTunnelsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#vpnTunnelAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnelList": {
+ "description": "Contains a list of VpnTunnel resources.",
+ "id": "VpnTunnelList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of VpnTunnel resources.",
+ "items": {
+ "$ref": "VpnTunnel"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#vpnTunnelList",
+ "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "VpnTunnelsScopedList": {
+ "id": "VpnTunnelsScopedList",
+ "properties": {
+ "vpnTunnels": {
+ "description": "List of vpn tunnels contained in this scope.",
+ "items": {
+ "$ref": "VpnTunnel"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "XpnHostList": {
+ "id": "XpnHostList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "[Output Only] A list of shared VPC host project URLs.",
+ "items": {
+ "$ref": "Project"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#xpnHostList",
+ "description": "[Output Only] Type of resource. Always compute#xpnHostList for lists of shared VPC hosts.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "XpnResourceId": {
+ "description": "Service resource (a.k.a service project) ID.",
+ "id": "XpnResourceId",
+ "properties": {
+ "id": {
+ "description": "The ID of the service resource. In the case of projects, this field matches the project ID (e.g., my-project), not the project number (e.g., 12345678).",
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of the service resource.",
+ "enum": [
+ "PROJECT",
+ "XPN_RESOURCE_TYPE_UNSPECIFIED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "Zone": {
+ "description": "A Zone resource. (== resource_for beta.zones ==) (== resource_for v1.zones ==)",
+ "id": "Zone",
+ "properties": {
+ "availableCpuPlatforms": {
+ "description": "[Output Only] Available cpu/platform selections for the zone.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this zone."
+ },
+ "description": {
+ "description": "[Output Only] Textual description of the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#zone",
+ "description": "[Output Only] Type of the resource. Always compute#zone for zones.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] Full URL reference to the region which hosts the zone.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] Status of the zone, either UP or DOWN.",
+ "enum": [
+ "DOWN",
+ "UP"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "ZoneList": {
+ "description": "Contains a list of zone resources.",
+ "id": "ZoneList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Zone resources.",
+ "items": {
+ "$ref": "Zone"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#zoneList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
+ },
+ "type": "object"
+ },
+ "ZoneSetLabelsRequest": {
+ "id": "ZoneSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "The labels to set for this resource.",
+ "type": "object"
+ }
+ },
+ "type": "object"
}
- }
},
- "zones": {
- "methods": {
- "get": {
- "id": "compute.zones.get",
- "path": "{project}/zones/{zone}",
- "httpMethod": "GET",
- "description": "Returns the specified Zone resource. Get a list of available zones by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "Zone"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.zones.list",
- "path": "{project}/zones",
- "httpMethod": "GET",
- "description": "Retrieves the list of Zone resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ZoneList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- }
- }
-}
+ "servicePath": "compute/beta/projects/",
+ "title": "Compute Engine API",
+ "version": "beta"
+}
\ No newline at end of file
diff --git a/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go b/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go
index ee8cc7254f07..1332bf10f075 100644
--- a/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go
+++ b/vendor/google.golang.org/api/compute/v0.beta/compute-gen.go
@@ -102,6 +102,8 @@ func New(client *http.Client) (*Service, error) {
s.RegionAutoscalers = NewRegionAutoscalersService(s)
s.RegionBackendServices = NewRegionBackendServicesService(s)
s.RegionCommitments = NewRegionCommitmentsService(s)
+ s.RegionDiskTypes = NewRegionDiskTypesService(s)
+ s.RegionDisks = NewRegionDisksService(s)
s.RegionInstanceGroupManagers = NewRegionInstanceGroupManagersService(s)
s.RegionInstanceGroups = NewRegionInstanceGroupsService(s)
s.RegionOperations = NewRegionOperationsService(s)
@@ -194,6 +196,10 @@ type Service struct {
RegionCommitments *RegionCommitmentsService
+ RegionDiskTypes *RegionDiskTypesService
+
+ RegionDisks *RegionDisksService
+
RegionInstanceGroupManagers *RegionInstanceGroupManagersService
RegionInstanceGroups *RegionInstanceGroupsService
@@ -525,6 +531,24 @@ type RegionCommitmentsService struct {
s *Service
}
+func NewRegionDiskTypesService(s *Service) *RegionDiskTypesService {
+ rs := &RegionDiskTypesService{s: s}
+ return rs
+}
+
+type RegionDiskTypesService struct {
+ s *Service
+}
+
+func NewRegionDisksService(s *Service) *RegionDisksService {
+ rs := &RegionDisksService{s: s}
+ return rs
+}
+
+type RegionDisksService struct {
+ s *Service
+}
+
func NewRegionInstanceGroupManagersService(s *Service) *RegionInstanceGroupManagersService {
rs := &RegionInstanceGroupManagersService{s: s}
return rs
@@ -731,7 +755,8 @@ type AcceleratorConfig struct {
AcceleratorCount int64 `json:"acceleratorCount,omitempty"`
// AcceleratorType: Full or partial URL of the accelerator type resource
- // to expose to this instance.
+ // to attach to this instance. If you are creating an instance template,
+ // specify only the accelerator name.
AcceleratorType string `json:"acceleratorType,omitempty"`
// ForceSendFields is a list of field names (e.g. "AcceleratorCount") to
@@ -793,7 +818,9 @@ type AcceleratorType struct {
SelfLink string `json:"selfLink,omitempty"`
// Zone: [Output Only] The name of the zone where the accelerator type
- // resides, such as us-central1-a.
+ // resides, such as us-central1-a. You must specify this field as part
+ // of the HTTP request URL. It is not settable as a field in the request
+ // body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -1290,6 +1317,22 @@ type AccessConfig struct {
// live in the same region as the zone of the instance.
NatIP string `json:"natIP,omitempty"`
+ // NetworkTier: This signifies the networking tier used for configuring
+ // this access configuration and can only take the following values:
+ // PREMIUM, STANDARD.
+ //
+ // If an AccessConfig is specified without a valid external IP address,
+ // an ephemeral IP will be created with this networkTier.
+ //
+ // If an AccessConfig with a valid external IP address is specified, it
+ // must match that of the networkTier associated with the Address
+ // resource owning that IP.
+ //
+ // Possible values:
+ // "PREMIUM"
+ // "STANDARD"
+ NetworkTier string `json:"networkTier,omitempty"`
+
// PublicPtrDomainName: The DNS domain name for the public PTR record.
// This field can only be set when the set_public_ptr field is enabled.
PublicPtrDomainName string `json:"publicPtrDomainName,omitempty"`
@@ -1390,14 +1433,27 @@ type Address struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
Name string `json:"name,omitempty"`
+ // NetworkTier: This signifies the networking tier used for configuring
+ // this Address and can only take the following values: PREMIUM ,
+ // STANDARD.
+ //
+ // If this field is not specified, it is assumed to be PREMIUM.
+ //
+ // Possible values:
+ // "PREMIUM"
+ // "STANDARD"
+ NetworkTier string `json:"networkTier,omitempty"`
+
// Region: [Output Only] URL of the region where the regional address
- // resides. This field is not applicable to global addresses.
+ // resides. This field is not applicable to global addresses. You must
+ // specify this field as part of the HTTP request URL. You cannot set
+ // this field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -1979,6 +2035,11 @@ type AttachedDisk struct {
// group.
DiskEncryptionKey *CustomerEncryptionKey `json:"diskEncryptionKey,omitempty"`
+ // GuestOsFeatures: A list of features to enable on the guest operating
+ // system. Applicable only for bootable images. Read Enabling guest
+ // operating system features to see a list of available options.
+ GuestOsFeatures []*GuestOsFeature `json:"guestOsFeatures,omitempty"`
+
// Index: [Output Only] A zero-based index to this disk, where 0 is
// reserved for the boot disk. If you have many disks attached to an
// instance, each disk would have a unique index number.
@@ -2091,9 +2152,9 @@ type AttachedDiskInitializeParams struct {
// not specified, the default is pd-standard, specified using the full
// URL. For
// example:
+ // https://www.googleapis.com/compute/v1/projects/project/zones/
+ // zone/diskTypes/pd-standard
//
- // https://www.googleapis.com/compute/v1/projects/project/zones
- // /zone/diskTypes/pd-standard
//
// Other values include pd-ssd and local-ssd. If you define this field,
// you can provide either the full or partial URL. For example, the
@@ -2105,6 +2166,11 @@ type AttachedDiskInitializeParams struct {
// is the name of the disk type, not URL.
DiskType string `json:"diskType,omitempty"`
+ // Labels: Labels to apply to this disk. These can be later modified by
+ // the disks.setLabels method. This field is only applicable for
+ // persistent disks.
+ Labels map[string]string `json:"labels,omitempty"`
+
// SourceImage: The source image to create this disk. When creating a
// new instance, one of initializeParams.sourceImage or disks.source is
// required except for local SSD.
@@ -2113,26 +2179,29 @@ type AttachedDiskInitializeParams struct {
// specify the image by its family name. For example, specify
// family/debian-8 to use the latest Debian 8
// image:
- //
// projects/debian-cloud/global/images/family/debian-8
//
- // Alternatively, use a specific version of a public operating system
- // image:
//
+ // Alternati
+ // vely, use a specific version of a public operating system
+ // image:
// projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD
//
- // To create a disk with a custom image that you created, specify the
- // image name in the following format:
//
+ //
+ // To create a disk with a custom image that you created, specify the
+ // image name in the following
+ // format:
// global/images/my-custom-image
//
+ //
// You can also specify a custom image by its image family, which
// returns the latest version of the image in that family. Replace the
// image name with
// family/family-name:
- //
// global/images/family/my-image-family
//
+ //
// If the source image is deleted later, this field will not be set.
SourceImage string `json:"sourceImage,omitempty"`
@@ -2176,7 +2245,7 @@ func (s *AttachedDiskInitializeParams) MarshalJSON() ([]byte, error) {
// If there are AuditConfigs for both `allServices` and a specific
// service, the union of the two AuditConfigs is used for that service:
// the log_types specified in each AuditConfig are enabled, and the
-// exempted_members in each AuditConfig are exempted.
+// exempted_members in each AuditLogConfig are exempted.
//
// Example Policy with multiple AuditConfigs:
//
@@ -2348,7 +2417,7 @@ type Autoscaler struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -3344,7 +3413,7 @@ type BackendBucket struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -3652,7 +3721,7 @@ type BackendService struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -3690,7 +3759,8 @@ type BackendService struct {
// Region: [Output Only] URL of the region where the regional backend
// service resides. This field is not applicable to global backend
- // services.
+ // services. You must specify this field as part of the HTTP request
+ // URL. It is not settable as a field in the request body.
Region string `json:"region,omitempty"`
// SecurityPolicy: [Output Only] The resource URL for the security
@@ -4316,7 +4386,8 @@ type Binding struct {
// Condition: The condition that is associated with this binding. NOTE:
// an unsatisfied condition will not allow user access via current
// binding. Different bindings, including their conditions, are examined
- // independently. This field is GOOGLE_INTERNAL.
+ // independently. This field is only visible as GOOGLE_INTERNAL or
+ // CONDITION_TRUSTED_TESTER.
Condition *Expr `json:"condition,omitempty"`
// Members: Specifies the identities requesting access for a Cloud
@@ -4493,7 +4564,7 @@ type Commitment struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -5019,6 +5090,7 @@ type Condition struct {
// "APPROVER"
// "ATTRIBUTION"
// "AUTHORITY"
+ // "CREDENTIALS_TYPE"
// "JUSTIFICATION_TYPE"
// "NO_ATTR"
// "SECURITY_REALM"
@@ -5280,6 +5352,11 @@ type Disk struct {
// you do not need to provide a key to use the disk later.
DiskEncryptionKey *CustomerEncryptionKey `json:"diskEncryptionKey,omitempty"`
+ // GuestOsFeatures: A list of features to enable on the guest operating
+ // system. Applicable only for bootable images. Read Enabling guest
+ // operating system features to see a list of available options.
+ GuestOsFeatures []*GuestOsFeature `json:"guestOsFeatures,omitempty"`
+
// Id: [Output Only] The unique identifier for the resource. This
// identifier is defined by the server.
Id uint64 `json:"id,omitempty,string"`
@@ -5321,7 +5398,7 @@ type Disk struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -5330,6 +5407,16 @@ type Disk struct {
// Options: Internal use only.
Options string `json:"options,omitempty"`
+ // Region: [Output Only] URL of the region where the disk resides. Only
+ // applicable for regional resources. You must specify this field as
+ // part of the HTTP request URL. It is not settable as a field in the
+ // request body.
+ Region string `json:"region,omitempty"`
+
+ // ReplicaZones: URLs of the zones where the disk should be replicated
+ // to. Only applicable for regional resources.
+ ReplicaZones []string `json:"replicaZones,omitempty"`
+
// SelfLink: [Output Only] Server-defined fully-qualified URL for this
// resource.
SelfLink string `json:"selfLink,omitempty"`
@@ -5352,24 +5439,26 @@ type Disk struct {
// specify the image by its family name. For example, specify
// family/debian-8 to use the latest Debian 8
// image:
- //
// projects/debian-cloud/global/images/family/debian-8
//
- // Alternatively, use a specific version of a public operating system
- // image:
//
+ // Alternati
+ // vely, use a specific version of a public operating system
+ // image:
// projects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD
//
- // To create a disk with a custom image that you created, specify the
- // image name in the following format:
//
+ //
+ // To create a disk with a custom image that you created, specify the
+ // image name in the following
+ // format:
// global/images/my-custom-image
//
+ //
// You can also specify a custom image by its image family, which
// returns the latest version of the image in that family. Replace the
// image name with
// family/family-name:
- //
// global/images/family/my-image-family
SourceImage string `json:"sourceImage,omitempty"`
@@ -5425,14 +5514,17 @@ type Disk struct {
StorageType string `json:"storageType,omitempty"`
// Type: URL of the disk type resource describing which disk type to use
- // to create the disk. Provide this when creating the disk.
+ // to create the disk. Provide this when creating the disk. For example:
+ // project/zones/zone/diskTypes/pd-standard or pd-ssd
Type string `json:"type,omitempty"`
// Users: [Output Only] Links to the users of the disk (attached
// instances) in form: project/zones/zone/instances/instance
Users []string `json:"users,omitempty"`
- // Zone: [Output Only] URL of the zone where the disk resides.
+ // Zone: [Output Only] URL of the zone where the disk resides. You must
+ // specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -5627,27 +5719,39 @@ type DiskInstantiationConfig struct {
// instance).
AutoDelete bool `json:"autoDelete,omitempty"`
+ // CustomImage: The custom source image to be used to restore this disk
+ // when instantiating this instance template.
+ CustomImage string `json:"customImage,omitempty"`
+
// DeviceName: Specifies the device name of the disk to which the
// configurations apply to.
DeviceName string `json:"deviceName,omitempty"`
// InstantiateFrom: Specifies whether to include the disk and what image
- // to use.
+ // to use. Possible values are:
+ // - source-image: to use the same image that was used to create the
+ // source instance's corresponding disk. Applicable to the boot disk and
+ // additional read-write disks.
+ // - source-image-family: to use the same image family that was used to
+ // create the source instance's corresponding disk. Applicable to the
+ // boot disk and additional read-write disks.
+ // - custom-image: to use a user-provided image url for disk creation.
+ // Applicable to the boot disk and additional read-write disks.
+ // - attach-read-only: to attach a read-only disk. Applicable to
+ // read-only disks.
+ // - do-not-include: to exclude a disk from the template. Applicable to
+ // additional read-write disks, local SSDs, and read-only disks.
//
// Possible values:
// "ATTACH_READ_ONLY"
// "BLANK"
+ // "CUSTOM_IMAGE"
// "DEFAULT"
// "DO_NOT_INCLUDE"
- // "IMAGE_URL"
// "SOURCE_IMAGE"
// "SOURCE_IMAGE_FAMILY"
InstantiateFrom string `json:"instantiateFrom,omitempty"`
- // SourceImage: The custom source image to be used to restore this disk
- // when instantiating this instance template.
- SourceImage string `json:"sourceImage,omitempty"`
-
// ForceSendFields is a list of field names (e.g. "AutoDelete") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
@@ -5905,7 +6009,9 @@ type DiskType struct {
// valid disk size, such as "10GB-10TB".
ValidDiskSize string `json:"validDiskSize,omitempty"`
- // Zone: [Output Only] URL of the zone where the disk type resides.
+ // Zone: [Output Only] URL of the zone where the disk type resides. You
+ // must specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -6657,7 +6763,7 @@ type Firewall struct {
CreationTimestamp string `json:"creationTimestamp,omitempty"`
// Denied: The list of DENY rules specified by this firewall. Each rule
- // specifies a protocol and port-range tuple that describes a permitted
+ // specifies a protocol and port-range tuple that describes a denied
// connection.
Denied []*FirewallDenied `json:"denied,omitempty"`
@@ -6692,7 +6798,7 @@ type Firewall struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -7201,7 +7307,7 @@ type ForwardingRule struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -7214,6 +7320,22 @@ type ForwardingRule struct {
// this field is not specified, the default network will be used.
Network string `json:"network,omitempty"`
+ // NetworkTier: This signifies the networking tier used for configuring
+ // this load balancer and can only take the following values: PREMIUM ,
+ // STANDARD.
+ //
+ // For regional ForwardingRule, the valid values are PREMIUM and
+ // STANDARD. For GlobalForwardingRule, the valid value is PREMIUM.
+ //
+ // If this field is not specified, it is assumed to be PREMIUM. If
+ // IPAddress is specified, this value must be equal to the networkTier
+ // of the Address.
+ //
+ // Possible values:
+ // "PREMIUM"
+ // "STANDARD"
+ NetworkTier string `json:"networkTier,omitempty"`
+
// PortRange: This field is used along with the target field for
// TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy,
// TargetVpnGateway, TargetPool, TargetInstance.
@@ -7228,11 +7350,10 @@ type ForwardingRule struct {
// - TargetHttpProxy: 80, 8080
// - TargetHttpsProxy: 443
// - TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993,
- // 995, 1883, 5222
+ // 995, 1688, 1883, 5222
// - TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993,
- // 995, 1883, 5222
+ // 995, 1688, 1883, 5222
// - TargetVpnGateway: 500, 4500
- // -
PortRange string `json:"portRange,omitempty"`
// Ports: This field is used along with the backend_service field for
@@ -7248,7 +7369,8 @@ type ForwardingRule struct {
// Region: [Output Only] URL of the region where the regional forwarding
// rule resides. This field is not applicable to global forwarding
- // rules.
+ // rules. You must specify this field as part of the HTTP request URL.
+ // It is not settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -7260,7 +7382,7 @@ type ForwardingRule struct {
//
// The label must be 1-63 characters long, and comply with RFC1035.
// Specifically, the label must be 1-63 characters long and match the
- // regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first
+ // regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first
// character must be a lowercase letter, and all following characters
// must be a dash, lowercase letter, or digit, except the last
// character, which cannot be a dash.
@@ -7290,8 +7412,6 @@ type ForwardingRule struct {
// same region as the forwarding rule. For global forwarding rules, this
// target must be a global load balancing resource. The forwarded
// traffic must be of a type appropriate to the target object.
- //
- // This field is not used for internal load balancing.
Target string `json:"target,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -7777,8 +7897,8 @@ type GlobalSetLabelsRequest struct {
// Labels: A list of labels to apply for this resource. Each label key &
// value must comply with RFC1035. Specifically, the name must be 1-63
// characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash. For example, "webserver-frontend": "images". A label value
// can also be empty (e.g. "my-label": "").
@@ -7989,7 +8109,7 @@ type HealthCheck struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -8358,7 +8478,7 @@ type HttpHealthCheck struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -8603,7 +8723,7 @@ type HttpsHealthCheck struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -8895,7 +9015,7 @@ type Image struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -8945,6 +9065,26 @@ type Image struct {
// taken from the current or a previous instance of a given image name.
SourceImageId string `json:"sourceImageId,omitempty"`
+ // SourceSnapshot: URL of the source snapshot used to create this image.
+ // This can be a full or valid partial URL. You must provide exactly one
+ // of:
+ // - this property, or
+ // - the sourceImage property, or
+ // - the rawDisk.source property, or
+ // - the sourceDisk property in order to create an image.
+ SourceSnapshot string `json:"sourceSnapshot,omitempty"`
+
+ // SourceSnapshotEncryptionKey: The customer-supplied encryption key of
+ // the source snapshot. Required if the source snapshot is protected by
+ // a customer-supplied encryption key.
+ SourceSnapshotEncryptionKey *CustomerEncryptionKey `json:"sourceSnapshotEncryptionKey,omitempty"`
+
+ // SourceSnapshotId: [Output Only] The ID value of the snapshot used to
+ // create this image. This value may be used to determine whether the
+ // snapshot was taken from the current or a previous instance of a given
+ // snapshot name.
+ SourceSnapshotId string `json:"sourceSnapshotId,omitempty"`
+
// SourceType: The type of the image used to create this disk. The
// default and only value is RAW
//
@@ -9248,18 +9388,18 @@ type Instance struct {
// when the instance is created. For example, the following is a valid
// partial url to a predefined machine
// type:
- //
// zones/us-central1-f/machineTypes/n1-standard-1
//
+ //
// To create a custom machine type, provide a URL to a machine type in
// the following format, where CPUS is 1 or an even number up to 32 (2,
// 4, 6, ... 24, etc), and MEMORY is the total memory for this instance.
// Memory must be a multiple of 256 MB and must be supplied in MB (e.g.
// 5 GB of memory is 5120
// MB):
- //
// zones/zone/machineTypes/custom-CPUS-MEMORY
//
+ //
// For example: zones/us-central1-f/machineTypes/custom-4-5120
//
// For a full list of restrictions, read the Specifications for custom
@@ -9280,8 +9420,8 @@ type Instance struct {
// creating the resource. The resource name must be 1-63 characters
// long, and comply with RFC1035. Specifically, the name must be 1-63
// characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash.
Name string `json:"name,omitempty"`
@@ -9337,7 +9477,9 @@ type Instance struct {
// comply with RFC1035.
Tags *Tags `json:"tags,omitempty"`
- // Zone: [Output Only] URL of the zone where the instance resides.
+ // Zone: [Output Only] URL of the zone where the instance resides. You
+ // must specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -10126,9 +10268,9 @@ type InstanceGroupManagerActionsSummary struct {
Restarting int64 `json:"restarting,omitempty"`
// Verifying: [Output Only] The number of instances in the managed
- // instance group that are being verified. More details regarding
- // verification process are covered in the documentation of
- // ManagedInstance.InstanceAction.VERIFYING enum field.
+ // instance group that are being verified. See the
+ // managedInstances[].currentAction property in the listManagedInstances
+ // method documentation.
Verifying int64 `json:"verifying,omitempty"`
// ForceSendFields is a list of field names (e.g. "Abandoning") to
@@ -11984,7 +12126,7 @@ type InstanceTemplate struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -12616,6 +12758,22 @@ type Interconnect struct {
// for interconnects.
Kind string `json:"kind,omitempty"`
+ // LabelFingerprint: A fingerprint for the labels being applied to this
+ // Interconnect, which is essentially a hash of the labels set used for
+ // optimistic locking. The fingerprint is initially generated by Compute
+ // Engine and changes after every request to modify or update labels.
+ // You must always provide an up-to-date fingerprint hash in order to
+ // update or change labels.
+ //
+ // To see the latest fingerprint, make a get() request to retrieve an
+ // Interconnect.
+ LabelFingerprint string `json:"labelFingerprint,omitempty"`
+
+ // Labels: Labels to apply to this Interconnect resource. These can be
+ // later modified by the setLabels method. Each label key/value must
+ // comply with RFC1035. Label values may be empty.
+ Labels map[string]string `json:"labels,omitempty"`
+
// LinkType: Type of link requested. This field indicates speed of each
// of the links in the bundle, not the entire bundle. Only 10G per link
// is allowed for a dedicated interconnect. Options: Ethernet_10G_LR
@@ -12631,7 +12789,7 @@ type Interconnect struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -12701,6 +12859,20 @@ func (s *Interconnect) MarshalJSON() ([]byte, error) {
// Attachments. (== resource_for beta.interconnectAttachments ==) (==
// resource_for v1.interconnectAttachments ==)
type InterconnectAttachment struct {
+ // AdminEnabled: Determines whether this Attachment will carry packets.
+ // Not present for PARTNER_PROVIDER.
+ AdminEnabled bool `json:"adminEnabled,omitempty"`
+
+ // CandidateSubnets: Up to 16 candidate prefixes that can be used to
+ // restrict the allocation of cloudRouterIpAddress and
+ // customerRouterIpAddress for this attachment. All prefixes must be
+ // within link-local address space (169.254.0.0/16) and must be /29 or
+ // shorter (/28, /27, etc). Google will attempt to select an unused /29
+ // from the supplied candidate prefix(es). The request will fail if all
+ // possible /29s are in use on Google?s edge. If not supplied, Google
+ // will randomly select an unused /29 from all of link-local space.
+ CandidateSubnets []string `json:"candidateSubnets,omitempty"`
+
// CloudRouterIpAddress: [Output Only] IPv4 address + prefix length to
// be configured on Cloud Router Interface for this interconnect
// attachment.
@@ -12735,10 +12907,26 @@ type InterconnectAttachment struct {
// compute#interconnectAttachment for interconnect attachments.
Kind string `json:"kind,omitempty"`
+ // LabelFingerprint: A fingerprint for the labels being applied to this
+ // InterconnectAttachment, which is essentially a hash of the labels set
+ // used for optimistic locking. The fingerprint is initially generated
+ // by Compute Engine and changes after every request to modify or update
+ // labels. You must always provide an up-to-date fingerprint hash in
+ // order to update or change labels.
+ //
+ // To see the latest fingerprint, make a get() request to retrieve an
+ // InterconnectAttachment.
+ LabelFingerprint string `json:"labelFingerprint,omitempty"`
+
+ // Labels: Labels to apply to this InterconnectAttachment resource.
+ // These can be later modified by the setLabels method. Each label
+ // key/value must comply with RFC1035. Label values may be empty.
+ Labels map[string]string `json:"labels,omitempty"`
+
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -12758,7 +12946,9 @@ type InterconnectAttachment struct {
PrivateInterconnectInfo *InterconnectAttachmentPrivateInfo `json:"privateInterconnectInfo,omitempty"`
// Region: [Output Only] URL of the region where the regional
- // interconnect attachment resides.
+ // interconnect attachment resides. You must specify this field as part
+ // of the HTTP request URL. It is not settable as a field in the request
+ // body.
Region string `json:"region,omitempty"`
// Router: URL of the cloud router to be used for dynamic routing. This
@@ -12770,169 +12960,21 @@ type InterconnectAttachment struct {
// SelfLink: [Output Only] Server-defined URL for the resource.
SelfLink string `json:"selfLink,omitempty"`
- // ServerResponse contains the HTTP response code and headers from the
- // server.
- googleapi.ServerResponse `json:"-"`
-
- // ForceSendFields is a list of field names (e.g.
- // "CloudRouterIpAddress") to unconditionally include in API requests.
- // By default, fields with empty values are omitted from API requests.
- // However, any non-pointer, non-interface field appearing in
- // ForceSendFields will be sent to the server regardless of whether the
- // field is empty or not. This may be used to include empty fields in
- // Patch requests.
- ForceSendFields []string `json:"-"`
-
- // NullFields is a list of field names (e.g. "CloudRouterIpAddress") to
- // include in API requests with the JSON null value. By default, fields
- // with empty values are omitted from API requests. However, any field
- // with an empty value appearing in NullFields will be sent to the
- // server as null. It is an error if a field in this list has a
- // non-empty value. This may be used to include null fields in Patch
- // requests.
- NullFields []string `json:"-"`
-}
-
-func (s *InterconnectAttachment) MarshalJSON() ([]byte, error) {
- type NoMethod InterconnectAttachment
- raw := NoMethod(*s)
- return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-type InterconnectAttachmentAggregatedList struct {
- // Id: [Output Only] Unique identifier for the resource; defined by the
- // server.
- Id string `json:"id,omitempty"`
-
- // Items: A list of InterconnectAttachmentsScopedList resources.
- Items map[string]InterconnectAttachmentsScopedList `json:"items,omitempty"`
-
- // Kind: [Output Only] Type of resource. Always
- // compute#interconnectAttachmentAggregatedList for aggregated lists of
- // interconnect attachments.
- Kind string `json:"kind,omitempty"`
-
- // NextPageToken: [Output Only] This token allows you to get the next
- // page of results for list requests. If the number of results is larger
- // than maxResults, use the nextPageToken as a value for the query
- // parameter pageToken in the next list request. Subsequent list
- // requests will have their own nextPageToken to continue paging through
- // the results.
- NextPageToken string `json:"nextPageToken,omitempty"`
-
- // SelfLink: [Output Only] Server-defined URL for this resource.
- SelfLink string `json:"selfLink,omitempty"`
+ // Possible values:
+ // "DEDICATED"
+ Type string `json:"type,omitempty"`
- // Warning: [Output Only] Informational warning message.
- Warning *InterconnectAttachmentAggregatedListWarning `json:"warning,omitempty"`
+ // VlanTag8021q: Available only for DEDICATED and PARTNER_PROVIDER.
+ // Desired VLAN tag for this attachment, in the range 2-4094. This field
+ // refers to 802.1q VLAN tag, also known as IEEE 802.1Q Only specified
+ // at creation time.
+ VlanTag8021q int64 `json:"vlanTag8021q,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
// server.
googleapi.ServerResponse `json:"-"`
- // ForceSendFields is a list of field names (e.g. "Id") to
- // unconditionally include in API requests. By default, fields with
- // empty values are omitted from API requests. However, any non-pointer,
- // non-interface field appearing in ForceSendFields will be sent to the
- // server regardless of whether the field is empty or not. This may be
- // used to include empty fields in Patch requests.
- ForceSendFields []string `json:"-"`
-
- // NullFields is a list of field names (e.g. "Id") to include in API
- // requests with the JSON null value. By default, fields with empty
- // values are omitted from API requests. However, any field with an
- // empty value appearing in NullFields will be sent to the server as
- // null. It is an error if a field in this list has a non-empty value.
- // This may be used to include null fields in Patch requests.
- NullFields []string `json:"-"`
-}
-
-func (s *InterconnectAttachmentAggregatedList) MarshalJSON() ([]byte, error) {
- type NoMethod InterconnectAttachmentAggregatedList
- raw := NoMethod(*s)
- return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-// InterconnectAttachmentAggregatedListWarning: [Output Only]
-// Informational warning message.
-type InterconnectAttachmentAggregatedListWarning struct {
- // Code: [Output Only] A warning code, if applicable. For example,
- // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
- // the response.
- //
- // Possible values:
- // "CLEANUP_FAILED"
- // "DEPRECATED_RESOURCE_USED"
- // "DEPRECATED_TYPE_USED"
- // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
- // "EXPERIMENTAL_TYPE_USED"
- // "EXTERNAL_API_WARNING"
- // "FIELD_VALUE_OVERRIDEN"
- // "INJECTED_KERNELS_DEPRECATED"
- // "MISSING_TYPE_DEPENDENCY"
- // "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
- // "NEXT_HOP_CANNOT_IP_FORWARD"
- // "NEXT_HOP_INSTANCE_NOT_FOUND"
- // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
- // "NEXT_HOP_NOT_RUNNING"
- // "NOT_CRITICAL_ERROR"
- // "NO_RESULTS_ON_PAGE"
- // "REQUIRED_TOS_AGREEMENT"
- // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
- // "RESOURCE_NOT_DELETED"
- // "SCHEMA_VALIDATION_IGNORED"
- // "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
- // "UNDECLARED_PROPERTIES"
- // "UNREACHABLE"
- Code string `json:"code,omitempty"`
-
- // Data: [Output Only] Metadata about this warning in key: value format.
- // For example:
- // "data": [ { "key": "scope", "value": "zones/us-east1-d" }
- Data []*InterconnectAttachmentAggregatedListWarningData `json:"data,omitempty"`
-
- // Message: [Output Only] A human-readable description of the warning
- // code.
- Message string `json:"message,omitempty"`
-
- // ForceSendFields is a list of field names (e.g. "Code") to
- // unconditionally include in API requests. By default, fields with
- // empty values are omitted from API requests. However, any non-pointer,
- // non-interface field appearing in ForceSendFields will be sent to the
- // server regardless of whether the field is empty or not. This may be
- // used to include empty fields in Patch requests.
- ForceSendFields []string `json:"-"`
-
- // NullFields is a list of field names (e.g. "Code") to include in API
- // requests with the JSON null value. By default, fields with empty
- // values are omitted from API requests. However, any field with an
- // empty value appearing in NullFields will be sent to the server as
- // null. It is an error if a field in this list has a non-empty value.
- // This may be used to include null fields in Patch requests.
- NullFields []string `json:"-"`
-}
-
-func (s *InterconnectAttachmentAggregatedListWarning) MarshalJSON() ([]byte, error) {
- type NoMethod InterconnectAttachmentAggregatedListWarning
- raw := NoMethod(*s)
- return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
-}
-
-type InterconnectAttachmentAggregatedListWarningData struct {
- // Key: [Output Only] A key that provides more detail on the warning
- // being returned. For example, for warnings where there are no results
- // in a list request for a particular zone, this key might be scope and
- // the key value might be the zone name. Other examples might be a key
- // indicating a deprecated resource and a suggested replacement, or a
- // warning about invalid network settings (for example, if an instance
- // attempts to perform IP forwarding but is not enabled for IP
- // forwarding).
- Key string `json:"key,omitempty"`
-
- // Value: [Output Only] A warning data value corresponding to the key.
- Value string `json:"value,omitempty"`
-
- // ForceSendFields is a list of field names (e.g. "Key") to
+ // ForceSendFields is a list of field names (e.g. "AdminEnabled") to
// unconditionally include in API requests. By default, fields with
// empty values are omitted from API requests. However, any non-pointer,
// non-interface field appearing in ForceSendFields will be sent to the
@@ -12940,34 +12982,32 @@ type InterconnectAttachmentAggregatedListWarningData struct {
// used to include empty fields in Patch requests.
ForceSendFields []string `json:"-"`
- // NullFields is a list of field names (e.g. "Key") to include in API
- // requests with the JSON null value. By default, fields with empty
- // values are omitted from API requests. However, any field with an
- // empty value appearing in NullFields will be sent to the server as
+ // NullFields is a list of field names (e.g. "AdminEnabled") to include
+ // in API requests with the JSON null value. By default, fields with
+ // empty values are omitted from API requests. However, any field with
+ // an empty value appearing in NullFields will be sent to the server as
// null. It is an error if a field in this list has a non-empty value.
// This may be used to include null fields in Patch requests.
NullFields []string `json:"-"`
}
-func (s *InterconnectAttachmentAggregatedListWarningData) MarshalJSON() ([]byte, error) {
- type NoMethod InterconnectAttachmentAggregatedListWarningData
+func (s *InterconnectAttachment) MarshalJSON() ([]byte, error) {
+ type NoMethod InterconnectAttachment
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-// InterconnectAttachmentList: Response to the list request, and
-// contains a list of interconnect attachments.
-type InterconnectAttachmentList struct {
+type InterconnectAttachmentAggregatedList struct {
// Id: [Output Only] Unique identifier for the resource; defined by the
// server.
Id string `json:"id,omitempty"`
- // Items: A list of InterconnectAttachment resources.
- Items []*InterconnectAttachment `json:"items,omitempty"`
+ // Items: A list of InterconnectAttachmentsScopedList resources.
+ Items map[string]InterconnectAttachmentsScopedList `json:"items,omitempty"`
// Kind: [Output Only] Type of resource. Always
- // compute#interconnectAttachmentList for lists of interconnect
- // attachments.
+ // compute#interconnectAttachmentAggregatedList for aggregated lists of
+ // interconnect attachments.
Kind string `json:"kind,omitempty"`
// NextPageToken: [Output Only] This token allows you to get the next
@@ -12982,7 +13022,165 @@ type InterconnectAttachmentList struct {
SelfLink string `json:"selfLink,omitempty"`
// Warning: [Output Only] Informational warning message.
- Warning *InterconnectAttachmentListWarning `json:"warning,omitempty"`
+ Warning *InterconnectAttachmentAggregatedListWarning `json:"warning,omitempty"`
+
+ // ServerResponse contains the HTTP response code and headers from the
+ // server.
+ googleapi.ServerResponse `json:"-"`
+
+ // ForceSendFields is a list of field names (e.g. "Id") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Id") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *InterconnectAttachmentAggregatedList) MarshalJSON() ([]byte, error) {
+ type NoMethod InterconnectAttachmentAggregatedList
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// InterconnectAttachmentAggregatedListWarning: [Output Only]
+// Informational warning message.
+type InterconnectAttachmentAggregatedListWarning struct {
+ // Code: [Output Only] A warning code, if applicable. For example,
+ // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
+ // the response.
+ //
+ // Possible values:
+ // "CLEANUP_FAILED"
+ // "DEPRECATED_RESOURCE_USED"
+ // "DEPRECATED_TYPE_USED"
+ // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+ // "EXPERIMENTAL_TYPE_USED"
+ // "EXTERNAL_API_WARNING"
+ // "FIELD_VALUE_OVERRIDEN"
+ // "INJECTED_KERNELS_DEPRECATED"
+ // "MISSING_TYPE_DEPENDENCY"
+ // "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+ // "NEXT_HOP_CANNOT_IP_FORWARD"
+ // "NEXT_HOP_INSTANCE_NOT_FOUND"
+ // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+ // "NEXT_HOP_NOT_RUNNING"
+ // "NOT_CRITICAL_ERROR"
+ // "NO_RESULTS_ON_PAGE"
+ // "REQUIRED_TOS_AGREEMENT"
+ // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+ // "RESOURCE_NOT_DELETED"
+ // "SCHEMA_VALIDATION_IGNORED"
+ // "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+ // "UNDECLARED_PROPERTIES"
+ // "UNREACHABLE"
+ Code string `json:"code,omitempty"`
+
+ // Data: [Output Only] Metadata about this warning in key: value format.
+ // For example:
+ // "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+ Data []*InterconnectAttachmentAggregatedListWarningData `json:"data,omitempty"`
+
+ // Message: [Output Only] A human-readable description of the warning
+ // code.
+ Message string `json:"message,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Code") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Code") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *InterconnectAttachmentAggregatedListWarning) MarshalJSON() ([]byte, error) {
+ type NoMethod InterconnectAttachmentAggregatedListWarning
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type InterconnectAttachmentAggregatedListWarningData struct {
+ // Key: [Output Only] A key that provides more detail on the warning
+ // being returned. For example, for warnings where there are no results
+ // in a list request for a particular zone, this key might be scope and
+ // the key value might be the zone name. Other examples might be a key
+ // indicating a deprecated resource and a suggested replacement, or a
+ // warning about invalid network settings (for example, if an instance
+ // attempts to perform IP forwarding but is not enabled for IP
+ // forwarding).
+ Key string `json:"key,omitempty"`
+
+ // Value: [Output Only] A warning data value corresponding to the key.
+ Value string `json:"value,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Key") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Key") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *InterconnectAttachmentAggregatedListWarningData) MarshalJSON() ([]byte, error) {
+ type NoMethod InterconnectAttachmentAggregatedListWarningData
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// InterconnectAttachmentList: Response to the list request, and
+// contains a list of interconnect attachments.
+type InterconnectAttachmentList struct {
+ // Id: [Output Only] Unique identifier for the resource; defined by the
+ // server.
+ Id string `json:"id,omitempty"`
+
+ // Items: A list of InterconnectAttachment resources.
+ Items []*InterconnectAttachment `json:"items,omitempty"`
+
+ // Kind: [Output Only] Type of resource. Always
+ // compute#interconnectAttachmentList for lists of interconnect
+ // attachments.
+ Kind string `json:"kind,omitempty"`
+
+ // NextPageToken: [Output Only] This token allows you to get the next
+ // page of results for list requests. If the number of results is larger
+ // than maxResults, use the nextPageToken as a value for the query
+ // parameter pageToken in the next list request. Subsequent list
+ // requests will have their own nextPageToken to continue paging through
+ // the results.
+ NextPageToken string `json:"nextPageToken,omitempty"`
+
+ // SelfLink: [Output Only] Server-defined URL for this resource.
+ SelfLink string `json:"selfLink,omitempty"`
+
+ // Warning: [Output Only] Informational warning message.
+ Warning *InterconnectAttachmentListWarning `json:"warning,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
// server.
@@ -14887,6 +15085,7 @@ func (s *MachineTypesScopedListWarningData) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
+// ManagedInstance: Next available tag: 12
type ManagedInstance struct {
// CurrentAction: [Output Only] The current action that the managed
// instance group has scheduled for the instance. Possible values:
@@ -14912,6 +15111,8 @@ type ManagedInstance struct {
// changes to the instance without stopping it. For example, the group
// can update the target pool list for an instance without stopping that
// instance.
+ // - VERIFYING The managed instance group has created the instance and
+ // it is in the process of being verified.
//
// Possible values:
// "ABANDONING"
@@ -15254,7 +15455,7 @@ type Network struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -15558,8 +15759,8 @@ type NetworkPeering struct {
// Name: Name of this peering. Provided by the client when the peering
// is created. The name must comply with RFC1035. Specifically, the name
// must be 1-63 characters long and match regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all the following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all the following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash.
Name string `json:"name,omitempty"`
@@ -15769,7 +15970,9 @@ type Operation struct {
Progress int64 `json:"progress,omitempty"`
// Region: [Output Only] The URL of the region where the operation
- // resides. Only available when performing regional operations.
+ // resides. Only available when performing regional operations. You must
+ // specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -15810,7 +16013,9 @@ type Operation struct {
Warnings []*OperationWarnings `json:"warnings,omitempty"`
// Zone: [Output Only] The URL of the zone where the operation resides.
- // Only available when performing per-zone operations.
+ // Only available when performing per-zone operations. You must specify
+ // this field as part of the HTTP request URL. It is not settable as a
+ // field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -16554,7 +16759,7 @@ func (s *PathRule) MarshalJSON() ([]byte, error) {
// }
//
// For a description of IAM and its features, see the [IAM developer's
-// guide](https://cloud.google.com/iam).
+// guide](https://cloud.google.com/iam/docs).
type Policy struct {
// AuditConfigs: Specifies cloud audit logging configuration for this
// policy.
@@ -16589,7 +16794,7 @@ type Policy struct {
// denied.
Rules []*Rule `json:"rules,omitempty"`
- // Version: Version of the `Policy`. The default version is 0.
+ // Version: Deprecated.
Version int64 `json:"version,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -16619,9 +16824,8 @@ func (s *Policy) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-// Project: A Project resource. Projects can only be created in the
-// Google Cloud Platform Console. Unless marked otherwise, values can
-// only be modified in the console. (== resource_for v1.projects ==) (==
+// Project: A Project resource. For an overview of projects, see Cloud
+// Platform Resource Hierarchy. (== resource_for v1.projects ==) (==
// resource_for beta.projects ==)
type Project struct {
// CommonInstanceMetadata: Metadata key/value pairs available to all
@@ -16633,6 +16837,16 @@ type Project struct {
// format.
CreationTimestamp string `json:"creationTimestamp,omitempty"`
+ // DefaultNetworkTier: This signifies the default network tier used for
+ // configuring resources of the project and can only take the following
+ // values: PREMIUM, STANDARD. Initially the default network tier is
+ // PREMIUM.
+ //
+ // Possible values:
+ // "PREMIUM"
+ // "STANDARD"
+ DefaultNetworkTier string `json:"defaultNetworkTier,omitempty"`
+
// DefaultServiceAccount: [Output Only] Default service account used by
// VMs running in this project.
DefaultServiceAccount string `json:"defaultServiceAccount,omitempty"`
@@ -16831,6 +17045,37 @@ func (s *ProjectsListXpnHostsRequest) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
+type ProjectsSetDefaultNetworkTierRequest struct {
+ // NetworkTier: Default network tier to be set.
+ //
+ // Possible values:
+ // "PREMIUM"
+ // "STANDARD"
+ NetworkTier string `json:"networkTier,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "NetworkTier") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "NetworkTier") to include
+ // in API requests with the JSON null value. By default, fields with
+ // empty values are omitted from API requests. However, any field with
+ // an empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *ProjectsSetDefaultNetworkTierRequest) MarshalJSON() ([]byte, error) {
+ type NoMethod ProjectsSetDefaultNetworkTierRequest
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
// Quota: A quotas entry.
type Quota struct {
// Limit: [Output Only] Quota limit for this metric.
@@ -17194,16 +17439,16 @@ func (s *RegionAutoscalerListWarningData) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-// RegionInstanceGroupList: Contains a list of InstanceGroup resources.
-type RegionInstanceGroupList struct {
+type RegionDiskTypeList struct {
// Id: [Output Only] Unique identifier for the resource; defined by the
// server.
Id string `json:"id,omitempty"`
- // Items: A list of InstanceGroup resources.
- Items []*InstanceGroup `json:"items,omitempty"`
+ // Items: A list of DiskType resources.
+ Items []*DiskType `json:"items,omitempty"`
- // Kind: The resource type.
+ // Kind: [Output Only] Type of resource. Always
+ // compute#regionDiskTypeList for region disk types.
Kind string `json:"kind,omitempty"`
// NextPageToken: [Output Only] This token allows you to get the next
@@ -17218,7 +17463,7 @@ type RegionInstanceGroupList struct {
SelfLink string `json:"selfLink,omitempty"`
// Warning: [Output Only] Informational warning message.
- Warning *RegionInstanceGroupListWarning `json:"warning,omitempty"`
+ Warning *RegionDiskTypeListWarning `json:"warning,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
// server.
@@ -17241,15 +17486,15 @@ type RegionInstanceGroupList struct {
NullFields []string `json:"-"`
}
-func (s *RegionInstanceGroupList) MarshalJSON() ([]byte, error) {
- type NoMethod RegionInstanceGroupList
+func (s *RegionDiskTypeList) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionDiskTypeList
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-// RegionInstanceGroupListWarning: [Output Only] Informational warning
+// RegionDiskTypeListWarning: [Output Only] Informational warning
// message.
-type RegionInstanceGroupListWarning struct {
+type RegionDiskTypeListWarning struct {
// Code: [Output Only] A warning code, if applicable. For example,
// Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
// the response.
@@ -17283,7 +17528,7 @@ type RegionInstanceGroupListWarning struct {
// Data: [Output Only] Metadata about this warning in key: value format.
// For example:
// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
- Data []*RegionInstanceGroupListWarningData `json:"data,omitempty"`
+ Data []*RegionDiskTypeListWarningData `json:"data,omitempty"`
// Message: [Output Only] A human-readable description of the warning
// code.
@@ -17306,13 +17551,13 @@ type RegionInstanceGroupListWarning struct {
NullFields []string `json:"-"`
}
-func (s *RegionInstanceGroupListWarning) MarshalJSON() ([]byte, error) {
- type NoMethod RegionInstanceGroupListWarning
+func (s *RegionDiskTypeListWarning) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionDiskTypeListWarning
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-type RegionInstanceGroupListWarningData struct {
+type RegionDiskTypeListWarningData struct {
// Key: [Output Only] A key that provides more detail on the warning
// being returned. For example, for warnings where there are no results
// in a list request for a particular zone, this key might be scope and
@@ -17343,25 +17588,50 @@ type RegionInstanceGroupListWarningData struct {
NullFields []string `json:"-"`
}
-func (s *RegionInstanceGroupListWarningData) MarshalJSON() ([]byte, error) {
- type NoMethod RegionInstanceGroupListWarningData
+func (s *RegionDiskTypeListWarningData) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionDiskTypeListWarningData
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-// RegionInstanceGroupManagerList: Contains a list of managed instance
-// groups.
-type RegionInstanceGroupManagerList struct {
+type RegionDisksResizeRequest struct {
+ // SizeGb: The new size of the regional persistent disk, which is
+ // specified in GB.
+ SizeGb int64 `json:"sizeGb,omitempty,string"`
+
+ // ForceSendFields is a list of field names (e.g. "SizeGb") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "SizeGb") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *RegionDisksResizeRequest) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionDisksResizeRequest
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RegionInstanceGroupList: Contains a list of InstanceGroup resources.
+type RegionInstanceGroupList struct {
// Id: [Output Only] Unique identifier for the resource; defined by the
// server.
Id string `json:"id,omitempty"`
- // Items: A list of InstanceGroupManager resources.
- Items []*InstanceGroupManager `json:"items,omitempty"`
+ // Items: A list of InstanceGroup resources.
+ Items []*InstanceGroup `json:"items,omitempty"`
- // Kind: [Output Only] The resource type, which is always
- // compute#instanceGroupManagerList for a list of managed instance
- // groups that exist in th regional scope.
+ // Kind: The resource type.
Kind string `json:"kind,omitempty"`
// NextPageToken: [Output Only] This token allows you to get the next
@@ -17376,7 +17646,7 @@ type RegionInstanceGroupManagerList struct {
SelfLink string `json:"selfLink,omitempty"`
// Warning: [Output Only] Informational warning message.
- Warning *RegionInstanceGroupManagerListWarning `json:"warning,omitempty"`
+ Warning *RegionInstanceGroupListWarning `json:"warning,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
// server.
@@ -17399,15 +17669,15 @@ type RegionInstanceGroupManagerList struct {
NullFields []string `json:"-"`
}
-func (s *RegionInstanceGroupManagerList) MarshalJSON() ([]byte, error) {
- type NoMethod RegionInstanceGroupManagerList
+func (s *RegionInstanceGroupList) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionInstanceGroupList
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-// RegionInstanceGroupManagerListWarning: [Output Only] Informational
-// warning message.
-type RegionInstanceGroupManagerListWarning struct {
+// RegionInstanceGroupListWarning: [Output Only] Informational warning
+// message.
+type RegionInstanceGroupListWarning struct {
// Code: [Output Only] A warning code, if applicable. For example,
// Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
// the response.
@@ -17441,7 +17711,7 @@ type RegionInstanceGroupManagerListWarning struct {
// Data: [Output Only] Metadata about this warning in key: value format.
// For example:
// "data": [ { "key": "scope", "value": "zones/us-east1-d" }
- Data []*RegionInstanceGroupManagerListWarningData `json:"data,omitempty"`
+ Data []*RegionInstanceGroupListWarningData `json:"data,omitempty"`
// Message: [Output Only] A human-readable description of the warning
// code.
@@ -17464,13 +17734,171 @@ type RegionInstanceGroupManagerListWarning struct {
NullFields []string `json:"-"`
}
-func (s *RegionInstanceGroupManagerListWarning) MarshalJSON() ([]byte, error) {
- type NoMethod RegionInstanceGroupManagerListWarning
+func (s *RegionInstanceGroupListWarning) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionInstanceGroupListWarning
raw := NoMethod(*s)
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
-type RegionInstanceGroupManagerListWarningData struct {
+type RegionInstanceGroupListWarningData struct {
+ // Key: [Output Only] A key that provides more detail on the warning
+ // being returned. For example, for warnings where there are no results
+ // in a list request for a particular zone, this key might be scope and
+ // the key value might be the zone name. Other examples might be a key
+ // indicating a deprecated resource and a suggested replacement, or a
+ // warning about invalid network settings (for example, if an instance
+ // attempts to perform IP forwarding but is not enabled for IP
+ // forwarding).
+ Key string `json:"key,omitempty"`
+
+ // Value: [Output Only] A warning data value corresponding to the key.
+ Value string `json:"value,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Key") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Key") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *RegionInstanceGroupListWarningData) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionInstanceGroupListWarningData
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RegionInstanceGroupManagerList: Contains a list of managed instance
+// groups.
+type RegionInstanceGroupManagerList struct {
+ // Id: [Output Only] Unique identifier for the resource; defined by the
+ // server.
+ Id string `json:"id,omitempty"`
+
+ // Items: A list of InstanceGroupManager resources.
+ Items []*InstanceGroupManager `json:"items,omitempty"`
+
+ // Kind: [Output Only] The resource type, which is always
+ // compute#instanceGroupManagerList for a list of managed instance
+ // groups that exist in th regional scope.
+ Kind string `json:"kind,omitempty"`
+
+ // NextPageToken: [Output Only] This token allows you to get the next
+ // page of results for list requests. If the number of results is larger
+ // than maxResults, use the nextPageToken as a value for the query
+ // parameter pageToken in the next list request. Subsequent list
+ // requests will have their own nextPageToken to continue paging through
+ // the results.
+ NextPageToken string `json:"nextPageToken,omitempty"`
+
+ // SelfLink: [Output Only] Server-defined URL for this resource.
+ SelfLink string `json:"selfLink,omitempty"`
+
+ // Warning: [Output Only] Informational warning message.
+ Warning *RegionInstanceGroupManagerListWarning `json:"warning,omitempty"`
+
+ // ServerResponse contains the HTTP response code and headers from the
+ // server.
+ googleapi.ServerResponse `json:"-"`
+
+ // ForceSendFields is a list of field names (e.g. "Id") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Id") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *RegionInstanceGroupManagerList) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionInstanceGroupManagerList
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// RegionInstanceGroupManagerListWarning: [Output Only] Informational
+// warning message.
+type RegionInstanceGroupManagerListWarning struct {
+ // Code: [Output Only] A warning code, if applicable. For example,
+ // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
+ // the response.
+ //
+ // Possible values:
+ // "CLEANUP_FAILED"
+ // "DEPRECATED_RESOURCE_USED"
+ // "DEPRECATED_TYPE_USED"
+ // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+ // "EXPERIMENTAL_TYPE_USED"
+ // "EXTERNAL_API_WARNING"
+ // "FIELD_VALUE_OVERRIDEN"
+ // "INJECTED_KERNELS_DEPRECATED"
+ // "MISSING_TYPE_DEPENDENCY"
+ // "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+ // "NEXT_HOP_CANNOT_IP_FORWARD"
+ // "NEXT_HOP_INSTANCE_NOT_FOUND"
+ // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+ // "NEXT_HOP_NOT_RUNNING"
+ // "NOT_CRITICAL_ERROR"
+ // "NO_RESULTS_ON_PAGE"
+ // "REQUIRED_TOS_AGREEMENT"
+ // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+ // "RESOURCE_NOT_DELETED"
+ // "SCHEMA_VALIDATION_IGNORED"
+ // "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+ // "UNDECLARED_PROPERTIES"
+ // "UNREACHABLE"
+ Code string `json:"code,omitempty"`
+
+ // Data: [Output Only] Metadata about this warning in key: value format.
+ // For example:
+ // "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+ Data []*RegionInstanceGroupManagerListWarningData `json:"data,omitempty"`
+
+ // Message: [Output Only] A human-readable description of the warning
+ // code.
+ Message string `json:"message,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Code") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Code") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *RegionInstanceGroupManagerListWarning) MarshalJSON() ([]byte, error) {
+ type NoMethod RegionInstanceGroupManagerListWarning
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type RegionInstanceGroupManagerListWarningData struct {
// Key: [Output Only] A key that provides more detail on the warning
// being returned. For example, for warnings where there are no results
// in a list request for a particular zone, this key might be scope and
@@ -18254,7 +18682,7 @@ type Route struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -18627,7 +19055,7 @@ type Router struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -18636,7 +19064,9 @@ type Router struct {
// Network: URI of the network to which this router belongs.
Network string `json:"network,omitempty"`
- // Region: [Output Only] URI of the region where the router resides.
+ // Region: [Output Only] URI of the region where the router resides. You
+ // must specify this field as part of the HTTP request URL. It is not
+ // settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -19681,7 +20111,7 @@ type SecurityPolicy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -19967,7 +20397,7 @@ type SecurityPolicyRuleMatcher struct {
// specified and cannot be specified if versioned_expr is not specified.
Config *SecurityPolicyRuleMatcherConfig `json:"config,omitempty"`
- // SrcIpRanges: CIDR IP address range. Only IPv4 is supported.
+ // SrcIpRanges: CIDR IP address range.
SrcIpRanges []string `json:"srcIpRanges,omitempty"`
// VersionedExpr: Preconfigured versioned expression. If this field is
@@ -20004,7 +20434,7 @@ func (s *SecurityPolicyRuleMatcher) MarshalJSON() ([]byte, error) {
}
type SecurityPolicyRuleMatcherConfig struct {
- // SrcIpRanges: CIDR IP address range. Only IPv4 is supported.
+ // SrcIpRanges: CIDR IP address range.
SrcIpRanges []string `json:"srcIpRanges,omitempty"`
// ForceSendFields is a list of field names (e.g. "SrcIpRanges") to
@@ -20118,7 +20548,7 @@ func (s *ServiceAccount) MarshalJSON() ([]byte, error) {
type SignedUrlKey struct {
// KeyName: Name of the key. The name must be 1-63 characters long, and
// comply with RFC1035. Specifically, the name must be 1-63 characters
- // long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?
+ // long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`
// which means the first character must be a lowercase letter, and all
// following characters must be a dash, lowercase letter, or digit,
// except the last character, which cannot be a dash.
@@ -20200,7 +20630,7 @@ type Snapshot struct {
// Name: Name of the resource; provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -20511,7 +20941,7 @@ type SslCertificate struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -20942,8 +21372,8 @@ type SslPolicy struct {
// Name: Name of the resource. The name must be 1-63 characters long,
// and comply with RFC1035. Specifically, the name must be 1-63
// characters long and match the regular expression
- // [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a
- // lowercase letter, and all following characters must be a dash,
+ // `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be
+ // a lowercase letter, and all following characters must be a dash,
// lowercase letter, or digit, except the last character, which cannot
// be a dash.
Name string `json:"name,omitempty"`
@@ -21162,8 +21592,7 @@ type Subnetwork struct {
Fingerprint string `json:"fingerprint,omitempty"`
// GatewayAddress: [Output Only] The gateway address for default routes
- // to reach destination addresses outside this subnetwork. This field
- // can be set only at resource creation time.
+ // to reach destination addresses outside this subnetwork.
GatewayAddress string `json:"gatewayAddress,omitempty"`
// Id: [Output Only] The unique identifier for the resource. This
@@ -21184,7 +21613,7 @@ type Subnetwork struct {
// Name: The name of the resource, provided by the client when initially
// creating the resource. The name must be 1-63 characters long, and
// comply with RFC1035. Specifically, the name must be 1-63 characters
- // long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])?
+ // long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?`
// which means the first character must be a lowercase letter, and all
// following characters must be a dash, lowercase letter, or digit,
// except the last character, which cannot be a dash.
@@ -21899,7 +22328,7 @@ type TargetHttpProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -22181,7 +22610,7 @@ type TargetHttpsProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -22442,7 +22871,7 @@ type TargetInstance struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -22459,7 +22888,8 @@ type TargetInstance struct {
SelfLink string `json:"selfLink,omitempty"`
// Zone: [Output Only] URL of the zone where the target instance
- // resides.
+ // resides. You must specify this field as part of the HTTP request URL.
+ // It is not settable as a field in the request body.
Zone string `json:"zone,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -23004,7 +23434,7 @@ type TargetPool struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -23814,7 +24244,7 @@ type TargetSslProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -24111,7 +24541,7 @@ type TargetTcpProxy struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -24359,7 +24789,7 @@ type TargetVpnGateway struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -24370,7 +24800,8 @@ type TargetVpnGateway struct {
Network string `json:"network,omitempty"`
// Region: [Output Only] URL of the region where the target VPN gateway
- // resides.
+ // resides. You must specify this field as part of the HTTP request URL.
+ // It is not settable as a field in the request body.
Region string `json:"region,omitempty"`
// SelfLink: [Output Only] Server-defined URL for the resource.
@@ -25034,7 +25465,7 @@ type UrlMap struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -25046,8 +25477,9 @@ type UrlMap struct {
// SelfLink: [Output Only] Server-defined URL for the resource.
SelfLink string `json:"selfLink,omitempty"`
- // Tests: The list of expected URL mappings. Request to update this
- // UrlMap will succeed only if all of the test cases pass.
+ // Tests: The list of expected URL mapping tests. Request to update this
+ // UrlMap will succeed only if all of the test cases pass. You can
+ // specify a maximum of 100 tests per UrlMap.
Tests []*UrlMapTest `json:"tests,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -25392,6 +25824,198 @@ func (s *UrlMapsValidateResponse) MarshalJSON() ([]byte, error) {
return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
}
+// UsableSubnetwork: Subnetwork which the current user has
+// compute.subnetworks.use permission on.
+type UsableSubnetwork struct {
+ // IpCidrRange: The range of internal addresses that are owned by this
+ // subnetwork.
+ IpCidrRange string `json:"ipCidrRange,omitempty"`
+
+ // Network: Network URL.
+ Network string `json:"network,omitempty"`
+
+ // Subnetwork: Subnetwork URL.
+ Subnetwork string `json:"subnetwork,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "IpCidrRange") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "IpCidrRange") to include
+ // in API requests with the JSON null value. By default, fields with
+ // empty values are omitted from API requests. However, any field with
+ // an empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *UsableSubnetwork) MarshalJSON() ([]byte, error) {
+ type NoMethod UsableSubnetwork
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type UsableSubnetworksAggregatedList struct {
+ // Id: [Output Only] The unique identifier for the resource. This
+ // identifier is defined by the server.
+ Id string `json:"id,omitempty"`
+
+ // Items: [Output] A list of usable subnetwork URLs.
+ Items []*UsableSubnetwork `json:"items,omitempty"`
+
+ // Kind: [Output Only] Type of resource. Always
+ // compute#usableSubnetworksAggregatedList for aggregated lists of
+ // usable subnetworks.
+ Kind string `json:"kind,omitempty"`
+
+ // NextPageToken: [Output Only] This token allows you to get the next
+ // page of results for list requests. If the number of results is larger
+ // than maxResults, use the nextPageToken as a value for the query
+ // parameter pageToken in the next list request. Subsequent list
+ // requests will have their own nextPageToken to continue paging through
+ // the results.
+ NextPageToken string `json:"nextPageToken,omitempty"`
+
+ // SelfLink: [Output Only] Server-defined URL for this resource.
+ SelfLink string `json:"selfLink,omitempty"`
+
+ // Warning: [Output Only] Informational warning message.
+ Warning *UsableSubnetworksAggregatedListWarning `json:"warning,omitempty"`
+
+ // ServerResponse contains the HTTP response code and headers from the
+ // server.
+ googleapi.ServerResponse `json:"-"`
+
+ // ForceSendFields is a list of field names (e.g. "Id") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Id") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *UsableSubnetworksAggregatedList) MarshalJSON() ([]byte, error) {
+ type NoMethod UsableSubnetworksAggregatedList
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+// UsableSubnetworksAggregatedListWarning: [Output Only] Informational
+// warning message.
+type UsableSubnetworksAggregatedListWarning struct {
+ // Code: [Output Only] A warning code, if applicable. For example,
+ // Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in
+ // the response.
+ //
+ // Possible values:
+ // "CLEANUP_FAILED"
+ // "DEPRECATED_RESOURCE_USED"
+ // "DEPRECATED_TYPE_USED"
+ // "DISK_SIZE_LARGER_THAN_IMAGE_SIZE"
+ // "EXPERIMENTAL_TYPE_USED"
+ // "EXTERNAL_API_WARNING"
+ // "FIELD_VALUE_OVERRIDEN"
+ // "INJECTED_KERNELS_DEPRECATED"
+ // "MISSING_TYPE_DEPENDENCY"
+ // "NEXT_HOP_ADDRESS_NOT_ASSIGNED"
+ // "NEXT_HOP_CANNOT_IP_FORWARD"
+ // "NEXT_HOP_INSTANCE_NOT_FOUND"
+ // "NEXT_HOP_INSTANCE_NOT_ON_NETWORK"
+ // "NEXT_HOP_NOT_RUNNING"
+ // "NOT_CRITICAL_ERROR"
+ // "NO_RESULTS_ON_PAGE"
+ // "REQUIRED_TOS_AGREEMENT"
+ // "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING"
+ // "RESOURCE_NOT_DELETED"
+ // "SCHEMA_VALIDATION_IGNORED"
+ // "SINGLE_INSTANCE_PROPERTY_TEMPLATE"
+ // "UNDECLARED_PROPERTIES"
+ // "UNREACHABLE"
+ Code string `json:"code,omitempty"`
+
+ // Data: [Output Only] Metadata about this warning in key: value format.
+ // For example:
+ // "data": [ { "key": "scope", "value": "zones/us-east1-d" }
+ Data []*UsableSubnetworksAggregatedListWarningData `json:"data,omitempty"`
+
+ // Message: [Output Only] A human-readable description of the warning
+ // code.
+ Message string `json:"message,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Code") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Code") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *UsableSubnetworksAggregatedListWarning) MarshalJSON() ([]byte, error) {
+ type NoMethod UsableSubnetworksAggregatedListWarning
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
+type UsableSubnetworksAggregatedListWarningData struct {
+ // Key: [Output Only] A key that provides more detail on the warning
+ // being returned. For example, for warnings where there are no results
+ // in a list request for a particular zone, this key might be scope and
+ // the key value might be the zone name. Other examples might be a key
+ // indicating a deprecated resource and a suggested replacement, or a
+ // warning about invalid network settings (for example, if an instance
+ // attempts to perform IP forwarding but is not enabled for IP
+ // forwarding).
+ Key string `json:"key,omitempty"`
+
+ // Value: [Output Only] A warning data value corresponding to the key.
+ Value string `json:"value,omitempty"`
+
+ // ForceSendFields is a list of field names (e.g. "Key") to
+ // unconditionally include in API requests. By default, fields with
+ // empty values are omitted from API requests. However, any non-pointer,
+ // non-interface field appearing in ForceSendFields will be sent to the
+ // server regardless of whether the field is empty or not. This may be
+ // used to include empty fields in Patch requests.
+ ForceSendFields []string `json:"-"`
+
+ // NullFields is a list of field names (e.g. "Key") to include in API
+ // requests with the JSON null value. By default, fields with empty
+ // values are omitted from API requests. However, any field with an
+ // empty value appearing in NullFields will be sent to the server as
+ // null. It is an error if a field in this list has a non-empty value.
+ // This may be used to include null fields in Patch requests.
+ NullFields []string `json:"-"`
+}
+
+func (s *UsableSubnetworksAggregatedListWarningData) MarshalJSON() ([]byte, error) {
+ type NoMethod UsableSubnetworksAggregatedListWarningData
+ raw := NoMethod(*s)
+ return gensupport.MarshalJSON(raw, s.ForceSendFields, s.NullFields)
+}
+
// UsageExportLocation: The location in Cloud Storage and naming method
// of the daily usage report. Contains bucket_name and report_name
// prefix.
@@ -25488,7 +26112,7 @@ type VpnTunnel struct {
// Name: Name of the resource. Provided by the client when the resource
// is created. The name must be 1-63 characters long, and comply with
// RFC1035. Specifically, the name must be 1-63 characters long and
- // match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means
+ // match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means
// the first character must be a lowercase letter, and all following
// characters must be a dash, lowercase letter, or digit, except the
// last character, which cannot be a dash.
@@ -25498,6 +26122,8 @@ type VpnTunnel struct {
PeerIp string `json:"peerIp,omitempty"`
// Region: [Output Only] URL of the region where the VPN tunnel resides.
+ // You must specify this field as part of the HTTP request URL. It is
+ // not settable as a field in the request body.
Region string `json:"region,omitempty"`
// RemoteTrafficSelector: Remote traffic selectors to use when
@@ -25536,8 +26162,9 @@ type VpnTunnel struct {
// "WAITING_FOR_FULL_CONFIG"
Status string `json:"status,omitempty"`
- // TargetVpnGateway: URL of the VPN gateway with which this VPN tunnel
- // is associated. Provided by the client when the VPN tunnel is created.
+ // TargetVpnGateway: URL of the Target VPN gateway with which this VPN
+ // tunnel is associated. Provided by the client when the VPN tunnel is
+ // created.
TargetVpnGateway string `json:"targetVpnGateway,omitempty"`
// ServerResponse contains the HTTP response code and headers from the
@@ -37089,7 +37716,7 @@ type FirewallsUpdateCall struct {
}
// Update: Updates the specified firewall rule with the data included in
-// the request. Using PUT method, can only update following fields of
+// the request. The PUT method can only update the following fields of
// firewall rule: allowed, description, sourceRanges, sourceTags,
// targetTags.
// For details, see https://cloud.google.com/compute/docs/reference/latest/firewalls/update
@@ -37207,7 +37834,7 @@ func (c *FirewallsUpdateCall) Do(opts ...googleapi.CallOption) (*Operation, erro
}
return ret, nil
// {
- // "description": "Updates the specified firewall rule with the data included in the request. Using PUT method, can only update following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
+ // "description": "Updates the specified firewall rule with the data included in the request. The PUT method can only update the following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
// "httpMethod": "PUT",
// "id": "compute.firewalls.update",
// "parameterOrder": [
@@ -52078,11 +52705,9 @@ type InstanceTemplatesDeleteCall struct {
header_ http.Header
}
-// Delete: Deletes the specified instance template. If you delete an
-// instance template that is being referenced from another instance
-// group, the instance group will not be able to create or recreate
-// virtual machine instances. Deleting an instance template is permanent
-// and cannot be undone.
+// Delete: Deletes the specified instance template. Deleting an instance
+// template is permanent and cannot be undone. It's not possible to
+// delete templates which are in use by an instance group.
// For details, see https://cloud.google.com/compute/docs/reference/latest/instanceTemplates/delete
func (r *InstanceTemplatesService) Delete(project string, instanceTemplate string) *InstanceTemplatesDeleteCall {
c := &InstanceTemplatesDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
@@ -52192,7 +52817,7 @@ func (c *InstanceTemplatesDeleteCall) Do(opts ...googleapi.CallOption) (*Operati
}
return ret, nil
// {
- // "description": "Deletes the specified instance template. If you delete an instance template that is being referenced from another instance group, the instance group will not be able to create or recreate virtual machine instances. Deleting an instance template is permanent and cannot be undone.",
+ // "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
// "httpMethod": "DELETE",
// "id": "compute.instanceTemplates.delete",
// "parameterOrder": [
@@ -53420,6 +54045,14 @@ func (r *InstancesService) AttachDisk(project string, zone string, instance stri
return c
}
+// ForceAttach sets the optional parameter "forceAttach": Whether to
+// force attach the disk even if it's currently attached to another
+// instance. This is only available for regional disks.
+func (c *InstancesAttachDiskCall) ForceAttach(forceAttach bool) *InstancesAttachDiskCall {
+ c.urlParams_.Set("forceAttach", fmt.Sprint(forceAttach))
+ return c
+}
+
// RequestId sets the optional parameter "requestId": An optional
// request ID to identify requests. Specify a unique request ID so that
// if you must retry your request, the server will know to ignore the
@@ -53536,6 +54169,11 @@ func (c *InstancesAttachDiskCall) Do(opts ...googleapi.CallOption) (*Operation,
// "instance"
// ],
// "parameters": {
+ // "forceAttach": {
+ // "description": "Whether to force attach the disk even if it's currently attached to another instance. This is only available for regional disks.",
+ // "location": "query",
+ // "type": "boolean"
+ // },
// "instance": {
// "description": "The instance name for this request.",
// "location": "path",
@@ -59315,6 +59953,371 @@ func (c *InterconnectAttachmentsListCall) Pages(ctx context.Context, f func(*Int
}
}
+// method id "compute.interconnectAttachments.patch":
+
+type InterconnectAttachmentsPatchCall struct {
+ s *Service
+ project string
+ region string
+ interconnectAttachment string
+ interconnectattachment *InterconnectAttachment
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// Patch: Updates the specified interconnect attachment with the data
+// included in the request. This method supports PATCH semantics and
+// uses the JSON merge patch format and processing rules.
+func (r *InterconnectAttachmentsService) Patch(project string, region string, interconnectAttachment string, interconnectattachment *InterconnectAttachment) *InterconnectAttachmentsPatchCall {
+ c := &InterconnectAttachmentsPatchCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.interconnectAttachment = interconnectAttachment
+ c.interconnectattachment = interconnectattachment
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *InterconnectAttachmentsPatchCall) RequestId(requestId string) *InterconnectAttachmentsPatchCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *InterconnectAttachmentsPatchCall) Fields(s ...googleapi.Field) *InterconnectAttachmentsPatchCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *InterconnectAttachmentsPatchCall) Context(ctx context.Context) *InterconnectAttachmentsPatchCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *InterconnectAttachmentsPatchCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *InterconnectAttachmentsPatchCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.interconnectattachment)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("PATCH", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "interconnectAttachment": c.interconnectAttachment,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.interconnectAttachments.patch" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *InterconnectAttachmentsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Updates the specified interconnect attachment with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ // "httpMethod": "PATCH",
+ // "id": "compute.interconnectAttachments.patch",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "interconnectAttachment"
+ // ],
+ // "parameters": {
+ // "interconnectAttachment": {
+ // "description": "Name of the interconnect attachment to patch.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region scoping this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ // "request": {
+ // "$ref": "InterconnectAttachment"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.interconnectAttachments.setLabels":
+
+type InterconnectAttachmentsSetLabelsCall struct {
+ s *Service
+ project string
+ region string
+ resource string
+ regionsetlabelsrequest *RegionSetLabelsRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// SetLabels: Sets the labels on an InterconnectAttachment. To learn
+// more about labels, read the Labeling Resources documentation.
+func (r *InterconnectAttachmentsService) SetLabels(project string, region string, resource string, regionsetlabelsrequest *RegionSetLabelsRequest) *InterconnectAttachmentsSetLabelsCall {
+ c := &InterconnectAttachmentsSetLabelsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.resource = resource
+ c.regionsetlabelsrequest = regionsetlabelsrequest
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *InterconnectAttachmentsSetLabelsCall) RequestId(requestId string) *InterconnectAttachmentsSetLabelsCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *InterconnectAttachmentsSetLabelsCall) Fields(s ...googleapi.Field) *InterconnectAttachmentsSetLabelsCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *InterconnectAttachmentsSetLabelsCall) Context(ctx context.Context) *InterconnectAttachmentsSetLabelsCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *InterconnectAttachmentsSetLabelsCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *InterconnectAttachmentsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.regionsetlabelsrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/interconnectAttachments/{resource}/setLabels")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "resource": c.resource,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.interconnectAttachments.setLabels" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *InterconnectAttachmentsSetLabelsCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Sets the labels on an InterconnectAttachment. To learn more about labels, read the Labeling Resources documentation.",
+ // "httpMethod": "POST",
+ // "id": "compute.interconnectAttachments.setLabels",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "The region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/interconnectAttachments/{resource}/setLabels",
+ // "request": {
+ // "$ref": "RegionSetLabelsRequest"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
// method id "compute.interconnectAttachments.testIamPermissions":
type InterconnectAttachmentsTestIamPermissionsCall struct {
@@ -60775,6 +61778,153 @@ func (c *InterconnectsPatchCall) Do(opts ...googleapi.CallOption) (*Operation, e
}
+// method id "compute.interconnects.setLabels":
+
+type InterconnectsSetLabelsCall struct {
+ s *Service
+ project string
+ resource string
+ globalsetlabelsrequest *GlobalSetLabelsRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// SetLabels: Sets the labels on an Interconnect. To learn more about
+// labels, read the Labeling Resources documentation.
+func (r *InterconnectsService) SetLabels(project string, resource string, globalsetlabelsrequest *GlobalSetLabelsRequest) *InterconnectsSetLabelsCall {
+ c := &InterconnectsSetLabelsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.resource = resource
+ c.globalsetlabelsrequest = globalsetlabelsrequest
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *InterconnectsSetLabelsCall) Fields(s ...googleapi.Field) *InterconnectsSetLabelsCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *InterconnectsSetLabelsCall) Context(ctx context.Context) *InterconnectsSetLabelsCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *InterconnectsSetLabelsCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *InterconnectsSetLabelsCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.globalsetlabelsrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/global/interconnects/{resource}/setLabels")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "resource": c.resource,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.interconnects.setLabels" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *InterconnectsSetLabelsCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Sets the labels on an Interconnect. To learn more about labels, read the Labeling Resources documentation.",
+ // "httpMethod": "POST",
+ // "id": "compute.interconnects.setLabels",
+ // "parameterOrder": [
+ // "project",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/global/interconnects/{resource}/setLabels",
+ // "request": {
+ // "$ref": "GlobalSetLabelsRequest"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
// method id "compute.interconnects.testIamPermissions":
type InterconnectsTestIamPermissionsCall struct {
@@ -65818,6 +66968,168 @@ func (c *ProjectsSetCommonInstanceMetadataCall) Do(opts ...googleapi.CallOption)
}
+// method id "compute.projects.setDefaultNetworkTier":
+
+type ProjectsSetDefaultNetworkTierCall struct {
+ s *Service
+ project string
+ projectssetdefaultnetworktierrequest *ProjectsSetDefaultNetworkTierRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// SetDefaultNetworkTier: Sets the default network tier of the project.
+// The default network tier is used when an
+// address/forwardingRule/instance is created without specifying the
+// network tier field.
+func (r *ProjectsService) SetDefaultNetworkTier(project string, projectssetdefaultnetworktierrequest *ProjectsSetDefaultNetworkTierRequest) *ProjectsSetDefaultNetworkTierCall {
+ c := &ProjectsSetDefaultNetworkTierCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.projectssetdefaultnetworktierrequest = projectssetdefaultnetworktierrequest
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *ProjectsSetDefaultNetworkTierCall) RequestId(requestId string) *ProjectsSetDefaultNetworkTierCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *ProjectsSetDefaultNetworkTierCall) Fields(s ...googleapi.Field) *ProjectsSetDefaultNetworkTierCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *ProjectsSetDefaultNetworkTierCall) Context(ctx context.Context) *ProjectsSetDefaultNetworkTierCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *ProjectsSetDefaultNetworkTierCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *ProjectsSetDefaultNetworkTierCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.projectssetdefaultnetworktierrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/setDefaultNetworkTier")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.projects.setDefaultNetworkTier" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *ProjectsSetDefaultNetworkTierCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Sets the default network tier of the project. The default network tier is used when an address/forwardingRule/instance is created without specifying the network tier field.",
+ // "httpMethod": "POST",
+ // "id": "compute.projects.setDefaultNetworkTier",
+ // "parameterOrder": [
+ // "project"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/setDefaultNetworkTier",
+ // "request": {
+ // "$ref": "ProjectsSetDefaultNetworkTierRequest"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
// method id "compute.projects.setUsageExportBucket":
type ProjectsSetUsageExportBucketCall struct {
@@ -67734,7 +69046,7 @@ func (c *RegionBackendServicesGetHealthCall) Do(opts ...googleapi.CallOption) (*
// ],
// "parameters": {
// "backendService": {
- // "description": "Name of the BackendService resource to which the queried instance belongs.",
+ // "description": "Name of the BackendService resource for which to get health.",
// "location": "path",
// "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
// "required": true,
@@ -69584,122 +70896,95 @@ func (c *RegionCommitmentsListCall) Pages(ctx context.Context, f func(*Commitmen
}
}
-// method id "compute.regionInstanceGroupManagers.abandonInstances":
+// method id "compute.regionDiskTypes.get":
-type RegionInstanceGroupManagersAbandonInstancesCall struct {
- s *Service
- project string
- region string
- instanceGroupManager string
- regioninstancegroupmanagersabandoninstancesrequest *RegionInstanceGroupManagersAbandonInstancesRequest
- urlParams_ gensupport.URLParams
- ctx_ context.Context
- header_ http.Header
+type RegionDiskTypesGetCall struct {
+ s *Service
+ project string
+ region string
+ diskType string
+ urlParams_ gensupport.URLParams
+ ifNoneMatch_ string
+ ctx_ context.Context
+ header_ http.Header
}
-// AbandonInstances: Schedules a group action to remove the specified
-// instances from the managed instance group. Abandoning an instance
-// does not delete the instance, but it does remove the instance from
-// any target pools that are applied by the managed instance group. This
-// method reduces the targetSize of the managed instance group by the
-// number of instances that you abandon. This operation is marked as
-// DONE when the action is scheduled even if the instances have not yet
-// been removed from the group. You must separately verify the status of
-// the abandoning action with the listmanagedinstances method.
-//
-// If the group is part of a backend service that has enabled connection
-// draining, it can take up to 60 seconds after the connection draining
-// duration has elapsed before the VM instance is removed or
-// deleted.
-//
-// You can specify a maximum of 1000 instances with this method per
-// request.
-func (r *RegionInstanceGroupManagersService) AbandonInstances(project string, region string, instanceGroupManager string, regioninstancegroupmanagersabandoninstancesrequest *RegionInstanceGroupManagersAbandonInstancesRequest) *RegionInstanceGroupManagersAbandonInstancesCall {
- c := &RegionInstanceGroupManagersAbandonInstancesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+// Get: Returns the specified regional disk type. Get a list of
+// available disk types by making a list() request.
+func (r *RegionDiskTypesService) Get(project string, region string, diskType string) *RegionDiskTypesGetCall {
+ c := &RegionDiskTypesGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
c.project = project
c.region = region
- c.instanceGroupManager = instanceGroupManager
- c.regioninstancegroupmanagersabandoninstancesrequest = regioninstancegroupmanagersabandoninstancesrequest
- return c
-}
-
-// RequestId sets the optional parameter "requestId": An optional
-// request ID to identify requests. Specify a unique request ID so that
-// if you must retry your request, the server will know to ignore the
-// request if it has already been completed.
-//
-// For example, consider a situation where you make an initial request
-// and the request times out. If you make the request again with the
-// same request ID, the server can check if original operation with the
-// same request ID was received, and if so, will ignore the second
-// request. This prevents clients from accidentally creating duplicate
-// commitments.
-//
-// The request ID must be a valid UUID with the exception that zero UUID
-// is not supported (00000000-0000-0000-0000-000000000000).
-func (c *RegionInstanceGroupManagersAbandonInstancesCall) RequestId(requestId string) *RegionInstanceGroupManagersAbandonInstancesCall {
- c.urlParams_.Set("requestId", requestId)
+ c.diskType = diskType
return c
}
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
-func (c *RegionInstanceGroupManagersAbandonInstancesCall) Fields(s ...googleapi.Field) *RegionInstanceGroupManagersAbandonInstancesCall {
+func (c *RegionDiskTypesGetCall) Fields(s ...googleapi.Field) *RegionDiskTypesGetCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionDiskTypesGetCall) IfNoneMatch(entityTag string) *RegionDiskTypesGetCall {
+ c.ifNoneMatch_ = entityTag
+ return c
+}
+
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
-func (c *RegionInstanceGroupManagersAbandonInstancesCall) Context(ctx context.Context) *RegionInstanceGroupManagersAbandonInstancesCall {
+func (c *RegionDiskTypesGetCall) Context(ctx context.Context) *RegionDiskTypesGetCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
-func (c *RegionInstanceGroupManagersAbandonInstancesCall) Header() http.Header {
+func (c *RegionDiskTypesGetCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
-func (c *RegionInstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
+func (c *RegionDiskTypesGetCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
- var body io.Reader = nil
- body, err := googleapi.WithoutDataWrapper.JSONReader(c.regioninstancegroupmanagersabandoninstancesrequest)
- if err != nil {
- return nil, err
+ if c.ifNoneMatch_ != "" {
+ reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
}
- reqHeaders.Set("Content-Type", "application/json")
+ var body io.Reader = nil
c.urlParams_.Set("alt", alt)
- urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances")
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/diskTypes/{diskType}")
urls += "?" + c.urlParams_.Encode()
- req, _ := http.NewRequest("POST", urls, body)
+ req, _ := http.NewRequest("GET", urls, body)
req.Header = reqHeaders
googleapi.Expand(req.URL, map[string]string{
- "project": c.project,
- "region": c.region,
- "instanceGroupManager": c.instanceGroupManager,
+ "project": c.project,
+ "region": c.region,
+ "diskType": c.diskType,
})
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
-// Do executes the "compute.regionInstanceGroupManagers.abandonInstances" call.
-// Exactly one of *Operation or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Operation.ServerResponse.Header or (if a response was returned at
+// Do executes the "compute.regionDiskTypes.get" call.
+// Exactly one of *DiskType or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *DiskType.ServerResponse.Header or (if a response was returned at
// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
// to check whether the returned error was because
// http.StatusNotModified was returned.
-func (c *RegionInstanceGroupManagersAbandonInstancesCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+func (c *RegionDiskTypesGetCall) Do(opts ...googleapi.CallOption) (*DiskType, error) {
gensupport.SetOptions(c.urlParams_, opts...)
res, err := c.doRequest("json")
if res != nil && res.StatusCode == http.StatusNotModified {
@@ -69718,7 +71003,7 @@ func (c *RegionInstanceGroupManagersAbandonInstancesCall) Do(opts ...googleapi.C
if err := googleapi.CheckResponse(res); err != nil {
return nil, err
}
- ret := &Operation{
+ ret := &DiskType{
ServerResponse: googleapi.ServerResponse{
Header: res.Header,
HTTPStatusCode: res.StatusCode,
@@ -69730,18 +71015,19 @@ func (c *RegionInstanceGroupManagersAbandonInstancesCall) Do(opts ...googleapi.C
}
return ret, nil
// {
- // "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- // "httpMethod": "POST",
- // "id": "compute.regionInstanceGroupManagers.abandonInstances",
+ // "description": "Returns the specified regional disk type. Get a list of available disk types by making a list() request.",
+ // "httpMethod": "GET",
+ // "id": "compute.regionDiskTypes.get",
// "parameterOrder": [
// "project",
// "region",
- // "instanceGroupManager"
+ // "diskType"
// ],
// "parameters": {
- // "instanceGroupManager": {
- // "description": "Name of the managed instance group.",
+ // "diskType": {
+ // "description": "Name of the disk type to return.",
// "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
// "required": true,
// "type": "string"
// },
@@ -69753,126 +71039,179 @@ func (c *RegionInstanceGroupManagersAbandonInstancesCall) Do(opts ...googleapi.C
// "type": "string"
// },
// "region": {
- // "description": "Name of the region scoping this request.",
+ // "description": "The name of the region for this request.",
// "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
// "required": true,
// "type": "string"
- // },
- // "requestId": {
- // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- // "location": "query",
- // "type": "string"
// }
// },
- // "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
- // "request": {
- // "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
- // },
+ // "path": "{project}/regions/{region}/diskTypes/{diskType}",
// "response": {
- // "$ref": "Operation"
+ // "$ref": "DiskType"
// },
// "scopes": [
// "https://www.googleapis.com/auth/cloud-platform",
- // "https://www.googleapis.com/auth/compute"
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
// ]
// }
}
-// method id "compute.regionInstanceGroupManagers.delete":
+// method id "compute.regionDiskTypes.list":
-type RegionInstanceGroupManagersDeleteCall struct {
- s *Service
- project string
- region string
- instanceGroupManager string
- urlParams_ gensupport.URLParams
- ctx_ context.Context
- header_ http.Header
+type RegionDiskTypesListCall struct {
+ s *Service
+ project string
+ region string
+ urlParams_ gensupport.URLParams
+ ifNoneMatch_ string
+ ctx_ context.Context
+ header_ http.Header
}
-// Delete: Deletes the specified managed instance group and all of the
-// instances in that group.
-func (r *RegionInstanceGroupManagersService) Delete(project string, region string, instanceGroupManager string) *RegionInstanceGroupManagersDeleteCall {
- c := &RegionInstanceGroupManagersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+// List: Retrieves a list of regional disk types available to the
+// specified project.
+func (r *RegionDiskTypesService) List(project string, region string) *RegionDiskTypesListCall {
+ c := &RegionDiskTypesListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
c.project = project
c.region = region
- c.instanceGroupManager = instanceGroupManager
return c
}
-// RequestId sets the optional parameter "requestId": An optional
-// request ID to identify requests. Specify a unique request ID so that
-// if you must retry your request, the server will know to ignore the
-// request if it has already been completed.
+// Filter sets the optional parameter "filter": Sets a filter
+// {expression} for filtering listed resources. Your {expression} must
+// be in the format: field_name comparison_string literal_string.
//
-// For example, consider a situation where you make an initial request
-// and the request times out. If you make the request again with the
-// same request ID, the server can check if original operation with the
-// same request ID was received, and if so, will ignore the second
-// request. This prevents clients from accidentally creating duplicate
-// commitments.
+// The field_name is the name of the field you want to compare. Only
+// atomic field types are supported (string, number, boolean). The
+// comparison_string must be either eq (equals) or ne (not equals). The
+// literal_string is the string value to filter to. The literal value
+// must be valid for the type of field you are filtering by (string,
+// number, boolean). For string fields, the literal value is interpreted
+// as a regular expression using RE2 syntax. The literal value must
+// match the entire field.
//
-// The request ID must be a valid UUID with the exception that zero UUID
-// is not supported (00000000-0000-0000-0000-000000000000).
-func (c *RegionInstanceGroupManagersDeleteCall) RequestId(requestId string) *RegionInstanceGroupManagersDeleteCall {
- c.urlParams_.Set("requestId", requestId)
+// For example, to filter for instances that do not have a name of
+// example-instance, you would use name ne example-instance.
+//
+// You can filter on nested fields. For example, you could filter on
+// instances that have set the scheduling.automaticRestart field to
+// true. Use filtering on nested fields to take advantage of labels to
+// organize and search for results based on label values.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart eq
+// true) (zone eq us-central1-f). Multiple expressions are treated as
+// AND expressions, meaning that resources must match all expressions to
+// pass the filters.
+func (c *RegionDiskTypesListCall) Filter(filter string) *RegionDiskTypesListCall {
+ c.urlParams_.Set("filter", filter)
+ return c
+}
+
+// MaxResults sets the optional parameter "maxResults": The maximum
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests. Acceptable values are 0 to 500, inclusive.
+// (Default: 500)
+func (c *RegionDiskTypesListCall) MaxResults(maxResults int64) *RegionDiskTypesListCall {
+ c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+ return c
+}
+
+// OrderBy sets the optional parameter "orderBy": Sorts list results by
+// a certain order. By default, results are returned in alphanumerical
+// order based on the resource name.
+//
+// You can also sort results in descending order based on the creation
+// timestamp using orderBy="creationTimestamp desc". This sorts results
+// based on the creationTimestamp field in reverse chronological order
+// (newest result first). Use this to sort resources like operations so
+// that the newest operation is returned first.
+//
+// Currently, only sorting by name or creationTimestamp desc is
+// supported.
+func (c *RegionDiskTypesListCall) OrderBy(orderBy string) *RegionDiskTypesListCall {
+ c.urlParams_.Set("orderBy", orderBy)
+ return c
+}
+
+// PageToken sets the optional parameter "pageToken": Specifies a page
+// token to use. Set pageToken to the nextPageToken returned by a
+// previous list request to get the next page of results.
+func (c *RegionDiskTypesListCall) PageToken(pageToken string) *RegionDiskTypesListCall {
+ c.urlParams_.Set("pageToken", pageToken)
return c
}
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
-func (c *RegionInstanceGroupManagersDeleteCall) Fields(s ...googleapi.Field) *RegionInstanceGroupManagersDeleteCall {
+func (c *RegionDiskTypesListCall) Fields(s ...googleapi.Field) *RegionDiskTypesListCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionDiskTypesListCall) IfNoneMatch(entityTag string) *RegionDiskTypesListCall {
+ c.ifNoneMatch_ = entityTag
+ return c
+}
+
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
-func (c *RegionInstanceGroupManagersDeleteCall) Context(ctx context.Context) *RegionInstanceGroupManagersDeleteCall {
+func (c *RegionDiskTypesListCall) Context(ctx context.Context) *RegionDiskTypesListCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
-func (c *RegionInstanceGroupManagersDeleteCall) Header() http.Header {
+func (c *RegionDiskTypesListCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
-func (c *RegionInstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
+func (c *RegionDiskTypesListCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
+ if c.ifNoneMatch_ != "" {
+ reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+ }
var body io.Reader = nil
c.urlParams_.Set("alt", alt)
- urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}")
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/diskTypes")
urls += "?" + c.urlParams_.Encode()
- req, _ := http.NewRequest("DELETE", urls, body)
+ req, _ := http.NewRequest("GET", urls, body)
req.Header = reqHeaders
googleapi.Expand(req.URL, map[string]string{
- "project": c.project,
- "region": c.region,
- "instanceGroupManager": c.instanceGroupManager,
+ "project": c.project,
+ "region": c.region,
})
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
-// Do executes the "compute.regionInstanceGroupManagers.delete" call.
-// Exactly one of *Operation or error will be non-nil. Any non-2xx
-// status code is an error. Response headers are in either
-// *Operation.ServerResponse.Header or (if a response was returned at
-// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
-// to check whether the returned error was because
-// http.StatusNotModified was returned.
-func (c *RegionInstanceGroupManagersDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+// Do executes the "compute.regionDiskTypes.list" call.
+// Exactly one of *RegionDiskTypeList or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *RegionDiskTypeList.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionDiskTypesListCall) Do(opts ...googleapi.CallOption) (*RegionDiskTypeList, error) {
gensupport.SetOptions(c.urlParams_, opts...)
res, err := c.doRequest("json")
if res != nil && res.StatusCode == http.StatusNotModified {
@@ -69891,7 +71230,7 @@ func (c *RegionInstanceGroupManagersDeleteCall) Do(opts ...googleapi.CallOption)
if err := googleapi.CheckResponse(res); err != nil {
return nil, err
}
- ret := &Operation{
+ ret := &RegionDiskTypeList{
ServerResponse: googleapi.ServerResponse{
Header: res.Header,
HTTPStatusCode: res.StatusCode,
@@ -69903,19 +71242,35 @@ func (c *RegionInstanceGroupManagersDeleteCall) Do(opts ...googleapi.CallOption)
}
return ret, nil
// {
- // "description": "Deletes the specified managed instance group and all of the instances in that group.",
- // "httpMethod": "DELETE",
- // "id": "compute.regionInstanceGroupManagers.delete",
+ // "description": "Retrieves a list of regional disk types available to the specified project.",
+ // "httpMethod": "GET",
+ // "id": "compute.regionDiskTypes.list",
// "parameterOrder": [
// "project",
- // "region",
- // "instanceGroupManager"
+ // "region"
// ],
// "parameters": {
- // "instanceGroupManager": {
- // "description": "Name of the managed instance group to delete.",
- // "location": "path",
- // "required": true,
+ // "filter": {
+ // "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "maxResults": {
+ // "default": "500",
+ // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ // "format": "uint32",
+ // "location": "query",
+ // "minimum": "0",
+ // "type": "integer"
+ // },
+ // "orderBy": {
+ // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "pageToken": {
+ // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ // "location": "query",
// "type": "string"
// },
// "project": {
@@ -69926,64 +71281,67 @@ func (c *RegionInstanceGroupManagersDeleteCall) Do(opts ...googleapi.CallOption)
// "type": "string"
// },
// "region": {
- // "description": "Name of the region scoping this request.",
+ // "description": "The name of the region for this request.",
// "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
// "required": true,
// "type": "string"
- // },
- // "requestId": {
- // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- // "location": "query",
- // "type": "string"
// }
// },
- // "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ // "path": "{project}/regions/{region}/diskTypes",
// "response": {
- // "$ref": "Operation"
+ // "$ref": "RegionDiskTypeList"
// },
// "scopes": [
// "https://www.googleapis.com/auth/cloud-platform",
- // "https://www.googleapis.com/auth/compute"
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
// ]
// }
}
-// method id "compute.regionInstanceGroupManagers.deleteInstances":
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RegionDiskTypesListCall) Pages(ctx context.Context, f func(*RegionDiskTypeList) error) error {
+ c.ctx_ = ctx
+ defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+ for {
+ x, err := c.Do()
+ if err != nil {
+ return err
+ }
+ if err := f(x); err != nil {
+ return err
+ }
+ if x.NextPageToken == "" {
+ return nil
+ }
+ c.PageToken(x.NextPageToken)
+ }
+}
-type RegionInstanceGroupManagersDeleteInstancesCall struct {
- s *Service
- project string
- region string
- instanceGroupManager string
- regioninstancegroupmanagersdeleteinstancesrequest *RegionInstanceGroupManagersDeleteInstancesRequest
- urlParams_ gensupport.URLParams
- ctx_ context.Context
- header_ http.Header
+// method id "compute.regionDisks.createSnapshot":
+
+type RegionDisksCreateSnapshotCall struct {
+ s *Service
+ project string
+ region string
+ disk string
+ snapshot *Snapshot
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
}
-// DeleteInstances: Schedules a group action to delete the specified
-// instances in the managed instance group. The instances are also
-// removed from any target pools of which they were a member. This
-// method reduces the targetSize of the managed instance group by the
-// number of instances that you delete. This operation is marked as DONE
-// when the action is scheduled even if the instances are still being
-// deleted. You must separately verify the status of the deleting action
-// with the listmanagedinstances method.
-//
-// If the group is part of a backend service that has enabled connection
-// draining, it can take up to 60 seconds after the connection draining
-// duration has elapsed before the VM instance is removed or
-// deleted.
-//
-// You can specify a maximum of 1000 instances with this method per
-// request.
-func (r *RegionInstanceGroupManagersService) DeleteInstances(project string, region string, instanceGroupManager string, regioninstancegroupmanagersdeleteinstancesrequest *RegionInstanceGroupManagersDeleteInstancesRequest) *RegionInstanceGroupManagersDeleteInstancesCall {
- c := &RegionInstanceGroupManagersDeleteInstancesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+// CreateSnapshot: Creates a snapshot of this regional disk.
+func (r *RegionDisksService) CreateSnapshot(project string, region string, disk string, snapshot *Snapshot) *RegionDisksCreateSnapshotCall {
+ c := &RegionDisksCreateSnapshotCall{s: r.s, urlParams_: make(gensupport.URLParams)}
c.project = project
c.region = region
- c.instanceGroupManager = instanceGroupManager
- c.regioninstancegroupmanagersdeleteinstancesrequest = regioninstancegroupmanagersdeleteinstancesrequest
+ c.disk = disk
+ c.snapshot = snapshot
return c
}
@@ -70001,7 +71359,7 @@ func (r *RegionInstanceGroupManagersService) DeleteInstances(project string, reg
//
// The request ID must be a valid UUID with the exception that zero UUID
// is not supported (00000000-0000-0000-0000-000000000000).
-func (c *RegionInstanceGroupManagersDeleteInstancesCall) RequestId(requestId string) *RegionInstanceGroupManagersDeleteInstancesCall {
+func (c *RegionDisksCreateSnapshotCall) RequestId(requestId string) *RegionDisksCreateSnapshotCall {
c.urlParams_.Set("requestId", requestId)
return c
}
@@ -70009,7 +71367,7 @@ func (c *RegionInstanceGroupManagersDeleteInstancesCall) RequestId(requestId str
// Fields allows partial responses to be retrieved. See
// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
// for more information.
-func (c *RegionInstanceGroupManagersDeleteInstancesCall) Fields(s ...googleapi.Field) *RegionInstanceGroupManagersDeleteInstancesCall {
+func (c *RegionDisksCreateSnapshotCall) Fields(s ...googleapi.Field) *RegionDisksCreateSnapshotCall {
c.urlParams_.Set("fields", googleapi.CombineFields(s))
return c
}
@@ -70017,53 +71375,1916 @@ func (c *RegionInstanceGroupManagersDeleteInstancesCall) Fields(s ...googleapi.F
// Context sets the context to be used in this call's Do method. Any
// pending HTTP request will be aborted if the provided context is
// canceled.
-func (c *RegionInstanceGroupManagersDeleteInstancesCall) Context(ctx context.Context) *RegionInstanceGroupManagersDeleteInstancesCall {
+func (c *RegionDisksCreateSnapshotCall) Context(ctx context.Context) *RegionDisksCreateSnapshotCall {
c.ctx_ = ctx
return c
}
// Header returns an http.Header that can be modified by the caller to
// add HTTP headers to the request.
-func (c *RegionInstanceGroupManagersDeleteInstancesCall) Header() http.Header {
+func (c *RegionDisksCreateSnapshotCall) Header() http.Header {
if c.header_ == nil {
c.header_ = make(http.Header)
}
return c.header_
}
-func (c *RegionInstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
+func (c *RegionDisksCreateSnapshotCall) doRequest(alt string) (*http.Response, error) {
reqHeaders := make(http.Header)
for k, v := range c.header_ {
reqHeaders[k] = v
}
reqHeaders.Set("User-Agent", c.s.userAgent())
var body io.Reader = nil
- body, err := googleapi.WithoutDataWrapper.JSONReader(c.regioninstancegroupmanagersdeleteinstancesrequest)
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.snapshot)
if err != nil {
return nil, err
}
reqHeaders.Set("Content-Type", "application/json")
c.urlParams_.Set("alt", alt)
- urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances")
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks/{disk}/createSnapshot")
urls += "?" + c.urlParams_.Encode()
req, _ := http.NewRequest("POST", urls, body)
req.Header = reqHeaders
googleapi.Expand(req.URL, map[string]string{
- "project": c.project,
- "region": c.region,
- "instanceGroupManager": c.instanceGroupManager,
+ "project": c.project,
+ "region": c.region,
+ "disk": c.disk,
})
return gensupport.SendRequest(c.ctx_, c.s.client, req)
}
-// Do executes the "compute.regionInstanceGroupManagers.deleteInstances" call.
+// Do executes the "compute.regionDisks.createSnapshot" call.
// Exactly one of *Operation or error will be non-nil. Any non-2xx
// status code is an error. Response headers are in either
// *Operation.ServerResponse.Header or (if a response was returned at
// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
// to check whether the returned error was because
// http.StatusNotModified was returned.
-func (c *RegionInstanceGroupManagersDeleteInstancesCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+func (c *RegionDisksCreateSnapshotCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Creates a snapshot of this regional disk.",
+ // "httpMethod": "POST",
+ // "id": "compute.regionDisks.createSnapshot",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "disk"
+ // ],
+ // "parameters": {
+ // "disk": {
+ // "description": "Name of the regional persistent disk to snapshot.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks/{disk}/createSnapshot",
+ // "request": {
+ // "$ref": "Snapshot"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionDisks.delete":
+
+type RegionDisksDeleteCall struct {
+ s *Service
+ project string
+ region string
+ disk string
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// Delete: Deletes the specified regional persistent disk. Deleting a
+// regional disk removes all the replicas of its data permanently and is
+// irreversible. However, deleting a disk does not delete any snapshots
+// previously made from the disk. You must separately delete snapshots.
+func (r *RegionDisksService) Delete(project string, region string, disk string) *RegionDisksDeleteCall {
+ c := &RegionDisksDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.disk = disk
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionDisksDeleteCall) RequestId(requestId string) *RegionDisksDeleteCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionDisksDeleteCall) Fields(s ...googleapi.Field) *RegionDisksDeleteCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionDisksDeleteCall) Context(ctx context.Context) *RegionDisksDeleteCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionDisksDeleteCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionDisksDeleteCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks/{disk}")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("DELETE", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "disk": c.disk,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionDisksDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Deletes the specified regional persistent disk. Deleting a regional disk removes all the replicas of its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
+ // "httpMethod": "DELETE",
+ // "id": "compute.regionDisks.delete",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "disk"
+ // ],
+ // "parameters": {
+ // "disk": {
+ // "description": "Name of the regional persistent disk to delete.",
+ // "location": "path",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks/{disk}",
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionDisks.get":
+
+type RegionDisksGetCall struct {
+ s *Service
+ project string
+ region string
+ disk string
+ urlParams_ gensupport.URLParams
+ ifNoneMatch_ string
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// Get: Returns a specified regional persistent disk.
+func (r *RegionDisksService) Get(project string, region string, disk string) *RegionDisksGetCall {
+ c := &RegionDisksGetCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.disk = disk
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionDisksGetCall) Fields(s ...googleapi.Field) *RegionDisksGetCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionDisksGetCall) IfNoneMatch(entityTag string) *RegionDisksGetCall {
+ c.ifNoneMatch_ = entityTag
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionDisksGetCall) Context(ctx context.Context) *RegionDisksGetCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionDisksGetCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionDisksGetCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ if c.ifNoneMatch_ != "" {
+ reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+ }
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks/{disk}")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("GET", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "disk": c.disk,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.get" call.
+// Exactly one of *Disk or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *Disk.ServerResponse.Header or (if a response was returned at all) in
+// error.(*googleapi.Error).Header. Use googleapi.IsNotModified to check
+// whether the returned error was because http.StatusNotModified was
+// returned.
+func (c *RegionDisksGetCall) Do(opts ...googleapi.CallOption) (*Disk, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Disk{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Returns a specified regional persistent disk.",
+ // "httpMethod": "GET",
+ // "id": "compute.regionDisks.get",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "disk"
+ // ],
+ // "parameters": {
+ // "disk": {
+ // "description": "Name of the regional persistent disk to return.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks/{disk}",
+ // "response": {
+ // "$ref": "Disk"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionDisks.insert":
+
+type RegionDisksInsertCall struct {
+ s *Service
+ project string
+ region string
+ disk *Disk
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// Insert: Creates a persistent regional disk in the specified project
+// using the data included in the request.
+func (r *RegionDisksService) Insert(project string, region string, disk *Disk) *RegionDisksInsertCall {
+ c := &RegionDisksInsertCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.disk = disk
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionDisksInsertCall) RequestId(requestId string) *RegionDisksInsertCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// SourceImage sets the optional parameter "sourceImage": Source image
+// to restore onto a disk.
+func (c *RegionDisksInsertCall) SourceImage(sourceImage string) *RegionDisksInsertCall {
+ c.urlParams_.Set("sourceImage", sourceImage)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionDisksInsertCall) Fields(s ...googleapi.Field) *RegionDisksInsertCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionDisksInsertCall) Context(ctx context.Context) *RegionDisksInsertCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionDisksInsertCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionDisksInsertCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.disk)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.insert" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionDisksInsertCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Creates a persistent regional disk in the specified project using the data included in the request.",
+ // "httpMethod": "POST",
+ // "id": "compute.regionDisks.insert",
+ // "parameterOrder": [
+ // "project",
+ // "region"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "sourceImage": {
+ // "description": "Optional. Source image to restore onto a disk.",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks",
+ // "request": {
+ // "$ref": "Disk"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionDisks.list":
+
+type RegionDisksListCall struct {
+ s *Service
+ project string
+ region string
+ urlParams_ gensupport.URLParams
+ ifNoneMatch_ string
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// List: Retrieves the list of persistent disks contained within the
+// specified region.
+func (r *RegionDisksService) List(project string, region string) *RegionDisksListCall {
+ c := &RegionDisksListCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ return c
+}
+
+// Filter sets the optional parameter "filter": Sets a filter
+// {expression} for filtering listed resources. Your {expression} must
+// be in the format: field_name comparison_string literal_string.
+//
+// The field_name is the name of the field you want to compare. Only
+// atomic field types are supported (string, number, boolean). The
+// comparison_string must be either eq (equals) or ne (not equals). The
+// literal_string is the string value to filter to. The literal value
+// must be valid for the type of field you are filtering by (string,
+// number, boolean). For string fields, the literal value is interpreted
+// as a regular expression using RE2 syntax. The literal value must
+// match the entire field.
+//
+// For example, to filter for instances that do not have a name of
+// example-instance, you would use name ne example-instance.
+//
+// You can filter on nested fields. For example, you could filter on
+// instances that have set the scheduling.automaticRestart field to
+// true. Use filtering on nested fields to take advantage of labels to
+// organize and search for results based on label values.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart eq
+// true) (zone eq us-central1-f). Multiple expressions are treated as
+// AND expressions, meaning that resources must match all expressions to
+// pass the filters.
+func (c *RegionDisksListCall) Filter(filter string) *RegionDisksListCall {
+ c.urlParams_.Set("filter", filter)
+ return c
+}
+
+// MaxResults sets the optional parameter "maxResults": The maximum
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests. Acceptable values are 0 to 500, inclusive.
+// (Default: 500)
+func (c *RegionDisksListCall) MaxResults(maxResults int64) *RegionDisksListCall {
+ c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+ return c
+}
+
+// OrderBy sets the optional parameter "orderBy": Sorts list results by
+// a certain order. By default, results are returned in alphanumerical
+// order based on the resource name.
+//
+// You can also sort results in descending order based on the creation
+// timestamp using orderBy="creationTimestamp desc". This sorts results
+// based on the creationTimestamp field in reverse chronological order
+// (newest result first). Use this to sort resources like operations so
+// that the newest operation is returned first.
+//
+// Currently, only sorting by name or creationTimestamp desc is
+// supported.
+func (c *RegionDisksListCall) OrderBy(orderBy string) *RegionDisksListCall {
+ c.urlParams_.Set("orderBy", orderBy)
+ return c
+}
+
+// PageToken sets the optional parameter "pageToken": Specifies a page
+// token to use. Set pageToken to the nextPageToken returned by a
+// previous list request to get the next page of results.
+func (c *RegionDisksListCall) PageToken(pageToken string) *RegionDisksListCall {
+ c.urlParams_.Set("pageToken", pageToken)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionDisksListCall) Fields(s ...googleapi.Field) *RegionDisksListCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *RegionDisksListCall) IfNoneMatch(entityTag string) *RegionDisksListCall {
+ c.ifNoneMatch_ = entityTag
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionDisksListCall) Context(ctx context.Context) *RegionDisksListCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionDisksListCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionDisksListCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ if c.ifNoneMatch_ != "" {
+ reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+ }
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("GET", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.list" call.
+// Exactly one of *DiskList or error will be non-nil. Any non-2xx status
+// code is an error. Response headers are in either
+// *DiskList.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionDisksListCall) Do(opts ...googleapi.CallOption) (*DiskList, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &DiskList{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Retrieves the list of persistent disks contained within the specified region.",
+ // "httpMethod": "GET",
+ // "id": "compute.regionDisks.list",
+ // "parameterOrder": [
+ // "project",
+ // "region"
+ // ],
+ // "parameters": {
+ // "filter": {
+ // "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "maxResults": {
+ // "default": "500",
+ // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ // "format": "uint32",
+ // "location": "query",
+ // "minimum": "0",
+ // "type": "integer"
+ // },
+ // "orderBy": {
+ // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "pageToken": {
+ // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks",
+ // "response": {
+ // "$ref": "DiskList"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
+ // ]
+ // }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *RegionDisksListCall) Pages(ctx context.Context, f func(*DiskList) error) error {
+ c.ctx_ = ctx
+ defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+ for {
+ x, err := c.Do()
+ if err != nil {
+ return err
+ }
+ if err := f(x); err != nil {
+ return err
+ }
+ if x.NextPageToken == "" {
+ return nil
+ }
+ c.PageToken(x.NextPageToken)
+ }
+}
+
+// method id "compute.regionDisks.resize":
+
+type RegionDisksResizeCall struct {
+ s *Service
+ project string
+ region string
+ disk string
+ regiondisksresizerequest *RegionDisksResizeRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// Resize: Resizes the specified regional persistent disk.
+func (r *RegionDisksService) Resize(project string, region string, disk string, regiondisksresizerequest *RegionDisksResizeRequest) *RegionDisksResizeCall {
+ c := &RegionDisksResizeCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.disk = disk
+ c.regiondisksresizerequest = regiondisksresizerequest
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionDisksResizeCall) RequestId(requestId string) *RegionDisksResizeCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionDisksResizeCall) Fields(s ...googleapi.Field) *RegionDisksResizeCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionDisksResizeCall) Context(ctx context.Context) *RegionDisksResizeCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionDisksResizeCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionDisksResizeCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.regiondisksresizerequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks/{disk}/resize")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "disk": c.disk,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.resize" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionDisksResizeCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Resizes the specified regional persistent disk.",
+ // "httpMethod": "POST",
+ // "id": "compute.regionDisks.resize",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "disk"
+ // ],
+ // "parameters": {
+ // "disk": {
+ // "description": "Name of the regional persistent disk.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "The project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks/{disk}/resize",
+ // "request": {
+ // "$ref": "RegionDisksResizeRequest"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionDisks.setLabels":
+
+type RegionDisksSetLabelsCall struct {
+ s *Service
+ project string
+ region string
+ resource string
+ regionsetlabelsrequest *RegionSetLabelsRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// SetLabels: Sets the labels on the target regional disk.
+func (r *RegionDisksService) SetLabels(project string, region string, resource string, regionsetlabelsrequest *RegionSetLabelsRequest) *RegionDisksSetLabelsCall {
+ c := &RegionDisksSetLabelsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.resource = resource
+ c.regionsetlabelsrequest = regionsetlabelsrequest
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionDisksSetLabelsCall) RequestId(requestId string) *RegionDisksSetLabelsCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionDisksSetLabelsCall) Fields(s ...googleapi.Field) *RegionDisksSetLabelsCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionDisksSetLabelsCall) Context(ctx context.Context) *RegionDisksSetLabelsCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionDisksSetLabelsCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionDisksSetLabelsCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.regionsetlabelsrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks/{resource}/setLabels")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "resource": c.resource,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.setLabels" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionDisksSetLabelsCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Sets the labels on the target regional disk.",
+ // "httpMethod": "POST",
+ // "id": "compute.regionDisks.setLabels",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "The region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks/{resource}/setLabels",
+ // "request": {
+ // "$ref": "RegionSetLabelsRequest"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionDisks.testIamPermissions":
+
+type RegionDisksTestIamPermissionsCall struct {
+ s *Service
+ project string
+ region string
+ resource string
+ testpermissionsrequest *TestPermissionsRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// TestIamPermissions: Returns permissions that a caller has on the
+// specified resource.
+func (r *RegionDisksService) TestIamPermissions(project string, region string, resource string, testpermissionsrequest *TestPermissionsRequest) *RegionDisksTestIamPermissionsCall {
+ c := &RegionDisksTestIamPermissionsCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.resource = resource
+ c.testpermissionsrequest = testpermissionsrequest
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionDisksTestIamPermissionsCall) Fields(s ...googleapi.Field) *RegionDisksTestIamPermissionsCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionDisksTestIamPermissionsCall) Context(ctx context.Context) *RegionDisksTestIamPermissionsCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionDisksTestIamPermissionsCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionDisksTestIamPermissionsCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.testpermissionsrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/disks/{resource}/testIamPermissions")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "resource": c.resource,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionDisks.testIamPermissions" call.
+// Exactly one of *TestPermissionsResponse or error will be non-nil. Any
+// non-2xx status code is an error. Response headers are in either
+// *TestPermissionsResponse.ServerResponse.Header or (if a response was
+// returned at all) in error.(*googleapi.Error).Header. Use
+// googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *RegionDisksTestIamPermissionsCall) Do(opts ...googleapi.CallOption) (*TestPermissionsResponse, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &TestPermissionsResponse{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Returns permissions that a caller has on the specified resource.",
+ // "httpMethod": "POST",
+ // "id": "compute.regionDisks.testIamPermissions",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "resource"
+ // ],
+ // "parameters": {
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "The name of the region for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "resource": {
+ // "description": "Name of the resource for this request.",
+ // "location": "path",
+ // "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/disks/{resource}/testIamPermissions",
+ // "request": {
+ // "$ref": "TestPermissionsRequest"
+ // },
+ // "response": {
+ // "$ref": "TestPermissionsResponse"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionInstanceGroupManagers.abandonInstances":
+
+type RegionInstanceGroupManagersAbandonInstancesCall struct {
+ s *Service
+ project string
+ region string
+ instanceGroupManager string
+ regioninstancegroupmanagersabandoninstancesrequest *RegionInstanceGroupManagersAbandonInstancesRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// AbandonInstances: Schedules a group action to remove the specified
+// instances from the managed instance group. Abandoning an instance
+// does not delete the instance, but it does remove the instance from
+// any target pools that are applied by the managed instance group. This
+// method reduces the targetSize of the managed instance group by the
+// number of instances that you abandon. This operation is marked as
+// DONE when the action is scheduled even if the instances have not yet
+// been removed from the group. You must separately verify the status of
+// the abandoning action with the listmanagedinstances method.
+//
+// If the group is part of a backend service that has enabled connection
+// draining, it can take up to 60 seconds after the connection draining
+// duration has elapsed before the VM instance is removed or
+// deleted.
+//
+// You can specify a maximum of 1000 instances with this method per
+// request.
+func (r *RegionInstanceGroupManagersService) AbandonInstances(project string, region string, instanceGroupManager string, regioninstancegroupmanagersabandoninstancesrequest *RegionInstanceGroupManagersAbandonInstancesRequest) *RegionInstanceGroupManagersAbandonInstancesCall {
+ c := &RegionInstanceGroupManagersAbandonInstancesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.instanceGroupManager = instanceGroupManager
+ c.regioninstancegroupmanagersabandoninstancesrequest = regioninstancegroupmanagersabandoninstancesrequest
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionInstanceGroupManagersAbandonInstancesCall) RequestId(requestId string) *RegionInstanceGroupManagersAbandonInstancesCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionInstanceGroupManagersAbandonInstancesCall) Fields(s ...googleapi.Field) *RegionInstanceGroupManagersAbandonInstancesCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionInstanceGroupManagersAbandonInstancesCall) Context(ctx context.Context) *RegionInstanceGroupManagersAbandonInstancesCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionInstanceGroupManagersAbandonInstancesCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionInstanceGroupManagersAbandonInstancesCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.regioninstancegroupmanagersabandoninstancesrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "instanceGroupManager": c.instanceGroupManager,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionInstanceGroupManagers.abandonInstances" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionInstanceGroupManagersAbandonInstancesCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ // "httpMethod": "POST",
+ // "id": "compute.regionInstanceGroupManagers.abandonInstances",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "instanceGroupManager"
+ // ],
+ // "parameters": {
+ // "instanceGroupManager": {
+ // "description": "Name of the managed instance group.",
+ // "location": "path",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region scoping this request.",
+ // "location": "path",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
+ // "request": {
+ // "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
+ // },
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionInstanceGroupManagers.delete":
+
+type RegionInstanceGroupManagersDeleteCall struct {
+ s *Service
+ project string
+ region string
+ instanceGroupManager string
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// Delete: Deletes the specified managed instance group and all of the
+// instances in that group.
+func (r *RegionInstanceGroupManagersService) Delete(project string, region string, instanceGroupManager string) *RegionInstanceGroupManagersDeleteCall {
+ c := &RegionInstanceGroupManagersDeleteCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.instanceGroupManager = instanceGroupManager
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionInstanceGroupManagersDeleteCall) RequestId(requestId string) *RegionInstanceGroupManagersDeleteCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionInstanceGroupManagersDeleteCall) Fields(s ...googleapi.Field) *RegionInstanceGroupManagersDeleteCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionInstanceGroupManagersDeleteCall) Context(ctx context.Context) *RegionInstanceGroupManagersDeleteCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionInstanceGroupManagersDeleteCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionInstanceGroupManagersDeleteCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("DELETE", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "instanceGroupManager": c.instanceGroupManager,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionInstanceGroupManagers.delete" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionInstanceGroupManagersDeleteCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &Operation{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Deletes the specified managed instance group and all of the instances in that group.",
+ // "httpMethod": "DELETE",
+ // "id": "compute.regionInstanceGroupManagers.delete",
+ // "parameterOrder": [
+ // "project",
+ // "region",
+ // "instanceGroupManager"
+ // ],
+ // "parameters": {
+ // "instanceGroupManager": {
+ // "description": "Name of the managed instance group to delete.",
+ // "location": "path",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "region": {
+ // "description": "Name of the region scoping this request.",
+ // "location": "path",
+ // "required": true,
+ // "type": "string"
+ // },
+ // "requestId": {
+ // "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ // "location": "query",
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ // "response": {
+ // "$ref": "Operation"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute"
+ // ]
+ // }
+
+}
+
+// method id "compute.regionInstanceGroupManagers.deleteInstances":
+
+type RegionInstanceGroupManagersDeleteInstancesCall struct {
+ s *Service
+ project string
+ region string
+ instanceGroupManager string
+ regioninstancegroupmanagersdeleteinstancesrequest *RegionInstanceGroupManagersDeleteInstancesRequest
+ urlParams_ gensupport.URLParams
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// DeleteInstances: Schedules a group action to delete the specified
+// instances in the managed instance group. The instances are also
+// removed from any target pools of which they were a member. This
+// method reduces the targetSize of the managed instance group by the
+// number of instances that you delete. This operation is marked as DONE
+// when the action is scheduled even if the instances are still being
+// deleted. You must separately verify the status of the deleting action
+// with the listmanagedinstances method.
+//
+// If the group is part of a backend service that has enabled connection
+// draining, it can take up to 60 seconds after the connection draining
+// duration has elapsed before the VM instance is removed or
+// deleted.
+//
+// You can specify a maximum of 1000 instances with this method per
+// request.
+func (r *RegionInstanceGroupManagersService) DeleteInstances(project string, region string, instanceGroupManager string, regioninstancegroupmanagersdeleteinstancesrequest *RegionInstanceGroupManagersDeleteInstancesRequest) *RegionInstanceGroupManagersDeleteInstancesCall {
+ c := &RegionInstanceGroupManagersDeleteInstancesCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ c.region = region
+ c.instanceGroupManager = instanceGroupManager
+ c.regioninstancegroupmanagersdeleteinstancesrequest = regioninstancegroupmanagersdeleteinstancesrequest
+ return c
+}
+
+// RequestId sets the optional parameter "requestId": An optional
+// request ID to identify requests. Specify a unique request ID so that
+// if you must retry your request, the server will know to ignore the
+// request if it has already been completed.
+//
+// For example, consider a situation where you make an initial request
+// and the request times out. If you make the request again with the
+// same request ID, the server can check if original operation with the
+// same request ID was received, and if so, will ignore the second
+// request. This prevents clients from accidentally creating duplicate
+// commitments.
+//
+// The request ID must be a valid UUID with the exception that zero UUID
+// is not supported (00000000-0000-0000-0000-000000000000).
+func (c *RegionInstanceGroupManagersDeleteInstancesCall) RequestId(requestId string) *RegionInstanceGroupManagersDeleteInstancesCall {
+ c.urlParams_.Set("requestId", requestId)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *RegionInstanceGroupManagersDeleteInstancesCall) Fields(s ...googleapi.Field) *RegionInstanceGroupManagersDeleteInstancesCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *RegionInstanceGroupManagersDeleteInstancesCall) Context(ctx context.Context) *RegionInstanceGroupManagersDeleteInstancesCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *RegionInstanceGroupManagersDeleteInstancesCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *RegionInstanceGroupManagersDeleteInstancesCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ var body io.Reader = nil
+ body, err := googleapi.WithoutDataWrapper.JSONReader(c.regioninstancegroupmanagersdeleteinstancesrequest)
+ if err != nil {
+ return nil, err
+ }
+ reqHeaders.Set("Content-Type", "application/json")
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("POST", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ "region": c.region,
+ "instanceGroupManager": c.instanceGroupManager,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.regionInstanceGroupManagers.deleteInstances" call.
+// Exactly one of *Operation or error will be non-nil. Any non-2xx
+// status code is an error. Response headers are in either
+// *Operation.ServerResponse.Header or (if a response was returned at
+// all) in error.(*googleapi.Error).Header. Use googleapi.IsNotModified
+// to check whether the returned error was because
+// http.StatusNotModified was returned.
+func (c *RegionInstanceGroupManagersDeleteInstancesCall) Do(opts ...googleapi.CallOption) (*Operation, error) {
gensupport.SetOptions(c.urlParams_, opts...)
res, err := c.doRequest("json")
if res != nil && res.StatusCode == http.StatusNotModified {
@@ -83177,6 +86398,257 @@ func (c *SubnetworksListCall) Pages(ctx context.Context, f func(*SubnetworkList)
}
}
+// method id "compute.subnetworks.listUsable":
+
+type SubnetworksListUsableCall struct {
+ s *Service
+ project string
+ urlParams_ gensupport.URLParams
+ ifNoneMatch_ string
+ ctx_ context.Context
+ header_ http.Header
+}
+
+// ListUsable: Retrieves an aggregated list of usable subnetworks.
+func (r *SubnetworksService) ListUsable(project string) *SubnetworksListUsableCall {
+ c := &SubnetworksListUsableCall{s: r.s, urlParams_: make(gensupport.URLParams)}
+ c.project = project
+ return c
+}
+
+// Filter sets the optional parameter "filter": Sets a filter
+// {expression} for filtering listed resources. Your {expression} must
+// be in the format: field_name comparison_string literal_string.
+//
+// The field_name is the name of the field you want to compare. Only
+// atomic field types are supported (string, number, boolean). The
+// comparison_string must be either eq (equals) or ne (not equals). The
+// literal_string is the string value to filter to. The literal value
+// must be valid for the type of field you are filtering by (string,
+// number, boolean). For string fields, the literal value is interpreted
+// as a regular expression using RE2 syntax. The literal value must
+// match the entire field.
+//
+// For example, to filter for instances that do not have a name of
+// example-instance, you would use name ne example-instance.
+//
+// You can filter on nested fields. For example, you could filter on
+// instances that have set the scheduling.automaticRestart field to
+// true. Use filtering on nested fields to take advantage of labels to
+// organize and search for results based on label values.
+//
+// To filter on multiple expressions, provide each separate expression
+// within parentheses. For example, (scheduling.automaticRestart eq
+// true) (zone eq us-central1-f). Multiple expressions are treated as
+// AND expressions, meaning that resources must match all expressions to
+// pass the filters.
+func (c *SubnetworksListUsableCall) Filter(filter string) *SubnetworksListUsableCall {
+ c.urlParams_.Set("filter", filter)
+ return c
+}
+
+// MaxResults sets the optional parameter "maxResults": The maximum
+// number of results per page that should be returned. If the number of
+// available results is larger than maxResults, Compute Engine returns a
+// nextPageToken that can be used to get the next page of results in
+// subsequent list requests. Acceptable values are 0 to 500, inclusive.
+// (Default: 500)
+func (c *SubnetworksListUsableCall) MaxResults(maxResults int64) *SubnetworksListUsableCall {
+ c.urlParams_.Set("maxResults", fmt.Sprint(maxResults))
+ return c
+}
+
+// OrderBy sets the optional parameter "orderBy": Sorts list results by
+// a certain order. By default, results are returned in alphanumerical
+// order based on the resource name.
+//
+// You can also sort results in descending order based on the creation
+// timestamp using orderBy="creationTimestamp desc". This sorts results
+// based on the creationTimestamp field in reverse chronological order
+// (newest result first). Use this to sort resources like operations so
+// that the newest operation is returned first.
+//
+// Currently, only sorting by name or creationTimestamp desc is
+// supported.
+func (c *SubnetworksListUsableCall) OrderBy(orderBy string) *SubnetworksListUsableCall {
+ c.urlParams_.Set("orderBy", orderBy)
+ return c
+}
+
+// PageToken sets the optional parameter "pageToken": Specifies a page
+// token to use. Set pageToken to the nextPageToken returned by a
+// previous list request to get the next page of results.
+func (c *SubnetworksListUsableCall) PageToken(pageToken string) *SubnetworksListUsableCall {
+ c.urlParams_.Set("pageToken", pageToken)
+ return c
+}
+
+// Fields allows partial responses to be retrieved. See
+// https://developers.google.com/gdata/docs/2.0/basics#PartialResponse
+// for more information.
+func (c *SubnetworksListUsableCall) Fields(s ...googleapi.Field) *SubnetworksListUsableCall {
+ c.urlParams_.Set("fields", googleapi.CombineFields(s))
+ return c
+}
+
+// IfNoneMatch sets the optional parameter which makes the operation
+// fail if the object's ETag matches the given value. This is useful for
+// getting updates only after the object has changed since the last
+// request. Use googleapi.IsNotModified to check whether the response
+// error from Do is the result of In-None-Match.
+func (c *SubnetworksListUsableCall) IfNoneMatch(entityTag string) *SubnetworksListUsableCall {
+ c.ifNoneMatch_ = entityTag
+ return c
+}
+
+// Context sets the context to be used in this call's Do method. Any
+// pending HTTP request will be aborted if the provided context is
+// canceled.
+func (c *SubnetworksListUsableCall) Context(ctx context.Context) *SubnetworksListUsableCall {
+ c.ctx_ = ctx
+ return c
+}
+
+// Header returns an http.Header that can be modified by the caller to
+// add HTTP headers to the request.
+func (c *SubnetworksListUsableCall) Header() http.Header {
+ if c.header_ == nil {
+ c.header_ = make(http.Header)
+ }
+ return c.header_
+}
+
+func (c *SubnetworksListUsableCall) doRequest(alt string) (*http.Response, error) {
+ reqHeaders := make(http.Header)
+ for k, v := range c.header_ {
+ reqHeaders[k] = v
+ }
+ reqHeaders.Set("User-Agent", c.s.userAgent())
+ if c.ifNoneMatch_ != "" {
+ reqHeaders.Set("If-None-Match", c.ifNoneMatch_)
+ }
+ var body io.Reader = nil
+ c.urlParams_.Set("alt", alt)
+ urls := googleapi.ResolveRelative(c.s.BasePath, "{project}/aggregated/subnetworks/listUsable")
+ urls += "?" + c.urlParams_.Encode()
+ req, _ := http.NewRequest("GET", urls, body)
+ req.Header = reqHeaders
+ googleapi.Expand(req.URL, map[string]string{
+ "project": c.project,
+ })
+ return gensupport.SendRequest(c.ctx_, c.s.client, req)
+}
+
+// Do executes the "compute.subnetworks.listUsable" call.
+// Exactly one of *UsableSubnetworksAggregatedList or error will be
+// non-nil. Any non-2xx status code is an error. Response headers are in
+// either *UsableSubnetworksAggregatedList.ServerResponse.Header or (if
+// a response was returned at all) in error.(*googleapi.Error).Header.
+// Use googleapi.IsNotModified to check whether the returned error was
+// because http.StatusNotModified was returned.
+func (c *SubnetworksListUsableCall) Do(opts ...googleapi.CallOption) (*UsableSubnetworksAggregatedList, error) {
+ gensupport.SetOptions(c.urlParams_, opts...)
+ res, err := c.doRequest("json")
+ if res != nil && res.StatusCode == http.StatusNotModified {
+ if res.Body != nil {
+ res.Body.Close()
+ }
+ return nil, &googleapi.Error{
+ Code: res.StatusCode,
+ Header: res.Header,
+ }
+ }
+ if err != nil {
+ return nil, err
+ }
+ defer googleapi.CloseBody(res)
+ if err := googleapi.CheckResponse(res); err != nil {
+ return nil, err
+ }
+ ret := &UsableSubnetworksAggregatedList{
+ ServerResponse: googleapi.ServerResponse{
+ Header: res.Header,
+ HTTPStatusCode: res.StatusCode,
+ },
+ }
+ target := &ret
+ if err := gensupport.DecodeResponse(target, res); err != nil {
+ return nil, err
+ }
+ return ret, nil
+ // {
+ // "description": "Retrieves an aggregated list of usable subnetworks.",
+ // "httpMethod": "GET",
+ // "id": "compute.subnetworks.listUsable",
+ // "parameterOrder": [
+ // "project"
+ // ],
+ // "parameters": {
+ // "filter": {
+ // "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "maxResults": {
+ // "default": "500",
+ // "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ // "format": "uint32",
+ // "location": "query",
+ // "minimum": "0",
+ // "type": "integer"
+ // },
+ // "orderBy": {
+ // "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "pageToken": {
+ // "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ // "location": "query",
+ // "type": "string"
+ // },
+ // "project": {
+ // "description": "Project ID for this request.",
+ // "location": "path",
+ // "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ // "required": true,
+ // "type": "string"
+ // }
+ // },
+ // "path": "{project}/aggregated/subnetworks/listUsable",
+ // "response": {
+ // "$ref": "UsableSubnetworksAggregatedList"
+ // },
+ // "scopes": [
+ // "https://www.googleapis.com/auth/cloud-platform",
+ // "https://www.googleapis.com/auth/compute",
+ // "https://www.googleapis.com/auth/compute.readonly"
+ // ]
+ // }
+
+}
+
+// Pages invokes f for each page of results.
+// A non-nil error returned from f will halt the iteration.
+// The provided context supersedes any context provided to the Context method.
+func (c *SubnetworksListUsableCall) Pages(ctx context.Context, f func(*UsableSubnetworksAggregatedList) error) error {
+ c.ctx_ = ctx
+ defer c.PageToken(c.urlParams_.Get("pageToken")) // reset paging to original point
+ for {
+ x, err := c.Do()
+ if err != nil {
+ return err
+ }
+ if err := f(x); err != nil {
+ return err
+ }
+ if x.NextPageToken == "" {
+ return nil
+ }
+ c.PageToken(x.NextPageToken)
+ }
+}
+
// method id "compute.subnetworks.patch":
type SubnetworksPatchCall struct {
diff --git a/vendor/google.golang.org/api/compute/v1/compute-api.json b/vendor/google.golang.org/api/compute/v1/compute-api.json
index 96edf85352d9..a188c6df4cfc 100644
--- a/vendor/google.golang.org/api/compute/v1/compute-api.json
+++ b/vendor/google.golang.org/api/compute/v1/compute-api.json
@@ -1,29134 +1,29628 @@
{
- "kind": "discovery#restDescription",
- "etag": "\"YWOzh2SDasdU84ArJnpYek-OMdg/BzHLXiml7t9ltKStcz-Ic74UmRU\"",
- "discoveryVersion": "v1",
- "id": "compute:v1",
- "name": "compute",
- "version": "v1",
- "revision": "20171122",
- "title": "Compute Engine API",
- "description": "Creates and runs virtual machines on Google Cloud Platform.",
- "ownerDomain": "google.com",
- "ownerName": "Google",
- "icons": {
- "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
- "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
- },
- "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
- "protocol": "rest",
- "baseUrl": "https://www.googleapis.com/compute/v1/projects/",
- "basePath": "/compute/v1/projects/",
- "rootUrl": "https://www.googleapis.com/",
- "servicePath": "compute/v1/projects/",
- "batchPath": "batch/compute/v1",
- "parameters": {
- "alt": {
- "type": "string",
- "description": "Data format for the response.",
- "default": "json",
- "enum": [
- "json"
- ],
- "enumDescriptions": [
- "Responses with Content-Type of application/json"
- ],
- "location": "query"
- },
- "fields": {
- "type": "string",
- "description": "Selector specifying which fields to include in a partial response.",
- "location": "query"
- },
- "key": {
- "type": "string",
- "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
- "location": "query"
- },
- "oauth_token": {
- "type": "string",
- "description": "OAuth 2.0 token for the current user.",
- "location": "query"
- },
- "prettyPrint": {
- "type": "boolean",
- "description": "Returns response with indentations and line breaks.",
- "default": "true",
- "location": "query"
- },
- "quotaUser": {
- "type": "string",
- "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
- "location": "query"
- },
- "userIp": {
- "type": "string",
- "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
- "location": "query"
- }
- },
- "auth": {
- "oauth2": {
- "scopes": {
- "https://www.googleapis.com/auth/cloud-platform": {
- "description": "View and manage your data across Google Cloud Platform services"
- },
- "https://www.googleapis.com/auth/compute": {
- "description": "View and manage your Google Compute Engine resources"
- },
- "https://www.googleapis.com/auth/compute.readonly": {
- "description": "View your Google Compute Engine resources"
- },
- "https://www.googleapis.com/auth/devstorage.full_control": {
- "description": "Manage your data and permissions in Google Cloud Storage"
- },
- "https://www.googleapis.com/auth/devstorage.read_only": {
- "description": "View your data in Google Cloud Storage"
- },
- "https://www.googleapis.com/auth/devstorage.read_write": {
- "description": "Manage your data in Google Cloud Storage"
- }
- }
- }
- },
- "schemas": {
- "AcceleratorConfig": {
- "id": "AcceleratorConfig",
- "type": "object",
- "description": "A specification of the type and number of accelerator cards attached to the instance.",
- "properties": {
- "acceleratorCount": {
- "type": "integer",
- "description": "The number of the guest accelerator cards exposed to this instance.",
- "format": "int32"
- },
- "acceleratorType": {
- "type": "string",
- "description": "Full or partial URL of the accelerator type resource to expose to this instance."
- }
- }
- },
- "AcceleratorType": {
- "id": "AcceleratorType",
- "type": "object",
- "description": "An Accelerator Type resource. (== resource_for beta.acceleratorTypes ==) (== resource_for v1.acceleratorTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this accelerator type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#acceleratorType for accelerator types.",
- "default": "compute#acceleratorType"
- },
- "maximumCardsPerInstance": {
- "type": "integer",
- "description": "[Output Only] Maximum accelerator cards allowed per instance.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the accelerator type resides, such as us-central1-a."
- }
- }
- },
- "AcceleratorTypeAggregatedList": {
- "id": "AcceleratorTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AcceleratorTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "AcceleratorTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of accelerator types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#acceleratorTypeAggregatedList for aggregated lists of accelerator types.",
- "default": "compute#acceleratorTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AcceleratorTypeList": {
- "id": "AcceleratorTypeList",
- "type": "object",
- "description": "Contains a list of accelerator types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of AcceleratorType resources.",
- "items": {
- "$ref": "AcceleratorType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#acceleratorTypeList for lists of accelerator types.",
- "default": "compute#acceleratorTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AcceleratorTypesScopedList": {
- "id": "AcceleratorTypesScopedList",
- "type": "object",
- "properties": {
- "acceleratorTypes": {
- "type": "array",
- "description": "[Output Only] List of accelerator types contained in this scope.",
- "items": {
- "$ref": "AcceleratorType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the accelerator types list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "auth": {
+ "oauth2": {
+ "scopes": {
+ "https://www.googleapis.com/auth/cloud-platform": {
+ "description": "View and manage your data across Google Cloud Platform services"
+ },
+ "https://www.googleapis.com/auth/compute": {
+ "description": "View and manage your Google Compute Engine resources"
+ },
+ "https://www.googleapis.com/auth/compute.readonly": {
+ "description": "View your Google Compute Engine resources"
+ },
+ "https://www.googleapis.com/auth/devstorage.full_control": {
+ "description": "Manage your data and permissions in Google Cloud Storage"
+ },
+ "https://www.googleapis.com/auth/devstorage.read_only": {
+ "description": "View your data in Google Cloud Storage"
+ },
+ "https://www.googleapis.com/auth/devstorage.read_write": {
+ "description": "Manage your data in Google Cloud Storage"
+ }
}
- }
}
- }
},
- "AccessConfig": {
- "id": "AccessConfig",
- "type": "object",
- "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#accessConfig for access configs.",
- "default": "compute#accessConfig"
- },
- "name": {
- "type": "string",
- "description": "The name of this access configuration. The default and recommended name is External NAT but you can use any arbitrary string you would like. For example, My external IP or Network Access."
- },
- "natIP": {
- "type": "string",
- "description": "An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance."
- },
- "type": {
- "type": "string",
- "description": "The type of configuration. The default and only option is ONE_TO_ONE_NAT.",
- "default": "ONE_TO_ONE_NAT",
- "enum": [
- "ONE_TO_ONE_NAT"
- ],
- "enumDescriptions": [
- ""
- ]
- }
- }
- },
- "Address": {
- "id": "Address",
- "type": "object",
- "description": "A reserved address resource. (== resource_for beta.addresses ==) (== resource_for v1.addresses ==) (== resource_for beta.globalAddresses ==) (== resource_for v1.globalAddresses ==)",
- "properties": {
- "address": {
- "type": "string",
- "description": "The static IP address represented by this resource."
- },
- "addressType": {
- "type": "string",
- "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "UNSPECIFIED_TYPE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipVersion": {
- "type": "string",
- "description": "The IP Version that will be used by this address. Valid options are IPV4 or IPV6. This can only be specified for a global address.",
- "enum": [
- "IPV4",
- "IPV6",
- "UNSPECIFIED_VERSION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#address for addresses.",
- "default": "compute#address"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.addresses.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
- "enum": [
- "IN_USE",
- "RESERVED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with GCE_ENDPOINT/DNS_RESOLVER purposes."
- },
- "users": {
- "type": "array",
- "description": "[Output Only] The URLs of the resources that are using this address.",
- "items": {
+ "basePath": "/compute/v1/projects/",
+ "baseUrl": "https://www.googleapis.com/compute/v1/projects/",
+ "batchPath": "batch/compute/v1",
+ "description": "Creates and runs virtual machines on Google Cloud Platform.",
+ "discoveryVersion": "v1",
+ "documentationLink": "https://developers.google.com/compute/docs/reference/latest/",
+ "etag": "\"-iA1DTNe4s-I6JZXPt1t1Ypy8IU/-YzN1b0_oAWbrk9rmdu60A0nf94\"",
+ "icons": {
+ "x16": "https://www.google.com/images/icons/product/compute_engine-16.png",
+ "x32": "https://www.google.com/images/icons/product/compute_engine-32.png"
+ },
+ "id": "compute:v1",
+ "kind": "discovery#restDescription",
+ "name": "compute",
+ "ownerDomain": "google.com",
+ "ownerName": "Google",
+ "parameters": {
+ "alt": {
+ "default": "json",
+ "description": "Data format for the response.",
+ "enum": [
+ "json"
+ ],
+ "enumDescriptions": [
+ "Responses with Content-Type of application/json"
+ ],
+ "location": "query",
"type": "string"
- }
- }
- }
- },
- "AddressAggregatedList": {
- "id": "AddressAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AddressesScopedList resources.",
- "additionalProperties": {
- "$ref": "AddressesScopedList",
- "description": "[Output Only] Name of the scope containing this set of addresses."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#addressAggregatedList for aggregated lists of addresses.",
- "default": "compute#addressAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AddressList": {
- "id": "AddressList",
- "type": "object",
- "description": "Contains a list of addresses.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Address resources.",
- "items": {
- "$ref": "Address"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#addressList for lists of addresses.",
- "default": "compute#addressList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AddressesScopedList": {
- "id": "AddressesScopedList",
- "type": "object",
- "properties": {
- "addresses": {
- "type": "array",
- "description": "[Output Only] List of addresses contained in this scope.",
- "items": {
- "$ref": "Address"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AliasIpRange": {
- "id": "AliasIpRange",
- "type": "object",
- "description": "An alias IP range attached to an instance's network interface.",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24)."
- },
- "subnetworkRangeName": {
- "type": "string",
- "description": "Optional subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used."
- }
- }
- },
- "AttachedDisk": {
- "id": "AttachedDisk",
- "type": "object",
- "description": "An instance-attached disk resource.",
- "properties": {
- "autoDelete": {
- "type": "boolean",
- "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance)."
- },
- "boot": {
- "type": "boolean",
- "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem."
- },
- "deviceName": {
- "type": "string",
- "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance.\n\nIf not specified, the server chooses a default device name to apply to this disk, in the form persistent-disks-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks."
- },
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
- },
- "index": {
- "type": "integer",
- "description": "[Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
- "format": "int32"
- },
- "initializeParams": {
- "$ref": "AttachedDiskInitializeParams",
- "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both."
- },
- "interface": {
- "type": "string",
- "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
- "enum": [
- "NVME",
- "SCSI"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#attachedDisk for attached disks.",
- "default": "compute#attachedDisk"
},
- "licenses": {
- "type": "array",
- "description": "[Output Only] Any valid publicly visible licenses.",
- "items": {
+ "fields": {
+ "description": "Selector specifying which fields to include in a partial response.",
+ "location": "query",
"type": "string"
- }
- },
- "mode": {
- "type": "string",
- "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
- "enum": [
- "READ_ONLY",
- "READ_WRITE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "source": {
- "type": "string",
- "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk."
- },
- "type": {
- "type": "string",
- "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
- "enum": [
- "PERSISTENT",
- "SCRATCH"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "AttachedDiskInitializeParams": {
- "id": "AttachedDiskInitializeParams",
- "type": "object",
- "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both.",
- "properties": {
- "diskName": {
- "type": "string",
- "description": "Specifies the disk name. If not specified, the default is to use the name of the instance."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "Specifies the size of the disk in base-2 GB.",
- "format": "int64"
- },
- "diskType": {
- "type": "string",
- "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:\n\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard \n\nOther values include pd-ssd and local-ssd. If you define this field, you can provide either the full or partial URL. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType \n- projects/project/zones/zone/diskTypes/diskType \n- zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is the name of the disk type, not URL."
- },
- "sourceImage": {
- "type": "string",
- "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a custom image that you created, specify the image name in the following format:\n\nglobal/images/my-custom-image \n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-image-family \n\nIf the source image is deleted later, this field will not be set."
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys."
- }
- }
- },
- "Autoscaler": {
- "id": "Autoscaler",
- "type": "object",
- "description": "Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances. (== resource_for beta.autoscalers ==) (== resource_for v1.autoscalers ==) (== resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==)",
- "properties": {
- "autoscalingPolicy": {
- "$ref": "AutoscalingPolicy",
- "description": "The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#autoscaler for autoscalers.",
- "default": "compute#autoscaler"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroups.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the autoscaler configuration.",
- "enum": [
- "ACTIVE",
- "DELETING",
- "ERROR",
- "PENDING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "statusDetails": {
- "type": "array",
- "description": "[Output Only] Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
- "items": {
- "$ref": "AutoscalerStatusDetails"
- }
- },
- "target": {
- "type": "string",
- "description": "URL of the managed instance group that this autoscaler will scale."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope)."
- }
- }
- },
- "AutoscalerAggregatedList": {
- "id": "AutoscalerAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of AutoscalersScopedList resources.",
- "additionalProperties": {
- "$ref": "AutoscalersScopedList",
- "description": "[Output Only] Name of the scope containing this set of autoscalers."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#autoscalerAggregatedList for aggregated lists of autoscalers.",
- "default": "compute#autoscalerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalerList": {
- "id": "AutoscalerList",
- "type": "object",
- "description": "Contains a list of Autoscaler resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Autoscaler resources.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#autoscalerList for lists of autoscalers.",
- "default": "compute#autoscalerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalerStatusDetails": {
- "id": "AutoscalerStatusDetails",
- "type": "object",
- "properties": {
- "message": {
- "type": "string",
- "description": "The status message."
- },
- "type": {
- "type": "string",
- "description": "The type of error returned.",
- "enum": [
- "ALL_INSTANCES_UNHEALTHY",
- "BACKEND_SERVICE_DOES_NOT_EXIST",
- "CAPPED_AT_MAX_NUM_REPLICAS",
- "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE",
- "CUSTOM_METRIC_INVALID",
- "MIN_EQUALS_MAX",
- "MISSING_CUSTOM_METRIC_DATA_POINTS",
- "MISSING_LOAD_BALANCING_DATA_POINTS",
- "MORE_THAN_ONE_BACKEND_SERVICE",
- "NOT_ENOUGH_QUOTA_AVAILABLE",
- "REGION_RESOURCE_STOCKOUT",
- "SCALING_TARGET_DOES_NOT_EXIST",
- "UNKNOWN",
- "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION",
- "ZONE_RESOURCE_STOCKOUT"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "AutoscalersScopedList": {
- "id": "AutoscalersScopedList",
- "type": "object",
- "properties": {
- "autoscalers": {
- "type": "array",
- "description": "[Output Only] List of autoscalers contained in this scope.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of autoscalers when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "AutoscalingPolicy": {
- "id": "AutoscalingPolicy",
- "type": "object",
- "description": "Cloud Autoscaler policy.",
- "properties": {
- "coolDownPeriodSec": {
- "type": "integer",
- "description": "The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.",
- "format": "int32"
- },
- "cpuUtilization": {
- "$ref": "AutoscalingPolicyCpuUtilization",
- "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
- },
- "customMetricUtilizations": {
- "type": "array",
- "description": "Configuration parameters of autoscaling based on a custom metric.",
- "items": {
- "$ref": "AutoscalingPolicyCustomMetricUtilization"
- }
- },
- "loadBalancingUtilization": {
- "$ref": "AutoscalingPolicyLoadBalancingUtilization",
- "description": "Configuration parameters of autoscaling based on load balancer."
- },
- "maxNumReplicas": {
- "type": "integer",
- "description": "The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.",
- "format": "int32"
- },
- "minNumReplicas": {
- "type": "integer",
- "description": "The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.",
- "format": "int32"
- }
- }
- },
- "AutoscalingPolicyCpuUtilization": {
- "id": "AutoscalingPolicyCpuUtilization",
- "type": "object",
- "description": "CPU utilization policy.",
- "properties": {
- "utilizationTarget": {
- "type": "number",
- "description": "The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.",
- "format": "double"
- }
- }
- },
- "AutoscalingPolicyCustomMetricUtilization": {
- "id": "AutoscalingPolicyCustomMetricUtilization",
- "type": "object",
- "description": "Custom utilization metric policy.",
- "properties": {
- "metric": {
- "type": "string",
- "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE."
- },
- "utilizationTarget": {
- "type": "number",
- "description": "The target value of the metric that autoscaler should maintain. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
- "format": "double"
- },
- "utilizationTargetType": {
- "type": "string",
- "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.",
- "enum": [
- "DELTA_PER_MINUTE",
- "DELTA_PER_SECOND",
- "GAUGE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "AutoscalingPolicyLoadBalancingUtilization": {
- "id": "AutoscalingPolicyLoadBalancingUtilization",
- "type": "object",
- "description": "Configuration parameters of autoscaling based on load balancing.",
- "properties": {
- "utilizationTarget": {
- "type": "number",
- "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
- "format": "double"
- }
- }
- },
- "Backend": {
- "id": "Backend",
- "type": "object",
- "description": "Message containing information of one individual backend.",
- "properties": {
- "balancingMode": {
- "type": "string",
- "description": "Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).\n\nFor Internal Load Balancing, the default and only supported mode is CONNECTION.",
- "enum": [
- "CONNECTION",
- "RATE",
- "UTILIZATION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "capacityScaler": {
- "type": "number",
- "description": "A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "group": {
- "type": "string",
- "description": "The fully-qualified URL of a Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.\n\nNote that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.\n\nWhen the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService."
- },
- "maxConnections": {
- "type": "integer",
- "description": "The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxConnectionsPerInstance": {
- "type": "integer",
- "description": "The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxRate": {
- "type": "integer",
- "description": "The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "maxRatePerInstance": {
- "type": "number",
- "description": "The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- },
- "maxUtilization": {
- "type": "number",
- "description": "Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].\n\nThis cannot be used for internal load balancing.",
- "format": "float"
- }
- }
- },
- "BackendBucket": {
- "id": "BackendBucket",
- "type": "object",
- "description": "A BackendBucket resource. This resource defines a Cloud Storage bucket.",
- "properties": {
- "bucketName": {
- "type": "string",
- "description": "Cloud Storage bucket name."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource; provided by the client when the resource is created."
- },
- "enableCdn": {
- "type": "boolean",
- "description": "If true, enable Cloud CDN for this BackendBucket."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#backendBucket"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "BackendBucketList": {
- "id": "BackendBucketList",
- "type": "object",
- "description": "Contains a list of BackendBucket resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of BackendBucket resources.",
- "items": {
- "$ref": "BackendBucket"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#backendBucketList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendService": {
- "id": "BackendService",
- "type": "object",
- "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)",
- "properties": {
- "affinityCookieTtlSec": {
- "type": "integer",
- "description": "Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
- "format": "int32"
- },
- "backends": {
- "type": "array",
- "description": "The list of backends that serve this BackendService.",
- "items": {
- "$ref": "Backend"
- }
- },
- "cdnPolicy": {
- "$ref": "BackendServiceCdnPolicy",
- "description": "Cloud CDN configuration for this BackendService."
- },
- "connectionDraining": {
- "$ref": "ConnectionDraining"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "enableCDN": {
- "type": "boolean",
- "description": "If true, enable Cloud CDN for this BackendService.\n\nWhen the load balancing scheme is INTERNAL, this field is not used."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.",
- "format": "byte"
},
- "healthChecks": {
- "type": "array",
- "description": "The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.\n\nFor internal load balancing, a URL to a HealthCheck resource must be specified instead.",
- "items": {
- "type": "string"
- }
- },
- "iap": {
- "$ref": "BackendServiceIAP"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendService for backend services.",
- "default": "compute#backendService"
- },
- "loadBalancingScheme": {
- "type": "string",
- "description": "Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "INVALID_LOAD_BALANCING_SCHEME"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.\n\nThis cannot be used for internal load balancing.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.\n\nWhen the load balancing scheme is INTERNAL, this field is not used."
- },
- "protocol": {
- "type": "string",
- "description": "The protocol this BackendService uses to communicate with backends.\n\nPossible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.\n\nFor internal load balancing, the possible values are TCP and UDP, and the default is TCP.",
- "enum": [
- "HTTP",
- "HTTPS",
- "SSL",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sessionAffinity": {
- "type": "string",
- "description": "Type of session affinity to use. The default is NONE.\n\nWhen the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.\n\nWhen the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.\n\nWhen the protocol is UDP, this field is not used.",
- "enum": [
- "CLIENT_IP",
- "CLIENT_IP_PORT_PROTO",
- "CLIENT_IP_PROTO",
- "GENERATED_COOKIE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
- "format": "int32"
- }
- }
- },
- "BackendServiceAggregatedList": {
- "id": "BackendServiceAggregatedList",
- "type": "object",
- "description": "Contains a list of BackendServicesScopedList.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of BackendServicesScopedList resources.",
- "additionalProperties": {
- "$ref": "BackendServicesScopedList",
- "description": "Name of the scope containing this set of BackendServices."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#backendServiceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendServiceCdnPolicy": {
- "id": "BackendServiceCdnPolicy",
- "type": "object",
- "description": "Message containing Cloud CDN configuration for a backend service.",
- "properties": {
- "cacheKeyPolicy": {
- "$ref": "CacheKeyPolicy",
- "description": "The CacheKeyPolicy for this CdnPolicy."
- }
- }
- },
- "BackendServiceGroupHealth": {
- "id": "BackendServiceGroupHealth",
- "type": "object",
- "properties": {
- "healthStatus": {
- "type": "array",
- "items": {
- "$ref": "HealthStatus"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.",
- "default": "compute#backendServiceGroupHealth"
- }
- }
- },
- "BackendServiceIAP": {
- "id": "BackendServiceIAP",
- "type": "object",
- "description": "Identity-Aware Proxy",
- "properties": {
- "enabled": {
- "type": "boolean"
- },
- "oauth2ClientId": {
- "type": "string"
- },
- "oauth2ClientSecret": {
- "type": "string"
- },
- "oauth2ClientSecretSha256": {
- "type": "string",
- "description": "[Output Only] SHA256 hash value for the field oauth2_client_secret above."
- }
- }
- },
- "BackendServiceList": {
- "id": "BackendServiceList",
- "type": "object",
- "description": "Contains a list of BackendService resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of BackendService resources.",
- "items": {
- "$ref": "BackendService"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.",
- "default": "compute#backendServiceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "BackendServicesScopedList": {
- "id": "BackendServicesScopedList",
- "type": "object",
- "properties": {
- "backendServices": {
- "type": "array",
- "description": "List of BackendServices contained in this scope.",
- "items": {
- "$ref": "BackendService"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of backend services when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "CacheInvalidationRule": {
- "id": "CacheInvalidationRule",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "If set, this invalidation rule will only apply to requests with a Host header matching host."
- },
- "path": {
- "type": "string"
- }
- }
- },
- "CacheKeyPolicy": {
- "id": "CacheKeyPolicy",
- "type": "object",
- "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
- "properties": {
- "includeHost": {
- "type": "boolean",
- "description": "If true, requests to different hosts will be cached separately."
- },
- "includeProtocol": {
- "type": "boolean",
- "description": "If true, http and https requests will be cached separately."
- },
- "includeQueryString": {
- "type": "boolean",
- "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely."
- },
- "queryStringBlacklist": {
- "type": "array",
- "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.",
- "items": {
+ "key": {
+ "description": "API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.",
+ "location": "query",
"type": "string"
- }
},
- "queryStringWhitelist": {
- "type": "array",
- "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '&' and '=' will be percent encoded and not treated as delimiters.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "Commitment": {
- "id": "Commitment",
- "type": "object",
- "description": "Represents a Commitment resource. Creating a Commitment resource means that you are purchasing a committed use contract with an explicit start and end time. You can create commitments based on vCPUs and memory usage and receive discounted rates. For full details, read Signing Up for Committed Use Discounts.\n\nCommitted use discounts are subject to Google Cloud Platform's Service Specific Terms. By purchasing a committed use discount, you agree to these terms. Committed use discounts will not renew, so you must purchase a new commitment to continue receiving discounts. (== resource_for beta.commitments ==) (== resource_for v1.commitments ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "endTimestamp": {
- "type": "string",
- "description": "[Output Only] Commitment end time in RFC3339 text format."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#commitment for commitments.",
- "default": "compute#commitment"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "plan": {
- "type": "string",
- "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
- "enum": [
- "INVALID",
- "THIRTY_SIX_MONTH",
- "TWELVE_MONTH"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where this commitment may be used."
- },
- "resources": {
- "type": "array",
- "description": "List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
- "items": {
- "$ref": "ResourceCommitment"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "startTimestamp": {
- "type": "string",
- "description": "[Output Only] Commitment start time in RFC3339 text format."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
- "enum": [
- "ACTIVE",
- "CREATING",
- "EXPIRED",
- "NOT_YET_ACTIVE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable explanation of the status."
- }
- }
- },
- "CommitmentAggregatedList": {
- "id": "CommitmentAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of CommitmentsScopedList resources.",
- "additionalProperties": {
- "$ref": "CommitmentsScopedList",
- "description": "[Output Only] Name of the scope containing this set of commitments."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#commitmentAggregatedList for aggregated lists of commitments.",
- "default": "compute#commitmentAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "CommitmentList": {
- "id": "CommitmentList",
- "type": "object",
- "description": "Contains a list of Commitment resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Commitment resources.",
- "items": {
- "$ref": "Commitment"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#commitmentList for lists of commitments.",
- "default": "compute#commitmentList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "CommitmentsScopedList": {
- "id": "CommitmentsScopedList",
- "type": "object",
- "properties": {
- "commitments": {
- "type": "array",
- "description": "[Output Only] List of commitments contained in this scope.",
- "items": {
- "$ref": "Commitment"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of commitments when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "ConnectionDraining": {
- "id": "ConnectionDraining",
- "type": "object",
- "description": "Message containing connection draining configuration.",
- "properties": {
- "drainingTimeoutSec": {
- "type": "integer",
- "description": "Time for which instance will be drained (not accept new connections, but still work to finish started).",
- "format": "int32"
- }
- }
- },
- "CustomerEncryptionKey": {
- "id": "CustomerEncryptionKey",
- "type": "object",
- "description": "Represents a customer-supplied encryption key",
- "properties": {
- "rawKey": {
- "type": "string",
- "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource."
- },
- "sha256": {
- "type": "string",
- "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource."
- }
- }
- },
- "CustomerEncryptionKeyProtectedDisk": {
- "id": "CustomerEncryptionKeyProtectedDisk",
- "type": "object",
- "properties": {
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Decrypts data associated with the disk with a customer-supplied encryption key."
- },
- "source": {
- "type": "string",
- "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks."
- }
- }
- },
- "DeprecationStatus": {
- "id": "DeprecationStatus",
- "type": "object",
- "description": "Deprecation status for a public resource.",
- "properties": {
- "deleted": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "deprecated": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "obsolete": {
- "type": "string",
- "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it."
- },
- "replacement": {
- "type": "string",
- "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource."
- },
- "state": {
- "type": "string",
- "description": "The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
- "enum": [
- "DELETED",
- "DEPRECATED",
- "OBSOLETE"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "Disk": {
- "id": "Disk",
- "type": "object",
- "description": "A Disk resource. (== resource_for beta.disks ==) (== resource_for v1.disks ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#disk for disks.",
- "default": "compute#disk"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a disk.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
- "additionalProperties": {
+ "oauth_token": {
+ "description": "OAuth 2.0 token for the current user.",
+ "location": "query",
"type": "string"
- }
- },
- "lastAttachTimestamp": {
- "type": "string",
- "description": "[Output Only] Last attach timestamp in RFC3339 text format."
},
- "lastDetachTimestamp": {
- "type": "string",
- "description": "[Output Only] Last detach timestamp in RFC3339 text format."
+ "prettyPrint": {
+ "default": "true",
+ "description": "Returns response with indentations and line breaks.",
+ "location": "query",
+ "type": "boolean"
},
- "licenses": {
- "type": "array",
- "description": "Any applicable publicly visible licenses.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.disks.insert"
- ]
- }
- },
- "options": {
- "type": "string",
- "description": "Internal use only."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "sizeGb": {
- "type": "string",
- "description": "Size of the persistent disk, specified in GB. You can specify this field when creating a persistent disk using the sourceImage or sourceSnapshot parameter, or specify it alone to create an empty persistent disk.\n\nIf you specify this field along with sourceImage or sourceSnapshot, the value of sizeGb must not be less than the size of the sourceImage or the size of the snapshot. Acceptable values are 1 to 65536, inclusive.",
- "format": "int64"
- },
- "sourceImage": {
- "type": "string",
- "description": "The source image used to create this disk. If the source image is deleted, this field will not be set.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\n\nprojects/debian-cloud/global/images/family/debian-8 \n\nAlternatively, use a specific version of a public operating system image:\n\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD \n\nTo create a disk with a custom image that you created, specify the image name in the following format:\n\nglobal/images/my-custom-image \n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\n\nglobal/images/family/my-image-family"
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
- },
- "sourceImageId": {
- "type": "string",
- "description": "[Output Only] The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used."
- },
- "sourceSnapshot": {
- "type": "string",
- "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot \n- projects/project/global/snapshots/snapshot \n- global/snapshots/snapshot"
- },
- "sourceSnapshotEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
- },
- "sourceSnapshotId": {
- "type": "string",
- "description": "[Output Only] The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of disk creation.",
- "enum": [
- "CREATING",
- "FAILED",
- "READY",
- "RESTORING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "type": {
- "type": "string",
- "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk."
- },
- "users": {
- "type": "array",
- "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
- "items": {
+ "quotaUser": {
+ "description": "Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters. Overrides userIp if both are provided.",
+ "location": "query",
"type": "string"
- }
},
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the disk resides."
- }
- }
- },
- "DiskAggregatedList": {
- "id": "DiskAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of DisksScopedList resources.",
- "additionalProperties": {
- "$ref": "DisksScopedList",
- "description": "[Output Only] Name of the scope containing this set of disks."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskAggregatedList for aggregated lists of persistent disks.",
- "default": "compute#diskAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskList": {
- "id": "DiskList",
- "type": "object",
- "description": "A list of Disk resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Disk resources.",
- "items": {
- "$ref": "Disk"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskList for lists of disks.",
- "default": "compute#diskList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskMoveRequest": {
- "id": "DiskMoveRequest",
- "type": "object",
- "properties": {
- "destinationZone": {
- "type": "string",
- "description": "The URL of the destination zone to move the disk. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone"
- },
- "targetDisk": {
- "type": "string",
- "description": "The URL of the target disk to move. This can be a full or partial URL. For example, the following are all valid URLs to a disk: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk"
- }
- }
- },
- "DiskType": {
- "id": "DiskType",
- "type": "object",
- "description": "A DiskType resource. (== resource_for beta.diskTypes ==) (== resource_for v1.diskTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultDiskSizeGb": {
- "type": "string",
- "description": "[Output Only] Server-defined default disk size in GB.",
- "format": "int64"
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this disk type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional description of this resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#diskType for disk types.",
- "default": "compute#diskType"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "validDiskSize": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the valid disk size, such as \"10GB-10TB\"."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the disk type resides."
- }
- }
- },
- "DiskTypeAggregatedList": {
- "id": "DiskTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of DiskTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "DiskTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of disk types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskTypeAggregatedList.",
- "default": "compute#diskTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskTypeList": {
- "id": "DiskTypeList",
- "type": "object",
- "description": "Contains a list of disk types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of DiskType resources.",
- "items": {
- "$ref": "DiskType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#diskTypeList for disk types.",
- "default": "compute#diskTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DiskTypesScopedList": {
- "id": "DiskTypesScopedList",
- "type": "object",
- "properties": {
- "diskTypes": {
- "type": "array",
- "description": "[Output Only] List of disk types contained in this scope.",
- "items": {
- "$ref": "DiskType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of disk types when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "DisksResizeRequest": {
- "id": "DisksResizeRequest",
- "type": "object",
- "properties": {
- "sizeGb": {
- "type": "string",
- "description": "The new size of the persistent disk, which is specified in GB.",
- "format": "int64"
- }
- }
- },
- "DisksScopedList": {
- "id": "DisksScopedList",
- "type": "object",
- "properties": {
- "disks": {
- "type": "array",
- "description": "[Output Only] List of disks contained in this scope.",
- "items": {
- "$ref": "Disk"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of disks when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
+ "userIp": {
+ "description": "IP address of the site where the request originates. Use this if you want to enforce per-user limits.",
+ "location": "query",
+ "type": "string"
}
- }
},
- "Firewall": {
- "id": "Firewall",
- "type": "object",
- "description": "Represents a Firewall resource.",
- "properties": {
- "allowed": {
- "type": "array",
- "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
- "items": {
- "type": "object",
- "properties": {
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
- },
- "ports": {
- "type": "array",
- "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
- "items": {
- "type": "string"
+ "protocol": "rest",
+ "resources": {
+ "acceleratorTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of accelerator types.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/acceleratorTypes",
+ "response": {
+ "$ref": "AcceleratorTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified accelerator type. Get a list of available accelerator types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "acceleratorType"
+ ],
+ "parameters": {
+ "acceleratorType": {
+ "description": "Name of the accelerator type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/acceleratorTypes/{acceleratorType}",
+ "response": {
+ "$ref": "AcceleratorType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of accelerator types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.acceleratorTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/acceleratorTypes",
+ "response": {
+ "$ref": "AcceleratorTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
}
- }
}
- }
},
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "denied": {
- "type": "array",
- "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
- "items": {
- "type": "object",
- "properties": {
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number."
- },
- "ports": {
- "type": "array",
- "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
- "items": {
- "type": "string"
+ "addresses": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of addresses.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/addresses",
+ "response": {
+ "$ref": "AddressAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified address resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.addresses.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{address}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified address resource.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses/{address}",
+ "response": {
+ "$ref": "Address"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an address resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.addresses.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses",
+ "request": {
+ "$ref": "Address"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of addresses contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.addresses.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/addresses",
+ "response": {
+ "$ref": "AddressList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
}
- }
}
- }
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
},
- "destinationRanges": {
- "type": "array",
- "description": "If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "direction": {
- "type": "string",
- "description": "Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.",
- "enum": [
- "EGRESS",
- "INGRESS"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#firewall for firewall rules.",
- "default": "compute#firewall"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.firewalls.insert",
- "compute.firewalls.patch"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default"
- },
- "priority": {
- "type": "integer",
- "description": "Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.",
- "format": "int32"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sourceRanges": {
- "type": "array",
- "description": "If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
+ "autoscalers": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of autoscalers.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/autoscalers",
+ "response": {
+ "$ref": "AutoscalerAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified autoscaler.",
+ "httpMethod": "DELETE",
+ "id": "compute.autoscalers.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified autoscaler resource. Get a list of available autoscalers by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Autoscaler"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.autoscalers.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of autoscalers contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.autoscalers.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "response": {
+ "$ref": "AutoscalerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.autoscalers.patch",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to patch.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.autoscalers.update",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to update.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "sourceServiceAccounts": {
- "type": "array",
- "description": "If source service accounts are specified, the firewall will apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both properties for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
- "items": {
- "type": "string"
- }
- },
- "sourceTags": {
- "type": "array",
- "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.",
- "items": {
- "type": "string"
- }
- },
- "targetServiceAccounts": {
- "type": "array",
- "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
- "items": {
- "type": "string"
- }
- },
- "targetTags": {
- "type": "array",
- "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "FirewallList": {
- "id": "FirewallList",
- "type": "object",
- "description": "Contains a list of firewalls.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Firewall resources.",
- "items": {
- "$ref": "Firewall"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#firewallList for lists of firewalls.",
- "default": "compute#firewallList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "backendBuckets": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified BackendBucket resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.backendBuckets.delete",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.backendBuckets.get",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "response": {
+ "$ref": "BackendBucket"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.backendBuckets.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of BackendBucket resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendBuckets.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets",
+ "response": {
+ "$ref": "BackendBucketList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified BackendBucket resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.backendBuckets.patch",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified BackendBucket resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.backendBuckets.update",
+ "parameterOrder": [
+ "project",
+ "backendBucket"
+ ],
+ "parameters": {
+ "backendBucket": {
+ "description": "Name of the BackendBucket resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendBuckets/{backendBucket}",
+ "request": {
+ "$ref": "BackendBucket"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "ForwardingRule": {
- "id": "ForwardingRule",
- "type": "object",
- "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, ports] tuple. (== resource_for beta.forwardingRules ==) (== resource_for v1.forwardingRules ==) (== resource_for beta.globalForwardingRules ==) (== resource_for v1.globalForwardingRules ==) (== resource_for beta.regionForwardingRules ==) (== resource_for v1.regionForwardingRules ==)",
- "properties": {
- "IPAddress": {
- "type": "string",
- "description": "The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing scheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, and for regional forwarding rules, the address must live in the same region as the forwarding rule. If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral internal IP address will be automatically allocated from the IP range of the subnet or network configured for this forwarding rule.\n\nAn address can be specified either by a literal IP address or a URL reference to an existing Address resource. The following examples are all valid: \n- 100.1.2.3 \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address \n- projects/project/regions/region/addresses/address \n- regions/region/addresses/address \n- global/addresses/address \n- address"
- },
- "IPProtocol": {
- "type": "string",
- "description": "The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.\n\nWhen the load balancing scheme is INTERNAL, only TCP and UDP are valid.",
- "enum": [
- "AH",
- "ESP",
- "ICMP",
- "SCTP",
- "TCP",
- "UDP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "backendService": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the BackendService resource to receive the matched traffic."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipVersion": {
- "type": "string",
- "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6. This can only be specified for a global forwarding rule.",
- "enum": [
- "IPV4",
- "IPV6",
- "UNSPECIFIED_VERSION"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
- "default": "compute#forwardingRule"
- },
- "loadBalancingScheme": {
- "type": "string",
- "description": "This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)",
- "enum": [
- "EXTERNAL",
- "INTERNAL",
- "INVALID"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "network": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used."
- },
- "portRange": {
- "type": "string",
- "description": "This field is used along with the target field for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable ports: \n- TargetHttpProxy: 80, 8080 \n- TargetHttpsProxy: 443 \n- TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 \n- TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1883, 5222 \n- TargetVpnGateway: 500, 4500\n-"
- },
- "ports": {
- "type": "array",
- "description": "This field is used along with the backend_service field for internal load balancing.\n\nWhen the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule.\n\nYou may specify a maximum of up to 5 ports.",
- "items": {
- "type": "string"
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules."
},
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
+ "backendServices": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves the list of all BackendService resources, regional and global, available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Name of the project scoping this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/backendServices",
+ "response": {
+ "$ref": "BackendServiceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified BackendService resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.backendServices.delete",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified BackendService resource. Get a list of available backend services by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.get",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "response": {
+ "$ref": "BackendService"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for this BackendService.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.getHealth",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to which the queried instance belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}/getHealth",
+ "request": {
+ "$ref": "ResourceGroupReference"
+ },
+ "response": {
+ "$ref": "BackendServiceGroupHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "POST",
+ "id": "compute.backendServices.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of BackendService resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.backendServices.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices",
+ "response": {
+ "$ref": "BackendServiceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.backendServices.patch",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "PUT",
+ "id": "compute.backendServices.update",
+ "parameterOrder": [
+ "project",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
+ }
},
- "subnetwork": {
- "type": "string",
- "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.\n\nIf the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified."
+ "diskTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of disk types.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/diskTypes",
+ "response": {
+ "$ref": "DiskTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified disk type. Get a list of available disk types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "diskType"
+ ],
+ "parameters": {
+ "diskType": {
+ "description": "Name of the disk type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/diskTypes/{diskType}",
+ "response": {
+ "$ref": "DiskType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of disk types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.diskTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/diskTypes",
+ "response": {
+ "$ref": "DiskTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
+ }
},
- "target": {
- "type": "string",
- "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object.\n\nThis field is not used for internal load balancing."
- }
- }
- },
- "ForwardingRuleAggregatedList": {
- "id": "ForwardingRuleAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of ForwardingRulesScopedList resources.",
- "additionalProperties": {
- "$ref": "ForwardingRulesScopedList",
- "description": "Name of the scope containing this set of addresses."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#forwardingRuleAggregatedList for lists of forwarding rules.",
- "default": "compute#forwardingRuleAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "disks": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of persistent disks.",
+ "httpMethod": "GET",
+ "id": "compute.disks.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/disks",
+ "response": {
+ "$ref": "DiskAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "createSnapshot": {
+ "description": "Creates a snapshot of a specified persistent disk.",
+ "httpMethod": "POST",
+ "id": "compute.disks.createSnapshot",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to snapshot.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "guestFlush": {
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}/createSnapshot",
+ "request": {
+ "$ref": "Snapshot"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified persistent disk. Deleting a disk removes its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
+ "httpMethod": "DELETE",
+ "id": "compute.disks.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns a specified persistent disk. Get a list of available persistent disks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.disks.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "Name of the persistent disk to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}",
+ "response": {
+ "$ref": "Disk"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk with a sourceImage, a sourceSnapshot, or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
+ "httpMethod": "POST",
+ "id": "compute.disks.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "Optional. Source image to restore onto a disk.",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks",
+ "request": {
+ "$ref": "Disk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of persistent disks contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.disks.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks",
+ "response": {
+ "$ref": "DiskList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the specified persistent disk. You can only increase the size of the disk.",
+ "httpMethod": "POST",
+ "id": "compute.disks.resize",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "disk"
+ ],
+ "parameters": {
+ "disk": {
+ "description": "The name of the persistent disk.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{disk}/resize",
+ "request": {
+ "$ref": "DisksResizeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a disk. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.disks.setLabels",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/disks/{resource}/setLabels",
+ "request": {
+ "$ref": "ZoneSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "ForwardingRuleList": {
- "id": "ForwardingRuleList",
- "type": "object",
- "description": "Contains a list of ForwardingRule resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of ForwardingRule resources.",
- "items": {
- "$ref": "ForwardingRule"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#forwardingRuleList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "firewalls": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified firewall.",
+ "httpMethod": "DELETE",
+ "id": "compute.firewalls.delete",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified firewall.",
+ "httpMethod": "GET",
+ "id": "compute.firewalls.get",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "response": {
+ "$ref": "Firewall"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a firewall rule in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.firewalls.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of firewall rules available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.firewalls.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls",
+ "response": {
+ "$ref": "FirewallList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified firewall rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.firewalls.patch",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified firewall rule with the data included in the request. The PUT method can only update the following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
+ "httpMethod": "PUT",
+ "id": "compute.firewalls.update",
+ "parameterOrder": [
+ "project",
+ "firewall"
+ ],
+ "parameters": {
+ "firewall": {
+ "description": "Name of the firewall rule to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/firewalls/{firewall}",
+ "request": {
+ "$ref": "Firewall"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "ForwardingRulesScopedList": {
- "id": "ForwardingRulesScopedList",
- "type": "object",
- "properties": {
+ },
"forwardingRules": {
- "type": "array",
- "description": "List of forwarding rules contained in this scope.",
- "items": {
- "$ref": "ForwardingRule"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of forwarding rules when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of forwarding rules.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified ForwardingRule resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.forwardingRules.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified ForwardingRule resource.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "ForwardingRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.forwardingRules.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setTarget": {
+ "description": "Changes target URL for forwarding rule. The new target should be of the same type as the old target.",
+ "httpMethod": "POST",
+ "id": "compute.forwardingRules.setTarget",
+ "parameterOrder": [
+ "project",
+ "region",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource in which target is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "GlobalSetLabelsRequest": {
- "id": "GlobalSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "A list of labels to apply for this resource. Each label key & value must comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For example, \"webserver-frontend\": \"images\". A label value can also be empty (e.g. \"my-label\": \"\").",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "GuestOsFeature": {
- "id": "GuestOsFeature",
- "type": "object",
- "description": "Guest OS features.",
- "properties": {
- "type": {
- "type": "string",
- "description": "The ID of a supported feature. Read Enabling guest operating system features to see a list of available options.",
- "enum": [
- "FEATURE_TYPE_UNSPECIFIED",
- "VIRTIO_SCSI_MULTIQUEUE",
- "WINDOWS"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "HTTPHealthCheck": {
- "id": "HTTPHealthCheck",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTP health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used."
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTP health check request. The default value is /."
- }
- }
- },
- "HTTPSHealthCheck": {
- "id": "HTTPSHealthCheck",
- "type": "object",
- "properties": {
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used."
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTPS health check request. The default value is /."
- }
- }
- },
- "HealthCheck": {
- "id": "HealthCheck",
- "type": "object",
- "description": "An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in 3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "httpHealthCheck": {
- "$ref": "HTTPHealthCheck"
- },
- "httpsHealthCheck": {
- "$ref": "HTTPSHealthCheck"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#healthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sslHealthCheck": {
- "$ref": "SSLHealthCheck"
- },
- "tcpHealthCheck": {
- "$ref": "TCPHealthCheck"
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
- "format": "int32"
- },
- "type": {
- "type": "string",
- "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.",
- "enum": [
- "HTTP",
- "HTTPS",
- "INVALID",
- "SSL",
- "TCP"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HealthCheckList": {
- "id": "HealthCheckList",
- "type": "object",
- "description": "Contains a list of HealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HealthCheck resources.",
- "items": {
- "$ref": "HealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#healthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "globalAddresses": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified address resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalAddresses.delete",
+ "parameterOrder": [
+ "project",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{address}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified address resource. Get a list of available addresses by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalAddresses.get",
+ "parameterOrder": [
+ "project",
+ "address"
+ ],
+ "parameters": {
+ "address": {
+ "description": "Name of the address resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses/{address}",
+ "response": {
+ "$ref": "Address"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an address resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.globalAddresses.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses",
+ "request": {
+ "$ref": "Address"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of global addresses.",
+ "httpMethod": "GET",
+ "id": "compute.globalAddresses.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/addresses",
+ "response": {
+ "$ref": "AddressList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "HealthCheckReference": {
- "id": "HealthCheckReference",
- "type": "object",
- "description": "A full or valid partial URL to a health check. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check \n- projects/project-id/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
- "properties": {
- "healthCheck": {
- "type": "string"
- }
- }
- },
- "HealthStatus": {
- "id": "HealthStatus",
- "type": "object",
- "properties": {
- "healthState": {
- "type": "string",
- "description": "Health state of the instance.",
- "enum": [
- "HEALTHY",
- "UNHEALTHY"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "instance": {
- "type": "string",
- "description": "URL of the instance resource."
- },
- "ipAddress": {
- "type": "string",
- "description": "The IP address represented by this resource."
- },
- "port": {
- "type": "integer",
- "description": "The port on the instance.",
- "format": "int32"
- }
- }
- },
- "HostRule": {
- "id": "HostRule",
- "type": "object",
- "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
- "properties": {
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "hosts": {
- "type": "array",
- "description": "The list of host patterns to match. They must be valid hostnames, except * will match any string of ([a-z0-9-.]*). In that case, * must be the first character and must be followed in the pattern by either - or ..",
- "items": {
- "type": "string"
- }
},
- "pathMatcher": {
- "type": "string",
- "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion."
- }
- }
- },
- "HttpHealthCheck": {
- "id": "HttpHealthCheck",
- "type": "object",
- "description": "An HttpHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTP.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
- "default": "compute#httpHealthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the HTTP health check request. The default value is 80.",
- "format": "int32"
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTP health check request. The default value is /."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
- "format": "int32"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HttpHealthCheckList": {
- "id": "HttpHealthCheckList",
- "type": "object",
- "description": "Contains a list of HttpHealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HttpHealthCheck resources.",
- "items": {
- "$ref": "HttpHealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#httpHealthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "globalForwardingRules": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified GlobalForwardingRule resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalForwardingRules.delete",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified GlobalForwardingRule resource. Get a list of available forwarding rules by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalForwardingRules.get",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}",
+ "response": {
+ "$ref": "ForwardingRule"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules",
+ "request": {
+ "$ref": "ForwardingRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of GlobalForwardingRule resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.globalForwardingRules.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules",
+ "response": {
+ "$ref": "ForwardingRuleList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setTarget": {
+ "description": "Changes target URL for the GlobalForwardingRule resource. The new target should be of the same type as the old target.",
+ "httpMethod": "POST",
+ "id": "compute.globalForwardingRules.setTarget",
+ "parameterOrder": [
+ "project",
+ "forwardingRule"
+ ],
+ "parameters": {
+ "forwardingRule": {
+ "description": "Name of the ForwardingRule resource in which target is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/forwardingRules/{forwardingRule}/setTarget",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "HttpsHealthCheck": {
- "id": "HttpsHealthCheck",
- "type": "object",
- "description": "An HttpsHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTPS.",
- "properties": {
- "checkIntervalSec": {
- "type": "integer",
- "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
- "format": "int32"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "healthyThreshold": {
- "type": "integer",
- "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
- "format": "int32"
- },
- "host": {
- "type": "string",
- "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "Type of the resource.",
- "default": "compute#httpsHealthCheck"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "port": {
- "type": "integer",
- "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
- "format": "int32"
- },
- "requestPath": {
- "type": "string",
- "description": "The request path of the HTTPS health check request. The default value is \"/\"."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "timeoutSec": {
- "type": "integer",
- "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
- "format": "int32"
- },
- "unhealthyThreshold": {
- "type": "integer",
- "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
- "format": "int32"
- }
- }
- },
- "HttpsHealthCheckList": {
- "id": "HttpsHealthCheckList",
- "type": "object",
- "description": "Contains a list of HttpsHealthCheck resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of HttpsHealthCheck resources.",
- "items": {
- "$ref": "HttpsHealthCheck"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#httpsHealthCheckList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "globalOperations": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of all operations.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/operations",
+ "response": {
+ "$ref": "OperationAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.globalOperations.delete",
+ "parameterOrder": [
+ "project",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified Operations resource. Get a list of operations by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.get",
+ "parameterOrder": [
+ "project",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.globalOperations.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "Image": {
- "id": "Image",
- "type": "object",
- "description": "An Image resource. (== resource_for beta.images ==) (== resource_for v1.images ==)",
- "properties": {
- "archiveSizeBytes": {
- "type": "string",
- "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
- "format": "int64"
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "The deprecation status associated with this image."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "Size of the image when restored onto a persistent disk (in GB).",
- "format": "int64"
- },
- "family": {
- "type": "string",
- "description": "The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035."
- },
- "guestOsFeatures": {
- "type": "array",
- "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
- "items": {
- "$ref": "GuestOsFeature"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "imageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the image using a customer-supplied encryption key.\n\nAfter you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#image for images.",
- "default": "compute#image"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an image.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
- "additionalProperties": {
- "type": "string"
- }
},
- "licenses": {
- "type": "array",
- "description": "Any applicable license URI.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- },
- "rawDisk": {
- "type": "object",
- "description": "The parameters of the raw disk image.",
- "properties": {
- "containerType": {
- "type": "string",
- "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
- "enum": [
- "TAR"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "sha1Checksum": {
- "type": "string",
- "description": "An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.",
- "pattern": "[a-f0-9]{40}"
- },
- "source": {
- "type": "string",
- "description": "The full Google Cloud Storage URL where the disk image is stored. You must provide either this property or the sourceDisk property but not both.",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
+ "healthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.healthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HealthCheck resource. Get a list of available health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.healthChecks.get",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "response": {
+ "$ref": "HealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.healthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.healthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks",
+ "response": {
+ "$ref": "HealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.healthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.healthChecks.update",
+ "parameterOrder": [
+ "project",
+ "healthCheck"
+ ],
+ "parameters": {
+ "healthCheck": {
+ "description": "Name of the HealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/healthChecks/{healthCheck}",
+ "request": {
+ "$ref": "HealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sourceDisk": {
- "type": "string",
- "description": "URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk"
- },
- "sourceDiskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
- },
- "sourceDiskId": {
- "type": "string",
- "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name."
- },
- "sourceImage": {
- "type": "string",
- "description": "URL of the source image used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image."
- },
- "sourceImageEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
- },
- "sourceImageId": {
- "type": "string",
- "description": "[Output Only] The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name."
- },
- "sourceType": {
- "type": "string",
- "description": "The type of the image used to create this disk. The default and only value is RAW",
- "default": "RAW",
- "enum": [
- "RAW"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
- "enum": [
- "FAILED",
- "PENDING",
- "READY"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "ImageList": {
- "id": "ImageList",
- "type": "object",
- "description": "Contains a list of images.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Image resources.",
- "items": {
- "$ref": "Image"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#imageList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ },
+ "httpHealthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HttpHealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.httpHealthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HttpHealthCheck resource. Get a list of available HTTP health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.httpHealthChecks.get",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "response": {
+ "$ref": "HttpHealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.httpHealthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HttpHealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.httpHealthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks",
+ "response": {
+ "$ref": "HttpHealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.httpHealthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.httpHealthChecks.update",
+ "parameterOrder": [
+ "project",
+ "httpHealthCheck"
+ ],
+ "parameters": {
+ "httpHealthCheck": {
+ "description": "Name of the HttpHealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
+ "request": {
+ "$ref": "HttpHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "Instance": {
- "id": "Instance",
- "type": "object",
- "description": "An Instance resource. (== resource_for beta.instances ==) (== resource_for v1.instances ==)",
- "properties": {
- "canIpForward": {
- "type": "boolean",
- "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding."
- },
- "cpuPlatform": {
- "type": "string",
- "description": "[Output Only] The CPU platform used by this instance."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deletionProtection": {
- "type": "boolean",
- "description": "Whether the resource should be protected against deletion."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
},
- "disks": {
- "type": "array",
- "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
- "items": {
- "$ref": "AttachedDisk"
- }
- },
- "guestAccelerators": {
- "type": "array",
- "description": "List of the type and count of accelerator cards attached to the instance.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#instance for instances.",
- "default": "compute#instance"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "machineType": {
- "type": "string",
- "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type:\n\nzones/us-central1-f/machineTypes/n1-standard-1 \n\nTo create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):\n\nzones/zone/machineTypes/custom-CPUS-MEMORY \n\nFor example: zones/us-central1-f/machineTypes/custom-4-5120 \n\nFor a full list of restrictions, read the Specifications for custom machine types.",
- "annotations": {
- "required": [
- "compute.instances.insert"
- ]
- }
- },
- "metadata": {
- "$ref": "Metadata",
- "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
- },
- "minCpuPlatform": {
- "type": "string",
- "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\"."
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instances.insert"
- ]
- }
- },
- "networkInterfaces": {
- "type": "array",
- "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
- "items": {
- "$ref": "NetworkInterface"
- }
- },
- "scheduling": {
- "$ref": "Scheduling",
- "description": "Sets the scheduling options for this instance."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "serviceAccounts": {
- "type": "array",
- "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.\n\nService accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
- "items": {
- "$ref": "ServiceAccount"
- }
- },
- "startRestricted": {
- "type": "boolean",
- "description": "[Output Only] Whether a VM has been restricted for start because Compute Engine has detected suspicious activity."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING, SUSPENDED, and TERMINATED.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable explanation of the status."
- },
- "tags": {
- "$ref": "Tags",
- "description": "A list of tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the instance resides."
- }
- }
- },
- "InstanceAggregatedList": {
- "id": "InstanceAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstancesScopedList resources.",
- "additionalProperties": {
- "$ref": "InstancesScopedList",
- "description": "[Output Only] Name of the scope containing this set of instances."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceAggregatedList for aggregated lists of Instance resources.",
- "default": "compute#instanceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroup": {
- "id": "InstanceGroup",
- "type": "object",
- "description": "InstanceGroups (== resource_for beta.instanceGroups ==) (== resource_for v1.instanceGroups ==) (== resource_for beta.regionInstanceGroups ==) (== resource_for v1.regionInstanceGroups ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this instance group in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "[Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this instance group, generated by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroup for instance groups.",
- "default": "compute#instanceGroup"
- },
- "name": {
- "type": "string",
- "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert"
- ]
- }
- },
- "namedPorts": {
- "type": "array",
- "description": "Assigns a name to a port number. For example: {name: \"http\", port: 80}\n\nThis allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] \n\nNamed ports apply to all instances in this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "network": {
- "type": "string",
- "description": "The URL of the network to which all instances in the instance group belong."
- },
- "region": {
- "type": "string",
- "description": "The URL of the region where the instance group is located (for regional resources)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this instance group. The server generates this URL."
- },
- "size": {
- "type": "integer",
- "description": "[Output Only] The total number of instances in the instance group.",
- "format": "int32"
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the subnetwork to which all instances in the instance group belong."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the instance group is located (for zonal resources)."
- }
- }
- },
- "InstanceGroupAggregatedList": {
- "id": "InstanceGroupAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstanceGroupsScopedList resources.",
- "additionalProperties": {
- "$ref": "InstanceGroupsScopedList",
- "description": "The name of the scope that contains this set of instance groups."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupAggregatedList for aggregated lists of instance groups.",
- "default": "compute#instanceGroupAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupList": {
- "id": "InstanceGroupList",
- "type": "object",
- "description": "A list of InstanceGroup resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroup resources.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupList for instance group lists.",
- "default": "compute#instanceGroupList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "httpsHealthChecks": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified HttpsHealthCheck resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.httpsHealthChecks.delete",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified HttpsHealthCheck resource. Get a list of available HTTPS health checks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.httpsHealthChecks.get",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "response": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.httpsHealthChecks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of HttpsHealthCheck resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.httpsHealthChecks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks",
+ "response": {
+ "$ref": "HttpsHealthCheckList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.httpsHealthChecks.patch",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.httpsHealthChecks.update",
+ "parameterOrder": [
+ "project",
+ "httpsHealthCheck"
+ ],
+ "parameters": {
+ "httpsHealthCheck": {
+ "description": "Name of the HttpsHealthCheck resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
+ "request": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManager": {
- "id": "InstanceGroupManager",
- "type": "object",
- "description": "An Instance Group Manager resource. (== resource_for beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers ==) (== resource_for beta.regionInstanceGroupManagers ==) (== resource_for v1.regionInstanceGroupManagers ==)",
- "properties": {
- "baseInstanceName": {
- "type": "string",
- "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
- "pattern": "[a-z][-a-z0-9]{0,57}",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert"
- ]
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this managed instance group in RFC3339 text format."
- },
- "currentActions": {
- "$ref": "InstanceGroupManagerActionsSummary",
- "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "[Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.",
- "format": "byte"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this resource type. The server generates this identifier.",
- "format": "uint64"
- },
- "instanceGroup": {
- "type": "string",
- "description": "[Output Only] The URL of the Instance Group resource."
- },
- "instanceTemplate": {
- "type": "string",
- "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.",
- "default": "compute#instanceGroupManager"
- },
- "name": {
- "type": "string",
- "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.insert"
- ]
- }
- },
- "namedPorts": {
- "type": "array",
- "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] The URL of the region where the managed instance group resides (for regional resources)."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this managed instance group. The server defines this URL."
},
- "targetPools": {
- "type": "array",
- "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
- "items": {
- "type": "string"
- }
- },
- "targetSize": {
- "type": "integer",
- "description": "The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.",
- "format": "int32",
- "annotations": {
- "required": [
- "compute.instanceGroupManagers.insert",
- "compute.regionInstanceGroupManagers.insert"
- ]
- }
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the managed instance group is located (for zonal resources)."
- }
- }
- },
- "InstanceGroupManagerActionsSummary": {
- "id": "InstanceGroupManagerActionsSummary",
- "type": "object",
- "properties": {
- "abandoning": {
- "type": "integer",
- "description": "[Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.",
- "format": "int32"
- },
- "creating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.\n\nIf you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.",
- "format": "int32"
- },
- "creatingWithoutRetries": {
- "type": "integer",
- "description": "[Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.",
- "format": "int32"
- },
- "deleting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.",
- "format": "int32"
- },
- "none": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.",
- "format": "int32"
- },
- "recreating": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.",
- "format": "int32"
- },
- "refreshing": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.",
- "format": "int32"
- },
- "restarting": {
- "type": "integer",
- "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.",
- "format": "int32"
- }
- }
- },
- "InstanceGroupManagerAggregatedList": {
- "id": "InstanceGroupManagerAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InstanceGroupManagersScopedList resources.",
- "additionalProperties": {
- "$ref": "InstanceGroupManagersScopedList",
- "description": "[Output Only] The name of the scope that contains this set of managed instance groups."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerAggregatedList for an aggregated list of managed instance groups.",
- "default": "compute#instanceGroupManagerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupManagerList": {
- "id": "InstanceGroupManagerList",
- "type": "object",
- "description": "[Output Only] A list of managed instance groups.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroupManager resources.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups.",
- "default": "compute#instanceGroupManagerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "images": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified image.",
+ "httpMethod": "DELETE",
+ "id": "compute.images.delete",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Name of the image resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deprecate": {
+ "description": "Sets the deprecation status of an image.\n\nIf an empty request body is given, clears the deprecation status instead.",
+ "httpMethod": "POST",
+ "id": "compute.images.deprecate",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Image name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}/deprecate",
+ "request": {
+ "$ref": "DeprecationStatus"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified image. Get a list of available images by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.images.get",
+ "parameterOrder": [
+ "project",
+ "image"
+ ],
+ "parameters": {
+ "image": {
+ "description": "Name of the image resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{image}",
+ "response": {
+ "$ref": "Image"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getFromFamily": {
+ "description": "Returns the latest image that is part of an image family and is not deprecated.",
+ "httpMethod": "GET",
+ "id": "compute.images.getFromFamily",
+ "parameterOrder": [
+ "project",
+ "family"
+ ],
+ "parameters": {
+ "family": {
+ "description": "Name of the image family to search for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/family/{family}",
+ "response": {
+ "$ref": "Image"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an image in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.images.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "forceCreate": {
+ "description": "Force image creation if true.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images",
+ "request": {
+ "$ref": "Image"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of custom images available to the specified project. Custom images are images you create that belong to your project. This method does not get any images that belong to other projects, including publicly-available images, like Debian 8. If you want to get a list of publicly-available images, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
+ "httpMethod": "GET",
+ "id": "compute.images.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images",
+ "response": {
+ "$ref": "ImageList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on an image. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.images.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/images/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManagersAbandonInstancesRequest": {
- "id": "InstanceGroupManagersAbandonInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersDeleteInstancesRequest": {
- "id": "InstanceGroupManagersDeleteInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersListManagedInstancesResponse": {
- "id": "InstanceGroupManagersListManagedInstancesResponse",
- "type": "object",
- "properties": {
- "managedInstances": {
- "type": "array",
- "description": "[Output Only] The list of instances in the managed instance group.",
- "items": {
- "$ref": "ManagedInstance"
- }
- }
- }
- },
- "InstanceGroupManagersRecreateInstancesRequest": {
- "id": "InstanceGroupManagersRecreateInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupManagersScopedList": {
- "id": "InstanceGroupManagersScopedList",
- "type": "object",
- "properties": {
+ },
"instanceGroupManagers": {
- "type": "array",
- "description": "[Output Only] The list of managed instance groups that are contained in the specified project and zone.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] The warning that replaces the list of managed instance groups when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "abandonInstances": {
+ "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.abandonInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersAbandonInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of managed instance groups and groups them by zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instanceGroupManagers",
+ "response": {
+ "$ref": "InstanceGroupManagerAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read Deleting an instance group for more information.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceGroupManagers.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteInstances": {
+ "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.deleteInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersDeleteInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns all of the details about the specified managed instance group. Get a list of available managed instance groups by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "InstanceGroupManager"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of managed instance groups that are contained within the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroupManagers.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers",
+ "response": {
+ "$ref": "InstanceGroupManagerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listManagedInstances": {
+ "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.listManagedInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
+ "response": {
+ "$ref": "InstanceGroupManagersListManagedInstancesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "recreateInstances": {
+ "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.recreateInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
+ "request": {
+ "$ref": "InstanceGroupManagersRecreateInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resize": {
+ "description": "Resizes the managed instance group. If you increase the size, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.resize",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager",
+ "size"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "size": {
+ "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
+ "format": "int32",
+ "location": "query",
+ "required": true,
+ "type": "integer"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setInstanceTemplate": {
+ "description": "Specifies the instance template to use when creating new instances in this group. The templates for existing instances in the group do not change unless you recreate them.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setInstanceTemplate",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
+ "request": {
+ "$ref": "InstanceGroupManagersSetInstanceTemplateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTargetPools": {
+ "description": "Modifies the target pools to which all instances in this managed instance group are assigned. The target pools automatically apply to all of the instances in the managed instance group. This operation is marked DONE when you make the request even if the instances have not yet been added to their target pools. The change might take some time to apply to all of the instances in the group depending on the size of the group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroupManagers.setTargetPools",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the managed instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
+ "request": {
+ "$ref": "InstanceGroupManagersSetTargetPoolsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceGroupManagersSetInstanceTemplateRequest": {
- "id": "InstanceGroupManagersSetInstanceTemplateRequest",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group."
- }
- }
- },
- "InstanceGroupManagersSetTargetPoolsRequest": {
- "id": "InstanceGroupManagersSetTargetPoolsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the target pools information. Use this optional property to prevent conflicts when multiple users change the target pools settings concurrently. Obtain the fingerprint with the instanceGroupManagers.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
},
- "targetPools": {
- "type": "array",
- "description": "The list of target pool URLs that instances in this managed instance group belong to. The managed instance group applies these target pools to all of the instances in the group. Existing instances and new instances in the group all receive these target pool settings.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstanceGroupsAddInstancesRequest": {
- "id": "InstanceGroupsAddInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances to add to the instance group.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "InstanceGroupsListInstances": {
- "id": "InstanceGroupsListInstances",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceWithNamedPorts resources.",
- "items": {
- "$ref": "InstanceWithNamedPorts"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupsListInstances for the list of instances in the specified instance group.",
- "default": "compute#instanceGroupsListInstances"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupsListInstancesRequest": {
- "id": "InstanceGroupsListInstancesRequest",
- "type": "object",
- "properties": {
- "instanceState": {
- "type": "string",
- "description": "A filter for the state of the instances in the instance group. Valid options are ALL or RUNNING. If you do not specify this parameter the list includes all instances regardless of their state.",
- "enum": [
- "ALL",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "InstanceGroupsRemoveInstancesRequest": {
- "id": "InstanceGroupsRemoveInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The list of instances to remove from the instance group.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "InstanceGroupsScopedList": {
- "id": "InstanceGroupsScopedList",
- "type": "object",
- "properties": {
"instanceGroups": {
- "type": "array",
- "description": "[Output Only] The list of instance groups that are contained in this scope.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that replaces the list of instance groups when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceGroupsSetNamedPortsRequest": {
- "id": "InstanceGroupsSetNamedPortsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
- },
- "namedPorts": {
- "type": "array",
- "description": "The list of named ports to set for this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- }
- }
- },
- "InstanceList": {
- "id": "InstanceList",
- "type": "object",
- "description": "Contains a list of instances.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Instance resources.",
- "items": {
- "$ref": "Instance"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#instanceList for lists of Instance resources.",
- "default": "compute#instanceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "methods": {
+ "addInstances": {
+ "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork. Read Adding instances for more information.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.addInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where you are adding instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
+ "request": {
+ "$ref": "InstanceGroupsAddInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves the list of instance groups and sorts them by zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instanceGroups",
+ "response": {
+ "$ref": "InstanceGroupAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read Deleting an instance group for more information.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceGroups.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified instance group. Get a list of available instance groups by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "InstanceGroup"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where you want to create the instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups",
+ "request": {
+ "$ref": "InstanceGroup"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instance groups that are located in the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceGroups.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups",
+ "response": {
+ "$ref": "InstanceGroupList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listInstances": {
+ "description": "Lists the instances in the specified instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.listInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "The name of the instance group from which you want to generate a list of included instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances",
+ "request": {
+ "$ref": "InstanceGroupsListInstancesRequest"
+ },
+ "response": {
+ "$ref": "InstanceGroupsListInstances"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "removeInstances": {
+ "description": "Removes one or more instances from the specified instance group, but does not delete those instances.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.removeInstances",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where the specified instances will be removed.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances",
+ "request": {
+ "$ref": "InstanceGroupsRemoveInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setNamedPorts": {
+ "description": "Sets the named ports for the specified instance group.",
+ "httpMethod": "POST",
+ "id": "compute.instanceGroups.setNamedPorts",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the instance group where the named ports are updated.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone where the instance group is located.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts",
+ "request": {
+ "$ref": "InstanceGroupsSetNamedPortsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "InstanceMoveRequest": {
- "id": "InstanceMoveRequest",
- "type": "object",
- "properties": {
- "destinationZone": {
- "type": "string",
- "description": "The URL of the destination zone to move the instance. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone"
- },
- "targetInstance": {
- "type": "string",
- "description": "The URL of the target instance to move. This can be a full or partial URL. For example, the following are all valid URLs to an instance: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance"
- }
- }
- },
- "InstanceProperties": {
- "id": "InstanceProperties",
- "type": "object",
- "description": "",
- "properties": {
- "canIpForward": {
- "type": "boolean",
- "description": "Enables instances created based on this template to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information."
- },
- "description": {
- "type": "string",
- "description": "An optional text description for the instances that are created from this instance template."
},
- "disks": {
- "type": "array",
- "description": "An array of disks that are associated with the instances that are created from this template.",
- "items": {
- "$ref": "AttachedDisk"
- }
- },
- "guestAccelerators": {
- "type": "array",
- "description": "A list of guest accelerator cards' type and count to use for instances created from the instance template.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to instances that are created from this template.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "machineType": {
- "type": "string",
- "description": "The machine type to use for instances that are created from this template.",
- "annotations": {
- "required": [
- "compute.instanceTemplates.insert"
- ]
- }
- },
- "metadata": {
- "$ref": "Metadata",
- "description": "The metadata key/value pairs to assign to instances that are created from this template. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
- },
- "minCpuPlatform": {
- "type": "string",
- "description": "Minimum cpu/platform to be used by this instance. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform."
- },
- "networkInterfaces": {
- "type": "array",
- "description": "An array of network access configurations for this interface.",
- "items": {
- "$ref": "NetworkInterface"
- }
- },
- "scheduling": {
- "$ref": "Scheduling",
- "description": "Specifies the scheduling options for the instances that are created from this template."
- },
- "serviceAccounts": {
- "type": "array",
- "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this template. Use metadata queries to obtain the access tokens for these instances.",
- "items": {
- "$ref": "ServiceAccount"
- }
- },
- "tags": {
- "$ref": "Tags",
- "description": "A list of tags to apply to the instances that are created from this template. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
- }
- }
- },
- "InstanceReference": {
- "id": "InstanceReference",
- "type": "object",
- "properties": {
- "instance": {
- "type": "string",
- "description": "The URL for a specific instance."
- }
- }
- },
- "InstanceTemplate": {
- "id": "InstanceTemplate",
- "type": "object",
- "description": "An Instance Template resource. (== resource_for beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] The creation timestamp for this instance template in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] A unique identifier for this instance template. The server defines this identifier.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceTemplate for instance templates.",
- "default": "compute#instanceTemplate"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.instanceTemplates.insert"
- ]
- }
- },
- "properties": {
- "$ref": "InstanceProperties",
- "description": "The instance properties for this instance template."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] The URL for this instance template. The server defines this URL."
- }
- }
- },
- "InstanceTemplateList": {
- "id": "InstanceTemplateList",
- "type": "object",
- "description": "A list of instance templates.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceTemplate resources.",
- "items": {
- "$ref": "InstanceTemplate"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceTemplatesListResponse for instance template lists.",
- "default": "compute#instanceTemplateList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InstanceWithNamedPorts": {
- "id": "InstanceWithNamedPorts",
- "type": "object",
- "properties": {
- "instance": {
- "type": "string",
- "description": "[Output Only] The URL of the instance."
- },
- "namedPorts": {
- "type": "array",
- "description": "[Output Only] The named ports that belong to this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the instance.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "InstancesScopedList": {
- "id": "InstancesScopedList",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "[Output Only] List of instances contained in this scope.",
- "items": {
- "$ref": "Instance"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of instances when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "instanceTemplates": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified instance template. Deleting an instance template is permanent and cannot be undone. It's not possible to delete templates which are in use by an instance group.",
+ "httpMethod": "DELETE",
+ "id": "compute.instanceTemplates.delete",
+ "parameterOrder": [
+ "project",
+ "instanceTemplate"
+ ],
+ "parameters": {
+ "instanceTemplate": {
+ "description": "The name of the instance template to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{instanceTemplate}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified instance template. Get a list of available instance templates by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instanceTemplates.get",
+ "parameterOrder": [
+ "project",
+ "instanceTemplate"
+ ],
+ "parameters": {
+ "instanceTemplate": {
+ "description": "The name of the instance template.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates/{instanceTemplate}",
+ "response": {
+ "$ref": "InstanceTemplate"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
+ "httpMethod": "POST",
+ "id": "compute.instanceTemplates.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates",
+ "request": {
+ "$ref": "InstanceTemplate"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.instanceTemplates.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/instanceTemplates",
+ "response": {
+ "$ref": "InstanceTemplateList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "InstancesSetLabelsRequest": {
- "id": "InstancesSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "Fingerprint of the previous set of labels for this resource, used to prevent conflicts. Provide the latest fingerprint value when making a request to add or change labels.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- },
- "InstancesSetMachineResourcesRequest": {
- "id": "InstancesSetMachineResourcesRequest",
- "type": "object",
- "properties": {
- "guestAccelerators": {
- "type": "array",
- "description": "List of the type and count of accelerator cards attached to the instance.",
- "items": {
- "$ref": "AcceleratorConfig"
- }
- }
- }
- },
- "InstancesSetMachineTypeRequest": {
- "id": "InstancesSetMachineTypeRequest",
- "type": "object",
- "properties": {
- "machineType": {
- "type": "string",
- "description": "Full or partial URL of the machine type resource. See Machine Types for a full list of machine types. For example: zones/us-central1-f/machineTypes/n1-standard-1"
- }
- }
- },
- "InstancesSetMinCpuPlatformRequest": {
- "id": "InstancesSetMinCpuPlatformRequest",
- "type": "object",
- "properties": {
- "minCpuPlatform": {
- "type": "string",
- "description": "Minimum cpu/platform this instance should be started at."
- }
- }
- },
- "InstancesSetServiceAccountRequest": {
- "id": "InstancesSetServiceAccountRequest",
- "type": "object",
- "properties": {
- "email": {
- "type": "string",
- "description": "Email address of the service account."
- },
- "scopes": {
- "type": "array",
- "description": "The list of scopes to be made available for this service account.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "InstancesStartWithEncryptionKeyRequest": {
- "id": "InstancesStartWithEncryptionKeyRequest",
- "type": "object",
- "properties": {
- "disks": {
- "type": "array",
- "description": "Array of disks associated with this instance that are protected with a customer-supplied encryption key.\n\nIn order to start the instance, the disk url and its corresponding key must be provided.\n\nIf the disk is not protected with a customer-supplied encryption key it should not be specified.",
- "items": {
- "$ref": "CustomerEncryptionKeyProtectedDisk"
- }
- }
- }
- },
- "Interconnect": {
- "id": "Interconnect",
- "type": "object",
- "description": "Represents an Interconnects resource. The Interconnects resource is a dedicated connection between Google's network and your on-premises network. For more information, see the Dedicated overview page. (== resource_for v1.interconnects ==) (== resource_for beta.interconnects ==)",
- "properties": {
- "adminEnabled": {
- "type": "boolean",
- "description": "Administrative status of the interconnect. When this is set to true, the Interconnect is functional and can carry traffic. When set to false, no packets can be carried over the interconnect and no BGP routes are exchanged over it. By default, the status is set to true."
- },
- "circuitInfos": {
- "type": "array",
- "description": "[Output Only] List of CircuitInfo objects, that describe the individual circuits in this LAG.",
- "items": {
- "$ref": "InterconnectCircuitInfo"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customerName": {
- "type": "string",
- "description": "Customer name, to put in the Letter of Authorization as the party authorized to request a crossconnect."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "expectedOutages": {
- "type": "array",
- "description": "[Output Only] List of outages expected for this Interconnect.",
- "items": {
- "$ref": "InterconnectOutageNotification"
- }
- },
- "googleIpAddress": {
- "type": "string",
- "description": "[Output Only] IP address configured on the Google side of the Interconnect link. This can be used only for ping tests."
- },
- "googleReferenceId": {
- "type": "string",
- "description": "[Output Only] Google reference ID; to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
},
- "interconnectAttachments": {
- "type": "array",
- "description": "[Output Only] A list of the URLs of all InterconnectAttachments configured to use this Interconnect.",
- "items": {
- "type": "string"
- }
- },
- "interconnectType": {
- "type": "string",
- "description": "Type of interconnect. Note that \"IT_PRIVATE\" has been deprecated in favor of \"DEDICATED\"",
- "enum": [
- "DEDICATED",
- "IT_PRIVATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnect for interconnects.",
- "default": "compute#interconnect"
- },
- "linkType": {
- "type": "string",
- "description": "Type of link requested. This field indicates speed of each of the links in the bundle, not the entire bundle. Only 10G per link is allowed for a dedicated interconnect. Options: Ethernet_10G_LR",
- "enum": [
- "LINK_TYPE_ETHERNET_10G_LR"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "location": {
- "type": "string",
- "description": "URL of the InterconnectLocation object that represents where this connection is to be provisioned."
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.interconnects.insert"
- ]
- }
- },
- "nocContactEmail": {
- "type": "string",
- "description": "Email address to contact the customer NOC for operations and maintenance notifications regarding this Interconnect. If specified, this will be used for notifications in addition to all other forms described, such as Stackdriver logs alerting and Cloud Notifications."
- },
- "operationalStatus": {
- "type": "string",
- "description": "[Output Only] The current status of whether or not this Interconnect is functional.",
- "enum": [
- "OS_ACTIVE",
- "OS_UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "peerIpAddress": {
- "type": "string",
- "description": "[Output Only] IP address configured on the customer side of the Interconnect link. The customer should configure this IP address during turnup when prompted by Google NOC. This can be used only for ping tests."
- },
- "provisionedLinkCount": {
- "type": "integer",
- "description": "[Output Only] Number of links actually provisioned in this interconnect.",
- "format": "int32"
- },
- "requestedLinkCount": {
- "type": "integer",
- "description": "Target number of physical links in the link bundle, as requested by the customer.",
- "format": "int32"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "InterconnectAttachment": {
- "id": "InterconnectAttachment",
- "type": "object",
- "description": "Represents an InterconnectAttachment (VLAN attachment) resource. For more information, see Creating VLAN Attachments. (== resource_for beta.interconnectAttachments ==) (== resource_for v1.interconnectAttachments ==)",
- "properties": {
- "cloudRouterIpAddress": {
- "type": "string",
- "description": "[Output Only] IPv4 address + prefix length to be configured on Cloud Router Interface for this interconnect attachment."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "customerRouterIpAddress": {
- "type": "string",
- "description": "[Output Only] IPv4 address + prefix length to be configured on the customer router subinterface for this interconnect attachment."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource."
- },
- "googleReferenceId": {
- "type": "string",
- "description": "[Output Only] Google reference ID, to be used when raising support tickets with Google or otherwise to debug backend connectivity issues."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "interconnect": {
- "type": "string",
- "description": "URL of the underlying Interconnect object that this attachment's traffic will traverse through."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnectAttachment for interconnect attachments.",
- "default": "compute#interconnectAttachment"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "operationalStatus": {
- "type": "string",
- "description": "[Output Only] The current status of whether or not this interconnect attachment is functional.",
- "enum": [
- "OS_ACTIVE",
- "OS_UNPROVISIONED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "privateInterconnectInfo": {
- "$ref": "InterconnectAttachmentPrivateInfo",
- "description": "[Output Only] Information specific to an InterconnectAttachment. This property is populated if the interconnect that this is attached to is of type DEDICATED."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the regional interconnect attachment resides."
- },
- "router": {
- "type": "string",
- "description": "URL of the cloud router to be used for dynamic routing. This router must be in the same region as this InterconnectAttachment. The InterconnectAttachment will automatically connect the Interconnect to the network & region within which the Cloud Router is configured."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "InterconnectAttachmentAggregatedList": {
- "id": "InterconnectAttachmentAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of InterconnectAttachmentsScopedList resources.",
- "additionalProperties": {
- "$ref": "InterconnectAttachmentsScopedList",
- "description": "Name of the scope containing this set of interconnect attachments."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentAggregatedList for aggregated lists of interconnect attachments.",
- "default": "compute#interconnectAttachmentAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectAttachmentList": {
- "id": "InterconnectAttachmentList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnect attachments.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InterconnectAttachment resources.",
- "items": {
- "$ref": "InterconnectAttachment"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectAttachmentList for lists of interconnect attachments.",
- "default": "compute#interconnectAttachmentList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectAttachmentPrivateInfo": {
- "id": "InterconnectAttachmentPrivateInfo",
- "type": "object",
- "description": "Information for an interconnect attachment when this belongs to an interconnect of type DEDICATED.",
- "properties": {
- "tag8021q": {
- "type": "integer",
- "description": "[Output Only] 802.1q encapsulation tag to be used for traffic between Google and the customer, going to and from this network and region.",
- "format": "uint32"
- }
- }
- },
- "InterconnectAttachmentsScopedList": {
- "id": "InterconnectAttachmentsScopedList",
- "type": "object",
- "properties": {
- "interconnectAttachments": {
- "type": "array",
- "description": "List of interconnect attachments contained in this scope.",
- "items": {
- "$ref": "InterconnectAttachment"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectCircuitInfo": {
- "id": "InterconnectCircuitInfo",
- "type": "object",
- "description": "Describes a single physical circuit between the Customer and Google. CircuitInfo objects are created by Google, so all fields are output only. Next id: 4",
- "properties": {
- "customerDemarcId": {
- "type": "string",
- "description": "Customer-side demarc ID for this circuit."
- },
- "googleCircuitId": {
- "type": "string",
- "description": "Google-assigned unique ID for this circuit. Assigned at circuit turn-up."
- },
- "googleDemarcId": {
- "type": "string",
- "description": "Google-side demarc ID for this circuit. Assigned at circuit turn-up and provided by Google to the customer in the LOA."
- }
- }
- },
- "InterconnectList": {
- "id": "InterconnectList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnects.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Interconnect resources.",
- "items": {
- "$ref": "Interconnect"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectList for lists of interconnects.",
- "default": "compute#interconnectList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectLocation": {
- "id": "InterconnectLocation",
- "type": "object",
- "description": "Represents an InterconnectLocations resource. The InterconnectLocations resource describes the locations where you can connect to Google's networks. For more information, see Colocation Facilities.",
- "properties": {
- "address": {
- "type": "string",
- "description": "[Output Only] The postal address of the Point of Presence, each line in the address is separated by a newline character."
- },
- "availabilityZone": {
- "type": "string",
- "description": "[Output Only] Availability zone for this location. Within a metropolitan area (metro), maintenance will not be simultaneously scheduled in more than one availability zone. Example: \"zone1\" or \"zone2\"."
- },
- "city": {
- "type": "string",
- "description": "[Output Only] Metropolitan area designator that indicates which city an interconnect is located. For example: \"Chicago, IL\", \"Amsterdam, Netherlands\"."
- },
- "continent": {
- "type": "string",
- "description": "[Output Only] Continent for this location.",
- "enum": [
- "AFRICA",
- "ASIA_PAC",
- "C_AFRICA",
- "C_ASIA_PAC",
- "C_EUROPE",
- "C_NORTH_AMERICA",
- "C_SOUTH_AMERICA",
- "EUROPE",
- "NORTH_AMERICA",
- "SOUTH_AMERICA"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional description of the resource."
- },
- "facilityProvider": {
- "type": "string",
- "description": "[Output Only] The name of the provider for this facility (e.g., EQUINIX)."
- },
- "facilityProviderFacilityId": {
- "type": "string",
- "description": "[Output Only] A provider-assigned Identifier for this facility (e.g., Ashburn-DC1)."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#interconnectLocation for interconnect locations.",
- "default": "compute#interconnectLocation"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "peeringdbFacilityId": {
- "type": "string",
- "description": "[Output Only] The peeringdb identifier for this facility (corresponding with a netfac type in peeringdb)."
- },
- "regionInfos": {
- "type": "array",
- "description": "[Output Only] A list of InterconnectLocation.RegionInfo objects, that describe parameters pertaining to the relation between this InterconnectLocation and various Google Cloud regions.",
- "items": {
- "$ref": "InterconnectLocationRegionInfo"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "InterconnectLocationList": {
- "id": "InterconnectLocationList",
- "type": "object",
- "description": "Response to the list request, and contains a list of interconnect locations.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InterconnectLocation resources.",
- "items": {
- "$ref": "InterconnectLocation"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#interconnectLocationList for lists of interconnect locations.",
- "default": "compute#interconnectLocationList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "InterconnectLocationRegionInfo": {
- "id": "InterconnectLocationRegionInfo",
- "type": "object",
- "description": "Information about any potential InterconnectAttachments between an Interconnect at a specific InterconnectLocation, and a specific Cloud Region.",
- "properties": {
- "expectedRttMs": {
- "type": "string",
- "description": "Expected round-trip time in milliseconds, from this InterconnectLocation to a VM in this region.",
- "format": "int64"
- },
- "locationPresence": {
- "type": "string",
- "description": "Identifies the network presence of this location.",
- "enum": [
- "GLOBAL",
- "LOCAL_REGION",
- "LP_GLOBAL",
- "LP_LOCAL_REGION"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "region": {
- "type": "string",
- "description": "URL for the region of this location."
- }
- }
- },
- "InterconnectOutageNotification": {
- "id": "InterconnectOutageNotification",
- "type": "object",
- "description": "Description of a planned outage on this Interconnect. Next id: 9",
- "properties": {
- "affectedCircuits": {
- "type": "array",
- "description": "Iff issue_type is IT_PARTIAL_OUTAGE, a list of the Google-side circuit IDs that will be affected.",
- "items": {
- "type": "string"
- }
- },
- "description": {
- "type": "string",
- "description": "A description about the purpose of the outage."
- },
- "endTime": {
- "type": "string",
- "description": "Scheduled end time for the outage (milliseconds since Unix epoch).",
- "format": "int64"
- },
- "issueType": {
- "type": "string",
- "description": "Form this outage is expected to take. Note that the \"IT_\" versions of this enum have been deprecated in favor of the unprefixed values.",
- "enum": [
- "IT_OUTAGE",
- "IT_PARTIAL_OUTAGE",
- "OUTAGE",
- "PARTIAL_OUTAGE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "name": {
- "type": "string",
- "description": "Unique identifier for this outage notification."
- },
- "source": {
- "type": "string",
- "description": "The party that generated this notification. Note that \"NSRC_GOOGLE\" has been deprecated in favor of \"GOOGLE\"",
- "enum": [
- "GOOGLE",
- "NSRC_GOOGLE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "startTime": {
- "type": "string",
- "description": "Scheduled start time for the outage (milliseconds since Unix epoch).",
- "format": "int64"
- },
- "state": {
- "type": "string",
- "description": "State of this notification. Note that the \"NS_\" versions of this enum have been deprecated in favor of the unprefixed values.",
- "enum": [
- "ACTIVE",
- "CANCELLED",
- "NS_ACTIVE",
- "NS_CANCELED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "License": {
- "id": "License",
- "type": "object",
- "description": "A license resource.",
- "properties": {
- "chargesUseFee": {
- "type": "boolean",
- "description": "[Output Only] Deprecated. This field no longer reflects whether a license charges a usage fee."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#license for licenses.",
- "default": "compute#license"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource. The name is 1-63 characters long and complies with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.images.insert"
- ]
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "MachineType": {
- "id": "MachineType",
- "type": "object",
- "description": "A Machine Type resource. (== resource_for v1.machineTypes ==) (== resource_for beta.machineTypes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this machine type."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the resource."
- },
- "guestCpus": {
- "type": "integer",
- "description": "[Output Only] The number of virtual CPUs that are available to the instance.",
- "format": "int32"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "imageSpaceGb": {
- "type": "integer",
- "description": "[Deprecated] This property is deprecated and will never be populated with any relevant values.",
- "format": "int32"
- },
- "isSharedCpu": {
- "type": "boolean",
- "description": "[Output Only] Whether this machine type has a shared CPU. See Shared-core machine types for more information."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#machineType for machine types.",
- "default": "compute#machineType"
- },
- "maximumPersistentDisks": {
- "type": "integer",
- "description": "[Output Only] Maximum persistent disks allowed.",
- "format": "int32"
- },
- "maximumPersistentDisksSizeGb": {
- "type": "string",
- "description": "[Output Only] Maximum total persistent disks size (GB) allowed.",
- "format": "int64"
- },
- "memoryMb": {
- "type": "integer",
- "description": "[Output Only] The amount of physical memory available to the instance, defined in MB.",
- "format": "int32"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "scratchDisks": {
- "type": "array",
- "description": "[Output Only] List of extended scratch disks assigned to the instance.",
- "items": {
- "type": "object",
- "properties": {
- "diskGb": {
- "type": "integer",
- "description": "Size of the scratch disk, defined in GB.",
- "format": "int32"
- }
+ "instances": {
+ "methods": {
+ "addAccessConfig": {
+ "description": "Adds an access config to an instance's network interface.",
+ "httpMethod": "POST",
+ "id": "compute.instances.addAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface to add to this instance.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/addAccessConfig",
+ "request": {
+ "$ref": "AccessConfig"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves aggregated list of instances.",
+ "httpMethod": "GET",
+ "id": "compute.instances.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/instances",
+ "response": {
+ "$ref": "InstanceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "attachDisk": {
+ "description": "Attaches an existing Disk resource to an instance. You must first create the disk before you can attach it. It is not possible to create and attach a disk at the same time. For more information, read Adding a persistent disk to your instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.attachDisk",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/attachDisk",
+ "request": {
+ "$ref": "AttachedDisk"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Instance resource. For more information, see Stopping or Deleting an Instance.",
+ "httpMethod": "DELETE",
+ "id": "compute.instances.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteAccessConfig": {
+ "description": "Deletes an access config from an instance's network interface.",
+ "httpMethod": "POST",
+ "id": "compute.instances.deleteAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "accessConfig",
+ "networkInterface"
+ ],
+ "parameters": {
+ "accessConfig": {
+ "description": "The name of the access config to delete.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/deleteAccessConfig",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "detachDisk": {
+ "description": "Detaches a disk from an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.detachDisk",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "deviceName"
+ ],
+ "parameters": {
+ "deviceName": {
+ "description": "Disk device name to detach.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "Instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/detachDisk",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Instance resource. Get a list of available instances by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.instances.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}",
+ "response": {
+ "$ref": "Instance"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getSerialPortOutput": {
+ "description": "Returns the specified instance's serial port output.",
+ "httpMethod": "GET",
+ "id": "compute.instances.getSerialPortOutput",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "port": {
+ "default": "1",
+ "description": "Specifies which COM or serial port to retrieve data from.",
+ "format": "int32",
+ "location": "query",
+ "maximum": "4",
+ "minimum": "1",
+ "type": "integer"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "start": {
+ "description": "Returns output starting from a specific byte position. Use this to page through output when the output is too large to return in a single request. For the initial request, leave this field unspecified. For subsequent calls, this field should be set to the next value returned in the previous call.",
+ "format": "int64",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/serialPort",
+ "response": {
+ "$ref": "SerialPortOutput"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an instance resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances",
+ "request": {
+ "$ref": "Instance"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instances contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.instances.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances",
+ "response": {
+ "$ref": "InstanceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listReferrers": {
+ "description": "Retrieves the list of referrers to instances contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.instances.listReferrers",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instance": {
+ "description": "Name of the target instance scoping this request, or '-' if the request should span over all instances in the container.",
+ "location": "path",
+ "pattern": "-|[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/referrers",
+ "response": {
+ "$ref": "InstanceListReferrers"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "reset": {
+ "description": "Performs a reset on the instance. For more information, see Resetting an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.reset",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/reset",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDeletionProtection": {
+ "description": "Sets deletion protection on the instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setDeletionProtection",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "resource"
+ ],
+ "parameters": {
+ "deletionProtection": {
+ "default": "true",
+ "description": "Whether the resource should be protected against deletion.",
+ "location": "query",
+ "type": "boolean"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setDiskAutoDelete": {
+ "description": "Sets the auto-delete flag for a disk attached to an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setDiskAutoDelete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "autoDelete",
+ "deviceName"
+ ],
+ "parameters": {
+ "autoDelete": {
+ "description": "Whether to auto-delete the disk when the instance is deleted.",
+ "location": "query",
+ "required": true,
+ "type": "boolean"
+ },
+ "deviceName": {
+ "description": "The device name of the disk to modify.",
+ "location": "query",
+ "pattern": "\\w[\\w.-]{0,254}",
+ "required": true,
+ "type": "string"
+ },
+ "instance": {
+ "description": "The instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets labels on an instance. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setLabels",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setLabels",
+ "request": {
+ "$ref": "InstancesSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMachineResources": {
+ "description": "Changes the number and/or type of accelerator for a stopped instance to the values specified in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMachineResources",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMachineResources",
+ "request": {
+ "$ref": "InstancesSetMachineResourcesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMachineType": {
+ "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMachineType",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
+ "request": {
+ "$ref": "InstancesSetMachineTypeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMetadata": {
+ "description": "Sets metadata for the specified instance to the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMetadata",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMetadata",
+ "request": {
+ "$ref": "Metadata"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setMinCpuPlatform": {
+ "description": "Changes the minimum CPU platform that this instance should use. This method can only be called on a stopped instance. For more information, read Specifying a Minimum CPU Platform.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setMinCpuPlatform",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform",
+ "request": {
+ "$ref": "InstancesSetMinCpuPlatformRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setScheduling": {
+ "description": "Sets an instance's scheduling options.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setScheduling",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Instance name.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setScheduling",
+ "request": {
+ "$ref": "Scheduling"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setServiceAccount": {
+ "description": "Sets the service account on the instance. For more information, read Changing the service account and access scopes for an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setServiceAccount",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setServiceAccount",
+ "request": {
+ "$ref": "InstancesSetServiceAccountRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTags": {
+ "description": "Sets tags for the specified instance to the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.instances.setTags",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/setTags",
+ "request": {
+ "$ref": "Tags"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "start": {
+ "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.start",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/start",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "startWithEncryptionKey": {
+ "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.startWithEncryptionKey",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to start.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey",
+ "request": {
+ "$ref": "InstancesStartWithEncryptionKeyRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "stop": {
+ "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur VM usage charges while they are stopped. However, resources that the VM is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
+ "httpMethod": "POST",
+ "id": "compute.instances.stop",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "Name of the instance resource to stop.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/stop",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "updateAccessConfig": {
+ "description": "Updates the specified access config from an instance's network interface with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "POST",
+ "id": "compute.instances.updateAccessConfig",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface where the access config is attached.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/updateAccessConfig",
+ "request": {
+ "$ref": "AccessConfig"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "updateNetworkInterface": {
+ "description": "Updates an instance's network interface. This method follows PATCH semantics.",
+ "httpMethod": "PATCH",
+ "id": "compute.instances.updateNetworkInterface",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "instance",
+ "networkInterface"
+ ],
+ "parameters": {
+ "instance": {
+ "description": "The instance name for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "networkInterface": {
+ "description": "The name of the network interface to update.",
+ "location": "query",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/instances/{instance}/updateNetworkInterface",
+ "request": {
+ "$ref": "NetworkInterface"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
},
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] The name of the zone where the machine type resides, such as us-central1-a."
- }
- }
- },
- "MachineTypeAggregatedList": {
- "id": "MachineTypeAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of MachineTypesScopedList resources.",
- "additionalProperties": {
- "$ref": "MachineTypesScopedList",
- "description": "[Output Only] Name of the scope containing this set of machine types."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#machineTypeAggregatedList for aggregated lists of machine types.",
- "default": "compute#machineTypeAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "MachineTypeList": {
- "id": "MachineTypeList",
- "type": "object",
- "description": "Contains a list of machine types.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of MachineType resources.",
- "items": {
- "$ref": "MachineType"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#machineTypeList for lists of machine types.",
- "default": "compute#machineTypeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "MachineTypesScopedList": {
- "id": "MachineTypesScopedList",
- "type": "object",
- "properties": {
- "machineTypes": {
- "type": "array",
- "description": "[Output Only] List of machine types contained in this scope.",
- "items": {
- "$ref": "MachineType"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] An informational warning that appears when the machine types list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "ManagedInstance": {
- "id": "ManagedInstance",
- "type": "object",
- "properties": {
- "currentAction": {
- "type": "string",
- "description": "[Output Only] The current action that the managed instance group has scheduled for the instance. Possible values: \n- NONE The instance is running, and the managed instance group does not have any scheduled actions for this instance. \n- CREATING The managed instance group is creating this instance. If the group fails to create this instance, it will try again until it is successful. \n- CREATING_WITHOUT_RETRIES The managed instance group is attempting to create this instance only once. If the group fails to create this instance, it does not try again and the group's targetSize value is decreased instead. \n- RECREATING The managed instance group is recreating this instance. \n- DELETING The managed instance group is permanently deleting this instance. \n- ABANDONING The managed instance group is abandoning this instance. The instance will be removed from the instance group and from any target pools that are associated with this group. \n- RESTARTING The managed instance group is restarting the instance. \n- REFRESHING The managed instance group is applying configuration changes to the instance without stopping it. For example, the group can update the target pool list for an instance without stopping that instance.",
- "enum": [
- "ABANDONING",
- "CREATING",
- "CREATING_WITHOUT_RETRIES",
- "DELETING",
- "NONE",
- "RECREATING",
- "REFRESHING",
- "RESTARTING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "id": {
- "type": "string",
- "description": "[Output only] The unique identifier for this resource. This field is empty when instance does not exist.",
- "format": "uint64"
- },
- "instance": {
- "type": "string",
- "description": "[Output Only] The URL of the instance. The URL can exist even if the instance has not yet been created."
- },
- "instanceStatus": {
- "type": "string",
- "description": "[Output Only] The status of the instance. This field is empty when the instance does not exist.",
- "enum": [
- "PROVISIONING",
- "RUNNING",
- "STAGING",
- "STOPPED",
- "STOPPING",
- "SUSPENDED",
- "SUSPENDING",
- "TERMINATED"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "lastAttempt": {
- "$ref": "ManagedInstanceLastAttempt",
- "description": "[Output Only] Information about the last attempt to create or delete the instance."
- }
- }
- },
- "ManagedInstanceLastAttempt": {
- "id": "ManagedInstanceLastAttempt",
- "type": "object",
- "properties": {
- "errors": {
- "type": "object",
- "description": "[Output Only] Encountered errors during the last attempt to create or delete the instance.",
- "properties": {
- "errors": {
- "type": "array",
- "description": "[Output Only] The array of errors encountered while processing this operation.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] The error type identifier for this error."
- },
- "location": {
- "type": "string",
- "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional."
- },
- "message": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable error message."
- }
- }
- }
- }
- }
- }
- }
- },
- "Metadata": {
- "id": "Metadata",
- "type": "object",
- "description": "A metadata key/value entry.",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.",
- "format": "byte"
- },
- "items": {
- "type": "array",
- "description": "Array of key/value pairs. The total size of all keys and values must be less than 512 KB.",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "Key for the metadata entry. Keys must conform to the following regexp: [a-zA-Z0-9-_]+, and be less than 128 bytes in length. This is reflected as part of a URL in the metadata server. Additionally, to avoid ambiguity, keys must not conflict with any other metadata keys for the project.",
- "pattern": "[a-zA-Z0-9-_]{1,128}",
- "annotations": {
- "required": [
- "compute.instances.insert",
- "compute.projects.setCommonInstanceMetadata"
- ]
- }
- },
- "value": {
- "type": "string",
- "description": "Value for the metadata entry. These are free-form strings, and only have meaning as interpreted by the image running in the instance. The only restriction placed on values is that their size must be less than or equal to 262144 bytes (256 KiB).",
- "annotations": {
- "required": [
- "compute.instances.insert",
- "compute.projects.setCommonInstanceMetadata"
- ]
- }
- }
+ "interconnectAttachments": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of interconnect attachments.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/interconnectAttachments",
+ "response": {
+ "$ref": "InterconnectAttachmentAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified interconnect attachment.",
+ "httpMethod": "DELETE",
+ "id": "compute.interconnectAttachments.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified interconnect attachment.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "interconnectAttachment"
+ ],
+ "parameters": {
+ "interconnectAttachment": {
+ "description": "Name of the interconnect attachment to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
+ "response": {
+ "$ref": "InterconnectAttachment"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.interconnectAttachments.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments",
+ "request": {
+ "$ref": "InterconnectAttachment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect attachments contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectAttachments.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/interconnectAttachments",
+ "response": {
+ "$ref": "InterconnectAttachmentList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#metadata for metadata.",
- "default": "compute#metadata"
- }
- }
- },
- "NamedPort": {
- "id": "NamedPort",
- "type": "object",
- "description": "The named port. For example: .",
- "properties": {
- "name": {
- "type": "string",
- "description": "The name for this named port. The name must be 1-63 characters long, and comply with RFC1035."
- },
- "port": {
- "type": "integer",
- "description": "The port number, which can be a value between 1 and 65535.",
- "format": "int32"
- }
- }
- },
- "Network": {
- "id": "Network",
- "type": "object",
- "description": "Represents a Network resource. Read Networks and Firewalls for more information. (== resource_for v1.networks ==) (== resource_for beta.networks ==)",
- "properties": {
- "IPv4Range": {
- "type": "string",
- "description": "The range of internal addresses that are legal on this network. This range is a CIDR specification, for example: 192.168.0.0/16. Provided by the client when the network is created.",
- "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}/[0-9]{1,2}"
- },
- "autoCreateSubnetworks": {
- "type": "boolean",
- "description": "When set to true, the network is created in \"auto subnet mode\". When set to false, the network is in \"custom subnet mode\".\n\nIn \"auto subnet mode\", a newly created network is assigned the default CIDR of 10.128.0.0/9 and it automatically creates one subnetwork per region."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "gatewayIPv4": {
- "type": "string",
- "description": "A gateway address for default routing to other networks. This value is read only and is selected by the Google Compute Engine, typically as the first usable address in the IPv4Range.",
- "pattern": "[0-9]{1,3}(?:\\.[0-9]{1,3}){3}"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#network for networks.",
- "default": "compute#network"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.networks.insert"
- ]
- }
- },
- "peerings": {
- "type": "array",
- "description": "[Output Only] List of network peerings for the resource.",
- "items": {
- "$ref": "NetworkPeering"
- }
- },
- "routingConfig": {
- "$ref": "NetworkRoutingConfig",
- "description": "The network-level routing configuration for this network. Used by Cloud Router to determine what type of network-wide routing behavior to enforce."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
},
- "subnetworks": {
- "type": "array",
- "description": "[Output Only] Server-defined fully-qualified URLs for all subnetworks in this network.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "NetworkInterface": {
- "id": "NetworkInterface",
- "type": "object",
- "description": "A network interface resource attached to an instance.",
- "properties": {
- "accessConfigs": {
- "type": "array",
- "description": "An array of configurations for this interface. Currently, only one access config, ONE_TO_ONE_NAT, is supported. If there are no accessConfigs specified, then this instance will have no external internet access.",
- "items": {
- "$ref": "AccessConfig"
- }
- },
- "aliasIpRanges": {
- "type": "array",
- "description": "An array of alias IP ranges for this network interface. Can only be specified for network interfaces on subnet-mode networks.",
- "items": {
- "$ref": "AliasIpRange"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#networkInterface for network interfaces.",
- "default": "compute#networkInterface"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] The name of the network interface, generated by the server. For network devices, these are eth0, eth1, etc."
- },
- "network": {
- "type": "string",
- "description": "URL of the network resource for this instance. When creating an instance, if neither the network nor the subnetwork is specified, the default network global/networks/default is used; if the network is not specified but the subnetwork is specified, the network is inferred.\n\nThis field is optional when creating a firewall rule. If not specified when creating a firewall rule, the default network global/networks/default is used.\n\nIf you specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/global/networks/network \n- projects/project/global/networks/network \n- global/networks/default"
- },
- "networkIP": {
- "type": "string",
- "description": "An IPv4 internal network address to assign to the instance for this network interface. If not specified by the user, an unused internal IP is assigned by the system."
- },
- "subnetwork": {
- "type": "string",
- "description": "The URL of the Subnetwork resource for this instance. If the network resource is in legacy mode, do not provide this property. If the network is in auto subnet mode, providing the subnetwork is optional. If the network is in custom subnet mode, then this field should be specified. If you specify this property, you can specify the subnetwork as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/subnetworks/subnetwork \n- regions/region/subnetworks/subnetwork"
- }
- }
- },
- "NetworkList": {
- "id": "NetworkList",
- "type": "object",
- "description": "Contains a list of networks.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Network resources.",
- "items": {
- "$ref": "Network"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#networkList for lists of networks.",
- "default": "compute#networkList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "NetworkPeering": {
- "id": "NetworkPeering",
- "type": "object",
- "description": "A network peering attached to a network resource. The message includes the peering name, peer network, peering state, and a flag indicating whether Google Compute Engine should automatically create routes for the peering.",
- "properties": {
- "autoCreateRoutes": {
- "type": "boolean",
- "description": "Whether full mesh connectivity is created and managed automatically. When it is set to true, Google Compute Engine will automatically create and manage the routes between two networks when the state is ACTIVE. Otherwise, user needs to create routes manually to route packets to peer network."
- },
- "name": {
- "type": "string",
- "description": "Name of this peering. Provided by the client when the peering is created. The name must comply with RFC1035. Specifically, the name must be 1-63 characters long and match regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all the following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash."
- },
- "network": {
- "type": "string",
- "description": "The URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
- },
- "state": {
- "type": "string",
- "description": "[Output Only] State for the peering.",
- "enum": [
- "ACTIVE",
- "INACTIVE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "stateDetails": {
- "type": "string",
- "description": "[Output Only] Details about the current state of the peering."
- }
- }
- },
- "NetworkRoutingConfig": {
- "id": "NetworkRoutingConfig",
- "type": "object",
- "description": "A routing configuration attached to a network resource. The message includes the list of routers associated with the network, and a flag indicating the type of routing behavior to enforce network-wide.",
- "properties": {
- "routingMode": {
- "type": "string",
- "description": "The network-wide routing mode to use. If set to REGIONAL, this network's cloud routers will only advertise routes with subnetworks of this network in the same region as the router. If set to GLOBAL, this network's cloud routers will advertise routes with all subnetworks of this network, across regions.",
- "enum": [
- "GLOBAL",
- "REGIONAL"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "NetworksAddPeeringRequest": {
- "id": "NetworksAddPeeringRequest",
- "type": "object",
- "properties": {
- "autoCreateRoutes": {
- "type": "boolean",
- "description": "Whether Google Compute Engine manages the routes automatically."
- },
- "name": {
- "type": "string",
- "description": "Name of the peering, which should conform to RFC1035.",
- "annotations": {
- "required": [
- "compute.networks.addPeering"
- ]
- }
- },
- "peerNetwork": {
- "type": "string",
- "description": "URL of the peer network. It can be either full URL or partial URL. The peer network may belong to a different project. If the partial URL does not contain project, it is assumed that the peer network is in the same project as the current network."
- }
- }
- },
- "NetworksRemovePeeringRequest": {
- "id": "NetworksRemovePeeringRequest",
- "type": "object",
- "properties": {
- "name": {
- "type": "string",
- "description": "Name of the peering, which should conform to RFC1035."
- }
- }
- },
- "Operation": {
- "id": "Operation",
- "type": "object",
- "description": "An Operation resource, used to manage asynchronous API requests. (== resource_for v1.globalOperations ==) (== resource_for beta.globalOperations ==) (== resource_for v1.regionOperations ==) (== resource_for beta.regionOperations ==) (== resource_for v1.zoneOperations ==) (== resource_for beta.zoneOperations ==)",
- "properties": {
- "clientOperationId": {
- "type": "string",
- "description": "[Output Only] Reserved for future use."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Deprecated] This field is deprecated."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] A textual description of the operation, which is set when the operation is created."
- },
- "endTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was completed. This value is in RFC3339 text format."
- },
- "error": {
- "type": "object",
- "description": "[Output Only] If errors are generated during processing of the operation, this field will be populated.",
- "properties": {
- "errors": {
- "type": "array",
- "description": "[Output Only] The array of errors encountered while processing this operation.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] The error type identifier for this error."
- },
- "location": {
- "type": "string",
- "description": "[Output Only] Indicates the field in the request that caused the error. This property is optional."
- },
- "message": {
- "type": "string",
- "description": "[Output Only] An optional, human-readable error message."
- }
- }
- }
- }
- }
- },
- "httpErrorMessage": {
- "type": "string",
- "description": "[Output Only] If the operation fails, this field contains the HTTP error message that was returned, such as NOT FOUND."
- },
- "httpErrorStatusCode": {
- "type": "integer",
- "description": "[Output Only] If the operation fails, this field contains the HTTP error status code that was returned. For example, a 404 means the resource was not found.",
- "format": "int32"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "insertTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was requested. This value is in RFC3339 text format."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#operation for Operation resources.",
- "default": "compute#operation"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "operationType": {
- "type": "string",
- "description": "[Output Only] The type of operation, such as insert, update, or delete, and so on."
- },
- "progress": {
- "type": "integer",
- "description": "[Output Only] An optional progress indicator that ranges from 0 to 100. There is no requirement that this be linear or support any granularity of operations. This should not be used to guess when the operation will be complete. This number should monotonically increase as the operation progresses.",
- "format": "int32"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] The URL of the region where the operation resides. Only available when performing regional operations."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "startTime": {
- "type": "string",
- "description": "[Output Only] The time that this operation was started by the server. This value is in RFC3339 text format."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the operation, which can be one of the following: PENDING, RUNNING, or DONE.",
- "enum": [
- "DONE",
- "PENDING",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "statusMessage": {
- "type": "string",
- "description": "[Output Only] An optional textual description of the current status of the operation."
- },
- "targetId": {
- "type": "string",
- "description": "[Output Only] The unique target ID, which identifies a specific incarnation of the target resource.",
- "format": "uint64"
- },
- "targetLink": {
- "type": "string",
- "description": "[Output Only] The URL of the resource that the operation modifies. For operations related to creating a snapshot, this points to the persistent disk that the snapshot was created from."
- },
- "user": {
- "type": "string",
- "description": "[Output Only] User who requested the operation, for example: user@example.com."
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If warning messages are generated during processing of the operation, this field will be populated.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
+ "interconnectLocations": {
+ "methods": {
+ "get": {
+ "description": "Returns the details for the specified interconnect location. Get a list of available interconnect locations by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectLocations.get",
+ "parameterOrder": [
+ "project",
+ "interconnectLocation"
+ ],
+ "parameters": {
+ "interconnectLocation": {
+ "description": "Name of the interconnect location to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnectLocations/{interconnectLocation}",
+ "response": {
+ "$ref": "InterconnectLocation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect locations available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.interconnectLocations.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnectLocations",
+ "response": {
+ "$ref": "InterconnectLocationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
},
- "zone": {
- "type": "string",
- "description": "[Output Only] The URL of the zone where the operation resides. Only available when performing per-zone operations."
- }
- }
- },
- "OperationAggregatedList": {
- "id": "OperationAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "object",
- "description": "[Output Only] A map of scoped operation lists.",
- "additionalProperties": {
- "$ref": "OperationsScopedList",
- "description": "[Output Only] Name of the scope containing this set of operations."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#operationAggregatedList for aggregated lists of operations.",
- "default": "compute#operationAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "OperationList": {
- "id": "OperationList",
- "type": "object",
- "description": "Contains a list of Operation resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output Only] A list of Operation resources.",
- "items": {
- "$ref": "Operation"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#operations for Operations resource.",
- "default": "compute#operationList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "OperationsScopedList": {
- "id": "OperationsScopedList",
- "type": "object",
- "properties": {
- "operations": {
- "type": "array",
- "description": "[Output Only] List of operations contained in this scope.",
- "items": {
- "$ref": "Operation"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of operations when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "interconnects": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified interconnect.",
+ "httpMethod": "DELETE",
+ "id": "compute.interconnects.delete",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified interconnect. Get a list of available interconnects by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.interconnects.get",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "response": {
+ "$ref": "Interconnect"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Interconnect in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.interconnects.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects",
+ "request": {
+ "$ref": "Interconnect"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of interconnect available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.interconnects.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects",
+ "response": {
+ "$ref": "InterconnectList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified interconnect with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.interconnects.patch",
+ "parameterOrder": [
+ "project",
+ "interconnect"
+ ],
+ "parameters": {
+ "interconnect": {
+ "description": "Name of the interconnect to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/interconnects/{interconnect}",
+ "request": {
+ "$ref": "Interconnect"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- }
- }
- }
- },
- "PathMatcher": {
- "id": "PathMatcher",
- "type": "object",
- "description": "A matcher for the path portion of the URL. The BackendService from the longest-matched rule will serve the URL. If no rule was matched, the default service will be used.",
- "properties": {
- "defaultService": {
- "type": "string",
- "description": "The full or partial URL to the BackendService resource. This will be used if none of the pathRules defined by this PathMatcher is matched by the URL's path portion. For example, the following are all valid URLs to a BackendService resource: \n- https://www.googleapis.com/compute/v1/projects/project/global/backendServices/backendService \n- compute/v1/projects/project/global/backendServices/backendService \n- global/backendServices/backendService"
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "name": {
- "type": "string",
- "description": "The name to which this PathMatcher is referred by the HostRule."
- },
- "pathRules": {
- "type": "array",
- "description": "The list of path rules.",
- "items": {
- "$ref": "PathRule"
- }
- }
- }
- },
- "PathRule": {
- "id": "PathRule",
- "type": "object",
- "description": "A path-matching rule for a URL. If matched, will use the specified BackendService to handle the traffic arriving at this URL.",
- "properties": {
- "paths": {
- "type": "array",
- "description": "The list of path patterns to match. Each must start with / and the only place a * is allowed is at the end following a /. The string fed to the path matcher does not include any text after the first ? or #, and those chars are not allowed here.",
- "items": {
- "type": "string"
- }
- },
- "service": {
- "type": "string",
- "description": "The URL of the BackendService resource if this rule is matched."
- }
- }
- },
- "Project": {
- "id": "Project",
- "type": "object",
- "description": "A Project resource. Projects can only be created in the Google Cloud Platform Console. Unless marked otherwise, values can only be modified in the console. (== resource_for v1.projects ==) (== resource_for beta.projects ==)",
- "properties": {
- "commonInstanceMetadata": {
- "$ref": "Metadata",
- "description": "Metadata key/value pairs available to all instances contained in this project. See Custom metadata for more information."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultServiceAccount": {
- "type": "string",
- "description": "[Output Only] Default service account used by VMs running in this project."
- },
- "description": {
- "type": "string",
- "description": "An optional textual description of the resource."
- },
- "enabledFeatures": {
- "type": "array",
- "description": "Restricted features enabled for use on this project.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server. This is not the project ID, and is just a unique ID used by Compute Engine to identify resources.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#project for projects.",
- "default": "compute#project"
- },
- "name": {
- "type": "string",
- "description": "The project ID. For example: my-example-project. Use the project ID to make requests to Compute Engine."
- },
- "quotas": {
- "type": "array",
- "description": "[Output Only] Quotas assigned to this project.",
- "items": {
- "$ref": "Quota"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "usageExportLocation": {
- "$ref": "UsageExportLocation",
- "description": "The naming prefix for daily usage reports and the Google Cloud Storage bucket where they are stored."
- },
- "xpnProjectStatus": {
- "type": "string",
- "description": "[Output Only] The role this project has in a shared VPC configuration. Currently only HOST projects are differentiated.",
- "enum": [
- "HOST",
- "UNSPECIFIED_XPN_PROJECT_STATUS"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "ProjectsDisableXpnResourceRequest": {
- "id": "ProjectsDisableXpnResourceRequest",
- "type": "object",
- "properties": {
- "xpnResource": {
- "$ref": "XpnResourceId",
- "description": "Service resource (a.k.a service project) ID."
- }
- }
- },
- "ProjectsEnableXpnResourceRequest": {
- "id": "ProjectsEnableXpnResourceRequest",
- "type": "object",
- "properties": {
- "xpnResource": {
- "$ref": "XpnResourceId",
- "description": "Service resource (a.k.a service project) ID."
- }
- }
- },
- "ProjectsGetXpnResources": {
- "id": "ProjectsGetXpnResources",
- "type": "object",
- "properties": {
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#projectsGetXpnResources for lists of service resources (a.k.a service projects)",
- "default": "compute#projectsGetXpnResources"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "resources": {
- "type": "array",
- "description": "Service resources (a.k.a service projects) attached to this project as their shared VPC host.",
- "items": {
- "$ref": "XpnResourceId"
- }
- }
- }
- },
- "ProjectsListXpnHostsRequest": {
- "id": "ProjectsListXpnHostsRequest",
- "type": "object",
- "properties": {
- "organization": {
- "type": "string",
- "description": "Optional organization ID managed by Cloud Resource Manager, for which to list shared VPC host projects. If not specified, the organization will be inferred from the project."
- }
- }
- },
- "Quota": {
- "id": "Quota",
- "type": "object",
- "description": "A quotas entry.",
- "properties": {
- "limit": {
- "type": "number",
- "description": "[Output Only] Quota limit for this metric.",
- "format": "double"
- },
- "metric": {
- "type": "string",
- "description": "[Output Only] Name of the quota metric.",
- "enum": [
- "AUTOSCALERS",
- "BACKEND_BUCKETS",
- "BACKEND_SERVICES",
- "COMMITMENTS",
- "CPUS",
- "CPUS_ALL_REGIONS",
- "DISKS_TOTAL_GB",
- "FIREWALLS",
- "FORWARDING_RULES",
- "HEALTH_CHECKS",
- "IMAGES",
- "INSTANCES",
- "INSTANCE_GROUPS",
- "INSTANCE_GROUP_MANAGERS",
- "INSTANCE_TEMPLATES",
- "INTERCONNECTS",
- "INTERNAL_ADDRESSES",
- "IN_USE_ADDRESSES",
- "LOCAL_SSD_TOTAL_GB",
- "NETWORKS",
- "NVIDIA_K80_GPUS",
- "NVIDIA_P100_GPUS",
- "PREEMPTIBLE_CPUS",
- "PREEMPTIBLE_LOCAL_SSD_GB",
- "PREEMPTIBLE_NVIDIA_K80_GPUS",
- "PREEMPTIBLE_NVIDIA_P100_GPUS",
- "REGIONAL_AUTOSCALERS",
- "REGIONAL_INSTANCE_GROUP_MANAGERS",
- "ROUTERS",
- "ROUTES",
- "SECURITY_POLICIES",
- "SECURITY_POLICY_RULES",
- "SNAPSHOTS",
- "SSD_TOTAL_GB",
- "SSL_CERTIFICATES",
- "STATIC_ADDRESSES",
- "SUBNETWORKS",
- "TARGET_HTTPS_PROXIES",
- "TARGET_HTTP_PROXIES",
- "TARGET_INSTANCES",
- "TARGET_POOLS",
- "TARGET_SSL_PROXIES",
- "TARGET_TCP_PROXIES",
- "TARGET_VPN_GATEWAYS",
- "URL_MAPS",
- "VPN_TUNNELS"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "usage": {
- "type": "number",
- "description": "[Output Only] Current usage of this metric.",
- "format": "double"
- }
- }
- },
- "Region": {
- "id": "Region",
- "type": "object",
- "description": "Region resource. (== resource_for beta.regions ==) (== resource_for v1.regions ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this region."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#region for regions.",
- "default": "compute#region"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "quotas": {
- "type": "array",
- "description": "[Output Only] Quotas assigned to this region.",
- "items": {
- "$ref": "Quota"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the region, either UP or DOWN.",
- "enum": [
- "DOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
},
- "zones": {
- "type": "array",
- "description": "[Output Only] A list of zones available in this region, in the form of resource URLs.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionAutoscalerList": {
- "id": "RegionAutoscalerList",
- "type": "object",
- "description": "Contains a list of autoscalers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Autoscaler resources.",
- "items": {
- "$ref": "Autoscaler"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#regionAutoscalerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupList": {
- "id": "RegionInstanceGroupList",
- "type": "object",
- "description": "Contains a list of InstanceGroup resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroup resources.",
- "items": {
- "$ref": "InstanceGroup"
- }
- },
- "kind": {
- "type": "string",
- "description": "The resource type.",
- "default": "compute#regionInstanceGroupList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupManagerList": {
- "id": "RegionInstanceGroupManagerList",
- "type": "object",
- "description": "Contains a list of managed instance groups.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceGroupManager resources.",
- "items": {
- "$ref": "InstanceGroupManager"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups that exist in th regional scope.",
- "default": "compute#regionInstanceGroupManagerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
+ "licenses": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified License resource.",
+ "httpMethod": "GET",
+ "id": "compute.licenses.get",
+ "parameterOrder": [
+ "project",
+ "license"
+ ],
+ "parameters": {
+ "license": {
+ "description": "Name of the License resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/licenses/{license}",
+ "response": {
+ "$ref": "License"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- }
- }
- }
- },
- "RegionInstanceGroupManagersAbandonInstancesRequest": {
- "id": "RegionInstanceGroupManagersAbandonInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersDeleteInstancesRequest": {
- "id": "RegionInstanceGroupManagersDeleteInstancesRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersListInstancesResponse": {
- "id": "RegionInstanceGroupManagersListInstancesResponse",
- "type": "object",
- "properties": {
- "managedInstances": {
- "type": "array",
- "description": "List of managed instances.",
- "items": {
- "$ref": "ManagedInstance"
- }
- }
- }
- },
- "RegionInstanceGroupManagersRecreateRequest": {
- "id": "RegionInstanceGroupManagersRecreateRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetTargetPoolsRequest": {
- "id": "RegionInstanceGroupManagersSetTargetPoolsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of the target pools information, which is a hash of the contents. This field is used for optimistic locking when you update the target pool entries. This field is optional.",
- "format": "byte"
- },
- "targetPools": {
- "type": "array",
- "description": "The URL of all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "RegionInstanceGroupManagersSetTemplateRequest": {
- "id": "RegionInstanceGroupManagersSetTemplateRequest",
- "type": "object",
- "properties": {
- "instanceTemplate": {
- "type": "string",
- "description": "URL of the InstanceTemplate resource from which all new instances will be created."
- }
- }
- },
- "RegionInstanceGroupsListInstances": {
- "id": "RegionInstanceGroupsListInstances",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of InstanceWithNamedPorts resources.",
- "items": {
- "$ref": "InstanceWithNamedPorts"
- }
- },
- "kind": {
- "type": "string",
- "description": "The resource type.",
- "default": "compute#regionInstanceGroupsListInstances"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RegionInstanceGroupsListInstancesRequest": {
- "id": "RegionInstanceGroupsListInstancesRequest",
- "type": "object",
- "properties": {
- "instanceState": {
- "type": "string",
- "description": "Instances in which state should be returned. Valid options are: 'ALL', 'RUNNING'. By default, it lists all instances.",
- "enum": [
- "ALL",
- "RUNNING"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "portName": {
- "type": "string",
- "description": "Name of port user is interested in. It is optional. If it is set, only information about this ports will be returned. If it is not set, all the named ports will be returned. Always lists all instances.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- }
- }
- },
- "RegionInstanceGroupsSetNamedPortsRequest": {
- "id": "RegionInstanceGroupsSetNamedPortsRequest",
- "type": "object",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
- "format": "byte"
- },
- "namedPorts": {
- "type": "array",
- "description": "The list of named ports to set for this instance group.",
- "items": {
- "$ref": "NamedPort"
- }
- }
- }
- },
- "RegionList": {
- "id": "RegionList",
- "type": "object",
- "description": "Contains a list of region resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Region resources.",
- "items": {
- "$ref": "Region"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#regionList for lists of regions.",
- "default": "compute#regionList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "ResourceCommitment": {
- "id": "ResourceCommitment",
- "type": "object",
- "description": "Commitment for a particular resource (a Commitment is composed of one or more of these).",
- "properties": {
- "amount": {
- "type": "string",
- "description": "The amount of the resource purchased (in a type-dependent unit, such as bytes). For vCPUs, this can just be an integer. For memory, this must be provided in MB. Memory must be a multiple of 256 MB, with up to 6.5GB of memory per every vCPU.",
- "format": "int64"
- },
- "type": {
- "type": "string",
- "description": "Type of resource for which this commitment applies. Possible values are VCPU and MEMORY",
- "enum": [
- "MEMORY",
- "UNSPECIFIED",
- "VCPU"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- }
- }
- },
- "ResourceGroupReference": {
- "id": "ResourceGroupReference",
- "type": "object",
- "properties": {
- "group": {
- "type": "string",
- "description": "A URI referencing one of the instance groups listed in the backend service."
- }
- }
- },
- "Route": {
- "id": "Route",
- "type": "object",
- "description": "Represents a Route resource. A route specifies how certain packets should be handled by the network. Routes are associated with instances by tags and the set of routes for a particular instance is called its routing table.\n\nFor each packet leaving an instance, the system searches that instance's routing table for a single best matching route. Routes match packets by destination IP address, preferring smaller or more specific ranges over larger ones. If there is a tie, the system selects the route with the smallest priority value. If there is still a tie, it uses the layer three and four packet headers to select just one of the remaining matching routes. The packet is then forwarded as specified by the nextHop field of the winning route - either to another instance destination, an instance gateway, or a Google Compute Engine-operated gateway.\n\nPackets that do not match any route in the sending instance's routing table are dropped. (== resource_for beta.routes ==) (== resource_for v1.routes ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "destRange": {
- "type": "string",
- "description": "The destination range of outgoing packets that this route applies to. Only IPv4 is supported.",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of this resource. Always compute#routes for Route resources.",
- "default": "compute#route"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "Fully-qualified URL of the network that this route applies to.",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "nextHopGateway": {
- "type": "string",
- "description": "The URL to a gateway that should handle matching packets. You can only specify the internet gateway using a full or partial valid URL: projects/\u003cproject-id\u003e/global/gateways/default-internet-gateway"
- },
- "nextHopInstance": {
- "type": "string",
- "description": "The URL to an instance that should handle matching packets. You can specify this as a full or partial URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/"
- },
- "nextHopIp": {
- "type": "string",
- "description": "The network IP address of an instance that should handle matching packets. Only IPv4 is supported."
- },
- "nextHopNetwork": {
- "type": "string",
- "description": "The URL of the local network if it should handle matching packets."
- },
- "nextHopPeering": {
- "type": "string",
- "description": "[Output Only] The network peering name that should handle matching packets, which should conform to RFC1035."
- },
- "nextHopVpnTunnel": {
- "type": "string",
- "description": "The URL to a VpnTunnel that should handle matching packets."
- },
- "priority": {
- "type": "integer",
- "description": "The priority of this route. Priority is used to break ties in cases where there is more than one matching route of equal prefix length. In the case of two routes with equal prefix length, the one with the lowest-numbered priority value wins. Default value is 1000. Valid range is 0 through 65535.",
- "format": "uint32",
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined fully-qualified URL for this resource."
- },
- "tags": {
- "type": "array",
- "description": "A list of instance tags to which this route applies.",
- "items": {
- "type": "string"
- },
- "annotations": {
- "required": [
- "compute.routes.insert"
- ]
- }
- },
- "warnings": {
- "type": "array",
- "description": "[Output Only] If potential misconfigurations are detected for this route, this field will be populated with warning messages.",
- "items": {
- "type": "object",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- }
- },
- "RouteList": {
- "id": "RouteList",
- "type": "object",
- "description": "Contains a list of Route resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Route resources.",
- "items": {
- "$ref": "Route"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routeList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "Router": {
- "id": "Router",
- "type": "object",
- "description": "Router resource.",
- "properties": {
- "bgp": {
- "$ref": "RouterBgp",
- "description": "BGP information specific to this router."
- },
- "bgpPeers": {
- "type": "array",
- "description": "BGP information that needs to be configured into the routing stack to establish the BGP peering. It must specify peer ASN and either interface name, IP, or peer IP. Please refer to RFC4273.",
- "items": {
- "$ref": "RouterBgpPeer"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "interfaces": {
- "type": "array",
- "description": "Router interfaces. Each interface requires either one linked resource (e.g. linkedVpnTunnel), or IP address and IP address range (e.g. ipRange), or both.",
- "items": {
- "$ref": "RouterInterface"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#router for routers.",
- "default": "compute#router"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.routers.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URI of the network to which this router belongs.",
- "annotations": {
- "required": [
- "compute.routers.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URI of the region where the router resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "RouterAggregatedList": {
- "id": "RouterAggregatedList",
- "type": "object",
- "description": "Contains a list of routers.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of Router resources.",
- "additionalProperties": {
- "$ref": "RoutersScopedList",
- "description": "Name of the scope containing this set of routers."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routerAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RouterBgp": {
- "id": "RouterBgp",
- "type": "object",
- "properties": {
- "asn": {
- "type": "integer",
- "description": "Local BGP Autonomous System Number (ASN). Must be an RFC6996 private ASN, either 16-bit or 32-bit. The value will be fixed for this router resource. All VPN tunnels that link to this router will have the same local ASN.",
- "format": "uint32"
- }
- }
- },
- "RouterBgpPeer": {
- "id": "RouterBgpPeer",
- "type": "object",
- "properties": {
- "advertisedRoutePriority": {
- "type": "integer",
- "description": "The priority of routes advertised to this BGP peer. In the case where there is more than one matching route of maximum length, the routes with lowest priority value win.",
- "format": "uint32"
- },
- "interfaceName": {
- "type": "string",
- "description": "Name of the interface the BGP peer is associated with."
- },
- "ipAddress": {
- "type": "string",
- "description": "IP address of the interface inside Google Cloud Platform. Only IPv4 is supported."
- },
- "name": {
- "type": "string",
- "description": "Name of this BGP peer. The name must be 1-63 characters long and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "peerAsn": {
- "type": "integer",
- "description": "Peer BGP Autonomous System Number (ASN). For VPN use case, this value can be different for every tunnel.",
- "format": "uint32"
- },
- "peerIpAddress": {
- "type": "string",
- "description": "IP address of the BGP interface outside Google cloud. Only IPv4 is supported."
- }
- }
- },
- "RouterInterface": {
- "id": "RouterInterface",
- "type": "object",
- "properties": {
- "ipRange": {
- "type": "string",
- "description": "IP address and range of the interface. The IP range must be in the RFC3927 link-local IP space. The value must be a CIDR-formatted string, for example: 169.254.0.1/30. NOTE: Do not truncate the address as it represents the IP address of the interface."
- },
- "linkedInterconnectAttachment": {
- "type": "string",
- "description": "URI of the linked interconnect attachment. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment."
- },
- "linkedVpnTunnel": {
- "type": "string",
- "description": "URI of the linked VPN tunnel. It must be in the same region as the router. Each interface can have at most one linked resource and it could either be a VPN Tunnel or an interconnect attachment."
- },
- "name": {
- "type": "string",
- "description": "Name of this interface entry. The name must be 1-63 characters long and comply with RFC1035.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- }
- }
- },
- "RouterList": {
- "id": "RouterList",
- "type": "object",
- "description": "Contains a list of Router resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Router resources.",
- "items": {
- "$ref": "Router"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#router for routers.",
- "default": "compute#routerList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "RouterStatus": {
- "id": "RouterStatus",
- "type": "object",
- "properties": {
- "bestRoutes": {
- "type": "array",
- "description": "Best routes for this router's network.",
- "items": {
- "$ref": "Route"
- }
- },
- "bestRoutesForRouter": {
- "type": "array",
- "description": "Best routes learned by this router.",
- "items": {
- "$ref": "Route"
- }
- },
- "bgpPeerStatus": {
- "type": "array",
- "items": {
- "$ref": "RouterStatusBgpPeerStatus"
- }
- },
- "network": {
- "type": "string",
- "description": "URI of the network to which this router belongs."
- }
- }
- },
- "RouterStatusBgpPeerStatus": {
- "id": "RouterStatusBgpPeerStatus",
- "type": "object",
- "properties": {
- "advertisedRoutes": {
- "type": "array",
- "description": "Routes that were advertised to the remote BGP peer",
- "items": {
- "$ref": "Route"
- }
- },
- "ipAddress": {
- "type": "string",
- "description": "IP address of the local BGP interface."
- },
- "linkedVpnTunnel": {
- "type": "string",
- "description": "URL of the VPN tunnel that this BGP peer controls."
- },
- "name": {
- "type": "string",
- "description": "Name of this BGP peer. Unique within the Routers resource."
- },
- "numLearnedRoutes": {
- "type": "integer",
- "description": "Number of routes learned from the remote BGP Peer.",
- "format": "uint32"
- },
- "peerIpAddress": {
- "type": "string",
- "description": "IP address of the remote BGP interface."
- },
- "state": {
- "type": "string",
- "description": "BGP state as specified in RFC1771."
- },
- "status": {
- "type": "string",
- "description": "Status of the BGP peer: {UP, DOWN}",
- "enum": [
- "DOWN",
- "UNKNOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- "",
- ""
- ]
- },
- "uptime": {
- "type": "string",
- "description": "Time this session has been up. Format: 14 years, 51 weeks, 6 days, 23 hours, 59 minutes, 59 seconds"
- },
- "uptimeSeconds": {
- "type": "string",
- "description": "Time this session has been up, in seconds. Format: 145"
- }
- }
- },
- "RouterStatusResponse": {
- "id": "RouterStatusResponse",
- "type": "object",
- "properties": {
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#routerStatusResponse"
- },
- "result": {
- "$ref": "RouterStatus"
- }
- }
- },
- "RoutersPreviewResponse": {
- "id": "RoutersPreviewResponse",
- "type": "object",
- "properties": {
- "resource": {
- "$ref": "Router",
- "description": "Preview of given router."
- }
- }
- },
- "RoutersScopedList": {
- "id": "RoutersScopedList",
- "type": "object",
- "properties": {
- "routers": {
- "type": "array",
- "description": "List of routers contained in this scope.",
- "items": {
- "$ref": "Router"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of routers when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SSLHealthCheck": {
- "id": "SSLHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "request": {
- "type": "string",
- "description": "The application data to send once the SSL connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII."
- }
- }
- },
- "Scheduling": {
- "id": "Scheduling",
- "type": "object",
- "description": "Sets the scheduling options for an Instance.",
- "properties": {
- "automaticRestart": {
- "type": "boolean",
- "description": "Specifies whether the instance should be automatically restarted if it is terminated by Compute Engine (not terminated by a user). You can only set the automatic restart option for standard instances. Preemptible instances cannot be automatically restarted.\n\nBy default, this is set to true so an instance is automatically restarted if it is terminated by Compute Engine."
- },
- "onHostMaintenance": {
- "type": "string",
- "description": "Defines the maintenance behavior for this instance. For standard instances, the default behavior is MIGRATE. For preemptible instances, the default and only possible behavior is TERMINATE. For more information, see Setting Instance Scheduling Options.",
- "enum": [
- "MIGRATE",
- "TERMINATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "preemptible": {
- "type": "boolean",
- "description": "Defines whether the instance is preemptible. This can only be set during instance creation, it cannot be set or changed after the instance has been created."
- }
- }
- },
- "SerialPortOutput": {
- "id": "SerialPortOutput",
- "type": "object",
- "description": "An instance's serial console output.",
- "properties": {
- "contents": {
- "type": "string",
- "description": "[Output Only] The contents of the console output."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#serialPortOutput for serial port output.",
- "default": "compute#serialPortOutput"
- },
- "next": {
- "type": "string",
- "description": "[Output Only] The position of the next byte of content from the serial console output. Use this value in the next request as the start parameter.",
- "format": "int64"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "start": {
- "type": "string",
- "description": "The starting byte position of the output that was returned. This should match the start parameter sent with the request. If the serial console output exceeds the size of the buffer, older output will be overwritten by newer content and the start values will be mismatched.",
- "format": "int64"
- }
- }
- },
- "ServiceAccount": {
- "id": "ServiceAccount",
- "type": "object",
- "description": "A service account.",
- "properties": {
- "email": {
- "type": "string",
- "description": "Email address of the service account."
- },
- "scopes": {
- "type": "array",
- "description": "The list of scopes to be made available for this service account.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "Snapshot": {
- "id": "Snapshot",
- "type": "object",
- "description": "A persistent disk snapshot resource. (== resource_for beta.snapshots ==) (== resource_for v1.snapshots ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "diskSizeGb": {
- "type": "string",
- "description": "[Output Only] Size of the snapshot, specified in GB.",
- "format": "int64"
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#snapshot for Snapshot resources.",
- "default": "compute#snapshot"
- },
- "labelFingerprint": {
- "type": "string",
- "description": "A fingerprint for the labels being applied to this snapshot, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a snapshot.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "Labels to apply to this snapshot. These can be later modified by the setLabels method. Label values may be empty.",
- "additionalProperties": {
- "type": "string"
- }
- },
- "licenses": {
- "type": "array",
- "description": "[Output Only] A list of public visible licenses that apply to this snapshot. This can be because the original image had licenses attached (such as a Windows image).",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "snapshotEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "Encrypts the snapshot using a customer-supplied encryption key.\n\nAfter you encrypt a snapshot using a customer-supplied key, you must provide the same key if you use the image later For example, you must provide the encryption key when you create a disk from the encrypted snapshot in a future request.\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the snapshot, then the snapshot will be encrypted using an automatically generated key and you do not need to provide a key to use the snapshot later."
- },
- "sourceDisk": {
- "type": "string",
- "description": "[Output Only] The source disk used to create this snapshot."
- },
- "sourceDiskEncryptionKey": {
- "$ref": "CustomerEncryptionKey",
- "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
- },
- "sourceDiskId": {
- "type": "string",
- "description": "[Output Only] The ID value of the disk used to create this snapshot. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given disk name."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the snapshot. This can be CREATING, DELETING, FAILED, READY, or UPLOADING.",
- "enum": [
- "CREATING",
- "DELETING",
- "FAILED",
- "READY",
- "UPLOADING"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "storageBytes": {
- "type": "string",
- "description": "[Output Only] A size of the storage used by the snapshot. As snapshots share storage, this number is expected to change with snapshot creation/deletion.",
- "format": "int64"
- },
- "storageBytesStatus": {
- "type": "string",
- "description": "[Output Only] An indicator whether storageBytes is in a stable state or it is being adjusted as a result of shared storage reallocation. This status can either be UPDATING, meaning the size of the snapshot is being updated, or UP_TO_DATE, meaning the size of the snapshot is up-to-date.",
- "enum": [
- "UPDATING",
- "UP_TO_DATE"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "SnapshotList": {
- "id": "SnapshotList",
- "type": "object",
- "description": "Contains a list of Snapshot resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Snapshot resources.",
- "items": {
- "$ref": "Snapshot"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#snapshotList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SslCertificate": {
- "id": "SslCertificate",
- "type": "object",
- "description": "An SslCertificate resource. This resource provides a mechanism to upload an SSL key and certificate to the load balancer to serve secure connections from the user. (== resource_for beta.sslCertificates ==) (== resource_for v1.sslCertificates ==)",
- "properties": {
- "certificate": {
- "type": "string",
- "description": "A local certificate file. The certificate must be in PEM format. The certificate chain must be no greater than 5 certs long. The chain must include at least one intermediate cert."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#sslCertificate for SSL certificates.",
- "default": "compute#sslCertificate"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "privateKey": {
- "type": "string",
- "description": "A write-only private key in PEM format. Only insert requests will include this field."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output only] Server-defined URL for the resource."
- }
- }
- },
- "SslCertificateList": {
- "id": "SslCertificateList",
- "type": "object",
- "description": "Contains a list of SslCertificate resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of SslCertificate resources.",
- "items": {
- "$ref": "SslCertificate"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#sslCertificateList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "Subnetwork": {
- "id": "Subnetwork",
- "type": "object",
- "description": "A Subnetwork resource. (== resource_for beta.subnetworks ==) (== resource_for v1.subnetworks ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource. This field can be set only at resource creation time."
- },
- "gatewayAddress": {
- "type": "string",
- "description": "[Output Only] The gateway address for default routes to reach destination addresses outside this subnetwork. This field can be set only at resource creation time."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ipCidrRange": {
- "type": "string",
- "description": "The range of internal addresses that are owned by this subnetwork. Provide this property when you create the subnetwork. For example, 10.0.0.0/8 or 192.168.0.0/16. Ranges must be unique and non-overlapping within a network. Only IPv4 is supported. This field can be set only at resource creation time."
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#subnetwork for Subnetwork resources.",
- "default": "compute#subnetwork"
- },
- "name": {
- "type": "string",
- "description": "The name of the resource, provided by the client when initially creating the resource. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "network": {
- "type": "string",
- "description": "The URL of the network to which this subnetwork belongs, provided by the client when initially creating the subnetwork. Only networks that are in the distributed mode can have subnetworks. This field can be set only at resource creation time."
- },
- "privateIpGoogleAccess": {
- "type": "boolean",
- "description": "Whether the VMs in this subnet can access Google services without assigned external IP addresses. This field can be both set at resource creation time and updated using setPrivateIpGoogleAccess."
- },
- "region": {
- "type": "string",
- "description": "URL of the region where the Subnetwork resides. This field can be set only at resource creation time."
- },
- "secondaryIpRanges": {
- "type": "array",
- "description": "An array of configurations for secondary IP ranges for VM instances contained in this subnetwork. The primary IP of such VM must belong to the primary ipCidrRange of the subnetwork. The alias IPs may belong to either primary or secondary ranges.",
- "items": {
- "$ref": "SubnetworkSecondaryRange"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- }
- }
- },
- "SubnetworkAggregatedList": {
- "id": "SubnetworkAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of SubnetworksScopedList resources.",
- "additionalProperties": {
- "$ref": "SubnetworksScopedList",
- "description": "Name of the scope containing this set of Subnetworks."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#subnetworkAggregatedList for aggregated lists of subnetworks.",
- "default": "compute#subnetworkAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SubnetworkList": {
- "id": "SubnetworkList",
- "type": "object",
- "description": "Contains a list of Subnetwork resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Subnetwork resources.",
- "items": {
- "$ref": "Subnetwork"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#subnetworkList for lists of subnetworks.",
- "default": "compute#subnetworkList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SubnetworkSecondaryRange": {
- "id": "SubnetworkSecondaryRange",
- "type": "object",
- "description": "Represents a secondary IP range of a subnetwork.",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The range of IP addresses belonging to this subnetwork secondary range. Provide this property when you create the subnetwork. Ranges must be unique and non-overlapping with all primary and secondary IP ranges within a network. Only IPv4 is supported."
- },
- "rangeName": {
- "type": "string",
- "description": "The name associated with this subnetwork secondary range, used when adding an alias IP range to a VM instance. The name must be 1-63 characters long, and comply with RFC1035. The name must be unique within the subnetwork."
- }
- }
- },
- "SubnetworksExpandIpCidrRangeRequest": {
- "id": "SubnetworksExpandIpCidrRangeRequest",
- "type": "object",
- "properties": {
- "ipCidrRange": {
- "type": "string",
- "description": "The IP (in CIDR format or netmask) of internal addresses that are legal on this Subnetwork. This range should be disjoint from other subnetworks within this network. This range can only be larger than (i.e. a superset of) the range previously defined before the update."
- }
- }
- },
- "SubnetworksScopedList": {
- "id": "SubnetworksScopedList",
- "type": "object",
- "properties": {
- "subnetworks": {
- "type": "array",
- "description": "List of subnetworks contained in this scope.",
- "items": {
- "$ref": "Subnetwork"
- }
- },
- "warning": {
- "type": "object",
- "description": "An informational warning that appears when the list of addresses is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "SubnetworksSetPrivateIpGoogleAccessRequest": {
- "id": "SubnetworksSetPrivateIpGoogleAccessRequest",
- "type": "object",
- "properties": {
- "privateIpGoogleAccess": {
- "type": "boolean"
- }
- }
- },
- "TCPHealthCheck": {
- "id": "TCPHealthCheck",
- "type": "object",
- "properties": {
- "port": {
- "type": "integer",
- "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
- "format": "int32"
- },
- "portName": {
- "type": "string",
- "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence."
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "request": {
- "type": "string",
- "description": "The application data to send once the TCP connection has been established (default value is empty). If both request and response are empty, the connection establishment alone will indicate health. The request data can only be ASCII."
- },
- "response": {
- "type": "string",
- "description": "The bytes to match against the beginning of the response data. If left empty (the default value), any response will indicate health. The response data can only be ASCII."
- }
- }
- },
- "Tags": {
- "id": "Tags",
- "type": "object",
- "description": "A set of instance tags.",
- "properties": {
- "fingerprint": {
- "type": "string",
- "description": "Specifies a fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
- "format": "byte"
- },
- "items": {
- "type": "array",
- "description": "An array of tags. Each tag must be 1-63 characters long, and comply with RFC1035.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetHttpProxy": {
- "id": "TargetHttpProxy",
- "type": "object",
- "description": "A TargetHttpProxy resource. This resource defines an HTTP proxy. (== resource_for beta.targetHttpProxies ==) (== resource_for v1.targetHttpProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetHttpProxy for target HTTP proxies.",
- "default": "compute#targetHttpProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "urlMap": {
- "type": "string",
- "description": "URL to the UrlMap resource that defines the mapping from URL to the BackendService."
- }
- }
- },
- "TargetHttpProxyList": {
- "id": "TargetHttpProxyList",
- "type": "object",
- "description": "A list of TargetHttpProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetHttpProxy resources.",
- "items": {
- "$ref": "TargetHttpProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource. Always compute#targetHttpProxyList for lists of target HTTP proxies.",
- "default": "compute#targetHttpProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetHttpsProxiesSetSslCertificatesRequest": {
- "id": "TargetHttpsProxiesSetSslCertificatesRequest",
- "type": "object",
- "properties": {
- "sslCertificates": {
- "type": "array",
- "description": "New set of SslCertificate resources to associate with this TargetHttpsProxy resource. Currently exactly one SslCertificate resource must be specified.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetHttpsProxy": {
- "id": "TargetHttpsProxy",
- "type": "object",
- "description": "A TargetHttpsProxy resource. This resource defines an HTTPS proxy. (== resource_for beta.targetHttpsProxies ==) (== resource_for v1.targetHttpsProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetHttpsProxy for target HTTPS proxies.",
- "default": "compute#targetHttpsProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sslCertificates": {
- "type": "array",
- "description": "URLs to SslCertificate resources that are used to authenticate connections between users and the load balancer. Currently, exactly one SSL certificate must be specified.",
- "items": {
- "type": "string"
- }
- },
- "urlMap": {
- "type": "string",
- "description": "A fully-qualified or valid partial URL to the UrlMap resource that defines the mapping from URL to the BackendService. For example, the following are all valid URLs for specifying a URL map: \n- https://www.googleapis.compute/v1/projects/project/global/urlMaps/url-map \n- projects/project/global/urlMaps/url-map \n- global/urlMaps/url-map"
- }
- }
- },
- "TargetHttpsProxyList": {
- "id": "TargetHttpsProxyList",
- "type": "object",
- "description": "Contains a list of TargetHttpsProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetHttpsProxy resources.",
- "items": {
- "$ref": "TargetHttpsProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource. Always compute#targetHttpsProxyList for lists of target HTTPS proxies.",
- "default": "compute#targetHttpsProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetInstance": {
- "id": "TargetInstance",
- "type": "object",
- "description": "A TargetInstance resource. This resource defines an endpoint instance that terminates traffic of certain protocols. (== resource_for beta.targetInstances ==) (== resource_for v1.targetInstances ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "instance": {
- "type": "string",
- "description": "A URL to the virtual machine instance that handles traffic for this target instance. When creating a target instance, you can provide the fully-qualified URL or a valid partial URL to the desired virtual machine. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] The type of the resource. Always compute#targetInstance for target instances.",
- "default": "compute#targetInstance"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "natPolicy": {
- "type": "string",
- "description": "NAT option controlling how IPs are NAT'ed to the instance. Currently only NO_NAT (default value) is supported.",
- "enum": [
- "NO_NAT"
- ],
- "enumDescriptions": [
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "zone": {
- "type": "string",
- "description": "[Output Only] URL of the zone where the target instance resides."
- }
- }
- },
- "TargetInstanceAggregatedList": {
- "id": "TargetInstanceAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetInstance resources.",
- "additionalProperties": {
- "$ref": "TargetInstancesScopedList",
- "description": "Name of the scope containing this set of target instances."
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetInstanceAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetInstanceList": {
- "id": "TargetInstanceList",
- "type": "object",
- "description": "Contains a list of TargetInstance resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetInstance resources.",
- "items": {
- "$ref": "TargetInstance"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetInstanceList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetInstancesScopedList": {
- "id": "TargetInstancesScopedList",
- "type": "object",
- "properties": {
- "targetInstances": {
- "type": "array",
- "description": "List of target instances contained in this scope.",
- "items": {
- "$ref": "TargetInstance"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetPool": {
- "id": "TargetPool",
- "type": "object",
- "description": "A TargetPool resource. This resource defines a pool of instances, an associated HttpHealthCheck resource, and the fallback target pool. (== resource_for beta.targetPools ==) (== resource_for v1.targetPools ==)",
- "properties": {
- "backupPool": {
- "type": "string",
- "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool, and its failoverRatio field is properly set to a value between [0, 1].\n\nbackupPool and failoverRatio together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below failoverRatio, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio and backupPool are not set, or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy."
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "failoverRatio": {
- "type": "number",
- "description": "This field is applicable only when the containing target pool is serving a forwarding rule as the primary pool (i.e., not as a backup pool to some other target pool). The value of the field must be in [0, 1].\n\nIf set, backupPool must also be set. They together define the fallback behavior of the primary target pool: if the ratio of the healthy instances in the primary pool is at or below this number, traffic arriving at the load-balanced IP will be directed to the backup pool.\n\nIn case where failoverRatio is not set or all the instances in the backup pool are unhealthy, the traffic will be directed back to the primary pool in the \"force\" mode, where traffic will be spread to the healthy instances with the best effort, or to all instances when no instance is healthy.",
- "format": "float"
- },
- "healthChecks": {
- "type": "array",
- "description": "The URL of the HttpHealthCheck resource. A member instance in this pool is considered healthy if and only if the health checks pass. An empty list means all member instances will be considered healthy at all times. Only HttpHealthChecks are supported. Only one health check may be specified.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "instances": {
- "type": "array",
- "description": "A list of resource URLs to the virtual machine instances serving this pool. They must live in zones contained in the same region as this pool.",
- "items": {
- "type": "string"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetPool for target pools.",
- "default": "compute#targetPool"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the target pool resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sessionAffinity": {
- "type": "string",
- "description": "Sesssion affinity option, must be one of the following values:\nNONE: Connections from the same client IP may go to any instance in the pool.\nCLIENT_IP: Connections from the same client IP will go to the same instance in the pool while that instance remains healthy.\nCLIENT_IP_PROTO: Connections from the same client IP with the same IP protocol will go to the same instance in the pool while that instance remains healthy.",
- "enum": [
- "CLIENT_IP",
- "CLIENT_IP_PORT_PROTO",
- "CLIENT_IP_PROTO",
- "GENERATED_COOKIE",
- "NONE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- ""
- ]
- }
- }
- },
- "TargetPoolAggregatedList": {
- "id": "TargetPoolAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetPool resources.",
- "additionalProperties": {
- "$ref": "TargetPoolsScopedList",
- "description": "Name of the scope containing this set of target pools."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolAggregatedList for aggregated lists of target pools.",
- "default": "compute#targetPoolAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetPoolInstanceHealth": {
- "id": "TargetPoolInstanceHealth",
- "type": "object",
- "properties": {
- "healthStatus": {
- "type": "array",
- "items": {
- "$ref": "HealthStatus"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolInstanceHealth when checking the health of an instance.",
- "default": "compute#targetPoolInstanceHealth"
- }
- }
- },
- "TargetPoolList": {
- "id": "TargetPoolList",
- "type": "object",
- "description": "Contains a list of TargetPool resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetPool resources.",
- "items": {
- "$ref": "TargetPool"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetPoolList for lists of target pools.",
- "default": "compute#targetPoolList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetPoolsAddHealthCheckRequest": {
- "id": "TargetPoolsAddHealthCheckRequest",
- "type": "object",
- "properties": {
- "healthChecks": {
- "type": "array",
- "description": "The HttpHealthCheck to add to the target pool.",
- "items": {
- "$ref": "HealthCheckReference"
- }
- }
- }
- },
- "TargetPoolsAddInstanceRequest": {
- "id": "TargetPoolsAddInstanceRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "A full or partial URL to an instance to add to this target pool. This can be a full or partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/v1/projects/project-id/zones/zone/instances/instance-name \n- projects/project-id/zones/zone/instances/instance-name \n- zones/zone/instances/instance-name",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "TargetPoolsRemoveHealthCheckRequest": {
- "id": "TargetPoolsRemoveHealthCheckRequest",
- "type": "object",
- "properties": {
- "healthChecks": {
- "type": "array",
- "description": "Health check URL to be removed. This can be a full or valid partial URL. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project/global/httpHealthChecks/health-check \n- projects/project/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
- "items": {
- "$ref": "HealthCheckReference"
- }
- }
- }
- },
- "TargetPoolsRemoveInstanceRequest": {
- "id": "TargetPoolsRemoveInstanceRequest",
- "type": "object",
- "properties": {
- "instances": {
- "type": "array",
- "description": "URLs of the instances to be removed from target pool.",
- "items": {
- "$ref": "InstanceReference"
- }
- }
- }
- },
- "TargetPoolsScopedList": {
- "id": "TargetPoolsScopedList",
- "type": "object",
- "properties": {
- "targetPools": {
- "type": "array",
- "description": "List of target pools contained in this scope.",
- "items": {
- "$ref": "TargetPool"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetReference": {
- "id": "TargetReference",
- "type": "object",
- "properties": {
- "target": {
- "type": "string"
- }
- }
- },
- "TargetSslProxiesSetBackendServiceRequest": {
- "id": "TargetSslProxiesSetBackendServiceRequest",
- "type": "object",
- "properties": {
- "service": {
- "type": "string",
- "description": "The URL of the new BackendService resource for the targetSslProxy."
- }
- }
- },
- "TargetSslProxiesSetProxyHeaderRequest": {
- "id": "TargetSslProxiesSetProxyHeaderRequest",
- "type": "object",
- "properties": {
- "proxyHeader": {
- "type": "string",
- "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "TargetSslProxiesSetSslCertificatesRequest": {
- "id": "TargetSslProxiesSetSslCertificatesRequest",
- "type": "object",
- "properties": {
- "sslCertificates": {
- "type": "array",
- "description": "New set of URLs to SslCertificate resources to associate with this TargetSslProxy. Currently exactly one ssl certificate must be specified.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetSslProxy": {
- "id": "TargetSslProxy",
- "type": "object",
- "description": "A TargetSslProxy resource. This resource defines an SSL proxy. (== resource_for beta.targetSslProxies ==) (== resource_for v1.targetSslProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetSslProxy for target SSL proxies.",
- "default": "compute#targetSslProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "service": {
- "type": "string",
- "description": "URL to the BackendService resource."
- },
- "sslCertificates": {
- "type": "array",
- "description": "URLs to SslCertificate resources that are used to authenticate connections to Backends. Currently exactly one SSL certificate must be specified.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetSslProxyList": {
- "id": "TargetSslProxyList",
- "type": "object",
- "description": "Contains a list of TargetSslProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetSslProxy resources.",
- "items": {
- "$ref": "TargetSslProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetSslProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetTcpProxiesSetBackendServiceRequest": {
- "id": "TargetTcpProxiesSetBackendServiceRequest",
- "type": "object",
- "properties": {
- "service": {
- "type": "string",
- "description": "The URL of the new BackendService resource for the targetTcpProxy."
- }
- }
- },
- "TargetTcpProxiesSetProxyHeaderRequest": {
- "id": "TargetTcpProxiesSetProxyHeaderRequest",
- "type": "object",
- "properties": {
- "proxyHeader": {
- "type": "string",
- "description": "The new type of proxy header to append before sending data to the backend. NONE or PROXY_V1 are allowed.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "TargetTcpProxy": {
- "id": "TargetTcpProxy",
- "type": "object",
- "description": "A TargetTcpProxy resource. This resource defines a TCP proxy. (== resource_for beta.targetTcpProxies ==) (== resource_for v1.targetTcpProxies ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#targetTcpProxy for target TCP proxies.",
- "default": "compute#targetTcpProxy"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "proxyHeader": {
- "type": "string",
- "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
- "enum": [
- "NONE",
- "PROXY_V1"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "service": {
- "type": "string",
- "description": "URL to the BackendService resource."
- }
- }
- },
- "TargetTcpProxyList": {
- "id": "TargetTcpProxyList",
- "type": "object",
- "description": "Contains a list of TargetTcpProxy resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetTcpProxy resources.",
- "items": {
- "$ref": "TargetTcpProxy"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#targetTcpProxyList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetVpnGateway": {
- "id": "TargetVpnGateway",
- "type": "object",
- "description": "Represents a Target VPN gateway resource. (== resource_for beta.targetVpnGateways ==) (== resource_for v1.targetVpnGateways ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "forwardingRules": {
- "type": "array",
- "description": "[Output Only] A list of URLs to the ForwardingRule resources. ForwardingRules are created using compute.forwardingRules.insert and associated to a VPN gateway.",
- "items": {
- "type": "string"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGateway"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.targetVpnGateways.insert"
- ]
- }
- },
- "network": {
- "type": "string",
- "description": "URL of the network to which this VPN gateway is attached. Provided by the client when the VPN gateway is created.",
- "annotations": {
- "required": [
- "compute.targetVpnGateways.insert"
- ]
- }
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the target VPN gateway resides."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the VPN gateway.",
- "enum": [
- "CREATING",
- "DELETING",
- "FAILED",
- "READY"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- ""
- ]
- },
- "tunnels": {
- "type": "array",
- "description": "[Output Only] A list of URLs to VpnTunnel resources. VpnTunnels are created using compute.vpntunnels.insert method and associated to a VPN gateway.",
- "items": {
- "type": "string"
- }
- }
- }
- },
- "TargetVpnGatewayAggregatedList": {
- "id": "TargetVpnGatewayAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of TargetVpnGateway resources.",
- "additionalProperties": {
- "$ref": "TargetVpnGatewaysScopedList",
- "description": "[Output Only] Name of the scope containing this set of target VPN gateways."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGatewayAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetVpnGatewayList": {
- "id": "TargetVpnGatewayList",
- "type": "object",
- "description": "Contains a list of TargetVpnGateway resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of TargetVpnGateway resources.",
- "items": {
- "$ref": "TargetVpnGateway"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#targetVpnGateway for target VPN gateways.",
- "default": "compute#targetVpnGatewayList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TargetVpnGatewaysScopedList": {
- "id": "TargetVpnGatewaysScopedList",
- "type": "object",
- "properties": {
- "targetVpnGateways": {
- "type": "array",
- "description": "[Output Only] List of target vpn gateways contained in this scope.",
- "items": {
- "$ref": "TargetVpnGateway"
- }
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "TestFailure": {
- "id": "TestFailure",
- "type": "object",
- "properties": {
- "actualService": {
- "type": "string"
- },
- "expectedService": {
- "type": "string"
- },
- "host": {
- "type": "string"
- },
- "path": {
- "type": "string"
- }
- }
- },
- "UrlMap": {
- "id": "UrlMap",
- "type": "object",
- "description": "A UrlMap resource. This resource defines the mapping from URL to the BackendService resource, based on the \"longest-match\" of the URL's host and path.",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "defaultService": {
- "type": "string",
- "description": "The URL of the BackendService resource if none of the hostRules match."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "fingerprint": {
- "type": "string",
- "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a UrlMap. An up-to-date fingerprint must be provided in order to update the UrlMap.",
- "format": "byte"
- },
- "hostRules": {
- "type": "array",
- "description": "The list of HostRules to use against the URL.",
- "items": {
- "$ref": "HostRule"
- }
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#urlMaps for url maps.",
- "default": "compute#urlMap"
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?"
- },
- "pathMatchers": {
- "type": "array",
- "description": "The list of named PathMatchers to use against the URL.",
- "items": {
- "$ref": "PathMatcher"
- }
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "tests": {
- "type": "array",
- "description": "The list of expected URL mappings. Request to update this UrlMap will succeed only if all of the test cases pass.",
- "items": {
- "$ref": "UrlMapTest"
- }
- }
- }
- },
- "UrlMapList": {
- "id": "UrlMapList",
- "type": "object",
- "description": "Contains a list of UrlMap resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of UrlMap resources.",
- "items": {
- "$ref": "UrlMap"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#urlMapList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "UrlMapReference": {
- "id": "UrlMapReference",
- "type": "object",
- "properties": {
- "urlMap": {
- "type": "string"
- }
- }
- },
- "UrlMapTest": {
- "id": "UrlMapTest",
- "type": "object",
- "description": "Message for the expected URL mappings.",
- "properties": {
- "description": {
- "type": "string",
- "description": "Description of this test case."
- },
- "host": {
- "type": "string",
- "description": "Host portion of the URL."
- },
- "path": {
- "type": "string",
- "description": "Path portion of the URL."
- },
- "service": {
- "type": "string",
- "description": "Expected BackendService resource the given URL should be mapped to."
- }
- }
- },
- "UrlMapValidationResult": {
- "id": "UrlMapValidationResult",
- "type": "object",
- "description": "Message representing the validation result for a UrlMap.",
- "properties": {
- "loadErrors": {
- "type": "array",
- "items": {
- "type": "string"
- }
- },
- "loadSucceeded": {
- "type": "boolean",
- "description": "Whether the given UrlMap can be successfully loaded. If false, 'loadErrors' indicates the reasons."
- },
- "testFailures": {
- "type": "array",
- "items": {
- "$ref": "TestFailure"
- }
- },
- "testPassed": {
- "type": "boolean",
- "description": "If successfully loaded, this field indicates whether the test passed. If false, 'testFailures's indicate the reason of failure."
- }
- }
- },
- "UrlMapsValidateRequest": {
- "id": "UrlMapsValidateRequest",
- "type": "object",
- "properties": {
- "resource": {
- "$ref": "UrlMap",
- "description": "Content of the UrlMap to be validated."
- }
- }
- },
- "UrlMapsValidateResponse": {
- "id": "UrlMapsValidateResponse",
- "type": "object",
- "properties": {
- "result": {
- "$ref": "UrlMapValidationResult"
- }
- }
- },
- "UsageExportLocation": {
- "id": "UsageExportLocation",
- "type": "object",
- "description": "The location in Cloud Storage and naming method of the daily usage report. Contains bucket_name and report_name prefix.",
- "properties": {
- "bucketName": {
- "type": "string",
- "description": "The name of an existing bucket in Cloud Storage where the usage report object is stored. The Google Service Account is granted write access to this bucket. This can either be the bucket name by itself, such as example-bucket, or the bucket name with gs:// or https://storage.googleapis.com/ in front of it, such as gs://example-bucket."
- },
- "reportNamePrefix": {
- "type": "string",
- "description": "An optional prefix for the name of the usage report object stored in bucketName. If not supplied, defaults to usage. The report is stored as a CSV file named report_name_prefix_gce_YYYYMMDD.csv where YYYYMMDD is the day of the usage according to Pacific Time. If you supply a prefix, it should conform to Cloud Storage object naming conventions."
- }
- }
- },
- "VpnTunnel": {
- "id": "VpnTunnel",
- "type": "object",
- "description": "VPN tunnel resource. (== resource_for beta.vpnTunnels ==) (== resource_for v1.vpnTunnels ==)",
- "properties": {
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "description": {
- "type": "string",
- "description": "An optional description of this resource. Provide this property when you create the resource."
- },
- "detailedStatus": {
- "type": "string",
- "description": "[Output Only] Detailed status message for the VPN tunnel."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "ikeVersion": {
- "type": "integer",
- "description": "IKE protocol version to use when establishing the VPN tunnel with peer VPN gateway. Acceptable IKE versions are 1 or 2. Default version is 2.",
- "format": "int32"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnel"
- },
- "localTrafficSelector": {
- "type": "array",
- "description": "Local traffic selector to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "name": {
- "type": "string",
- "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression [a-z]([-a-z0-9]*[a-z0-9])? which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "annotations": {
- "required": [
- "compute.vpnTunnels.insert"
- ]
- }
- },
- "peerIp": {
- "type": "string",
- "description": "IP address of the peer VPN gateway. Only IPv4 is supported."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] URL of the region where the VPN tunnel resides."
- },
- "remoteTrafficSelector": {
- "type": "array",
- "description": "Remote traffic selectors to use when establishing the VPN tunnel with peer VPN gateway. The value should be a CIDR formatted string, for example: 192.168.0.0/16. The ranges should be disjoint. Only IPv4 is supported.",
- "items": {
- "type": "string"
- }
- },
- "router": {
- "type": "string",
- "description": "URL of router resource to be used for dynamic routing."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "sharedSecret": {
- "type": "string",
- "description": "Shared secret used to set the secure session between the Cloud VPN gateway and the peer VPN gateway."
- },
- "sharedSecretHash": {
- "type": "string",
- "description": "Hash of the shared secret."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] The status of the VPN tunnel.",
- "enum": [
- "ALLOCATING_RESOURCES",
- "AUTHORIZATION_ERROR",
- "DEPROVISIONING",
- "ESTABLISHED",
- "FAILED",
- "FIRST_HANDSHAKE",
- "NEGOTIATION_FAILURE",
- "NETWORK_ERROR",
- "NO_INCOMING_PACKETS",
- "PROVISIONING",
- "REJECTED",
- "WAITING_FOR_FULL_CONFIG"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "targetVpnGateway": {
- "type": "string",
- "description": "URL of the VPN gateway with which this VPN tunnel is associated. Provided by the client when the VPN tunnel is created.",
- "annotations": {
- "required": [
- "compute.vpnTunnels.insert"
- ]
- }
- }
- }
- },
- "VpnTunnelAggregatedList": {
- "id": "VpnTunnelAggregatedList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "object",
- "description": "A list of VpnTunnelsScopedList resources.",
- "additionalProperties": {
- "$ref": "VpnTunnelsScopedList",
- "description": "Name of the scope containing this set of vpn tunnels."
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnelAggregatedList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "VpnTunnelList": {
- "id": "VpnTunnelList",
- "type": "object",
- "description": "Contains a list of VpnTunnel resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of VpnTunnel resources.",
- "items": {
- "$ref": "VpnTunnel"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#vpnTunnel for VPN tunnels.",
- "default": "compute#vpnTunnelList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "VpnTunnelsScopedList": {
- "id": "VpnTunnelsScopedList",
- "type": "object",
- "properties": {
- "vpnTunnels": {
- "type": "array",
- "description": "List of vpn tunnels contained in this scope.",
- "items": {
- "$ref": "VpnTunnel"
- }
- },
- "warning": {
- "type": "object",
- "description": "Informational warning which replaces the list of addresses when the list is empty.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "XpnHostList": {
- "id": "XpnHostList",
- "type": "object",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "[Output Only] A list of shared VPC host project URLs.",
- "items": {
- "$ref": "Project"
- }
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of resource. Always compute#xpnHostList for lists of shared VPC hosts.",
- "default": "compute#xpnHostList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "XpnResourceId": {
- "id": "XpnResourceId",
- "type": "object",
- "description": "Service resource (a.k.a service project) ID.",
- "properties": {
- "id": {
- "type": "string",
- "description": "The ID of the service resource. In the case of projects, this field matches the project ID (e.g., my-project), not the project number (e.g., 12345678)."
- },
- "type": {
- "type": "string",
- "description": "The type of the service resource.",
- "enum": [
- "PROJECT",
- "XPN_RESOURCE_TYPE_UNSPECIFIED"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "Zone": {
- "id": "Zone",
- "type": "object",
- "description": "A Zone resource. (== resource_for beta.zones ==) (== resource_for v1.zones ==)",
- "properties": {
- "availableCpuPlatforms": {
- "type": "array",
- "description": "[Output Only] Available cpu/platform selections for the zone.",
- "items": {
- "type": "string"
- }
- },
- "creationTimestamp": {
- "type": "string",
- "description": "[Output Only] Creation timestamp in RFC3339 text format."
- },
- "deprecated": {
- "$ref": "DeprecationStatus",
- "description": "[Output Only] The deprecation status associated with this zone."
- },
- "description": {
- "type": "string",
- "description": "[Output Only] Textual description of the resource."
- },
- "id": {
- "type": "string",
- "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
- "format": "uint64"
- },
- "kind": {
- "type": "string",
- "description": "[Output Only] Type of the resource. Always compute#zone for zones.",
- "default": "compute#zone"
- },
- "name": {
- "type": "string",
- "description": "[Output Only] Name of the resource."
- },
- "region": {
- "type": "string",
- "description": "[Output Only] Full URL reference to the region which hosts the zone."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for the resource."
- },
- "status": {
- "type": "string",
- "description": "[Output Only] Status of the zone, either UP or DOWN.",
- "enum": [
- "DOWN",
- "UP"
- ],
- "enumDescriptions": [
- "",
- ""
- ]
- }
- }
- },
- "ZoneList": {
- "id": "ZoneList",
- "type": "object",
- "description": "Contains a list of zone resources.",
- "properties": {
- "id": {
- "type": "string",
- "description": "[Output Only] Unique identifier for the resource; defined by the server."
- },
- "items": {
- "type": "array",
- "description": "A list of Zone resources.",
- "items": {
- "$ref": "Zone"
- }
- },
- "kind": {
- "type": "string",
- "description": "Type of resource.",
- "default": "compute#zoneList"
- },
- "nextPageToken": {
- "type": "string",
- "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results."
- },
- "selfLink": {
- "type": "string",
- "description": "[Output Only] Server-defined URL for this resource."
- },
- "warning": {
- "type": "object",
- "description": "[Output Only] Informational warning message.",
- "properties": {
- "code": {
- "type": "string",
- "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
- "enum": [
- "CLEANUP_FAILED",
- "DEPRECATED_RESOURCE_USED",
- "DEPRECATED_TYPE_USED",
- "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
- "EXPERIMENTAL_TYPE_USED",
- "EXTERNAL_API_WARNING",
- "FIELD_VALUE_OVERRIDEN",
- "INJECTED_KERNELS_DEPRECATED",
- "MISSING_TYPE_DEPENDENCY",
- "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
- "NEXT_HOP_CANNOT_IP_FORWARD",
- "NEXT_HOP_INSTANCE_NOT_FOUND",
- "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
- "NEXT_HOP_NOT_RUNNING",
- "NOT_CRITICAL_ERROR",
- "NO_RESULTS_ON_PAGE",
- "REQUIRED_TOS_AGREEMENT",
- "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
- "RESOURCE_NOT_DELETED",
- "SCHEMA_VALIDATION_IGNORED",
- "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
- "UNDECLARED_PROPERTIES",
- "UNREACHABLE"
- ],
- "enumDescriptions": [
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- "",
- ""
- ]
- },
- "data": {
- "type": "array",
- "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
- "items": {
- "type": "object",
- "properties": {
- "key": {
- "type": "string",
- "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding)."
- },
- "value": {
- "type": "string",
- "description": "[Output Only] A warning data value corresponding to the key."
- }
- }
- }
- },
- "message": {
- "type": "string",
- "description": "[Output Only] A human-readable description of the warning code."
- }
- }
- }
- }
- },
- "ZoneSetLabelsRequest": {
- "id": "ZoneSetLabelsRequest",
- "type": "object",
- "properties": {
- "labelFingerprint": {
- "type": "string",
- "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels. Make a get() request to the resource to get the latest fingerprint.",
- "format": "byte"
- },
- "labels": {
- "type": "object",
- "description": "The labels to set for this resource.",
- "additionalProperties": {
- "type": "string"
- }
- }
- }
- }
- },
- "resources": {
- "acceleratorTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.acceleratorTypes.aggregatedList",
- "path": "{project}/aggregated/acceleratorTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of accelerator types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AcceleratorTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.acceleratorTypes.get",
- "path": "{project}/zones/{zone}/acceleratorTypes/{acceleratorType}",
- "httpMethod": "GET",
- "description": "Returns the specified accelerator type. Get a list of available accelerator types by making a list() request.",
- "parameters": {
- "acceleratorType": {
- "type": "string",
- "description": "Name of the accelerator type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "acceleratorType"
- ],
- "response": {
- "$ref": "AcceleratorType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.acceleratorTypes.list",
- "path": "{project}/zones/{zone}/acceleratorTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of accelerator types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "AcceleratorTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "addresses": {
- "methods": {
- "aggregatedList": {
- "id": "compute.addresses.aggregatedList",
- "path": "{project}/aggregated/addresses",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of addresses.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AddressAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.addresses.delete",
- "path": "{project}/regions/{region}/addresses/{address}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "address"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.addresses.get",
- "path": "{project}/regions/{region}/addresses/{address}",
- "httpMethod": "GET",
- "description": "Returns the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "address"
- ],
- "response": {
- "$ref": "Address"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.addresses.insert",
- "path": "{project}/regions/{region}/addresses",
- "httpMethod": "POST",
- "description": "Creates an address resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Address"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.addresses.list",
- "path": "{project}/regions/{region}/addresses",
- "httpMethod": "GET",
- "description": "Retrieves a list of addresses contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "AddressList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "autoscalers": {
- "methods": {
- "aggregatedList": {
- "id": "compute.autoscalers.aggregatedList",
- "path": "{project}/aggregated/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of autoscalers.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AutoscalerAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.autoscalers.delete",
- "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "autoscaler"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.autoscalers.get",
- "path": "{project}/zones/{zone}/autoscalers/{autoscaler}",
- "httpMethod": "GET",
- "description": "Returns the specified autoscaler resource. Get a list of available autoscalers by making a list() request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "autoscaler"
- ],
- "response": {
- "$ref": "Autoscaler"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.autoscalers.insert",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "POST",
- "description": "Creates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.autoscalers.list",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves a list of autoscalers contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "AutoscalerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.autoscalers.patch",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "PATCH",
- "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to patch.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.autoscalers.update",
- "path": "{project}/zones/{zone}/autoscalers",
- "httpMethod": "PUT",
- "description": "Updates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to update.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "Name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "backendBuckets": {
- "methods": {
- "delete": {
- "id": "compute.backendBuckets.delete",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified BackendBucket resource.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.backendBuckets.get",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "GET",
- "description": "Returns the specified BackendBucket resource. Get a list of available backend buckets by making a list() request.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "response": {
- "$ref": "BackendBucket"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.backendBuckets.insert",
- "path": "{project}/global/backendBuckets",
- "httpMethod": "POST",
- "description": "Creates a BackendBucket resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.backendBuckets.list",
- "path": "{project}/global/backendBuckets",
- "httpMethod": "GET",
- "description": "Retrieves the list of BackendBucket resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendBucketList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.backendBuckets.patch",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "PATCH",
- "description": "Updates the specified BackendBucket resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.backendBuckets.update",
- "path": "{project}/global/backendBuckets/{backendBucket}",
- "httpMethod": "PUT",
- "description": "Updates the specified BackendBucket resource with the data included in the request.",
- "parameters": {
- "backendBucket": {
- "type": "string",
- "description": "Name of the BackendBucket resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendBucket"
- ],
- "request": {
- "$ref": "BackendBucket"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "backendServices": {
- "methods": {
- "aggregatedList": {
- "id": "compute.backendServices.aggregatedList",
- "path": "{project}/aggregated/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of all BackendService resources, regional and global, available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Name of the project scoping this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendServiceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.backendServices.delete",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.backendServices.get",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "GET",
- "description": "Returns the specified BackendService resource. Get a list of available backend services by making a list() request.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "response": {
- "$ref": "BackendService"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.backendServices.getHealth",
- "path": "{project}/global/backendServices/{backendService}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for this BackendService.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "ResourceGroupReference"
- },
- "response": {
- "$ref": "BackendServiceGroupHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.backendServices.insert",
- "path": "{project}/global/backendServices",
- "httpMethod": "POST",
- "description": "Creates a BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.backendServices.list",
- "path": "{project}/global/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of BackendService resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "BackendServiceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.backendServices.patch",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "PATCH",
- "description": "Patches the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.backendServices.update",
- "path": "{project}/global/backendServices/{backendService}",
- "httpMethod": "PUT",
- "description": "Updates the specified BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "diskTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.diskTypes.aggregatedList",
- "path": "{project}/aggregated/diskTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of disk types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "DiskTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.diskTypes.get",
- "path": "{project}/zones/{zone}/diskTypes/{diskType}",
- "httpMethod": "GET",
- "description": "Returns the specified disk type. Get a list of available disk types by making a list() request.",
- "parameters": {
- "diskType": {
- "type": "string",
- "description": "Name of the disk type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "diskType"
- ],
- "response": {
- "$ref": "DiskType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.diskTypes.list",
- "path": "{project}/zones/{zone}/diskTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of disk types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "DiskTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "disks": {
- "methods": {
- "aggregatedList": {
- "id": "compute.disks.aggregatedList",
- "path": "{project}/aggregated/disks",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of persistent disks.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "DiskAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "createSnapshot": {
- "id": "compute.disks.createSnapshot",
- "path": "{project}/zones/{zone}/disks/{disk}/createSnapshot",
- "httpMethod": "POST",
- "description": "Creates a snapshot of a specified persistent disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to snapshot.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "guestFlush": {
- "type": "boolean",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "request": {
- "$ref": "Snapshot"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.disks.delete",
- "path": "{project}/zones/{zone}/disks/{disk}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified persistent disk. Deleting a disk removes its data permanently and is irreversible. However, deleting a disk does not delete any snapshots previously made from the disk. You must separately delete snapshots.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.disks.get",
- "path": "{project}/zones/{zone}/disks/{disk}",
- "httpMethod": "GET",
- "description": "Returns a specified persistent disk. Get a list of available persistent disks by making a list() request.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "Name of the persistent disk to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "response": {
- "$ref": "Disk"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.disks.insert",
- "path": "{project}/zones/{zone}/disks",
- "httpMethod": "POST",
- "description": "Creates a persistent disk in the specified project using the data in the request. You can create a disk with a sourceImage, a sourceSnapshot, or create an empty 500 GB data disk by omitting all properties. You can also create a disk that is larger than the default size by specifying the sizeGb property.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "sourceImage": {
- "type": "string",
- "description": "Optional. Source image to restore onto a disk.",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Disk"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.disks.list",
- "path": "{project}/zones/{zone}/disks",
- "httpMethod": "GET",
- "description": "Retrieves a list of persistent disks contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "DiskList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "resize": {
- "id": "compute.disks.resize",
- "path": "{project}/zones/{zone}/disks/{disk}/resize",
- "httpMethod": "POST",
- "description": "Resizes the specified persistent disk. You can only increase the size of the disk.",
- "parameters": {
- "disk": {
- "type": "string",
- "description": "The name of the persistent disk.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "disk"
- ],
- "request": {
- "$ref": "DisksResizeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.disks.setLabels",
- "path": "{project}/zones/{zone}/disks/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a disk. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "request": {
- "$ref": "ZoneSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "firewalls": {
- "methods": {
- "delete": {
- "id": "compute.firewalls.delete",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified firewall.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.firewalls.get",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "GET",
- "description": "Returns the specified firewall.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "response": {
- "$ref": "Firewall"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.firewalls.insert",
- "path": "{project}/global/firewalls",
- "httpMethod": "POST",
- "description": "Creates a firewall rule in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.firewalls.list",
- "path": "{project}/global/firewalls",
- "httpMethod": "GET",
- "description": "Retrieves the list of firewall rules available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "FirewallList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.firewalls.patch",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "PATCH",
- "description": "Updates the specified firewall rule with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.firewalls.update",
- "path": "{project}/global/firewalls/{firewall}",
- "httpMethod": "PUT",
- "description": "Updates the specified firewall rule with the data included in the request. Using PUT method, can only update following fields of firewall rule: allowed, description, sourceRanges, sourceTags, targetTags.",
- "parameters": {
- "firewall": {
- "type": "string",
- "description": "Name of the firewall rule to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "firewall"
- ],
- "request": {
- "$ref": "Firewall"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "forwardingRules": {
- "methods": {
- "aggregatedList": {
- "id": "compute.forwardingRules.aggregatedList",
- "path": "{project}/aggregated/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of forwarding rules.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ForwardingRuleAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.forwardingRules.delete",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified ForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.forwardingRules.get",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}",
- "httpMethod": "GET",
- "description": "Returns the specified ForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "response": {
- "$ref": "ForwardingRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.forwardingRules.insert",
- "path": "{project}/regions/{region}/forwardingRules",
- "httpMethod": "POST",
- "description": "Creates a ForwardingRule resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.forwardingRules.list",
- "path": "{project}/regions/{region}/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves a list of ForwardingRule resources available to the specified project and region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "ForwardingRuleList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setTarget": {
- "id": "compute.forwardingRules.setTarget",
- "path": "{project}/regions/{region}/forwardingRules/{forwardingRule}/setTarget",
- "httpMethod": "POST",
- "description": "Changes target URL for forwarding rule. The new target should be of the same type as the old target.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource in which target is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "forwardingRule"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "globalAddresses": {
- "methods": {
- "delete": {
- "id": "compute.globalAddresses.delete",
- "path": "{project}/global/addresses/{address}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified address resource.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "address"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalAddresses.get",
- "path": "{project}/global/addresses/{address}",
- "httpMethod": "GET",
- "description": "Returns the specified address resource. Get a list of available addresses by making a list() request.",
- "parameters": {
- "address": {
- "type": "string",
- "description": "Name of the address resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "address"
- ],
- "response": {
- "$ref": "Address"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.globalAddresses.insert",
- "path": "{project}/global/addresses",
- "httpMethod": "POST",
- "description": "Creates an address resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Address"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.globalAddresses.list",
- "path": "{project}/global/addresses",
- "httpMethod": "GET",
- "description": "Retrieves a list of global addresses.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "AddressList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "globalForwardingRules": {
- "methods": {
- "delete": {
- "id": "compute.globalForwardingRules.delete",
- "path": "{project}/global/forwardingRules/{forwardingRule}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified GlobalForwardingRule resource.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalForwardingRules.get",
- "path": "{project}/global/forwardingRules/{forwardingRule}",
- "httpMethod": "GET",
- "description": "Returns the specified GlobalForwardingRule resource. Get a list of available forwarding rules by making a list() request.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "response": {
- "$ref": "ForwardingRule"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.globalForwardingRules.insert",
- "path": "{project}/global/forwardingRules",
- "httpMethod": "POST",
- "description": "Creates a GlobalForwardingRule resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ForwardingRule"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.globalForwardingRules.list",
- "path": "{project}/global/forwardingRules",
- "httpMethod": "GET",
- "description": "Retrieves a list of GlobalForwardingRule resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ForwardingRuleList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setTarget": {
- "id": "compute.globalForwardingRules.setTarget",
- "path": "{project}/global/forwardingRules/{forwardingRule}/setTarget",
- "httpMethod": "POST",
- "description": "Changes target URL for the GlobalForwardingRule resource. The new target should be of the same type as the old target.",
- "parameters": {
- "forwardingRule": {
- "type": "string",
- "description": "Name of the ForwardingRule resource in which target is to be set.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "forwardingRule"
- ],
- "request": {
- "$ref": "TargetReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "globalOperations": {
- "methods": {
- "aggregatedList": {
- "id": "compute.globalOperations.aggregatedList",
- "path": "{project}/aggregated/operations",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of all operations.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "OperationAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.globalOperations.delete",
- "path": "{project}/global/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.globalOperations.get",
- "path": "{project}/global/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified Operations resource. Get a list of operations by making a list() request.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.globalOperations.list",
- "path": "{project}/global/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "healthChecks": {
- "methods": {
- "delete": {
- "id": "compute.healthChecks.delete",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HealthCheck resource.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.healthChecks.get",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HealthCheck resource. Get a list of available health checks by making a list() request.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "response": {
- "$ref": "HealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.healthChecks.insert",
- "path": "{project}/global/healthChecks",
- "httpMethod": "POST",
- "description": "Creates a HealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.healthChecks.list",
- "path": "{project}/global/healthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.healthChecks.patch",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.healthChecks.update",
- "path": "{project}/global/healthChecks/{healthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "healthCheck": {
- "type": "string",
- "description": "Name of the HealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "healthCheck"
- ],
- "request": {
- "$ref": "HealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "httpHealthChecks": {
- "methods": {
- "delete": {
- "id": "compute.httpHealthChecks.delete",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HttpHealthCheck resource.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.httpHealthChecks.get",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HttpHealthCheck resource. Get a list of available HTTP health checks by making a list() request.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "response": {
- "$ref": "HttpHealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.httpHealthChecks.insert",
- "path": "{project}/global/httpHealthChecks",
- "httpMethod": "POST",
- "description": "Creates a HttpHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.httpHealthChecks.list",
- "path": "{project}/global/httpHealthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HttpHealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HttpHealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.httpHealthChecks.patch",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.httpHealthChecks.update",
- "path": "{project}/global/httpHealthChecks/{httpHealthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HttpHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "httpHealthCheck": {
- "type": "string",
- "description": "Name of the HttpHealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpHealthCheck"
- ],
- "request": {
- "$ref": "HttpHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "httpsHealthChecks": {
- "methods": {
- "delete": {
- "id": "compute.httpsHealthChecks.delete",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified HttpsHealthCheck resource.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.httpsHealthChecks.get",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "GET",
- "description": "Returns the specified HttpsHealthCheck resource. Get a list of available HTTPS health checks by making a list() request.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "response": {
- "$ref": "HttpsHealthCheck"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.httpsHealthChecks.insert",
- "path": "{project}/global/httpsHealthChecks",
- "httpMethod": "POST",
- "description": "Creates a HttpsHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.httpsHealthChecks.list",
- "path": "{project}/global/httpsHealthChecks",
- "httpMethod": "GET",
- "description": "Retrieves the list of HttpsHealthCheck resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "HttpsHealthCheckList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.httpsHealthChecks.patch",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "PATCH",
- "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.httpsHealthChecks.update",
- "path": "{project}/global/httpsHealthChecks/{httpsHealthCheck}",
- "httpMethod": "PUT",
- "description": "Updates a HttpsHealthCheck resource in the specified project using the data included in the request.",
- "parameters": {
- "httpsHealthCheck": {
- "type": "string",
- "description": "Name of the HttpsHealthCheck resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "httpsHealthCheck"
- ],
- "request": {
- "$ref": "HttpsHealthCheck"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "images": {
- "methods": {
- "delete": {
- "id": "compute.images.delete",
- "path": "{project}/global/images/{image}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified image.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Name of the image resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deprecate": {
- "id": "compute.images.deprecate",
- "path": "{project}/global/images/{image}/deprecate",
- "httpMethod": "POST",
- "description": "Sets the deprecation status of an image.\n\nIf an empty request body is given, clears the deprecation status instead.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Image name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "request": {
- "$ref": "DeprecationStatus"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.images.get",
- "path": "{project}/global/images/{image}",
- "httpMethod": "GET",
- "description": "Returns the specified image. Get a list of available images by making a list() request.",
- "parameters": {
- "image": {
- "type": "string",
- "description": "Name of the image resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "image"
- ],
- "response": {
- "$ref": "Image"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getFromFamily": {
- "id": "compute.images.getFromFamily",
- "path": "{project}/global/images/family/{family}",
- "httpMethod": "GET",
- "description": "Returns the latest image that is part of an image family and is not deprecated.",
- "parameters": {
- "family": {
- "type": "string",
- "description": "Name of the image family to search for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "family"
- ],
- "response": {
- "$ref": "Image"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.images.insert",
- "path": "{project}/global/images",
- "httpMethod": "POST",
- "description": "Creates an image in the specified project using the data included in the request.",
- "parameters": {
- "forceCreate": {
- "type": "boolean",
- "description": "Force image creation if true.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Image"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- },
- "list": {
- "id": "compute.images.list",
- "path": "{project}/global/images",
- "httpMethod": "GET",
- "description": "Retrieves the list of custom images available to the specified project. Custom images are images you create that belong to your project. This method does not get any images that belong to other projects, including publicly-available images, like Debian 8. If you want to get a list of publicly-available images, use this method to make a request to the respective image project, such as debian-cloud or windows-cloud.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ImageList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.images.setLabels",
- "path": "{project}/global/images/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on an image. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "instanceGroupManagers": {
- "methods": {
- "abandonInstances": {
- "id": "compute.instanceGroupManagers.abandonInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersAbandonInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instanceGroupManagers.aggregatedList",
- "path": "{project}/aggregated/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves the list of managed instance groups and groups them by zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceGroupManagerAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.instanceGroupManagers.delete",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified managed instance group and all of the instances in that group. Note that the instance group must not belong to a backend service. Read Deleting an instance group for more information.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteInstances": {
- "id": "compute.instanceGroupManagers.deleteInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersDeleteInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceGroupManagers.get",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "GET",
- "description": "Returns all of the details about the specified managed instance group. Get a list of available managed instance groups by making a list() request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManager"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceGroupManagers.insert",
- "path": "{project}/zones/{zone}/instanceGroupManagers",
- "httpMethod": "POST",
- "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA managed instance group can have up to 1000 VM instances per group. Please contact Cloud Support if you need an increase in this limit.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the managed instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceGroupManagers.list",
- "path": "{project}/zones/{zone}/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves a list of managed instance groups that are contained within the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceGroupManagerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listManagedInstances": {
- "id": "compute.instanceGroupManagers.listManagedInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
- "httpMethod": "POST",
- "description": "Lists all of the instances in the managed instance group. Each instance in the list has a currentAction, which indicates the action that the managed instance group is performing on the instance. For example, if the group is still creating an instance, the currentAction is CREATING. If a previous action failed, the list displays the errors for that failed action.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManagersListManagedInstancesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "recreateInstances": {
- "id": "compute.instanceGroupManagers.recreateInstances",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersRecreateInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resize": {
- "id": "compute.instanceGroupManagers.resize",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/resize",
- "httpMethod": "POST",
- "description": "Resizes the managed instance group. If you increase the size, the group creates new instances using the current instance template. If you decrease the size, the group deletes instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "size": {
- "type": "integer",
- "description": "The number of running instances that the managed instance group should maintain at any given time. The group automatically adds or removes instances to maintain the number of instances specified by this parameter.",
- "required": true,
- "format": "int32",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager",
- "size"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setInstanceTemplate": {
- "id": "compute.instanceGroupManagers.setInstanceTemplate",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
- "httpMethod": "POST",
- "description": "Specifies the instance template to use when creating new instances in this group. The templates for existing instances in the group do not change unless you recreate them.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetInstanceTemplateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTargetPools": {
- "id": "compute.instanceGroupManagers.setTargetPools",
- "path": "{project}/zones/{zone}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
- "httpMethod": "POST",
- "description": "Modifies the target pools to which all instances in this managed instance group are assigned. The target pools automatically apply to all of the instances in the managed instance group. This operation is marked DONE when you make the request even if the instances have not yet been added to their target pools. The change might take some time to apply to all of the instances in the group depending on the size of the group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the managed instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "InstanceGroupManagersSetTargetPoolsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "instanceGroups": {
- "methods": {
- "addInstances": {
- "id": "compute.instanceGroups.addInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/addInstances",
- "httpMethod": "POST",
- "description": "Adds a list of instances to the specified instance group. All of the instances in the instance group must be in the same network/subnetwork. Read Adding instances for more information.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where you are adding instances.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsAddInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instanceGroups.aggregatedList",
- "path": "{project}/aggregated/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance groups and sorts them by zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceGroupAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.instanceGroups.delete",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified instance group. The instances in the group are not deleted. Note that instance group must not belong to a backend service. Read Deleting an instance group for more information.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceGroups.get",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}",
- "httpMethod": "GET",
- "description": "Returns the specified instance group. Get a list of available instance groups by making a list() request.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "response": {
- "$ref": "InstanceGroup"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceGroups.insert",
- "path": "{project}/zones/{zone}/instanceGroups",
- "httpMethod": "POST",
- "description": "Creates an instance group in the specified project using the parameters that are included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where you want to create the instance group.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "InstanceGroup"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceGroups.list",
- "path": "{project}/zones/{zone}/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance groups that are located in the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceGroupList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listInstances": {
- "id": "compute.instanceGroups.listInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/listInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the specified instance group.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group from which you want to generate a list of included instances.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsListInstancesRequest"
- },
- "response": {
- "$ref": "InstanceGroupsListInstances"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "removeInstances": {
- "id": "compute.instanceGroups.removeInstances",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/removeInstances",
- "httpMethod": "POST",
- "description": "Removes one or more instances from the specified instance group, but does not delete those instances.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where the specified instances will be removed.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsRemoveInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setNamedPorts": {
- "id": "compute.instanceGroups.setNamedPorts",
- "path": "{project}/zones/{zone}/instanceGroups/{instanceGroup}/setNamedPorts",
- "httpMethod": "POST",
- "description": "Sets the named ports for the specified instance group.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the instance group where the named ports are updated.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone where the instance group is located.",
- "required": true,
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instanceGroup"
- ],
- "request": {
- "$ref": "InstanceGroupsSetNamedPortsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "instanceTemplates": {
- "methods": {
- "delete": {
- "id": "compute.instanceTemplates.delete",
- "path": "{project}/global/instanceTemplates/{instanceTemplate}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified instance template. If you delete an instance template that is being referenced from another instance group, the instance group will not be able to create or recreate virtual machine instances. Deleting an instance template is permanent and cannot be undone.",
- "parameters": {
- "instanceTemplate": {
- "type": "string",
- "description": "The name of the instance template to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "instanceTemplate"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instanceTemplates.get",
- "path": "{project}/global/instanceTemplates/{instanceTemplate}",
- "httpMethod": "GET",
- "description": "Returns the specified instance template. Get a list of available instance templates by making a list() request.",
- "parameters": {
- "instanceTemplate": {
- "type": "string",
- "description": "The name of the instance template.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "instanceTemplate"
- ],
- "response": {
- "$ref": "InstanceTemplate"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instanceTemplates.insert",
- "path": "{project}/global/instanceTemplates",
- "httpMethod": "POST",
- "description": "Creates an instance template in the specified project using the data that is included in the request. If you are creating a new template to update an existing instance group, your new instance template must use the same network or, if applicable, the same subnetwork as the original template.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "InstanceTemplate"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instanceTemplates.list",
- "path": "{project}/global/instanceTemplates",
- "httpMethod": "GET",
- "description": "Retrieves a list of instance templates that are contained within the specified project and zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceTemplateList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "instances": {
- "methods": {
- "addAccessConfig": {
- "id": "compute.instances.addAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/addAccessConfig",
- "httpMethod": "POST",
- "description": "Adds an access config to an instance's network interface.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface to add to this instance.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "networkInterface"
- ],
- "request": {
- "$ref": "AccessConfig"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "aggregatedList": {
- "id": "compute.instances.aggregatedList",
- "path": "{project}/aggregated/instances",
- "httpMethod": "GET",
- "description": "Retrieves aggregated list of instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InstanceAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "attachDisk": {
- "id": "compute.instances.attachDisk",
- "path": "{project}/zones/{zone}/instances/{instance}/attachDisk",
- "httpMethod": "POST",
- "description": "Attaches an existing Disk resource to an instance. You must first create the disk before you can attach it. It is not possible to create and attach a disk at the same time. For more information, read Adding a persistent disk to your instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "AttachedDisk"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.instances.delete",
- "path": "{project}/zones/{zone}/instances/{instance}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Instance resource. For more information, see Stopping or Deleting an Instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteAccessConfig": {
- "id": "compute.instances.deleteAccessConfig",
- "path": "{project}/zones/{zone}/instances/{instance}/deleteAccessConfig",
- "httpMethod": "POST",
- "description": "Deletes an access config from an instance's network interface.",
- "parameters": {
- "accessConfig": {
- "type": "string",
- "description": "The name of the access config to delete.",
- "required": true,
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "The instance name for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "networkInterface": {
- "type": "string",
- "description": "The name of the network interface.",
- "required": true,
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "accessConfig",
- "networkInterface"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "detachDisk": {
- "id": "compute.instances.detachDisk",
- "path": "{project}/zones/{zone}/instances/{instance}/detachDisk",
- "httpMethod": "POST",
- "description": "Detaches a disk from an instance.",
- "parameters": {
- "deviceName": {
- "type": "string",
- "description": "Disk device name to detach.",
- "required": true,
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "Instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "deviceName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.instances.get",
- "path": "{project}/zones/{zone}/instances/{instance}",
- "httpMethod": "GET",
- "description": "Returns the specified Instance resource. Get a list of available instances by making a list() request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Instance"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getSerialPortOutput": {
- "id": "compute.instances.getSerialPortOutput",
- "path": "{project}/zones/{zone}/instances/{instance}/serialPort",
- "httpMethod": "GET",
- "description": "Returns the specified instance's serial port output.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "port": {
- "type": "integer",
- "description": "Specifies which COM or serial port to retrieve data from.",
- "default": "1",
- "format": "int32",
- "minimum": "1",
- "maximum": "4",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "start": {
- "type": "string",
- "description": "Returns output starting from a specific byte position. Use this to page through output when the output is too large to return in a single request. For the initial request, leave this field unspecified. For subsequent calls, this field should be set to the next value returned in the previous call.",
- "format": "int64",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "SerialPortOutput"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.instances.insert",
- "path": "{project}/zones/{zone}/instances",
- "httpMethod": "POST",
- "description": "Creates an instance resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "request": {
- "$ref": "Instance"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.instances.list",
- "path": "{project}/zones/{zone}/instances",
- "httpMethod": "GET",
- "description": "Retrieves the list of instances contained within the specified zone.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "InstanceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "reset": {
- "id": "compute.instances.reset",
- "path": "{project}/zones/{zone}/instances/{instance}/reset",
- "httpMethod": "POST",
- "description": "Performs a reset on the instance. For more information, see Resetting an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDeletionProtection": {
- "id": "compute.instances.setDeletionProtection",
- "path": "{project}/zones/{zone}/instances/{resource}/setDeletionProtection",
- "httpMethod": "POST",
- "description": "Sets deletion protection on the instance.",
- "parameters": {
- "deletionProtection": {
- "type": "boolean",
- "description": "Whether the resource should be protected against deletion.",
- "default": "true",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "resource"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setDiskAutoDelete": {
- "id": "compute.instances.setDiskAutoDelete",
- "path": "{project}/zones/{zone}/instances/{instance}/setDiskAutoDelete",
- "httpMethod": "POST",
- "description": "Sets the auto-delete flag for a disk attached to an instance.",
- "parameters": {
- "autoDelete": {
- "type": "boolean",
- "description": "Whether to auto-delete the disk when the instance is deleted.",
- "required": true,
- "location": "query"
- },
- "deviceName": {
- "type": "string",
- "description": "The device name of the disk to modify.",
- "required": true,
- "pattern": "\\w[\\w.-]{0,254}",
- "location": "query"
- },
- "instance": {
- "type": "string",
- "description": "The instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance",
- "autoDelete",
- "deviceName"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setLabels": {
- "id": "compute.instances.setLabels",
- "path": "{project}/zones/{zone}/instances/{instance}/setLabels",
- "httpMethod": "POST",
- "description": "Sets labels on an instance. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMachineResources": {
- "id": "compute.instances.setMachineResources",
- "path": "{project}/zones/{zone}/instances/{instance}/setMachineResources",
- "httpMethod": "POST",
- "description": "Changes the number and/or type of accelerator for a stopped instance to the values specified in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMachineResourcesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMachineType": {
- "id": "compute.instances.setMachineType",
- "path": "{project}/zones/{zone}/instances/{instance}/setMachineType",
- "httpMethod": "POST",
- "description": "Changes the machine type for a stopped instance to the machine type specified in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMachineTypeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMetadata": {
- "id": "compute.instances.setMetadata",
- "path": "{project}/zones/{zone}/instances/{instance}/setMetadata",
- "httpMethod": "POST",
- "description": "Sets metadata for the specified instance to the data included in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Metadata"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setMinCpuPlatform": {
- "id": "compute.instances.setMinCpuPlatform",
- "path": "{project}/zones/{zone}/instances/{instance}/setMinCpuPlatform",
- "httpMethod": "POST",
- "description": "Changes the minimum CPU platform that this instance should use. This method can only be called on a stopped instance. For more information, read Specifying a Minimum CPU Platform.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetMinCpuPlatformRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setScheduling": {
- "id": "compute.instances.setScheduling",
- "path": "{project}/zones/{zone}/instances/{instance}/setScheduling",
- "httpMethod": "POST",
- "description": "Sets an instance's scheduling options.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Instance name.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Scheduling"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setServiceAccount": {
- "id": "compute.instances.setServiceAccount",
- "path": "{project}/zones/{zone}/instances/{instance}/setServiceAccount",
- "httpMethod": "POST",
- "description": "Sets the service account on the instance. For more information, read Changing the service account and access scopes for an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesSetServiceAccountRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTags": {
- "id": "compute.instances.setTags",
- "path": "{project}/zones/{zone}/instances/{instance}/setTags",
- "httpMethod": "POST",
- "description": "Sets tags for the specified instance to the data included in the request.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "Tags"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "start": {
- "id": "compute.instances.start",
- "path": "{project}/zones/{zone}/instances/{instance}/start",
- "httpMethod": "POST",
- "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "startWithEncryptionKey": {
- "id": "compute.instances.startWithEncryptionKey",
- "path": "{project}/zones/{zone}/instances/{instance}/startWithEncryptionKey",
- "httpMethod": "POST",
- "description": "Starts an instance that was stopped using the using the instances().stop method. For more information, see Restart an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to start.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "request": {
- "$ref": "InstancesStartWithEncryptionKeyRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "stop": {
- "id": "compute.instances.stop",
- "path": "{project}/zones/{zone}/instances/{instance}/stop",
- "httpMethod": "POST",
- "description": "Stops a running instance, shutting it down cleanly, and allows you to restart the instance at a later time. Stopped instances do not incur VM usage charges while they are stopped. However, resources that the VM is using, such as persistent disks and static IP addresses, will continue to be charged until they are deleted. For more information, see Stopping an instance.",
- "parameters": {
- "instance": {
- "type": "string",
- "description": "Name of the instance resource to stop.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "instance"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "interconnectAttachments": {
- "methods": {
- "aggregatedList": {
- "id": "compute.interconnectAttachments.aggregatedList",
- "path": "{project}/aggregated/interconnectAttachments",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of interconnect attachments.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectAttachmentAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.interconnectAttachments.delete",
- "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified interconnect attachment.",
- "parameters": {
- "interconnectAttachment": {
- "type": "string",
- "description": "Name of the interconnect attachment to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "interconnectAttachment"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.interconnectAttachments.get",
- "path": "{project}/regions/{region}/interconnectAttachments/{interconnectAttachment}",
- "httpMethod": "GET",
- "description": "Returns the specified interconnect attachment.",
- "parameters": {
- "interconnectAttachment": {
- "type": "string",
- "description": "Name of the interconnect attachment to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "interconnectAttachment"
- ],
- "response": {
- "$ref": "InterconnectAttachment"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.interconnectAttachments.insert",
- "path": "{project}/regions/{region}/interconnectAttachments",
- "httpMethod": "POST",
- "description": "Creates an InterconnectAttachment in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "InterconnectAttachment"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.interconnectAttachments.list",
- "path": "{project}/regions/{region}/interconnectAttachments",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect attachments contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "InterconnectAttachmentList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "interconnectLocations": {
- "methods": {
- "get": {
- "id": "compute.interconnectLocations.get",
- "path": "{project}/global/interconnectLocations/{interconnectLocation}",
- "httpMethod": "GET",
- "description": "Returns the details for the specified interconnect location. Get a list of available interconnect locations by making a list() request.",
- "parameters": {
- "interconnectLocation": {
- "type": "string",
- "description": "Name of the interconnect location to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "interconnectLocation"
- ],
- "response": {
- "$ref": "InterconnectLocation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.interconnectLocations.list",
- "path": "{project}/global/interconnectLocations",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect locations available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectLocationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "interconnects": {
- "methods": {
- "delete": {
- "id": "compute.interconnects.delete",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified interconnect.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.interconnects.get",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "GET",
- "description": "Returns the specified interconnect. Get a list of available interconnects by making a list() request.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "response": {
- "$ref": "Interconnect"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.interconnects.insert",
- "path": "{project}/global/interconnects",
- "httpMethod": "POST",
- "description": "Creates a Interconnect in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Interconnect"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.interconnects.list",
- "path": "{project}/global/interconnects",
- "httpMethod": "GET",
- "description": "Retrieves the list of interconnect available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "InterconnectList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.interconnects.patch",
- "path": "{project}/global/interconnects/{interconnect}",
- "httpMethod": "PATCH",
- "description": "Updates the specified interconnect with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "interconnect": {
- "type": "string",
- "description": "Name of the interconnect to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "interconnect"
- ],
- "request": {
- "$ref": "Interconnect"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "licenses": {
- "methods": {
- "get": {
- "id": "compute.licenses.get",
- "path": "{project}/global/licenses/{license}",
- "httpMethod": "GET",
- "description": "Returns the specified License resource.",
- "parameters": {
- "license": {
- "type": "string",
- "description": "Name of the License resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "license"
- ],
- "response": {
- "$ref": "License"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "machineTypes": {
- "methods": {
- "aggregatedList": {
- "id": "compute.machineTypes.aggregatedList",
- "path": "{project}/aggregated/machineTypes",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of machine types.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "MachineTypeAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.machineTypes.get",
- "path": "{project}/zones/{zone}/machineTypes/{machineType}",
- "httpMethod": "GET",
- "description": "Returns the specified machine type. Get a list of available machine types by making a list() request.",
- "parameters": {
- "machineType": {
- "type": "string",
- "description": "Name of the machine type to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone",
- "machineType"
- ],
- "response": {
- "$ref": "MachineType"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.machineTypes.list",
- "path": "{project}/zones/{zone}/machineTypes",
- "httpMethod": "GET",
- "description": "Retrieves a list of machine types available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "zone": {
- "type": "string",
- "description": "The name of the zone for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "zone"
- ],
- "response": {
- "$ref": "MachineTypeList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "networks": {
- "methods": {
- "addPeering": {
- "id": "compute.networks.addPeering",
- "path": "{project}/global/networks/{network}/addPeering",
- "httpMethod": "POST",
- "description": "Adds a peering to the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network resource to add peering to.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "NetworksAddPeeringRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.networks.delete",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.networks.get",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "GET",
- "description": "Returns the specified network. Get a list of available networks by making a list() request.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Network"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.networks.insert",
- "path": "{project}/global/networks",
- "httpMethod": "POST",
- "description": "Creates a network in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Network"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.networks.list",
- "path": "{project}/global/networks",
- "httpMethod": "GET",
- "description": "Retrieves the list of networks available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "NetworkList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.networks.patch",
- "path": "{project}/global/networks/{network}",
- "httpMethod": "PATCH",
- "description": "Patches the specified network with the data included in the request. Only the following fields can be modified: routingConfig.routingMode.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "Network"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "removePeering": {
- "id": "compute.networks.removePeering",
- "path": "{project}/global/networks/{network}/removePeering",
- "httpMethod": "POST",
- "description": "Removes a peering from the specified network.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network resource to remove peering from.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "request": {
- "$ref": "NetworksRemovePeeringRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "switchToCustomMode": {
- "id": "compute.networks.switchToCustomMode",
- "path": "{project}/global/networks/{network}/switchToCustomMode",
- "httpMethod": "POST",
- "description": "Switches the network mode from auto subnet mode to custom subnet mode.",
- "parameters": {
- "network": {
- "type": "string",
- "description": "Name of the network to be updated.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "network"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "projects": {
- "methods": {
- "disableXpnHost": {
- "id": "compute.projects.disableXpnHost",
- "path": "{project}/disableXpnHost",
- "httpMethod": "POST",
- "description": "Disable this project as a shared VPC host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "disableXpnResource": {
- "id": "compute.projects.disableXpnResource",
- "path": "{project}/disableXpnResource",
- "httpMethod": "POST",
- "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsDisableXpnResourceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "enableXpnHost": {
- "id": "compute.projects.enableXpnHost",
- "path": "{project}/enableXpnHost",
- "httpMethod": "POST",
- "description": "Enable this project as a shared VPC host project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "enableXpnResource": {
- "id": "compute.projects.enableXpnResource",
- "path": "{project}/enableXpnResource",
- "httpMethod": "POST",
- "description": "Enable service resource (a.k.a service project) for a host project, so that subnets in the host project can be used by instances in the service project.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsEnableXpnResourceRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.projects.get",
- "path": "{project}",
- "httpMethod": "GET",
- "description": "Returns the specified Project resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Project"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getXpnHost": {
- "id": "compute.projects.getXpnHost",
- "path": "{project}/getXpnHost",
- "httpMethod": "GET",
- "description": "Get the shared VPC host project that this project links to. May be empty if no link exists.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "Project"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "getXpnResources": {
- "id": "compute.projects.getXpnResources",
- "path": "{project}/getXpnResources",
- "httpMethod": "GET",
- "description": "Get service resources (a.k.a service project) associated with this host project.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "ProjectsGetXpnResources"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "listXpnHosts": {
- "id": "compute.projects.listXpnHosts",
- "path": "{project}/listXpnHosts",
- "httpMethod": "POST",
- "description": "List all shared VPC host projects visible to the user in an organization.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "ProjectsListXpnHostsRequest"
- },
- "response": {
- "$ref": "XpnHostList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "moveDisk": {
- "id": "compute.projects.moveDisk",
- "path": "{project}/moveDisk",
- "httpMethod": "POST",
- "description": "Moves a persistent disk from one zone to another.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "DiskMoveRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "moveInstance": {
- "id": "compute.projects.moveInstance",
- "path": "{project}/moveInstance",
- "httpMethod": "POST",
- "description": "Moves an instance and its attached persistent disks from one zone to another.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "InstanceMoveRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setCommonInstanceMetadata": {
- "id": "compute.projects.setCommonInstanceMetadata",
- "path": "{project}/setCommonInstanceMetadata",
- "httpMethod": "POST",
- "description": "Sets metadata common to all instances within the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Metadata"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setUsageExportBucket": {
- "id": "compute.projects.setUsageExportBucket",
- "path": "{project}/setUsageExportBucket",
- "httpMethod": "POST",
- "description": "Enables the usage export feature and sets the usage export bucket where reports are stored. If you provide an empty request body using this method, the usage export feature will be disabled.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "UsageExportLocation"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/devstorage.full_control",
- "https://www.googleapis.com/auth/devstorage.read_only",
- "https://www.googleapis.com/auth/devstorage.read_write"
- ]
- }
- }
- },
- "regionAutoscalers": {
- "methods": {
- "delete": {
- "id": "compute.regionAutoscalers.delete",
- "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "autoscaler"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionAutoscalers.get",
- "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
- "httpMethod": "GET",
- "description": "Returns the specified autoscaler.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "autoscaler"
- ],
- "response": {
- "$ref": "Autoscaler"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionAutoscalers.insert",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "POST",
- "description": "Creates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionAutoscalers.list",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "GET",
- "description": "Retrieves a list of autoscalers contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionAutoscalerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionAutoscalers.patch",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "PATCH",
- "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to patch.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.regionAutoscalers.update",
- "path": "{project}/regions/{region}/autoscalers",
- "httpMethod": "PUT",
- "description": "Updates an autoscaler in the specified project using the data included in the request.",
- "parameters": {
- "autoscaler": {
- "type": "string",
- "description": "Name of the autoscaler to update.",
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "machineTypes": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of machine types.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/machineTypes",
+ "response": {
+ "$ref": "MachineTypeAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified machine type. Get a list of available machine types by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "machineType"
+ ],
+ "parameters": {
+ "machineType": {
+ "description": "Name of the machine type to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/machineTypes/{machineType}",
+ "response": {
+ "$ref": "MachineType"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of machine types available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.machineTypes.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "The name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/machineTypes",
+ "response": {
+ "$ref": "MachineTypeList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Autoscaler"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionBackendServices": {
- "methods": {
- "delete": {
- "id": "compute.regionBackendServices.delete",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified regional BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "networks": {
+ "methods": {
+ "addPeering": {
+ "description": "Adds a peering to the specified network.",
+ "httpMethod": "POST",
+ "id": "compute.networks.addPeering",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network resource to add peering to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/addPeering",
+ "request": {
+ "$ref": "NetworksAddPeeringRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified network.",
+ "httpMethod": "DELETE",
+ "id": "compute.networks.delete",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified network. Get a list of available networks by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.networks.get",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "response": {
+ "$ref": "Network"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a network in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.networks.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks",
+ "request": {
+ "$ref": "Network"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of networks available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.networks.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks",
+ "response": {
+ "$ref": "NetworkList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified network with the data included in the request. Only the following fields can be modified: routingConfig.routingMode.",
+ "httpMethod": "PATCH",
+ "id": "compute.networks.patch",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}",
+ "request": {
+ "$ref": "Network"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removePeering": {
+ "description": "Removes a peering from the specified network.",
+ "httpMethod": "POST",
+ "id": "compute.networks.removePeering",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network resource to remove peering from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/removePeering",
+ "request": {
+ "$ref": "NetworksRemovePeeringRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "switchToCustomMode": {
+ "description": "Switches the network mode from auto subnet mode to custom subnet mode.",
+ "httpMethod": "POST",
+ "id": "compute.networks.switchToCustomMode",
+ "parameterOrder": [
+ "project",
+ "network"
+ ],
+ "parameters": {
+ "network": {
+ "description": "Name of the network to be updated.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/networks/{network}/switchToCustomMode",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionBackendServices.get",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "GET",
- "description": "Returns the specified regional BackendService resource.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ },
+ "projects": {
+ "methods": {
+ "disableXpnHost": {
+ "description": "Disable this project as a shared VPC host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.disableXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/disableXpnHost",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "disableXpnResource": {
+ "description": "Disable a serivce resource (a.k.a service project) associated with this host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.disableXpnResource",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/disableXpnResource",
+ "request": {
+ "$ref": "ProjectsDisableXpnResourceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "enableXpnHost": {
+ "description": "Enable this project as a shared VPC host project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.enableXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/enableXpnHost",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "enableXpnResource": {
+ "description": "Enable service resource (a.k.a service project) for a host project, so that subnets in the host project can be used by instances in the service project.",
+ "httpMethod": "POST",
+ "id": "compute.projects.enableXpnResource",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/enableXpnResource",
+ "request": {
+ "$ref": "ProjectsEnableXpnResourceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Project resource.",
+ "httpMethod": "GET",
+ "id": "compute.projects.get",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}",
+ "response": {
+ "$ref": "Project"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getXpnHost": {
+ "description": "Get the shared VPC host project that this project links to. May be empty if no link exists.",
+ "httpMethod": "GET",
+ "id": "compute.projects.getXpnHost",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/getXpnHost",
+ "response": {
+ "$ref": "Project"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "getXpnResources": {
+ "description": "Get service resources (a.k.a service project) associated with this host project.",
+ "httpMethod": "GET",
+ "id": "compute.projects.getXpnResources",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/getXpnResources",
+ "response": {
+ "$ref": "ProjectsGetXpnResources"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "listXpnHosts": {
+ "description": "List all shared VPC host projects visible to the user in an organization.",
+ "httpMethod": "POST",
+ "id": "compute.projects.listXpnHosts",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/listXpnHosts",
+ "request": {
+ "$ref": "ProjectsListXpnHostsRequest"
+ },
+ "response": {
+ "$ref": "XpnHostList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "moveDisk": {
+ "description": "Moves a persistent disk from one zone to another.",
+ "httpMethod": "POST",
+ "id": "compute.projects.moveDisk",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/moveDisk",
+ "request": {
+ "$ref": "DiskMoveRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "moveInstance": {
+ "description": "Moves an instance and its attached persistent disks from one zone to another.",
+ "httpMethod": "POST",
+ "id": "compute.projects.moveInstance",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/moveInstance",
+ "request": {
+ "$ref": "InstanceMoveRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setCommonInstanceMetadata": {
+ "description": "Sets metadata common to all instances within the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setCommonInstanceMetadata",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setCommonInstanceMetadata",
+ "request": {
+ "$ref": "Metadata"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setUsageExportBucket": {
+ "description": "Enables the usage export feature and sets the usage export bucket where reports are stored. If you provide an empty request body using this method, the usage export feature will be disabled.",
+ "httpMethod": "POST",
+ "id": "compute.projects.setUsageExportBucket",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/setUsageExportBucket",
+ "request": {
+ "$ref": "UsageExportLocation"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/devstorage.full_control",
+ "https://www.googleapis.com/auth/devstorage.read_only",
+ "https://www.googleapis.com/auth/devstorage.read_write"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "response": {
- "$ref": "BackendService"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getHealth": {
- "id": "compute.regionBackendServices.getHealth",
- "path": "{project}/regions/{region}/backendServices/{backendService}/getHealth",
- "httpMethod": "POST",
- "description": "Gets the most recent health check results for this regional BackendService.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to which the queried instance belongs.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ },
+ "regionAutoscalers": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified autoscaler.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionAutoscalers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified autoscaler.",
+ "httpMethod": "GET",
+ "id": "compute.regionAutoscalers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "autoscaler"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers/{autoscaler}",
+ "response": {
+ "$ref": "Autoscaler"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionAutoscalers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of autoscalers contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionAutoscalers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "response": {
+ "$ref": "RegionAutoscalerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionAutoscalers.patch",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to patch.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates an autoscaler in the specified project using the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.regionAutoscalers.update",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "autoscaler": {
+ "description": "Name of the autoscaler to update.",
+ "location": "query",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/autoscalers",
+ "request": {
+ "$ref": "Autoscaler"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "ResourceGroupReference"
- },
- "response": {
- "$ref": "BackendServiceGroupHealth"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionBackendServices.insert",
- "path": "{project}/regions/{region}/backendServices",
- "httpMethod": "POST",
- "description": "Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "regionBackendServices": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified regional BackendService resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionBackendServices.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified regional BackendService resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionBackendServices.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "response": {
+ "$ref": "BackendService"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for this regional BackendService.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.getHealth",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource for which to get health.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}/getHealth",
+ "request": {
+ "$ref": "ResourceGroupReference"
+ },
+ "response": {
+ "$ref": "BackendServiceGroupHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a regional BackendService resource in the specified project using the data included in the request. There are several restrictions and guidelines to keep in mind when creating a regional backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "POST",
+ "id": "compute.regionBackendServices.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of regional BackendService resources available to the specified project in the given region.",
+ "httpMethod": "GET",
+ "id": "compute.regionBackendServices.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices",
+ "response": {
+ "$ref": "BackendServiceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.regionBackendServices.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
+ "httpMethod": "PUT",
+ "id": "compute.regionBackendServices.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "backendService"
+ ],
+ "parameters": {
+ "backendService": {
+ "description": "Name of the BackendService resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/backendServices/{backendService}",
+ "request": {
+ "$ref": "BackendService"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionBackendServices.list",
- "path": "{project}/regions/{region}/backendServices",
- "httpMethod": "GET",
- "description": "Retrieves the list of regional BackendService resources available to the specified project in the given region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ },
+ "regionCommitments": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of commitments.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/commitments",
+ "response": {
+ "$ref": "CommitmentAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified commitment resource. Get a list of available commitments by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "commitment"
+ ],
+ "parameters": {
+ "commitment": {
+ "description": "Name of the commitment to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments/{commitment}",
+ "response": {
+ "$ref": "Commitment"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a commitment in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.regionCommitments.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments",
+ "request": {
+ "$ref": "Commitment"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of commitments contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionCommitments.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/commitments",
+ "response": {
+ "$ref": "CommitmentList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "BackendServiceList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.regionBackendServices.patch",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "PATCH",
- "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "regionInstanceGroupManagers": {
+ "methods": {
+ "abandonInstances": {
+ "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.abandonInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified managed instance group and all of the instances in that group.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionInstanceGroupManagers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group to delete.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "deleteInstances": {
+ "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.deleteInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersDeleteInstancesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns all of the details about the specified managed instance group.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroupManagers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group to return.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
+ "response": {
+ "$ref": "InstanceGroupManager"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA regional managed instance group can contain up to 2000 instances.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers",
+ "request": {
+ "$ref": "InstanceGroupManager"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of managed instance groups that are contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroupManagers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers",
+ "response": {
+ "$ref": "RegionInstanceGroupManagerList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listManagedInstances": {
+ "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.listManagedInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "filter": {
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "order_by": {
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
+ "response": {
+ "$ref": "RegionInstanceGroupManagersListInstancesResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "recreateInstances": {
+ "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.recreateInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersRecreateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "resize": {
+ "description": "Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.resize",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager",
+ "size"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "size": {
+ "description": "Number of instances that should exist in this instance group manager.",
+ "format": "int32",
+ "location": "query",
+ "minimum": "0",
+ "required": true,
+ "type": "integer"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setInstanceTemplate": {
+ "description": "Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setInstanceTemplate",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "The name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetTemplateRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setTargetPools": {
+ "description": "Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroupManagers.setTargetPools",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroupManager"
+ ],
+ "parameters": {
+ "instanceGroupManager": {
+ "description": "Name of the managed instance group.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
+ "request": {
+ "$ref": "RegionInstanceGroupManagersSetTargetPoolsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "update": {
- "id": "compute.regionBackendServices.update",
- "path": "{project}/regions/{region}/backendServices/{backendService}",
- "httpMethod": "PUT",
- "description": "Updates the specified regional BackendService resource with the data included in the request. There are several restrictions and guidelines to keep in mind when updating a backend service. Read Restrictions and Guidelines for more information.",
- "parameters": {
- "backendService": {
- "type": "string",
- "description": "Name of the BackendService resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "regionInstanceGroups": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified instance group resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroups.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "Name of the instance group resource to return.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}",
+ "response": {
+ "$ref": "InstanceGroup"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of instance group resources contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionInstanceGroups.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups",
+ "response": {
+ "$ref": "RegionInstanceGroupList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "listInstances": {
+ "description": "Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.listInstances",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "Name of the regional instance group for which we want to list the instances.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances",
+ "request": {
+ "$ref": "RegionInstanceGroupsListInstancesRequest"
+ },
+ "response": {
+ "$ref": "RegionInstanceGroupsListInstances"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setNamedPorts": {
+ "description": "Sets the named ports for the specified regional instance group.",
+ "httpMethod": "POST",
+ "id": "compute.regionInstanceGroups.setNamedPorts",
+ "parameterOrder": [
+ "project",
+ "region",
+ "instanceGroup"
+ ],
+ "parameters": {
+ "instanceGroup": {
+ "description": "The name of the regional instance group where the named ports are updated.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts",
+ "request": {
+ "$ref": "RegionInstanceGroupsSetNamedPortsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "backendService"
- ],
- "request": {
- "$ref": "BackendService"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionCommitments": {
- "methods": {
- "aggregatedList": {
- "id": "compute.regionCommitments.aggregatedList",
- "path": "{project}/aggregated/commitments",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of commitments.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ },
+ "regionOperations": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified region-specific Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.regionOperations.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified region-specific Operations resource.",
+ "httpMethod": "GET",
+ "id": "compute.regionOperations.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified region.",
+ "httpMethod": "GET",
+ "id": "compute.regionOperations.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "CommitmentAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "get": {
- "id": "compute.regionCommitments.get",
- "path": "{project}/regions/{region}/commitments/{commitment}",
- "httpMethod": "GET",
- "description": "Returns the specified commitment resource. Get a list of available commitments by making a list() request.",
- "parameters": {
- "commitment": {
- "type": "string",
- "description": "Name of the commitment to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ },
+ "regions": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified Region resource. Get a list of available regions by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.regions.get",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}",
+ "response": {
+ "$ref": "Region"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of region resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.regions.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions",
+ "response": {
+ "$ref": "RegionList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "commitment"
- ],
- "response": {
- "$ref": "Commitment"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionCommitments.insert",
- "path": "{project}/regions/{region}/commitments",
- "httpMethod": "POST",
- "description": "Creates a commitment in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "routers": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of routers.",
+ "httpMethod": "GET",
+ "id": "compute.routers.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/routers",
+ "response": {
+ "$ref": "RouterAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified Router resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.routers.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Router resource. Get a list of available routers by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.routers.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "response": {
+ "$ref": "Router"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getRouterStatus": {
+ "description": "Retrieves runtime information of the specified router.",
+ "httpMethod": "GET",
+ "id": "compute.routers.getRouterStatus",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to query.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}/getRouterStatus",
+ "response": {
+ "$ref": "RouterStatusResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Router resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.routers.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Router resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.routers.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers",
+ "response": {
+ "$ref": "RouterList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified Router resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.routers.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "preview": {
+ "description": "Preview fields auto-generated during router create and update operations. Calling this method does NOT create or update the router.",
+ "httpMethod": "POST",
+ "id": "compute.routers.preview",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to query.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}/preview",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "RoutersPreviewResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified Router resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.routers.update",
+ "parameterOrder": [
+ "project",
+ "region",
+ "router"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "router": {
+ "description": "Name of the Router resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/routers/{router}",
+ "request": {
+ "$ref": "Router"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Commitment"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionCommitments.list",
- "path": "{project}/regions/{region}/commitments",
- "httpMethod": "GET",
- "description": "Retrieves a list of commitments contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ },
+ "routes": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified Route resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.routes.delete",
+ "parameterOrder": [
+ "project",
+ "route"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "route": {
+ "description": "Name of the Route resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{route}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Route resource. Get a list of available routes by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.routes.get",
+ "parameterOrder": [
+ "project",
+ "route"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "route": {
+ "description": "Name of the Route resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes/{route}",
+ "response": {
+ "$ref": "Route"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a Route resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.routes.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes",
+ "request": {
+ "$ref": "Route"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Route resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.routes.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/routes",
+ "response": {
+ "$ref": "RouteList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "CommitmentList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regionInstanceGroupManagers": {
- "methods": {
- "abandonInstances": {
- "id": "compute.regionInstanceGroupManagers.abandonInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/abandonInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to remove the specified instances from the managed instance group. Abandoning an instance does not delete the instance, but it does remove the instance from any target pools that are applied by the managed instance group. This method reduces the targetSize of the managed instance group by the number of instances that you abandon. This operation is marked as DONE when the action is scheduled even if the instances have not yet been removed from the group. You must separately verify the status of the abandoning action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "snapshots": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not necessarily delete all the data on that snapshot. If any data on the snapshot that is marked for deletion is needed for subsequent snapshots, the data will be moved to the next corresponding snapshot.\n\nFor more information, see Deleting snaphots.",
+ "httpMethod": "DELETE",
+ "id": "compute.snapshots.delete",
+ "parameterOrder": [
+ "project",
+ "snapshot"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "snapshot": {
+ "description": "Name of the Snapshot resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{snapshot}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified Snapshot resource. Get a list of available snapshots by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.snapshots.get",
+ "parameterOrder": [
+ "project",
+ "snapshot"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "snapshot": {
+ "description": "Name of the Snapshot resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{snapshot}",
+ "response": {
+ "$ref": "Snapshot"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Snapshot resources contained within the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.snapshots.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots",
+ "response": {
+ "$ref": "SnapshotList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setLabels": {
+ "description": "Sets the labels on a snapshot. To learn more about labels, read the Labeling Resources documentation.",
+ "httpMethod": "POST",
+ "id": "compute.snapshots.setLabels",
+ "parameterOrder": [
+ "project",
+ "resource"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "resource": {
+ "description": "Name of the resource for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/snapshots/{resource}/setLabels",
+ "request": {
+ "$ref": "GlobalSetLabelsRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersAbandonInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "delete": {
- "id": "compute.regionInstanceGroupManagers.delete",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified managed instance group and all of the instances in that group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group to delete.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "sslCertificates": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified SslCertificate resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.sslCertificates.delete",
+ "parameterOrder": [
+ "project",
+ "sslCertificate"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "sslCertificate": {
+ "description": "Name of the SslCertificate resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{sslCertificate}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified SslCertificate resource. Get a list of available SSL certificates by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.sslCertificates.get",
+ "parameterOrder": [
+ "project",
+ "sslCertificate"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "sslCertificate": {
+ "description": "Name of the SslCertificate resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates/{sslCertificate}",
+ "response": {
+ "$ref": "SslCertificate"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.sslCertificates.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates",
+ "request": {
+ "$ref": "SslCertificate"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of SslCertificate resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.sslCertificates.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/sslCertificates",
+ "response": {
+ "$ref": "SslCertificateList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "deleteInstances": {
- "id": "compute.regionInstanceGroupManagers.deleteInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/deleteInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to delete the specified instances in the managed instance group. The instances are also removed from any target pools of which they were a member. This method reduces the targetSize of the managed instance group by the number of instances that you delete. This operation is marked as DONE when the action is scheduled even if the instances are still being deleted. You must separately verify the status of the deleting action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "subnetworks": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of subnetworks.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/subnetworks",
+ "response": {
+ "$ref": "SubnetworkAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified subnetwork.",
+ "httpMethod": "DELETE",
+ "id": "compute.subnetworks.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "expandIpCidrRange": {
+ "description": "Expands the IP CIDR range of the subnetwork to a specified value.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.expandIpCidrRange",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange",
+ "request": {
+ "$ref": "SubnetworksExpandIpCidrRangeRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified subnetwork. Get a list of available subnetworks list() request.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "response": {
+ "$ref": "Subnetwork"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a subnetwork in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks",
+ "request": {
+ "$ref": "Subnetwork"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of subnetworks available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.subnetworks.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks",
+ "response": {
+ "$ref": "SubnetworkList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified subnetwork with the data included in the request. Only the following fields within the subnetwork resource can be specified in the request: secondary_ip_range and allow_subnet_cidr_routes_overlap. It is also mandatory to specify the current fingeprint of the subnetwork resource being patched.",
+ "httpMethod": "PATCH",
+ "id": "compute.subnetworks.patch",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
+ "request": {
+ "$ref": "Subnetwork"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setPrivateIpGoogleAccess": {
+ "description": "Set whether VMs in this subnet can access Google services without assigning external IP addresses through Private Google Access.",
+ "httpMethod": "POST",
+ "id": "compute.subnetworks.setPrivateIpGoogleAccess",
+ "parameterOrder": [
+ "project",
+ "region",
+ "subnetwork"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "Name of the Subnetwork resource.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess",
+ "request": {
+ "$ref": "SubnetworksSetPrivateIpGoogleAccessRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersDeleteInstancesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionInstanceGroupManagers.get",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}",
- "httpMethod": "GET",
- "description": "Returns all of the details about the specified managed instance group.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group to return.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
+ },
+ "targetHttpProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetHttpProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetHttpProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetHttpProxy resource. Get a list of available target HTTP proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
+ "response": {
+ "$ref": "TargetHttpProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies",
+ "request": {
+ "$ref": "TargetHttpProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetHttpProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpProxies",
+ "response": {
+ "$ref": "TargetHttpProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setUrlMap": {
+ "description": "Changes the URL map for TargetHttpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpProxies.setUrlMap",
+ "parameterOrder": [
+ "project",
+ "targetHttpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpProxy": {
+ "description": "Name of the TargetHttpProxy to set a URL map for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
+ "request": {
+ "$ref": "UrlMapReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "InstanceGroupManager"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.regionInstanceGroupManagers.insert",
- "path": "{project}/regions/{region}/instanceGroupManagers",
- "httpMethod": "POST",
- "description": "Creates a managed instance group using the information that you specify in the request. After the group is created, it schedules an action to create instances in the group using the specified instance template. This operation is marked as DONE when the group is created even if the instances in the group have not yet been created. You must separately verify the status of the individual instances with the listmanagedinstances method.\n\nA regional managed instance group can contain up to 2000 instances.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "targetHttpsProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetHttpsProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetHttpsProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetHttpsProxy resource. Get a list of available target HTTPS proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpsProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
+ "response": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies",
+ "request": {
+ "$ref": "TargetHttpsProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetHttpsProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetHttpsProxies",
+ "response": {
+ "$ref": "TargetHttpsProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setSslCertificates": {
+ "description": "Replaces SslCertificates for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setSslCertificates",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
+ "request": {
+ "$ref": "TargetHttpsProxiesSetSslCertificatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setUrlMap": {
+ "description": "Changes the URL map for TargetHttpsProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetHttpsProxies.setUrlMap",
+ "parameterOrder": [
+ "project",
+ "targetHttpsProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetHttpsProxy": {
+ "description": "Name of the TargetHttpsProxy resource whose URL map is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
+ "request": {
+ "$ref": "UrlMapReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "InstanceGroupManager"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.regionInstanceGroupManagers.list",
- "path": "{project}/regions/{region}/instanceGroupManagers",
- "httpMethod": "GET",
- "description": "Retrieves the list of managed instance groups that are contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
+ },
+ "targetInstances": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target instances.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetInstances",
+ "response": {
+ "$ref": "TargetInstanceAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified TargetInstance resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetInstances.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "targetInstance"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "Name of the TargetInstance resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetInstance resource. Get a list of available target instances by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "targetInstance"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "Name of the TargetInstance resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances/{targetInstance}",
+ "response": {
+ "$ref": "TargetInstance"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetInstance resource in the specified project and zone using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetInstances.insert",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances",
+ "request": {
+ "$ref": "TargetInstance"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of TargetInstance resources available to the specified project and zone.",
+ "httpMethod": "GET",
+ "id": "compute.targetInstances.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/targetInstances",
+ "response": {
+ "$ref": "TargetInstanceList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionInstanceGroupManagerList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listManagedInstances": {
- "id": "compute.regionInstanceGroupManagers.listManagedInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/listManagedInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the managed instance group and instances that are scheduled to be created. The list includes any current actions that the group has scheduled for its instances.",
- "parameters": {
- "filter": {
- "type": "string",
- "location": "query"
- },
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "order_by": {
- "type": "string",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
+ },
+ "targetPools": {
+ "methods": {
+ "addHealthCheck": {
+ "description": "Adds health check URLs to a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.addHealthCheck",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the target pool to add a health check to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/addHealthCheck",
+ "request": {
+ "$ref": "TargetPoolsAddHealthCheckRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "addInstance": {
+ "description": "Adds an instance to a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.addInstance",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to add instances to.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/addInstance",
+ "request": {
+ "$ref": "TargetPoolsAddInstanceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target pools.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetPools",
+ "response": {
+ "$ref": "TargetPoolAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified target pool.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetPools.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified target pool. Get a list of available target pools by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}",
+ "response": {
+ "$ref": "TargetPool"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "getHealth": {
+ "description": "Gets the most recent health check results for each IP for the instance that is referenced by the given target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.getHealth",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to which the queried instance belongs.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/getHealth",
+ "request": {
+ "$ref": "InstanceReference"
+ },
+ "response": {
+ "$ref": "TargetPoolInstanceHealth"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a target pool in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools",
+ "request": {
+ "$ref": "TargetPool"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of target pools available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.targetPools.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools",
+ "response": {
+ "$ref": "TargetPoolList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "removeHealthCheck": {
+ "description": "Removes health check URL from a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.removeHealthCheck",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the target pool to remove health checks from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/removeHealthCheck",
+ "request": {
+ "$ref": "TargetPoolsRemoveHealthCheckRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "removeInstance": {
+ "description": "Removes instance URL from a target pool.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.removeInstance",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to remove instances from.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/removeInstance",
+ "request": {
+ "$ref": "TargetPoolsRemoveInstanceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setBackup": {
+ "description": "Changes a backup target pool's configurations.",
+ "httpMethod": "POST",
+ "id": "compute.targetPools.setBackup",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetPool"
+ ],
+ "parameters": {
+ "failoverRatio": {
+ "description": "New failoverRatio value for the target pool.",
+ "format": "float",
+ "location": "query",
+ "type": "number"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetPool": {
+ "description": "Name of the TargetPool resource to set a backup pool for.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetPools/{targetPool}/setBackup",
+ "request": {
+ "$ref": "TargetReference"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "response": {
- "$ref": "RegionInstanceGroupManagersListInstancesResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "recreateInstances": {
- "id": "compute.regionInstanceGroupManagers.recreateInstances",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/recreateInstances",
- "httpMethod": "POST",
- "description": "Schedules a group action to recreate the specified instances in the managed instance group. The instances are deleted and recreated using the current instance template for the managed instance group. This operation is marked as DONE when the action is scheduled even if the instances have not yet been recreated. You must separately verify the status of the recreating action with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.\n\nYou can specify a maximum of 1000 instances with this method per request.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "targetSslProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetSslProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetSslProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetSslProxy resource. Get a list of available target SSL proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetSslProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}",
+ "response": {
+ "$ref": "TargetSslProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetSslProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies",
+ "request": {
+ "$ref": "TargetSslProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetSslProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetSslProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies",
+ "response": {
+ "$ref": "TargetSslProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setBackendService": {
+ "description": "Changes the BackendService for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setBackendService",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose BackendService resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setBackendService",
+ "request": {
+ "$ref": "TargetSslProxiesSetBackendServiceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setProxyHeader": {
+ "description": "Changes the ProxyHeaderType for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setProxyHeader",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose ProxyHeader is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setProxyHeader",
+ "request": {
+ "$ref": "TargetSslProxiesSetProxyHeaderRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setSslCertificates": {
+ "description": "Changes SslCertificates for TargetSslProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetSslProxies.setSslCertificates",
+ "parameterOrder": [
+ "project",
+ "targetSslProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetSslProxy": {
+ "description": "Name of the TargetSslProxy resource whose SslCertificate resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetSslProxies/{targetSslProxy}/setSslCertificates",
+ "request": {
+ "$ref": "TargetSslProxiesSetSslCertificatesRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersRecreateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "resize": {
- "id": "compute.regionInstanceGroupManagers.resize",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/resize",
- "httpMethod": "POST",
- "description": "Changes the intended size for the managed instance group. If you increase the size, the group schedules actions to create new instances using the current instance template. If you decrease the size, the group schedules delete actions on one or more instances. The resize operation is marked DONE when the resize actions are scheduled even if the group has not yet added or deleted any instances. You must separately verify the status of the creating or deleting actions with the listmanagedinstances method.\n\nIf the group is part of a backend service that has enabled connection draining, it can take up to 60 seconds after the connection draining duration has elapsed before the VM instance is removed or deleted.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- },
- "size": {
- "type": "integer",
- "description": "Number of instances that should exist in this instance group manager.",
- "required": true,
- "format": "int32",
- "minimum": "0",
- "location": "query"
+ },
+ "targetTcpProxies": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified TargetTcpProxy resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetTcpProxies.delete",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified TargetTcpProxy resource. Get a list of available target TCP proxies by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetTcpProxies.get",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}",
+ "response": {
+ "$ref": "TargetTcpProxy"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a TargetTcpProxy resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies",
+ "request": {
+ "$ref": "TargetTcpProxy"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of TargetTcpProxy resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.targetTcpProxies.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies",
+ "response": {
+ "$ref": "TargetTcpProxyList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "setBackendService": {
+ "description": "Changes the BackendService for TargetTcpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.setBackendService",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource whose BackendService resource is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setBackendService",
+ "request": {
+ "$ref": "TargetTcpProxiesSetBackendServiceRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "setProxyHeader": {
+ "description": "Changes the ProxyHeaderType for TargetTcpProxy.",
+ "httpMethod": "POST",
+ "id": "compute.targetTcpProxies.setProxyHeader",
+ "parameterOrder": [
+ "project",
+ "targetTcpProxy"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetTcpProxy": {
+ "description": "Name of the TargetTcpProxy resource whose ProxyHeader is to be set.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/targetTcpProxies/{targetTcpProxy}/setProxyHeader",
+ "request": {
+ "$ref": "TargetTcpProxiesSetProxyHeaderRequest"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager",
- "size"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setInstanceTemplate": {
- "id": "compute.regionInstanceGroupManagers.setInstanceTemplate",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setInstanceTemplate",
- "httpMethod": "POST",
- "description": "Sets the instance template to use when creating new instances or recreating instances in this group. Existing instances are not affected.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "The name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "targetVpnGateways": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of target VPN gateways.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/targetVpnGateways",
+ "response": {
+ "$ref": "TargetVpnGatewayAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified target VPN gateway.",
+ "httpMethod": "DELETE",
+ "id": "compute.targetVpnGateways.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetVpnGateway"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "Name of the target VPN gateway to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified target VPN gateway. Get a list of available target VPN gateways by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "targetVpnGateway"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "targetVpnGateway": {
+ "description": "Name of the target VPN gateway to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways/{targetVpnGateway}",
+ "response": {
+ "$ref": "TargetVpnGateway"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a target VPN gateway in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.targetVpnGateways.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways",
+ "request": {
+ "$ref": "TargetVpnGateway"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of target VPN gateways available to the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.targetVpnGateways.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/targetVpnGateways",
+ "response": {
+ "$ref": "TargetVpnGatewayList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetTemplateRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setTargetPools": {
- "id": "compute.regionInstanceGroupManagers.setTargetPools",
- "path": "{project}/regions/{region}/instanceGroupManagers/{instanceGroupManager}/setTargetPools",
- "httpMethod": "POST",
- "description": "Modifies the target pools to which all new instances in this group are assigned. Existing instances in the group are not affected.",
- "parameters": {
- "instanceGroupManager": {
- "type": "string",
- "description": "Name of the managed instance group.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
- },
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ },
+ "urlMaps": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified UrlMap resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.urlMaps.delete",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified UrlMap resource. Get a list of available URL maps by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.urlMaps.get",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "response": {
+ "$ref": "UrlMap"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a UrlMap resource in the specified project using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.insert",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "invalidateCache": {
+ "description": "Initiates a cache invalidation operation, invalidating the specified path, scoped to the specified UrlMap.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.invalidateCache",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap scoping this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}/invalidateCache",
+ "request": {
+ "$ref": "CacheInvalidationRule"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of UrlMap resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.urlMaps.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps",
+ "response": {
+ "$ref": "UrlMapList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "patch": {
+ "description": "Patches the specified UrlMap resource with the data included in the request. This method supports PATCH semantics and uses the JSON merge patch format and processing rules.",
+ "httpMethod": "PATCH",
+ "id": "compute.urlMaps.patch",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to patch.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "update": {
+ "description": "Updates the specified UrlMap resource with the data included in the request.",
+ "httpMethod": "PUT",
+ "id": "compute.urlMaps.update",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to update.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}",
+ "request": {
+ "$ref": "UrlMap"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "validate": {
+ "description": "Runs static validation for the UrlMap. In particular, the tests of the provided UrlMap will be run. Calling this method does NOT create the UrlMap.",
+ "httpMethod": "POST",
+ "id": "compute.urlMaps.validate",
+ "parameterOrder": [
+ "project",
+ "urlMap"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "urlMap": {
+ "description": "Name of the UrlMap resource to be validated as.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/global/urlMaps/{urlMap}/validate",
+ "request": {
+ "$ref": "UrlMapsValidateRequest"
+ },
+ "response": {
+ "$ref": "UrlMapsValidateResponse"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroupManager"
- ],
- "request": {
- "$ref": "RegionInstanceGroupManagersSetTargetPoolsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionInstanceGroups": {
- "methods": {
- "get": {
- "id": "compute.regionInstanceGroups.get",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}",
- "httpMethod": "GET",
- "description": "Returns the specified instance group resource.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "Name of the instance group resource to return.",
- "required": true,
- "location": "path"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
+ },
+ "vpnTunnels": {
+ "methods": {
+ "aggregatedList": {
+ "description": "Retrieves an aggregated list of VPN tunnels.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.aggregatedList",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/aggregated/vpnTunnels",
+ "response": {
+ "$ref": "VpnTunnelAggregatedList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "delete": {
+ "description": "Deletes the specified VpnTunnel resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.vpnTunnels.delete",
+ "parameterOrder": [
+ "project",
+ "region",
+ "vpnTunnel"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ },
+ "vpnTunnel": {
+ "description": "Name of the VpnTunnel resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Returns the specified VpnTunnel resource. Get a list of available VPN tunnels by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.get",
+ "parameterOrder": [
+ "project",
+ "region",
+ "vpnTunnel"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "vpnTunnel": {
+ "description": "Name of the VpnTunnel resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels/{vpnTunnel}",
+ "response": {
+ "$ref": "VpnTunnel"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "insert": {
+ "description": "Creates a VpnTunnel resource in the specified project and region using the data included in the request.",
+ "httpMethod": "POST",
+ "id": "compute.vpnTunnels.insert",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "requestId": {
+ "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
+ "location": "query",
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels",
+ "request": {
+ "$ref": "VpnTunnel"
+ },
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of VpnTunnel resources contained in the specified project and region.",
+ "httpMethod": "GET",
+ "id": "compute.vpnTunnels.list",
+ "parameterOrder": [
+ "project",
+ "region"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "region": {
+ "description": "Name of the region for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/regions/{region}/vpnTunnels",
+ "response": {
+ "$ref": "VpnTunnelList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "response": {
- "$ref": "InstanceGroup"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regionInstanceGroups.list",
- "path": "{project}/regions/{region}/instanceGroups",
- "httpMethod": "GET",
- "description": "Retrieves the list of instance group resources contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
+ },
+ "zoneOperations": {
+ "methods": {
+ "delete": {
+ "description": "Deletes the specified zone-specific Operations resource.",
+ "httpMethod": "DELETE",
+ "id": "compute.zoneOperations.delete",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to delete.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations/{operation}",
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute"
+ ]
+ },
+ "get": {
+ "description": "Retrieves the specified zone-specific Operations resource.",
+ "httpMethod": "GET",
+ "id": "compute.zoneOperations.get",
+ "parameterOrder": [
+ "project",
+ "zone",
+ "operation"
+ ],
+ "parameters": {
+ "operation": {
+ "description": "Name of the Operations resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for this request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations/{operation}",
+ "response": {
+ "$ref": "Operation"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves a list of Operation resources contained within the specified zone.",
+ "httpMethod": "GET",
+ "id": "compute.zoneOperations.list",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone for request.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}/operations",
+ "response": {
+ "$ref": "OperationList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RegionInstanceGroupList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "listInstances": {
- "id": "compute.regionInstanceGroups.listInstances",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/listInstances",
- "httpMethod": "POST",
- "description": "Lists the instances in the specified instance group and displays information about the named ports. Depending on the specified options, this method can list all instances or only the instances that are running.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
- },
- "instanceGroup": {
- "type": "string",
- "description": "Name of the regional instance group for which we want to list the instances.",
- "required": true,
- "location": "path"
- },
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
- },
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
- },
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
- },
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- },
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
+ },
+ "zones": {
+ "methods": {
+ "get": {
+ "description": "Returns the specified Zone resource. Get a list of available zones by making a list() request.",
+ "httpMethod": "GET",
+ "id": "compute.zones.get",
+ "parameterOrder": [
+ "project",
+ "zone"
+ ],
+ "parameters": {
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ },
+ "zone": {
+ "description": "Name of the zone resource to return.",
+ "location": "path",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones/{zone}",
+ "response": {
+ "$ref": "Zone"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ },
+ "list": {
+ "description": "Retrieves the list of Zone resources available to the specified project.",
+ "httpMethod": "GET",
+ "id": "compute.zones.list",
+ "parameterOrder": [
+ "project"
+ ],
+ "parameters": {
+ "filter": {
+ "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
+ "location": "query",
+ "type": "string"
+ },
+ "maxResults": {
+ "default": "500",
+ "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
+ "format": "uint32",
+ "location": "query",
+ "minimum": "0",
+ "type": "integer"
+ },
+ "orderBy": {
+ "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
+ "location": "query",
+ "type": "string"
+ },
+ "pageToken": {
+ "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
+ "location": "query",
+ "type": "string"
+ },
+ "project": {
+ "description": "Project ID for this request.",
+ "location": "path",
+ "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
+ "required": true,
+ "type": "string"
+ }
+ },
+ "path": "{project}/zones",
+ "response": {
+ "$ref": "ZoneList"
+ },
+ "scopes": [
+ "https://www.googleapis.com/auth/cloud-platform",
+ "https://www.googleapis.com/auth/compute",
+ "https://www.googleapis.com/auth/compute.readonly"
+ ]
+ }
}
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "request": {
- "$ref": "RegionInstanceGroupsListInstancesRequest"
- },
- "response": {
- "$ref": "RegionInstanceGroupsListInstances"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setNamedPorts": {
- "id": "compute.regionInstanceGroups.setNamedPorts",
- "path": "{project}/regions/{region}/instanceGroups/{instanceGroup}/setNamedPorts",
- "httpMethod": "POST",
- "description": "Sets the named ports for the specified regional instance group.",
- "parameters": {
- "instanceGroup": {
- "type": "string",
- "description": "The name of the regional instance group where the named ports are updated.",
- "required": true,
- "location": "path"
+ }
+ },
+ "revision": "20180220",
+ "rootUrl": "https://www.googleapis.com/",
+ "schemas": {
+ "AcceleratorConfig": {
+ "description": "A specification of the type and number of accelerator cards attached to the instance.",
+ "id": "AcceleratorConfig",
+ "properties": {
+ "acceleratorCount": {
+ "description": "The number of the guest accelerator cards exposed to this instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "acceleratorType": {
+ "description": "Full or partial URL of the accelerator type resource to attach to this instance. If you are creating an instance template, specify only the accelerator name.",
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "AcceleratorType": {
+ "description": "An Accelerator Type resource. (== resource_for beta.acceleratorTypes ==) (== resource_for v1.acceleratorTypes ==)",
+ "id": "AcceleratorType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this accelerator type."
+ },
+ "description": {
+ "description": "[Output Only] An optional textual description of the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#acceleratorType",
+ "description": "[Output Only] The type of the resource. Always compute#acceleratorType for accelerator types.",
+ "type": "string"
+ },
+ "maximumCardsPerInstance": {
+ "description": "[Output Only] Maximum accelerator cards allowed per instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The name of the zone where the accelerator type resides, such as us-central1-a. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "location": "path"
+ "type": "object"
+ },
+ "AcceleratorTypeAggregatedList": {
+ "id": "AcceleratorTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AcceleratorTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of accelerator types."
+ },
+ "description": "A list of AcceleratorTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#acceleratorTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#acceleratorTypeAggregatedList for aggregated lists of accelerator types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "instanceGroup"
- ],
- "request": {
- "$ref": "RegionInstanceGroupsSetNamedPortsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "regionOperations": {
- "methods": {
- "delete": {
- "id": "compute.regionOperations.delete",
- "path": "{project}/regions/{region}/operations/{operation}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified region-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "AcceleratorTypeList": {
+ "description": "Contains a list of accelerator types.",
+ "id": "AcceleratorTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of AcceleratorType resources.",
+ "items": {
+ "$ref": "AcceleratorType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#acceleratorTypeList",
+ "description": "[Output Only] Type of resource. Always compute#acceleratorTypeList for lists of accelerator types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "AcceleratorTypesScopedList": {
+ "id": "AcceleratorTypesScopedList",
+ "properties": {
+ "acceleratorTypes": {
+ "description": "[Output Only] List of accelerator types contained in this scope.",
+ "items": {
+ "$ref": "AcceleratorType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that appears when the accelerator types list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "operation"
- ],
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.regionOperations.get",
- "path": "{project}/regions/{region}/operations/{operation}",
- "httpMethod": "GET",
- "description": "Retrieves the specified region-specific Operations resource.",
- "parameters": {
- "operation": {
- "type": "string",
- "description": "Name of the Operations resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "AccessConfig": {
+ "description": "An access configuration attached to an instance's network interface. Only one access config per instance is supported.",
+ "id": "AccessConfig",
+ "properties": {
+ "kind": {
+ "default": "compute#accessConfig",
+ "description": "[Output Only] Type of the resource. Always compute#accessConfig for access configs.",
+ "type": "string"
+ },
+ "name": {
+ "description": "The name of this access configuration. The default and recommended name is External NAT but you can use any arbitrary string you would like. For example, My external IP or Network Access.",
+ "type": "string"
+ },
+ "natIP": {
+ "description": "An external IP address associated with this instance. Specify an unused static external IP address available to the project or leave this field undefined to use an IP from a shared ephemeral IP address pool. If you specify a static external IP address, it must live in the same region as the zone of the instance.",
+ "type": "string"
+ },
+ "publicPtrDomainName": {
+ "description": "The DNS domain name for the public PTR record. This field can only be set when the set_public_ptr field is enabled.",
+ "type": "string"
+ },
+ "setPublicPtr": {
+ "description": "Specifies whether a public DNS ?PTR? record should be created to map the external IP address of the instance to a DNS domain name.",
+ "type": "boolean"
+ },
+ "type": {
+ "default": "ONE_TO_ONE_NAT",
+ "description": "The type of configuration. The default and only option is ONE_TO_ONE_NAT.",
+ "enum": [
+ "ONE_TO_ONE_NAT"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "Address": {
+ "description": "A reserved address resource. (== resource_for beta.addresses ==) (== resource_for v1.addresses ==) (== resource_for beta.globalAddresses ==) (== resource_for v1.globalAddresses ==)",
+ "id": "Address",
+ "properties": {
+ "address": {
+ "description": "The static IP address represented by this resource.",
+ "type": "string"
+ },
+ "addressType": {
+ "description": "The type of address to reserve, either INTERNAL or EXTERNAL. If unspecified, defaults to EXTERNAL.",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "UNSPECIFIED_TYPE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipVersion": {
+ "description": "The IP Version that will be used by this address. Valid options are IPV4 or IPV6. This can only be specified for a global address.",
+ "enum": [
+ "IPV4",
+ "IPV6",
+ "UNSPECIFIED_VERSION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#address",
+ "description": "[Output Only] Type of the resource. Always compute#address for addresses.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.addresses.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional address resides. This field is not applicable to global addresses. You must specify this field as part of the HTTP request URL. You cannot set this field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the address, which can be one of RESERVING, RESERVED, or IN_USE. An address that is RESERVING is currently in the process of being reserved. A RESERVED address is currently reserved and available to use. An IN_USE address is currently being used by another resource and is not available.",
+ "enum": [
+ "IN_USE",
+ "RESERVED"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "The URL of the subnetwork in which to reserve the address. If an IP address is specified, it must be within the subnetwork's IP range. This field can only be used with INTERNAL type with GCE_ENDPOINT/DNS_RESOLVER purposes.",
+ "type": "string"
+ },
+ "users": {
+ "description": "[Output Only] The URLs of the resources that are using this address.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "operation"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regionOperations.list",
- "path": "{project}/regions/{region}/operations",
- "httpMethod": "GET",
- "description": "Retrieves a list of Operation resources contained within the specified region.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "AddressAggregatedList": {
+ "id": "AddressAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AddressesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of addresses."
+ },
+ "description": "A list of AddressesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#addressAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#addressAggregatedList for aggregated lists of addresses.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "AddressList": {
+ "description": "Contains a list of addresses.",
+ "id": "AddressList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Address resources.",
+ "items": {
+ "$ref": "Address"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#addressList",
+ "description": "[Output Only] Type of resource. Always compute#addressList for lists of addresses.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "AddressesScopedList": {
+ "id": "AddressesScopedList",
+ "properties": {
+ "addresses": {
+ "description": "[Output Only] List of addresses contained in this scope.",
+ "items": {
+ "$ref": "Address"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of addresses when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "AliasIpRange": {
+ "description": "An alias IP range attached to an instance's network interface.",
+ "id": "AliasIpRange",
+ "properties": {
+ "ipCidrRange": {
+ "description": "The IP CIDR range represented by this alias IP range. This IP CIDR range must belong to the specified subnetwork and cannot contain IP addresses reserved by system or used by other network interfaces. This range may be a single IP address (e.g. 10.2.3.4), a netmask (e.g. /24) or a CIDR format string (e.g. 10.1.2.0/24).",
+ "type": "string"
+ },
+ "subnetworkRangeName": {
+ "description": "Optional subnetwork secondary range name specifying the secondary range from which to allocate the IP CIDR range for this alias IP range. If left unspecified, the primary range of the subnetwork will be used.",
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "AttachedDisk": {
+ "description": "An instance-attached disk resource.",
+ "id": "AttachedDisk",
+ "properties": {
+ "autoDelete": {
+ "description": "Specifies whether the disk will be auto-deleted when the instance is deleted (but not when the disk is detached from the instance).",
+ "type": "boolean"
+ },
+ "boot": {
+ "description": "Indicates that this is a boot disk. The virtual machine will use the first partition of the disk for its root filesystem.",
+ "type": "boolean"
+ },
+ "deviceName": {
+ "description": "Specifies a unique device name of your choice that is reflected into the /dev/disk/by-id/google-* tree of a Linux operating system running within the instance. This name can be used to reference the device for mounting, resizing, and so on, from within the instance.\n\nIf not specified, the server chooses a default device name to apply to this disk, in the form persistent-disks-x, where x is a number assigned by Google Compute Engine. This field is only applicable for persistent disks.",
+ "type": "string"
+ },
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts or decrypts a disk using a customer-supplied encryption key.\n\nIf you are creating a new disk, this field encrypts the new disk using an encryption key that you provide. If you are attaching an existing disk that is already encrypted, this field decrypts the disk using the customer-supplied encryption key.\n\nIf you encrypt a disk using a customer-supplied key, you must provide the same key again when you attempt to use this resource at a later time. For example, you must provide the key when you create a snapshot or an image from the disk or when you attach the disk to a virtual machine instance.\n\nIf you do not provide an encryption key, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot use your own keys to encrypt disks in a managed instance group."
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "index": {
+ "description": "[Output Only] A zero-based index to this disk, where 0 is reserved for the boot disk. If you have many disks attached to an instance, each disk would have a unique index number.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "initializeParams": {
+ "$ref": "AttachedDiskInitializeParams",
+ "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both."
+ },
+ "interface": {
+ "description": "Specifies the disk interface to use for attaching this disk, which is either SCSI or NVME. The default is SCSI. Persistent disks must always use SCSI and the request will fail if you attempt to attach a persistent disk in any other format than SCSI. Local SSDs can use either NVME or SCSI. For performance characteristics of SCSI over NVMe, see Local SSD performance.",
+ "enum": [
+ "NVME",
+ "SCSI"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#attachedDisk",
+ "description": "[Output Only] Type of the resource. Always compute#attachedDisk for attached disks.",
+ "type": "string"
+ },
+ "licenses": {
+ "description": "[Output Only] Any valid publicly visible licenses.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "mode": {
+ "description": "The mode in which to attach this disk, either READ_WRITE or READ_ONLY. If not specified, the default is to attach the disk in READ_WRITE mode.",
+ "enum": [
+ "READ_ONLY",
+ "READ_WRITE"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "source": {
+ "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nIf desired, you can also attach existing non-root persistent disks using this property. This field is only applicable for persistent disks.\n\nNote that for InstanceTemplate, specify the disk name, not the URL for the disk.",
+ "type": "string"
+ },
+ "type": {
+ "description": "Specifies the type of the disk, either SCRATCH or PERSISTENT. If not specified, the default is PERSISTENT.",
+ "enum": [
+ "PERSISTENT",
+ "SCRATCH"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "OperationList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "regions": {
- "methods": {
- "get": {
- "id": "compute.regions.get",
- "path": "{project}/regions/{region}",
- "httpMethod": "GET",
- "description": "Returns the specified Region resource. Get a list of available regions by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "AttachedDiskInitializeParams": {
+ "description": "[Input Only] Specifies the parameters for a new disk that will be created alongside the new instance. Use initialization parameters to create boot disks or local SSDs attached to the new instance.\n\nThis property is mutually exclusive with the source property; you can only define one or the other, but not both.",
+ "id": "AttachedDiskInitializeParams",
+ "properties": {
+ "diskName": {
+ "description": "Specifies the disk name. If not specified, the default is to use the name of the instance.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "Specifies the size of the disk in base-2 GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "diskType": {
+ "description": "Specifies the disk type to use to create the instance. If not specified, the default is pd-standard, specified using the full URL. For example:\nhttps://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/pd-standard\n\n\nOther values include pd-ssd and local-ssd. If you define this field, you can provide either the full or partial URL. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/diskTypes/diskType \n- projects/project/zones/zone/diskTypes/diskType \n- zones/zone/diskTypes/diskType Note that for InstanceTemplate, this is the name of the disk type, not URL.",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this disk. These can be later modified by the disks.setLabels method. This field is only applicable for persistent disks.",
+ "type": "object"
+ },
+ "sourceImage": {
+ "description": "The source image to create this disk. When creating a new instance, one of initializeParams.sourceImage or disks.source is required except for local SSD.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\nprojects/debian-cloud/global/images/family/debian-8\n\n\nAlternatively, use a specific version of a public operating system image:\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD\n\n\nTo create a disk with a custom image that you created, specify the image name in the following format:\nglobal/images/my-custom-image\n\n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\nglobal/images/family/my-image-family\n\n\nIf the source image is deleted later, this field will not be set.",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key.\n\nInstance templates do not store customer-supplied encryption keys, so you cannot create disks for instances in a managed instance group if the source images are encrypted with your own keys."
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "Region"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.regions.list",
- "path": "{project}/regions",
- "httpMethod": "GET",
- "description": "Retrieves the list of region resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "Autoscaler": {
+ "description": "Represents an Autoscaler resource. Autoscalers allow you to automatically scale virtual machine instances in managed instance groups according to an autoscaling policy that you define. For more information, read Autoscaling Groups of Instances. (== resource_for beta.autoscalers ==) (== resource_for v1.autoscalers ==) (== resource_for beta.regionAutoscalers ==) (== resource_for v1.regionAutoscalers ==)",
+ "id": "Autoscaler",
+ "properties": {
+ "autoscalingPolicy": {
+ "$ref": "AutoscalingPolicy",
+ "description": "The configuration parameters for the autoscaling algorithm. You can define one or more of the policies for an autoscaler: cpuUtilization, customMetricUtilizations, and loadBalancingUtilization.\n\nIf none of these are specified, the default will be to autoscale based on cpuUtilization to 0.6 or 60%."
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#autoscaler",
+ "description": "[Output Only] Type of the resource. Always compute#autoscaler for autoscalers.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroups.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the instance group resides (for autoscalers living in regional scope).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the autoscaler configuration.",
+ "enum": [
+ "ACTIVE",
+ "DELETING",
+ "ERROR",
+ "PENDING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusDetails": {
+ "description": "[Output Only] Human-readable details about the current state of the autoscaler. Read the documentation for Commonly returned status messages for examples of status messages you might encounter.",
+ "items": {
+ "$ref": "AutoscalerStatusDetails"
+ },
+ "type": "array"
+ },
+ "target": {
+ "description": "URL of the managed instance group that this autoscaler will scale.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the instance group resides (for autoscalers living in zonal scope).",
+ "type": "string"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "AutoscalerAggregatedList": {
+ "id": "AutoscalerAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "AutoscalersScopedList",
+ "description": "[Output Only] Name of the scope containing this set of autoscalers."
+ },
+ "description": "A list of AutoscalersScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#autoscalerAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#autoscalerAggregatedList for aggregated lists of autoscalers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "AutoscalerList": {
+ "description": "Contains a list of Autoscaler resources.",
+ "id": "AutoscalerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Autoscaler resources.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#autoscalerList",
+ "description": "[Output Only] Type of resource. Always compute#autoscalerList for lists of autoscalers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "AutoscalerStatusDetails": {
+ "id": "AutoscalerStatusDetails",
+ "properties": {
+ "message": {
+ "description": "The status message.",
+ "type": "string"
+ },
+ "type": {
+ "description": "The type of error returned.",
+ "enum": [
+ "ALL_INSTANCES_UNHEALTHY",
+ "BACKEND_SERVICE_DOES_NOT_EXIST",
+ "CAPPED_AT_MAX_NUM_REPLICAS",
+ "CUSTOM_METRIC_DATA_POINTS_TOO_SPARSE",
+ "CUSTOM_METRIC_INVALID",
+ "MIN_EQUALS_MAX",
+ "MISSING_CUSTOM_METRIC_DATA_POINTS",
+ "MISSING_LOAD_BALANCING_DATA_POINTS",
+ "MORE_THAN_ONE_BACKEND_SERVICE",
+ "NOT_ENOUGH_QUOTA_AVAILABLE",
+ "REGION_RESOURCE_STOCKOUT",
+ "SCALING_TARGET_DOES_NOT_EXIST",
+ "UNKNOWN",
+ "UNSUPPORTED_MAX_RATE_LOAD_BALANCING_CONFIGURATION",
+ "ZONE_RESOURCE_STOCKOUT"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RegionList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "routers": {
- "methods": {
- "aggregatedList": {
- "id": "compute.routers.aggregatedList",
- "path": "{project}/aggregated/routers",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of routers.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "AutoscalersScopedList": {
+ "id": "AutoscalersScopedList",
+ "properties": {
+ "autoscalers": {
+ "description": "[Output Only] List of autoscalers contained in this scope.",
+ "items": {
+ "$ref": "Autoscaler"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of autoscalers when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "AutoscalingPolicy": {
+ "description": "Cloud Autoscaler policy.",
+ "id": "AutoscalingPolicy",
+ "properties": {
+ "coolDownPeriodSec": {
+ "description": "The number of seconds that the autoscaler should wait before it starts collecting information from a new instance. This prevents the autoscaler from collecting information when the instance is initializing, during which the collected usage would not be reliable. The default time autoscaler waits is 60 seconds.\n\nVirtual machine initialization times might vary because of numerous factors. We recommend that you test how long an instance may take to initialize. To do this, create an instance and time the startup process.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "cpuUtilization": {
+ "$ref": "AutoscalingPolicyCpuUtilization",
+ "description": "Defines the CPU utilization policy that allows the autoscaler to scale based on the average CPU utilization of a managed instance group."
+ },
+ "customMetricUtilizations": {
+ "description": "Configuration parameters of autoscaling based on a custom metric.",
+ "items": {
+ "$ref": "AutoscalingPolicyCustomMetricUtilization"
+ },
+ "type": "array"
+ },
+ "loadBalancingUtilization": {
+ "$ref": "AutoscalingPolicyLoadBalancingUtilization",
+ "description": "Configuration parameters of autoscaling based on load balancer."
+ },
+ "maxNumReplicas": {
+ "description": "The maximum number of instances that the autoscaler can scale up to. This is required when creating or updating an autoscaler. The maximum number of replicas should not be lower than minimal number of replicas.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "minNumReplicas": {
+ "description": "The minimum number of replicas that the autoscaler can scale down to. This cannot be less than 0. If not provided, autoscaler will choose a default value depending on maximum number of instances allowed.",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "AutoscalingPolicyCpuUtilization": {
+ "description": "CPU utilization policy.",
+ "id": "AutoscalingPolicyCpuUtilization",
+ "properties": {
+ "utilizationTarget": {
+ "description": "The target CPU utilization that the autoscaler should maintain. Must be a float value in the range (0, 1]. If not specified, the default is 0.6.\n\nIf the CPU level is below the target utilization, the autoscaler scales down the number of instances until it reaches the minimum number of instances you specified or until the average CPU of your instances reaches the target utilization.\n\nIf the average CPU is above the target utilization, the autoscaler scales up until it reaches the maximum number of instances you specified or until the average utilization reaches the target utilization.",
+ "format": "double",
+ "type": "number"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "AutoscalingPolicyCustomMetricUtilization": {
+ "description": "Custom utilization metric policy.",
+ "id": "AutoscalingPolicyCustomMetricUtilization",
+ "properties": {
+ "metric": {
+ "description": "The identifier (type) of the Stackdriver Monitoring metric. The metric cannot have negative values.\n\nThe metric must have a value type of INT64 or DOUBLE.",
+ "type": "string"
+ },
+ "utilizationTarget": {
+ "description": "The target value of the metric that autoscaler should maintain. This must be a positive value. A utilization metric scales number of virtual machines handling requests to increase or decrease proportionally to the metric.\n\nFor example, a good metric to use as a utilization_target is compute.googleapis.com/instance/network/received_bytes_count. The autoscaler will work to keep this value constant for each of the instances.",
+ "format": "double",
+ "type": "number"
+ },
+ "utilizationTargetType": {
+ "description": "Defines how target utilization value is expressed for a Stackdriver Monitoring metric. Either GAUGE, DELTA_PER_SECOND, or DELTA_PER_MINUTE. If not specified, the default is GAUGE.",
+ "enum": [
+ "DELTA_PER_MINUTE",
+ "DELTA_PER_SECOND",
+ "GAUGE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RouterAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.routers.delete",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Router resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "AutoscalingPolicyLoadBalancingUtilization": {
+ "description": "Configuration parameters of autoscaling based on load balancing.",
+ "id": "AutoscalingPolicyLoadBalancingUtilization",
+ "properties": {
+ "utilizationTarget": {
+ "description": "Fraction of backend capacity utilization (set in HTTP(s) load balancing configuration) that autoscaler should maintain. Must be a positive float value. If not defined, the default is 0.8.",
+ "format": "double",
+ "type": "number"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "Backend": {
+ "description": "Message containing information of one individual backend.",
+ "id": "Backend",
+ "properties": {
+ "balancingMode": {
+ "description": "Specifies the balancing mode for this backend. For global HTTP(S) or TCP/SSL load balancing, the default is UTILIZATION. Valid values are UTILIZATION, RATE (for HTTP(S)) and CONNECTION (for TCP/SSL).\n\nFor Internal Load Balancing, the default and only supported mode is CONNECTION.",
+ "enum": [
+ "CONNECTION",
+ "RATE",
+ "UTILIZATION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "capacityScaler": {
+ "description": "A multiplier applied to the group's maximum servicing capacity (based on UTILIZATION, RATE or CONNECTION). Default value is 1, which means the group will serve up to 100% of its configured capacity (depending on balancingMode). A setting of 0 means the group is completely drained, offering 0% of its available Capacity. Valid range is [0.0,1.0].\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "group": {
+ "description": "The fully-qualified URL of a Instance Group resource. This instance group defines the list of instances that serve traffic. Member virtual machine instances from each instance group must live in the same zone as the instance group itself. No two backends in a backend service are allowed to use same Instance Group resource.\n\nNote that you must specify an Instance Group resource using the fully-qualified URL, rather than a partial URL.\n\nWhen the BackendService has load balancing scheme INTERNAL, the instance group must be within the same region as the BackendService.",
+ "type": "string"
+ },
+ "maxConnections": {
+ "description": "The max number of simultaneous connections for the group. Can be used with either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxConnectionsPerInstance": {
+ "description": "The max number of simultaneous connections that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either CONNECTION or UTILIZATION balancing modes. For CONNECTION mode, either maxConnections or maxConnectionsPerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxRate": {
+ "description": "The max requests per second (RPS) of the group. Can be used with either RATE or UTILIZATION balancing modes, but required if RATE mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "maxRatePerInstance": {
+ "description": "The max requests per second (RPS) that a single backend instance can handle. This is used to calculate the capacity of the group. Can be used in either balancing mode. For RATE mode, either maxRate or maxRatePerInstance must be set.\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ },
+ "maxUtilization": {
+ "description": "Used when balancingMode is UTILIZATION. This ratio defines the CPU utilization target for the group. The default is 0.8. Valid range is [0.0, 1.0].\n\nThis cannot be used for internal load balancing.",
+ "format": "float",
+ "type": "number"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "BackendBucket": {
+ "description": "A BackendBucket resource. This resource defines a Cloud Storage bucket.",
+ "id": "BackendBucket",
+ "properties": {
+ "bucketName": {
+ "description": "Cloud Storage bucket name.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional textual description of the resource; provided by the client when the resource is created.",
+ "type": "string"
+ },
+ "enableCdn": {
+ "description": "If true, enable Cloud CDN for this BackendBucket.",
+ "type": "boolean"
+ },
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#backendBucket",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ }
},
- "router": {
- "type": "string",
- "description": "Name of the Router resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.routers.get",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "GET",
- "description": "Returns the specified Router resource. Get a list of available routers by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "BackendBucketList": {
+ "description": "Contains a list of BackendBucket resources.",
+ "id": "BackendBucketList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of BackendBucket resources.",
+ "items": {
+ "$ref": "BackendBucket"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendBucketList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "BackendService": {
+ "description": "A BackendService resource. This resource defines a group of backend virtual machines and their serving capacity. (== resource_for v1.backendService ==) (== resource_for beta.backendService ==)",
+ "id": "BackendService",
+ "properties": {
+ "affinityCookieTtlSec": {
+ "description": "Lifetime of cookies in seconds if session_affinity is GENERATED_COOKIE. If set to 0, the cookie is non-persistent and lasts only until the end of the browser session (or equivalent). The maximum allowed value for TTL is one day.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "backends": {
+ "description": "The list of backends that serve this BackendService.",
+ "items": {
+ "$ref": "Backend"
+ },
+ "type": "array"
+ },
+ "cdnPolicy": {
+ "$ref": "BackendServiceCdnPolicy",
+ "description": "Cloud CDN configuration for this BackendService."
+ },
+ "connectionDraining": {
+ "$ref": "ConnectionDraining"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "enableCDN": {
+ "description": "If true, enable Cloud CDN for this BackendService.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "type": "boolean"
+ },
+ "fingerprint": {
+ "description": "Fingerprint of this resource. A hash of the contents stored in this object. This field is used in optimistic locking. This field will be ignored when inserting a BackendService. An up-to-date fingerprint must be provided in order to update the BackendService.",
+ "format": "byte",
+ "type": "string"
+ },
+ "healthChecks": {
+ "description": "The list of URLs to the HttpHealthCheck or HttpsHealthCheck resource for health checking this BackendService. Currently at most one health check can be specified, and a health check is required for Compute Engine backend services. A health check must not be specified for App Engine backend and Cloud Function backend.\n\nFor internal load balancing, a URL to a HealthCheck resource must be specified instead.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "iap": {
+ "$ref": "BackendServiceIAP"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#backendService",
+ "description": "[Output Only] Type of resource. Always compute#backendService for backend services.",
+ "type": "string"
+ },
+ "loadBalancingScheme": {
+ "description": "Indicates whether the backend service will be used with internal or external load balancing. A backend service created for one type of load balancing cannot be used with the other. Possible values are INTERNAL and EXTERNAL.",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "INVALID_LOAD_BALANCING_SCHEME"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "Deprecated in favor of portName. The TCP port to connect on the backend. The default value is 80.\n\nThis cannot be used for internal load balancing.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Name of backend port. The same name should appear in the instance groups referenced by this service. Required when the load balancing scheme is EXTERNAL.\n\nWhen the load balancing scheme is INTERNAL, this field is not used.",
+ "type": "string"
+ },
+ "protocol": {
+ "description": "The protocol this BackendService uses to communicate with backends.\n\nPossible values are HTTP, HTTPS, TCP, and SSL. The default is HTTP.\n\nFor internal load balancing, the possible values are TCP and UDP, and the default is TCP.",
+ "enum": [
+ "HTTP",
+ "HTTPS",
+ "SSL",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional backend service resides. This field is not applicable to global backend services. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sessionAffinity": {
+ "description": "Type of session affinity to use. The default is NONE.\n\nWhen the load balancing scheme is EXTERNAL, can be NONE, CLIENT_IP, or GENERATED_COOKIE.\n\nWhen the load balancing scheme is INTERNAL, can be NONE, CLIENT_IP, CLIENT_IP_PROTO, or CLIENT_IP_PORT_PROTO.\n\nWhen the protocol is UDP, this field is not used.",
+ "enum": [
+ "CLIENT_IP",
+ "CLIENT_IP_PORT_PROTO",
+ "CLIENT_IP_PROTO",
+ "GENERATED_COOKIE",
+ "NONE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How many seconds to wait for the backend before considering it a failed request. Default is 30 seconds.",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "router": {
- "type": "string",
- "description": "Name of the Router resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "Router"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "getRouterStatus": {
- "id": "compute.routers.getRouterStatus",
- "path": "{project}/regions/{region}/routers/{router}/getRouterStatus",
- "httpMethod": "GET",
- "description": "Retrieves runtime information of the specified router.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "BackendServiceAggregatedList": {
+ "description": "Contains a list of BackendServicesScopedList.",
+ "id": "BackendServiceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "BackendServicesScopedList",
+ "description": "Name of the scope containing this set of BackendServices."
+ },
+ "description": "A list of BackendServicesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#backendServiceAggregatedList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "BackendServiceCdnPolicy": {
+ "description": "Message containing Cloud CDN configuration for a backend service.",
+ "id": "BackendServiceCdnPolicy",
+ "properties": {
+ "cacheKeyPolicy": {
+ "$ref": "CacheKeyPolicy",
+ "description": "The CacheKeyPolicy for this CdnPolicy."
+ }
},
- "router": {
- "type": "string",
- "description": "Name of the Router resource to query.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "response": {
- "$ref": "RouterStatusResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.routers.insert",
- "path": "{project}/regions/{region}/routers",
- "httpMethod": "POST",
- "description": "Creates a Router resource in the specified project and region using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "BackendServiceGroupHealth": {
+ "id": "BackendServiceGroupHealth",
+ "properties": {
+ "healthStatus": {
+ "items": {
+ "$ref": "HealthStatus"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendServiceGroupHealth",
+ "description": "[Output Only] Type of resource. Always compute#backendServiceGroupHealth for the health of backend services.",
+ "type": "string"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "BackendServiceIAP": {
+ "description": "Identity-Aware Proxy",
+ "id": "BackendServiceIAP",
+ "properties": {
+ "enabled": {
+ "type": "boolean"
+ },
+ "oauth2ClientId": {
+ "type": "string"
+ },
+ "oauth2ClientSecret": {
+ "type": "string"
+ },
+ "oauth2ClientSecretSha256": {
+ "description": "[Output Only] SHA256 hash value for the field oauth2_client_secret above.",
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.routers.list",
- "path": "{project}/regions/{region}/routers",
- "httpMethod": "GET",
- "description": "Retrieves a list of Router resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "BackendServiceList": {
+ "description": "Contains a list of BackendService resources.",
+ "id": "BackendServiceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of BackendService resources.",
+ "items": {
+ "$ref": "BackendService"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#backendServiceList",
+ "description": "[Output Only] Type of resource. Always compute#backendServiceList for lists of backend services.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "BackendServicesScopedList": {
+ "id": "BackendServicesScopedList",
+ "properties": {
+ "backendServices": {
+ "description": "List of BackendServices contained in this scope.",
+ "items": {
+ "$ref": "BackendService"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of backend services when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "CacheInvalidationRule": {
+ "id": "CacheInvalidationRule",
+ "properties": {
+ "host": {
+ "description": "If set, this invalidation rule will only apply to requests with a Host header matching host.",
+ "type": "string"
+ },
+ "path": {
+ "type": "string"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "CacheKeyPolicy": {
+ "description": "Message containing what to include in the cache key for a request for Cloud CDN.",
+ "id": "CacheKeyPolicy",
+ "properties": {
+ "includeHost": {
+ "description": "If true, requests to different hosts will be cached separately.",
+ "type": "boolean"
+ },
+ "includeProtocol": {
+ "description": "If true, http and https requests will be cached separately.",
+ "type": "boolean"
+ },
+ "includeQueryString": {
+ "description": "If true, include query string parameters in the cache key according to query_string_whitelist and query_string_blacklist. If neither is set, the entire query string will be included. If false, the query string will be excluded from the cache key entirely.",
+ "type": "boolean"
+ },
+ "queryStringBlacklist": {
+ "description": "Names of query string parameters to exclude in cache keys. All other parameters will be included. Either specify query_string_whitelist or query_string_blacklist, not both. '\u0026' and '=' will be percent encoded and not treated as delimiters.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "queryStringWhitelist": {
+ "description": "Names of query string parameters to include in cache keys. All other parameters will be excluded. Either specify query_string_whitelist or query_string_blacklist, not both. '\u0026' and '=' will be percent encoded and not treated as delimiters.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "Commitment": {
+ "description": "Represents a Commitment resource. Creating a Commitment resource means that you are purchasing a committed use contract with an explicit start and end time. You can create commitments based on vCPUs and memory usage and receive discounted rates. For full details, read Signing Up for Committed Use Discounts.\n\nCommitted use discounts are subject to Google Cloud Platform's Service Specific Terms. By purchasing a committed use discount, you agree to these terms. Committed use discounts will not renew, so you must purchase a new commitment to continue receiving discounts. (== resource_for beta.commitments ==) (== resource_for v1.commitments ==)",
+ "id": "Commitment",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "endTimestamp": {
+ "description": "[Output Only] Commitment end time in RFC3339 text format.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#commitment",
+ "description": "[Output Only] Type of the resource. Always compute#commitment for commitments.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "plan": {
+ "description": "The plan for this commitment, which determines duration and discount rate. The currently supported plans are TWELVE_MONTH (1 year), and THIRTY_SIX_MONTH (3 years).",
+ "enum": [
+ "INVALID",
+ "THIRTY_SIX_MONTH",
+ "TWELVE_MONTH"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where this commitment may be used.",
+ "type": "string"
+ },
+ "resources": {
+ "description": "List of commitment amounts for particular resources. Note that VCPU and MEMORY resource commitments must occur together.",
+ "items": {
+ "$ref": "ResourceCommitment"
+ },
+ "type": "array"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "startTimestamp": {
+ "description": "[Output Only] Commitment start time in RFC3339 text format.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] Status of the commitment with regards to eventual expiration (each commitment has an end date defined). One of the following values: NOT_YET_ACTIVE, ACTIVE, EXPIRED.",
+ "enum": [
+ "ACTIVE",
+ "CREATING",
+ "EXPIRED",
+ "NOT_YET_ACTIVE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional, human-readable explanation of the status.",
+ "type": "string"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "RouterList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "patch": {
- "id": "compute.routers.patch",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "PATCH",
- "description": "Patches the specified Router resource with the data included in the request. This method supports PATCH semantics and uses JSON merge patch format and processing rules.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "CommitmentAggregatedList": {
+ "id": "CommitmentAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "CommitmentsScopedList",
+ "description": "[Output Only] Name of the scope containing this set of commitments."
+ },
+ "description": "A list of CommitmentsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#commitmentAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#commitmentAggregatedList for aggregated lists of commitments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "CommitmentList": {
+ "description": "Contains a list of Commitment resources.",
+ "id": "CommitmentList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Commitment resources.",
+ "items": {
+ "$ref": "Commitment"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#commitmentList",
+ "description": "[Output Only] Type of resource. Always compute#commitmentList for lists of commitments.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "CommitmentsScopedList": {
+ "id": "CommitmentsScopedList",
+ "properties": {
+ "commitments": {
+ "description": "[Output Only] List of commitments contained in this scope.",
+ "items": {
+ "$ref": "Commitment"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of commitments when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "router": {
- "type": "string",
- "description": "Name of the Router resource to patch.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "preview": {
- "id": "compute.routers.preview",
- "path": "{project}/regions/{region}/routers/{router}/preview",
- "httpMethod": "POST",
- "description": "Preview fields auto-generated during router create and update operations. Calling this method does NOT create or update the router.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "ConnectionDraining": {
+ "description": "Message containing connection draining configuration.",
+ "id": "ConnectionDraining",
+ "properties": {
+ "drainingTimeoutSec": {
+ "description": "Time for which instance will be drained (not accept new connections, but still work to finish started).",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "CustomerEncryptionKey": {
+ "description": "Represents a customer-supplied encryption key",
+ "id": "CustomerEncryptionKey",
+ "properties": {
+ "rawKey": {
+ "description": "Specifies a 256-bit customer-supplied encryption key, encoded in RFC 4648 base64 to either encrypt or decrypt this resource.",
+ "type": "string"
+ },
+ "sha256": {
+ "description": "[Output only] The RFC 4648 base64 encoded SHA-256 hash of the customer-supplied encryption key that protects this resource.",
+ "type": "string"
+ }
},
- "router": {
- "type": "string",
- "description": "Name of the Router resource to query.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "RoutersPreviewResponse"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "update": {
- "id": "compute.routers.update",
- "path": "{project}/regions/{region}/routers/{router}",
- "httpMethod": "PUT",
- "description": "Updates the specified Router resource with the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "CustomerEncryptionKeyProtectedDisk": {
+ "id": "CustomerEncryptionKeyProtectedDisk",
+ "properties": {
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Decrypts data associated with the disk with a customer-supplied encryption key."
+ },
+ "source": {
+ "description": "Specifies a valid partial or full URL to an existing Persistent Disk resource. This field is only applicable for persistent disks.",
+ "type": "string"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "DeprecationStatus": {
+ "description": "Deprecation status for a public resource.",
+ "id": "DeprecationStatus",
+ "properties": {
+ "deleted": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DELETED. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "deprecated": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to DEPRECATED. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "obsolete": {
+ "description": "An optional RFC3339 timestamp on or after which the state of this resource is intended to change to OBSOLETE. This is only informational and the status will not change unless the client explicitly changes it.",
+ "type": "string"
+ },
+ "replacement": {
+ "description": "The URL of the suggested replacement for a deprecated resource. The suggested replacement resource must be the same kind of resource as the deprecated resource.",
+ "type": "string"
+ },
+ "state": {
+ "description": "The deprecation state of this resource. This can be DEPRECATED, OBSOLETE, or DELETED. Operations which create a new resource using a DEPRECATED resource will return successfully, but with a warning indicating the deprecated resource and recommending its replacement. Operations which use OBSOLETE or DELETED resources will be rejected and result in an error.",
+ "enum": [
+ "DELETED",
+ "DEPRECATED",
+ "OBSOLETE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "Disk": {
+ "description": "A Disk resource. (== resource_for beta.disks ==) (== resource_for v1.disks ==)",
+ "id": "Disk",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the disk using a customer-supplied encryption key.\n\nAfter you encrypt a disk with a customer-supplied key, you must provide the same key if you use the disk later (e.g. to create a disk snapshot or an image, or to attach the disk to a virtual machine).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the disk, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the disk later."
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#disk",
+ "description": "[Output Only] Type of the resource. Always compute#disk for disks.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this disk, which is essentially a hash of the labels set used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve a disk.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this disk. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "lastAttachTimestamp": {
+ "description": "[Output Only] Last attach timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "lastDetachTimestamp": {
+ "description": "[Output Only] Last detach timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "licenses": {
+ "description": "Any applicable publicly visible licenses.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.disks.insert"
+ ]
+ },
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "options": {
+ "description": "Internal use only.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined fully-qualified URL for this resource.",
+ "type": "string"
+ },
+ "sizeGb": {
+ "description": "Size of the persistent disk, specified in GB. You can specify this field when creating a persistent disk using the sourceImage or sourceSnapshot parameter, or specify it alone to create an empty persistent disk.\n\nIf you specify this field along with sourceImage or sourceSnapshot, the value of sizeGb must not be less than the size of the sourceImage or the size of the snapshot. Acceptable values are 1 to 65536, inclusive.",
+ "format": "int64",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "The source image used to create this disk. If the source image is deleted, this field will not be set.\n\nTo create a disk with one of the public operating system images, specify the image by its family name. For example, specify family/debian-8 to use the latest Debian 8 image:\nprojects/debian-cloud/global/images/family/debian-8\n\n\nAlternatively, use a specific version of a public operating system image:\nprojects/debian-cloud/global/images/debian-8-jessie-vYYYYMMDD\n\n\nTo create a disk with a custom image that you created, specify the image name in the following format:\nglobal/images/my-custom-image\n\n\nYou can also specify a custom image by its image family, which returns the latest version of the image in that family. Replace the image name with family/family-name:\nglobal/images/family/my-image-family",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
+ },
+ "sourceImageId": {
+ "description": "[Output Only] The ID value of the image used to create this disk. This value identifies the exact image that was used to create this persistent disk. For example, if you created the persistent disk from an image that was later deleted and recreated under the same name, the source image ID would identify the exact version of the image that was used.",
+ "type": "string"
+ },
+ "sourceSnapshot": {
+ "description": "The source snapshot used to create this disk. You can provide this as a partial or full URL to the resource. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/global/snapshots/snapshot \n- projects/project/global/snapshots/snapshot \n- global/snapshots/snapshot",
+ "type": "string"
+ },
+ "sourceSnapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
+ },
+ "sourceSnapshotId": {
+ "description": "[Output Only] The unique ID of the snapshot used to create this disk. This value identifies the exact snapshot that was used to create this persistent disk. For example, if you created the persistent disk from a snapshot that was later deleted and recreated under the same name, the source snapshot ID would identify the exact version of the snapshot that was used.",
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of disk creation.",
+ "enum": [
+ "CREATING",
+ "FAILED",
+ "READY",
+ "RESTORING"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "type": {
+ "description": "URL of the disk type resource describing which disk type to use to create the disk. Provide this when creating the disk. For example: project/zones/zone/diskTypes/pd-standard or pd-ssd",
+ "type": "string"
+ },
+ "users": {
+ "description": "[Output Only] Links to the users of the disk (attached instances) in form: project/zones/zone/instances/instance",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the disk resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
},
- "router": {
- "type": "string",
- "description": "Name of the Router resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "router"
- ],
- "request": {
- "$ref": "Router"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "routes": {
- "methods": {
- "delete": {
- "id": "compute.routes.delete",
- "path": "{project}/global/routes/{route}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Route resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "DiskAggregatedList": {
+ "id": "DiskAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "DisksScopedList",
+ "description": "[Output Only] Name of the scope containing this set of disks."
+ },
+ "description": "A list of DisksScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#diskAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#diskAggregatedList for aggregated lists of persistent disks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "DiskList": {
+ "description": "A list of Disk resources.",
+ "id": "DiskList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Disk resources.",
+ "items": {
+ "$ref": "Disk"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#diskList",
+ "description": "[Output Only] Type of resource. Always compute#diskList for lists of disks.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "route": {
- "type": "string",
- "description": "Name of the Route resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "route"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.routes.get",
- "path": "{project}/global/routes/{route}",
- "httpMethod": "GET",
- "description": "Returns the specified Route resource. Get a list of available routes by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "DiskMoveRequest": {
+ "id": "DiskMoveRequest",
+ "properties": {
+ "destinationZone": {
+ "description": "The URL of the destination zone to move the disk. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone",
+ "type": "string"
+ },
+ "targetDisk": {
+ "description": "The URL of the target disk to move. This can be a full or partial URL. For example, the following are all valid URLs to a disk: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk",
+ "type": "string"
+ }
},
- "route": {
- "type": "string",
- "description": "Name of the Route resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "route"
- ],
- "response": {
- "$ref": "Route"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.routes.insert",
- "path": "{project}/global/routes",
- "httpMethod": "POST",
- "description": "Creates a Route resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "DiskType": {
+ "description": "A DiskType resource. (== resource_for beta.diskTypes ==) (== resource_for v1.diskTypes ==)",
+ "id": "DiskType",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "defaultDiskSizeGb": {
+ "description": "[Output Only] Server-defined default disk size in GB.",
+ "format": "int64",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "[Output Only] The deprecation status associated with this disk type."
+ },
+ "description": {
+ "description": "[Output Only] An optional description of this resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#diskType",
+ "description": "[Output Only] Type of the resource. Always compute#diskType for disk types.",
+ "type": "string"
+ },
+ "name": {
+ "description": "[Output Only] Name of the resource.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "validDiskSize": {
+ "description": "[Output Only] An optional textual description of the valid disk size, such as \"10GB-10TB\".",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the disk type resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "Route"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.routes.list",
- "path": "{project}/global/routes",
- "httpMethod": "GET",
- "description": "Retrieves the list of Route resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "DiskTypeAggregatedList": {
+ "id": "DiskTypeAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "DiskTypesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of disk types."
+ },
+ "description": "A list of DiskTypesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#diskTypeAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#diskTypeAggregatedList.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "DiskTypeList": {
+ "description": "Contains a list of disk types.",
+ "id": "DiskTypeList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of DiskType resources.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#diskTypeList",
+ "description": "[Output Only] Type of resource. Always compute#diskTypeList for disk types.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "DiskTypesScopedList": {
+ "id": "DiskTypesScopedList",
+ "properties": {
+ "diskTypes": {
+ "description": "[Output Only] List of disk types contained in this scope.",
+ "items": {
+ "$ref": "DiskType"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of disk types when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "DisksResizeRequest": {
+ "id": "DisksResizeRequest",
+ "properties": {
+ "sizeGb": {
+ "description": "The new size of the persistent disk, which is specified in GB.",
+ "format": "int64",
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "RouteList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "snapshots": {
- "methods": {
- "delete": {
- "id": "compute.snapshots.delete",
- "path": "{project}/global/snapshots/{snapshot}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified Snapshot resource. Keep in mind that deleting a single snapshot might not necessarily delete all the data on that snapshot. If any data on the snapshot that is marked for deletion is needed for subsequent snapshots, the data will be moved to the next corresponding snapshot.\n\nFor more information, see Deleting snaphots.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "DisksScopedList": {
+ "id": "DisksScopedList",
+ "properties": {
+ "disks": {
+ "description": "[Output Only] List of disks contained in this scope.",
+ "items": {
+ "$ref": "Disk"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of disks when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "Firewall": {
+ "description": "Represents a Firewall resource.",
+ "id": "Firewall",
+ "properties": {
+ "allowed": {
+ "description": "The list of ALLOW rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a permitted connection.",
+ "items": {
+ "properties": {
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "denied": {
+ "description": "The list of DENY rules specified by this firewall. Each rule specifies a protocol and port-range tuple that describes a denied connection.",
+ "items": {
+ "properties": {
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. The protocol type is required when creating a firewall rule. This value can either be one of the following well known protocol strings (tcp, udp, icmp, esp, ah, ipip, sctp), or the IP protocol number.",
+ "type": "string"
+ },
+ "ports": {
+ "description": "An optional list of ports to which this rule applies. This field is only applicable for UDP or TCP protocol. Each entry must be either an integer or a range. If not specified, this rule applies to connections through any port.\n\nExample inputs include: [\"22\"], [\"80\",\"443\"], and [\"12345-12349\"].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "destinationRanges": {
+ "description": "If destination ranges are specified, the firewall will apply only to traffic that has destination IP address in these ranges. These ranges must be expressed in CIDR format. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "direction": {
+ "description": "Direction of traffic to which this firewall applies; default is INGRESS. Note: For INGRESS traffic, it is NOT supported to specify destinationRanges; For EGRESS traffic, it is NOT supported to specify sourceRanges OR sourceTags.",
+ "enum": [
+ "EGRESS",
+ "INGRESS"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#firewall",
+ "description": "[Output Only] Type of the resource. Always compute#firewall for firewall rules.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.firewalls.insert",
+ "compute.firewalls.patch"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "URL of the network resource for this firewall rule. If not specified when creating a firewall rule, the default network is used:\nglobal/networks/default\nIf you choose to specify this property, you can specify the network as a full or partial URL. For example, the following are all valid URLs: \n- https://www.googleapis.com/compute/v1/projects/myproject/global/networks/my-network \n- projects/myproject/global/networks/my-network \n- global/networks/default",
+ "type": "string"
+ },
+ "priority": {
+ "description": "Priority for this rule. This is an integer between 0 and 65535, both inclusive. When not specified, the value assumed is 1000. Relative priorities determine precedence of conflicting rules. Lower value of priority implies higher precedence (eg, a rule with priority 0 has higher precedence than a rule with priority 1). DENY rules take precedence over ALLOW rules having equal priority.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sourceRanges": {
+ "description": "If source ranges are specified, the firewall will apply only to traffic that has source IP address in these ranges. These ranges must be expressed in CIDR format. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply. Only IPv4 is supported.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceServiceAccounts": {
+ "description": "If source service accounts are specified, the firewall will apply only to traffic originating from an instance with a service account in this list. Source service accounts cannot be used to control traffic to an instance's external IP address because service accounts are associated with an instance, not an IP address. sourceRanges can be set at the same time as sourceServiceAccounts. If both are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP belongs to an instance with service account listed in sourceServiceAccount. The connection does not need to match both properties for the firewall to apply. sourceServiceAccounts cannot be used at the same time as sourceTags or targetTags.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "sourceTags": {
+ "description": "If source tags are specified, the firewall rule applies only to traffic with source IPs that match the primary network interfaces of VM instances that have the tag and are in the same VPC network. Source tags cannot be used to control traffic to an instance's external IP address, it only applies to traffic between instances in the same virtual network. Because tags are associated with instances, not IP addresses. One or both of sourceRanges and sourceTags may be set. If both properties are set, the firewall will apply to traffic that has source IP address within sourceRanges OR the source IP that belongs to a tag listed in the sourceTags property. The connection does not need to match both properties for the firewall to apply.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetServiceAccounts": {
+ "description": "A list of service accounts indicating sets of instances located in the network that may make network connections as specified in allowed[]. targetServiceAccounts cannot be used at the same time as targetTags or sourceTags. If neither targetServiceAccounts nor targetTags are specified, the firewall rule applies to all instances on the specified network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetTags": {
+ "description": "A list of tags that controls which instances the firewall rule applies to. If targetTags are specified, then the firewall rule applies only to instances in the VPC network that have one of those tags. If no targetTags are specified, the firewall rule applies to all instances on the specified network.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "snapshot": {
- "type": "string",
- "description": "Name of the Snapshot resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "snapshot"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.snapshots.get",
- "path": "{project}/global/snapshots/{snapshot}",
- "httpMethod": "GET",
- "description": "Returns the specified Snapshot resource. Get a list of available snapshots by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "FirewallList": {
+ "description": "Contains a list of firewalls.",
+ "id": "FirewallList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Firewall resources.",
+ "items": {
+ "$ref": "Firewall"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#firewallList",
+ "description": "[Output Only] Type of resource. Always compute#firewallList for lists of firewalls.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "snapshot": {
- "type": "string",
- "description": "Name of the Snapshot resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "snapshot"
- ],
- "response": {
- "$ref": "Snapshot"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "list": {
- "id": "compute.snapshots.list",
- "path": "{project}/global/snapshots",
- "httpMethod": "GET",
- "description": "Retrieves the list of Snapshot resources contained within the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "ForwardingRule": {
+ "description": "A ForwardingRule resource. A ForwardingRule resource specifies which pool of target virtual machines to forward a packet to if it matches the given [IPAddress, IPProtocol, ports] tuple. (== resource_for beta.forwardingRules ==) (== resource_for v1.forwardingRules ==) (== resource_for beta.globalForwardingRules ==) (== resource_for v1.globalForwardingRules ==) (== resource_for beta.regionForwardingRules ==) (== resource_for v1.regionForwardingRules ==)",
+ "id": "ForwardingRule",
+ "properties": {
+ "IPAddress": {
+ "description": "The IP address that this forwarding rule is serving on behalf of.\n\nAddresses are restricted based on the forwarding rule's load balancing scheme (EXTERNAL or INTERNAL) and scope (global or regional).\n\nWhen the load balancing scheme is EXTERNAL, for global forwarding rules, the address must be a global IP, and for regional forwarding rules, the address must live in the same region as the forwarding rule. If this field is empty, an ephemeral IPv4 address from the same scope (global or regional) will be assigned. A regional forwarding rule supports IPv4 only. A global forwarding rule supports either IPv4 or IPv6.\n\nWhen the load balancing scheme is INTERNAL, this can only be an RFC 1918 IP address belonging to the network/subnet configured for the forwarding rule. By default, if this field is empty, an ephemeral internal IP address will be automatically allocated from the IP range of the subnet or network configured for this forwarding rule.\n\nAn address can be specified either by a literal IP address or a URL reference to an existing Address resource. The following examples are all valid: \n- 100.1.2.3 \n- https://www.googleapis.com/compute/v1/projects/project/regions/region/addresses/address \n- projects/project/regions/region/addresses/address \n- regions/region/addresses/address \n- global/addresses/address \n- address",
+ "type": "string"
+ },
+ "IPProtocol": {
+ "description": "The IP protocol to which this rule applies. Valid options are TCP, UDP, ESP, AH, SCTP or ICMP.\n\nWhen the load balancing scheme is INTERNAL, only TCP and UDP are valid.",
+ "enum": [
+ "AH",
+ "ESP",
+ "ICMP",
+ "SCTP",
+ "TCP",
+ "UDP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "backendService": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the BackendService resource to receive the matched traffic.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "ipVersion": {
+ "description": "The IP Version that will be used by this forwarding rule. Valid options are IPV4 or IPV6. This can only be specified for a global forwarding rule.",
+ "enum": [
+ "IPV4",
+ "IPV6",
+ "UNSPECIFIED_VERSION"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#forwardingRule",
+ "description": "[Output Only] Type of the resource. Always compute#forwardingRule for Forwarding Rule resources.",
+ "type": "string"
+ },
+ "loadBalancingScheme": {
+ "description": "This signifies what the ForwardingRule will be used for and can only take the following values: INTERNAL, EXTERNAL The value of INTERNAL means that this will be used for Internal Network Load Balancing (TCP, UDP). The value of EXTERNAL means that this will be used for External Load Balancing (HTTP(S) LB, External TCP/UDP LB, SSL Proxy)",
+ "enum": [
+ "EXTERNAL",
+ "INTERNAL",
+ "INVALID"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "network": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the network that the load balanced IP should belong to for this Forwarding Rule. If this field is not specified, the default network will be used.",
+ "type": "string"
+ },
+ "portRange": {
+ "description": "This field is used along with the target field for TargetHttpProxy, TargetHttpsProxy, TargetSslProxy, TargetTcpProxy, TargetVpnGateway, TargetPool, TargetInstance.\n\nApplicable only when IPProtocol is TCP, UDP, or SCTP, only packets addressed to ports in the specified range will be forwarded to target. Forwarding rules with the same [IPAddress, IPProtocol] pair must have disjoint port ranges.\n\nSome types of forwarding target have constraints on the acceptable ports: \n- TargetHttpProxy: 80, 8080 \n- TargetHttpsProxy: 443 \n- TargetTcpProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1688, 1883, 5222 \n- TargetSslProxy: 25, 43, 110, 143, 195, 443, 465, 587, 700, 993, 995, 1688, 1883, 5222 \n- TargetVpnGateway: 500, 4500",
+ "type": "string"
+ },
+ "ports": {
+ "description": "This field is used along with the backend_service field for internal load balancing.\n\nWhen the load balancing scheme is INTERNAL, a single port or a comma separated list of ports can be configured. Only packets addressed to these ports will be forwarded to the backends configured with this forwarding rule.\n\nYou may specify a maximum of up to 5 ports.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "region": {
+ "description": "[Output Only] URL of the region where the regional forwarding rule resides. This field is not applicable to global forwarding rules. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "subnetwork": {
+ "description": "This field is not used for external load balancing.\n\nFor internal load balancing, this field identifies the subnetwork that the load balanced IP should belong to for this Forwarding Rule.\n\nIf the network specified is in auto subnet mode, this field is optional. However, if the network is in custom subnet mode, a subnetwork must be specified.",
+ "type": "string"
+ },
+ "target": {
+ "description": "The URL of the target resource to receive the matched traffic. For regional forwarding rules, this target must live in the same region as the forwarding rule. For global forwarding rules, this target must be a global load balancing resource. The forwarded traffic must be of a type appropriate to the target object.",
+ "type": "string"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "ForwardingRuleAggregatedList": {
+ "id": "ForwardingRuleAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "ForwardingRulesScopedList",
+ "description": "Name of the scope containing this set of addresses."
+ },
+ "description": "A list of ForwardingRulesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#forwardingRuleAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#forwardingRuleAggregatedList for lists of forwarding rules.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "ForwardingRuleList": {
+ "description": "Contains a list of ForwardingRule resources.",
+ "id": "ForwardingRuleList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of ForwardingRule resources.",
+ "items": {
+ "$ref": "ForwardingRule"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#forwardingRuleList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "ForwardingRulesScopedList": {
+ "id": "ForwardingRulesScopedList",
+ "properties": {
+ "forwardingRules": {
+ "description": "List of forwarding rules contained in this scope.",
+ "items": {
+ "$ref": "ForwardingRule"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "Informational warning which replaces the list of forwarding rules when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SnapshotList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setLabels": {
- "id": "compute.snapshots.setLabels",
- "path": "{project}/global/snapshots/{resource}/setLabels",
- "httpMethod": "POST",
- "description": "Sets the labels on a snapshot. To learn more about labels, read the Labeling Resources documentation.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "GlobalSetLabelsRequest": {
+ "id": "GlobalSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "The fingerprint of the previous set of labels for this resource, used to detect conflicts. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash when updating or changing labels. Make a get() request to the resource to get the latest fingerprint.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "A list of labels to apply for this resource. Each label key \u0026 value must comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash. For example, \"webserver-frontend\": \"images\". A label value can also be empty (e.g. \"my-label\": \"\").",
+ "type": "object"
+ }
},
- "resource": {
- "type": "string",
- "description": "Name of the resource for this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9_]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "resource"
- ],
- "request": {
- "$ref": "GlobalSetLabelsRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "sslCertificates": {
- "methods": {
- "delete": {
- "id": "compute.sslCertificates.delete",
- "path": "{project}/global/sslCertificates/{sslCertificate}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified SslCertificate resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "GuestOsFeature": {
+ "description": "Guest OS features.",
+ "id": "GuestOsFeature",
+ "properties": {
+ "type": {
+ "description": "The ID of a supported feature. Read Enabling guest operating system features to see a list of available options.",
+ "enum": [
+ "FEATURE_TYPE_UNSPECIFIED",
+ "MULTI_IP_SUBNET",
+ "SECURE_BOOT",
+ "UEFI_COMPATIBLE",
+ "VIRTIO_SCSI_MULTIQUEUE",
+ "WINDOWS"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "HTTPHealthCheck": {
+ "id": "HTTPHealthCheck",
+ "properties": {
+ "host": {
+ "description": "The value of the host header in the HTTP health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 80. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTP health check request. The default value is /.",
+ "type": "string"
+ }
},
- "sslCertificate": {
- "type": "string",
- "description": "Name of the SslCertificate resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslCertificate"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.sslCertificates.get",
- "path": "{project}/global/sslCertificates/{sslCertificate}",
- "httpMethod": "GET",
- "description": "Returns the specified SslCertificate resource. Get a list of available SSL certificates by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "HTTPSHealthCheck": {
+ "id": "HTTPSHealthCheck",
+ "properties": {
+ "host": {
+ "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the health check request. The default value is 443. Valid values are 1 through 65535.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "portName": {
+ "description": "Port name as defined in InstanceGroup#NamedPort#name. If both port and port_name are defined, port takes precedence.",
+ "type": "string"
+ },
+ "proxyHeader": {
+ "description": "Specifies the type of proxy header to append before sending data to the backend, either NONE or PROXY_V1. The default is NONE.",
+ "enum": [
+ "NONE",
+ "PROXY_V1"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTPS health check request. The default value is /.",
+ "type": "string"
+ }
},
- "sslCertificate": {
- "type": "string",
- "description": "Name of the SslCertificate resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "sslCertificate"
- ],
- "response": {
- "$ref": "SslCertificate"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.sslCertificates.insert",
- "path": "{project}/global/sslCertificates",
- "httpMethod": "POST",
- "description": "Creates a SslCertificate resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "HealthCheck": {
+ "description": "An HealthCheck resource. This resource defines a template for how individual virtual machines should be checked for health, via one of the supported protocols.",
+ "id": "HealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in 3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "httpHealthCheck": {
+ "$ref": "HTTPHealthCheck"
+ },
+ "httpsHealthCheck": {
+ "$ref": "HTTPSHealthCheck"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#healthCheck",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sslHealthCheck": {
+ "$ref": "SSLHealthCheck"
+ },
+ "tcpHealthCheck": {
+ "$ref": "TCPHealthCheck"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "type": {
+ "description": "Specifies the type of the healthCheck, either TCP, SSL, HTTP or HTTPS. If not specified, the default is TCP. Exactly one of the protocol-specific health check field must be specified, which must match type field.",
+ "enum": [
+ "HTTP",
+ "HTTPS",
+ "INVALID",
+ "SSL",
+ "TCP"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "SslCertificate"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.sslCertificates.list",
- "path": "{project}/global/sslCertificates",
- "httpMethod": "GET",
- "description": "Retrieves the list of SslCertificate resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "HealthCheckList": {
+ "description": "Contains a list of HealthCheck resources.",
+ "id": "HealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HealthCheck resources.",
+ "items": {
+ "$ref": "HealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#healthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "HealthCheckReference": {
+ "description": "A full or valid partial URL to a health check. For example, the following are valid URLs: \n- https://www.googleapis.com/compute/beta/projects/project-id/global/httpHealthChecks/health-check \n- projects/project-id/global/httpHealthChecks/health-check \n- global/httpHealthChecks/health-check",
+ "id": "HealthCheckReference",
+ "properties": {
+ "healthCheck": {
+ "type": "string"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "HealthStatus": {
+ "id": "HealthStatus",
+ "properties": {
+ "healthState": {
+ "description": "Health state of the instance.",
+ "enum": [
+ "HEALTHY",
+ "UNHEALTHY"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "instance": {
+ "description": "URL of the instance resource.",
+ "type": "string"
+ },
+ "ipAddress": {
+ "description": "The IP address represented by this resource.",
+ "type": "string"
+ },
+ "port": {
+ "description": "The port on the instance.",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "HostRule": {
+ "description": "UrlMaps A host-matching rule for a URL. If matched, will use the named PathMatcher to select the BackendService.",
+ "id": "HostRule",
+ "properties": {
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "hosts": {
+ "description": "The list of host patterns to match. They must be valid hostnames, except * will match any string of ([a-z0-9-.]*). In that case, * must be the first character and must be followed in the pattern by either - or ..",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "pathMatcher": {
+ "description": "The name of the PathMatcher to use to match the path portion of the URL if the hostRule matches the URL's host portion.",
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SslCertificateList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- }
- }
- },
- "subnetworks": {
- "methods": {
- "aggregatedList": {
- "id": "compute.subnetworks.aggregatedList",
- "path": "{project}/aggregated/subnetworks",
- "httpMethod": "GET",
- "description": "Retrieves an aggregated list of subnetworks.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "HttpHealthCheck": {
+ "description": "An HttpHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTP.",
+ "id": "HttpHealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "host": {
+ "description": "The value of the host header in the HTTP health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#httpHealthCheck",
+ "description": "[Output Only] Type of the resource. Always compute#httpHealthCheck for HTTP health checks.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the HTTP health check request. The default value is 80.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTP health check request. The default value is /.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "HttpHealthCheckList": {
+ "description": "Contains a list of HttpHealthCheck resources.",
+ "id": "HttpHealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HttpHealthCheck resources.",
+ "items": {
+ "$ref": "HttpHealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#httpHealthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "HttpsHealthCheck": {
+ "description": "An HttpsHealthCheck resource. This resource defines a template for how individual instances should be checked for health, via HTTPS.",
+ "id": "HttpsHealthCheck",
+ "properties": {
+ "checkIntervalSec": {
+ "description": "How often (in seconds) to send a health check. The default value is 5 seconds.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "healthyThreshold": {
+ "description": "A so-far unhealthy instance will be marked healthy after this many consecutive successes. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "host": {
+ "description": "The value of the host header in the HTTPS health check request. If left empty (default value), the public IP on behalf of which this health check is performed will be used.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#httpsHealthCheck",
+ "description": "Type of the resource.",
+ "type": "string"
+ },
+ "name": {
+ "description": "Name of the resource. Provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "port": {
+ "description": "The TCP port number for the HTTPS health check request. The default value is 443.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "requestPath": {
+ "description": "The request path of the HTTPS health check request. The default value is \"/\".",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "timeoutSec": {
+ "description": "How long (in seconds) to wait before claiming failure. The default value is 5 seconds. It is invalid for timeoutSec to have a greater value than checkIntervalSec.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "unhealthyThreshold": {
+ "description": "A so-far healthy instance will be marked unhealthy after this many consecutive failures. The default value is 2.",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "HttpsHealthCheckList": {
+ "description": "Contains a list of HttpsHealthCheck resources.",
+ "id": "HttpsHealthCheckList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of HttpsHealthCheck resources.",
+ "items": {
+ "$ref": "HttpsHealthCheck"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#httpsHealthCheckList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "SubnetworkAggregatedList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "delete": {
- "id": "compute.subnetworks.delete",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified subnetwork.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "Image": {
+ "description": "An Image resource. (== resource_for beta.images ==) (== resource_for v1.images ==)",
+ "id": "Image",
+ "properties": {
+ "archiveSizeBytes": {
+ "description": "Size of the image tar.gz archive stored in Google Cloud Storage (in bytes).",
+ "format": "int64",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deprecated": {
+ "$ref": "DeprecationStatus",
+ "description": "The deprecation status associated with this image."
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "diskSizeGb": {
+ "description": "Size of the image when restored onto a persistent disk (in GB).",
+ "format": "int64",
+ "type": "string"
+ },
+ "family": {
+ "description": "The name of the image family to which this image belongs. You can create disks by specifying an image family instead of a specific image name. The image family always returns its latest image that is not deprecated. The name of the image family must comply with RFC1035.",
+ "type": "string"
+ },
+ "guestOsFeatures": {
+ "description": "A list of features to enable on the guest operating system. Applicable only for bootable images. Read Enabling guest operating system features to see a list of available options.",
+ "items": {
+ "$ref": "GuestOsFeature"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "imageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "Encrypts the image using a customer-supplied encryption key.\n\nAfter you encrypt an image with a customer-supplied key, you must provide the same key if you use the image later (e.g. to create a disk from the image).\n\nCustomer-supplied encryption keys do not protect access to metadata of the disk.\n\nIf you do not provide an encryption key when creating the image, then the disk will be encrypted using an automatically generated key and you do not need to provide a key to use the image later."
+ },
+ "kind": {
+ "default": "compute#image",
+ "description": "[Output Only] Type of the resource. Always compute#image for images.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for the labels being applied to this image, which is essentially a hash of the labels used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update labels. You must always provide an up-to-date fingerprint hash in order to update or change labels.\n\nTo see the latest fingerprint, make a get() request to retrieve an image.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this image. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "licenses": {
+ "description": "Any applicable license URI.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "rawDisk": {
+ "description": "The parameters of the raw disk image.",
+ "properties": {
+ "containerType": {
+ "description": "The format used to encode and transmit the block device, which should be TAR. This is just a container and transmission format and not a runtime format. Provided by the client when the disk image is created.",
+ "enum": [
+ "TAR"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "sha1Checksum": {
+ "description": "An optional SHA1 checksum of the disk image before unpackaging; provided by the client when the disk image is created.",
+ "pattern": "[a-f0-9]{40}",
+ "type": "string"
+ },
+ "source": {
+ "annotations": {
+ "required": [
+ "compute.images.insert"
+ ]
+ },
+ "description": "The full Google Cloud Storage URL where the disk image is stored. You must provide either this property or the sourceDisk property but not both.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for the resource.",
+ "type": "string"
+ },
+ "sourceDisk": {
+ "description": "URL of the source disk used to create this image. This can be a full or valid partial URL. You must provide either this property or the rawDisk.source property but not both to create an image. For example, the following are valid values: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/disks/disk \n- projects/project/zones/zone/disks/disk \n- zones/zone/disks/disk",
+ "type": "string"
+ },
+ "sourceDiskEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source disk. Required if the source disk is protected by a customer-supplied encryption key."
+ },
+ "sourceDiskId": {
+ "description": "The ID value of the disk used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given disk name.",
+ "type": "string"
+ },
+ "sourceImage": {
+ "description": "URL of the source image used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image.",
+ "type": "string"
+ },
+ "sourceImageEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source image. Required if the source image is protected by a customer-supplied encryption key."
+ },
+ "sourceImageId": {
+ "description": "[Output Only] The ID value of the image used to create this image. This value may be used to determine whether the image was taken from the current or a previous instance of a given image name.",
+ "type": "string"
+ },
+ "sourceSnapshot": {
+ "description": "URL of the source snapshot used to create this image. This can be a full or valid partial URL. You must provide exactly one of: \n- this property, or \n- the sourceImage property, or \n- the rawDisk.source property, or \n- the sourceDisk property in order to create an image.",
+ "type": "string"
+ },
+ "sourceSnapshotEncryptionKey": {
+ "$ref": "CustomerEncryptionKey",
+ "description": "The customer-supplied encryption key of the source snapshot. Required if the source snapshot is protected by a customer-supplied encryption key."
+ },
+ "sourceSnapshotId": {
+ "description": "[Output Only] The ID value of the snapshot used to create this image. This value may be used to determine whether the snapshot was taken from the current or a previous instance of a given snapshot name.",
+ "type": "string"
+ },
+ "sourceType": {
+ "default": "RAW",
+ "description": "The type of the image used to create this disk. The default and only value is RAW",
+ "enum": [
+ "RAW"
+ ],
+ "enumDescriptions": [
+ ""
+ ],
+ "type": "string"
+ },
+ "status": {
+ "description": "[Output Only] The status of the image. An image can be used to create other resources, such as instances, only after the image has been successfully created and the status is set to READY. Possible values are FAILED, PENDING, or READY.",
+ "enum": [
+ "FAILED",
+ "PENDING",
+ "READY"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "ImageList": {
+ "description": "Contains a list of images.",
+ "id": "ImageList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Image resources.",
+ "items": {
+ "$ref": "Image"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#imageList",
+ "description": "Type of resource.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "Instance": {
+ "description": "An Instance resource. (== resource_for beta.instances ==) (== resource_for v1.instances ==)",
+ "id": "Instance",
+ "properties": {
+ "canIpForward": {
+ "description": "Allows this instance to send and receive packets with non-matching destination or source IPs. This is required if you plan to use this instance to forward routes. For more information, see Enabling IP Forwarding.",
+ "type": "boolean"
+ },
+ "cpuPlatform": {
+ "description": "[Output Only] The CPU platform used by this instance.",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] Creation timestamp in RFC3339 text format.",
+ "type": "string"
+ },
+ "deletionProtection": {
+ "description": "Whether the resource should be protected against deletion.",
+ "type": "boolean"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "disks": {
+ "description": "Array of disks associated with this instance. Persistent disks must be created before you can assign them.",
+ "items": {
+ "$ref": "AttachedDisk"
+ },
+ "type": "array"
+ },
+ "guestAccelerators": {
+ "description": "List of the type and count of accelerator cards attached to the instance.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ },
+ "id": {
+ "description": "[Output Only] The unique identifier for the resource. This identifier is defined by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instance",
+ "description": "[Output Only] Type of the resource. Always compute#instance for instances.",
+ "type": "string"
+ },
+ "labelFingerprint": {
+ "description": "A fingerprint for this request, which is essentially a hash of the metadata's contents and used for optimistic locking. The fingerprint is initially generated by Compute Engine and changes after every request to modify or update metadata. You must always provide an up-to-date fingerprint hash in order to update or change metadata.\n\nTo see the latest fingerprint, make get() request to the instance.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to this instance. These can be later modified by the setLabels method.",
+ "type": "object"
+ },
+ "machineType": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert"
+ ]
+ },
+ "description": "Full or partial URL of the machine type resource to use for this instance, in the format: zones/zone/machineTypes/machine-type. This is provided by the client when the instance is created. For example, the following is a valid partial url to a predefined machine type:\nzones/us-central1-f/machineTypes/n1-standard-1\n\n\nTo create a custom machine type, provide a URL to a machine type in the following format, where CPUS is 1 or an even number up to 32 (2, 4, 6, ... 24, etc), and MEMORY is the total memory for this instance. Memory must be a multiple of 256 MB and must be supplied in MB (e.g. 5 GB of memory is 5120 MB):\nzones/zone/machineTypes/custom-CPUS-MEMORY\n\n\nFor example: zones/us-central1-f/machineTypes/custom-4-5120 \n\nFor a full list of restrictions, read the Specifications for custom machine types.",
+ "type": "string"
+ },
+ "metadata": {
+ "$ref": "Metadata",
+ "description": "The metadata key/value pairs assigned to this instance. This includes custom metadata and predefined keys."
+ },
+ "minCpuPlatform": {
+ "description": "Specifies a minimum CPU platform for the VM instance. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\".",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instances.insert"
+ ]
+ },
+ "description": "The name of the resource, provided by the client when initially creating the resource. The resource name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "networkInterfaces": {
+ "description": "An array of network configurations for this instance. These specify how interfaces are configured to interact with other network services, such as connecting to the internet. Multiple interfaces are supported per instance.",
+ "items": {
+ "$ref": "NetworkInterface"
+ },
+ "type": "array"
+ },
+ "scheduling": {
+ "$ref": "Scheduling",
+ "description": "Sets the scheduling options for this instance."
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "serviceAccounts": {
+ "description": "A list of service accounts, with their specified scopes, authorized for this instance. Only one service account per VM instance is supported.\n\nService accounts generate access tokens that can be accessed through the metadata server and used to authenticate applications on the instance. See Service Accounts for more information.",
+ "items": {
+ "$ref": "ServiceAccount"
+ },
+ "type": "array"
+ },
+ "startRestricted": {
+ "description": "[Output Only] Whether a VM has been restricted for start because Compute Engine has detected suspicious activity.",
+ "type": "boolean"
+ },
+ "status": {
+ "description": "[Output Only] The status of the instance. One of the following values: PROVISIONING, STAGING, RUNNING, STOPPING, STOPPED, SUSPENDING, SUSPENDED, and TERMINATED.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "statusMessage": {
+ "description": "[Output Only] An optional, human-readable explanation of the status.",
+ "type": "string"
+ },
+ "tags": {
+ "$ref": "Tags",
+ "description": "A list of tags to apply to this instance. Tags are used to identify valid sources or targets for network firewalls and are specified by the client during instance creation. The tags can be later modified by the setTags method. Each tag within the list must comply with RFC1035."
+ },
+ "zone": {
+ "description": "[Output Only] URL of the zone where the instance resides. You must specify this field as part of the HTTP request URL. It is not settable as a field in the request body.",
+ "type": "string"
+ }
},
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "expandIpCidrRange": {
- "id": "compute.subnetworks.expandIpCidrRange",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}/expandIpCidrRange",
- "httpMethod": "POST",
- "description": "Expands the IP CIDR range of the subnetwork to a specified value.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceAggregatedList": {
+ "id": "InstanceAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstancesScopedList",
+ "description": "[Output Only] Name of the scope containing this set of instances."
+ },
+ "description": "A list of InstancesScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceAggregatedList",
+ "description": "[Output Only] Type of resource. Always compute#instanceAggregatedList for aggregated lists of Instance resources.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroup": {
+ "description": "InstanceGroups (== resource_for beta.instanceGroups ==) (== resource_for v1.instanceGroups ==) (== resource_for beta.regionInstanceGroups ==) (== resource_for v1.regionInstanceGroups ==)",
+ "id": "InstanceGroup",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this instance group in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "[Output Only] The fingerprint of the named ports. The system uses this fingerprint to detect conflicts when multiple users change the named ports concurrently.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this instance group, generated by the server.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceGroup",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroup for instance groups.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert"
+ ]
+ },
+ "description": "The name of the instance group. The name must be 1-63 characters long, and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "Assigns a name to a port number. For example: {name: \"http\", port: 80}\n\nThis allows the system to reference ports by the assigned name instead of a port number. Named ports can also contain multiple ports. For example: [{name: \"http\", port: 80},{name: \"http\", port: 8080}] \n\nNamed ports apply to all instances in this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "network": {
+ "description": "The URL of the network to which all instances in the instance group belong.",
+ "type": "string"
+ },
+ "region": {
+ "description": "The URL of the region where the instance group is located (for regional resources).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this instance group. The server generates this URL.",
+ "type": "string"
+ },
+ "size": {
+ "description": "[Output Only] The total number of instances in the instance group.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "subnetwork": {
+ "description": "The URL of the subnetwork to which all instances in the instance group belong.",
+ "type": "string"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the instance group is located (for zonal resources).",
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupAggregatedList": {
+ "id": "InstanceGroupAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstanceGroupsScopedList",
+ "description": "The name of the scope that contains this set of instance groups."
+ },
+ "description": "A list of InstanceGroupsScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceGroupAggregatedList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupAggregatedList for aggregated lists of instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to update.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "SubnetworksExpandIpCidrRangeRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.subnetworks.get",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}",
- "httpMethod": "GET",
- "description": "Returns the specified subnetwork. Get a list of available subnetworks list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupList": {
+ "description": "A list of InstanceGroup resources.",
+ "id": "InstanceGroupList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroup resources.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupList for instance group lists.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupManager": {
+ "description": "An Instance Group Manager resource. (== resource_for beta.instanceGroupManagers ==) (== resource_for v1.instanceGroupManagers ==) (== resource_for beta.regionInstanceGroupManagers ==) (== resource_for v1.regionInstanceGroupManagers ==)",
+ "id": "InstanceGroupManager",
+ "properties": {
+ "baseInstanceName": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert"
+ ]
+ },
+ "description": "The base instance name to use for instances in this group. The value must be 1-58 characters long. Instances are named by appending a hyphen and a random four-character string to the base instance name. The base instance name must comply with RFC1035.",
+ "pattern": "[a-z][-a-z0-9]{0,57}",
+ "type": "string"
+ },
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this managed instance group in RFC3339 text format.",
+ "type": "string"
+ },
+ "currentActions": {
+ "$ref": "InstanceGroupManagerActionsSummary",
+ "description": "[Output Only] The list of instance actions and the number of instances in this managed instance group that are scheduled for each of those actions."
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "fingerprint": {
+ "description": "[Output Only] The fingerprint of the resource data. You can use this optional field for optimistic locking when you update the resource.",
+ "format": "byte",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this resource type. The server generates this identifier.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "instanceGroup": {
+ "description": "[Output Only] The URL of the Instance Group resource.",
+ "type": "string"
+ },
+ "instanceTemplate": {
+ "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManager",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManager for managed instance groups.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.insert"
+ ]
+ },
+ "description": "The name of the managed instance group. The name must be 1-63 characters long, and comply with RFC1035.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "Named ports configured for the Instance Groups complementary to this Instance Group Manager.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "region": {
+ "description": "[Output Only] The URL of the region where the managed instance group resides (for regional resources).",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this managed instance group. The server defines this URL.",
+ "type": "string"
+ },
+ "targetPools": {
+ "description": "The URLs for all TargetPool resources to which instances in the instanceGroup field are added. The target pools automatically apply to all of the instances in the managed instance group.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "targetSize": {
+ "annotations": {
+ "required": [
+ "compute.instanceGroupManagers.insert",
+ "compute.regionInstanceGroupManagers.insert"
+ ]
+ },
+ "description": "The target number of running instances for this managed instance group. Deleting or abandoning instances reduces this number. Resizing the group changes this number.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "zone": {
+ "description": "[Output Only] The URL of the zone where the managed instance group is located (for zonal resources).",
+ "type": "string"
+ }
},
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "response": {
- "$ref": "Subnetwork"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.subnetworks.insert",
- "path": "{project}/regions/{region}/subnetworks",
- "httpMethod": "POST",
- "description": "Creates a subnetwork in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupManagerActionsSummary": {
+ "id": "InstanceGroupManagerActionsSummary",
+ "properties": {
+ "abandoning": {
+ "description": "[Output Only] The total number of instances in the managed instance group that are scheduled to be abandoned. Abandoning an instance removes it from the managed instance group without deleting it.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be created or are currently being created. If the group fails to create any of these instances, it tries again until it creates the instance successfully.\n\nIf you have disabled creation retries, this field will not be populated; instead, the creatingWithoutRetries field will be populated.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "creatingWithoutRetries": {
+ "description": "[Output Only] The number of instances that the managed instance group will attempt to create. The group attempts to create each instance only once. If the group fails to create any of these instances, it decreases the group's targetSize value accordingly.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "deleting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be deleted or are currently being deleted.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "none": {
+ "description": "[Output Only] The number of instances in the managed instance group that are running and have no scheduled actions.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "recreating": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be recreated or are currently being being recreated. Recreating an instance deletes the existing root persistent disk and creates a new disk from the image that is defined in the instance template.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "refreshing": {
+ "description": "[Output Only] The number of instances in the managed instance group that are being reconfigured with properties that do not require a restart or a recreate action. For example, setting or removing target pools for the instance.",
+ "format": "int32",
+ "type": "integer"
+ },
+ "restarting": {
+ "description": "[Output Only] The number of instances in the managed instance group that are scheduled to be restarted or are currently being restarted.",
+ "format": "int32",
+ "type": "integer"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupManagerAggregatedList": {
+ "id": "InstanceGroupManagerAggregatedList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "additionalProperties": {
+ "$ref": "InstanceGroupManagersScopedList",
+ "description": "[Output Only] The name of the scope that contains this set of managed instance groups."
+ },
+ "description": "A list of InstanceGroupManagersScopedList resources.",
+ "type": "object"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManagerAggregatedList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerAggregatedList for an aggregated list of managed instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "request": {
- "$ref": "Subnetwork"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.subnetworks.list",
- "path": "{project}/regions/{region}/subnetworks",
- "httpMethod": "GET",
- "description": "Retrieves a list of subnetworks available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupManagerList": {
+ "description": "[Output Only] A list of managed instance groups.",
+ "id": "InstanceGroupManagerList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceGroupManager resources.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupManagerList",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupManagerList for a list of managed instance groups.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupManagersAbandonInstancesRequest": {
+ "id": "InstanceGroupManagersAbandonInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to abandon. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupManagersDeleteInstancesRequest": {
+ "id": "InstanceGroupManagersDeleteInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to delete. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupManagersListManagedInstancesResponse": {
+ "id": "InstanceGroupManagersListManagedInstancesResponse",
+ "properties": {
+ "managedInstances": {
+ "description": "[Output Only] The list of instances in the managed instance group.",
+ "items": {
+ "$ref": "ManagedInstance"
+ },
+ "type": "array"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupManagersRecreateInstancesRequest": {
+ "id": "InstanceGroupManagersRecreateInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The URLs of one or more instances to recreate. This can be a full URL or a partial URL, such as zones/[ZONE]/instances/[INSTANCE_NAME].",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region"
- ],
- "response": {
- "$ref": "SubnetworkList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setPrivateIpGoogleAccess": {
- "id": "compute.subnetworks.setPrivateIpGoogleAccess",
- "path": "{project}/regions/{region}/subnetworks/{subnetwork}/setPrivateIpGoogleAccess",
- "httpMethod": "POST",
- "description": "Set whether VMs in this subnet can access Google services without assigning external IP addresses through Private Google Access.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupManagersScopedList": {
+ "id": "InstanceGroupManagersScopedList",
+ "properties": {
+ "instanceGroupManagers": {
+ "description": "[Output Only] The list of managed instance groups that are contained in the specified project and zone.",
+ "items": {
+ "$ref": "InstanceGroupManager"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] The warning that replaces the list of managed instance groups when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "region": {
- "type": "string",
- "description": "Name of the region scoping this request.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupManagersSetInstanceTemplateRequest": {
+ "id": "InstanceGroupManagersSetInstanceTemplateRequest",
+ "properties": {
+ "instanceTemplate": {
+ "description": "The URL of the instance template that is specified for this managed instance group. The group uses this template to create all new instances in the managed instance group.",
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupManagersSetTargetPoolsRequest": {
+ "id": "InstanceGroupManagersSetTargetPoolsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the target pools information. Use this optional property to prevent conflicts when multiple users change the target pools settings concurrently. Obtain the fingerprint with the instanceGroupManagers.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "targetPools": {
+ "description": "The list of target pool URLs that instances in this managed instance group belong to. The managed instance group applies these target pools to all of the instances in the group. Existing instances and new instances in the group all receive these target pool settings.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "subnetwork": {
- "type": "string",
- "description": "Name of the Subnetwork resource.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "region",
- "subnetwork"
- ],
- "request": {
- "$ref": "SubnetworksSetPrivateIpGoogleAccessRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "targetHttpProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetHttpProxies.delete",
- "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetHttpProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupsAddInstancesRequest": {
+ "id": "InstanceGroupsAddInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of instances to add to the instance group.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupsListInstances": {
+ "id": "InstanceGroupsListInstances",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceWithNamedPorts resources.",
+ "items": {
+ "$ref": "InstanceWithNamedPorts"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceGroupsListInstances",
+ "description": "[Output Only] The resource type, which is always compute#instanceGroupsListInstances for the list of instances in the specified instance group.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetHttpProxies.get",
- "path": "{project}/global/targetHttpProxies/{targetHttpProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetHttpProxy resource. Get a list of available target HTTP proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupsListInstancesRequest": {
+ "id": "InstanceGroupsListInstancesRequest",
+ "properties": {
+ "instanceState": {
+ "description": "A filter for the state of the instances in the instance group. Valid options are ALL or RUNNING. If you do not specify this parameter the list includes all instances regardless of their state.",
+ "enum": [
+ "ALL",
+ "RUNNING"
+ ],
+ "enumDescriptions": [
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "response": {
- "$ref": "TargetHttpProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetHttpProxies.insert",
- "path": "{project}/global/targetHttpProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetHttpProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceGroupsRemoveInstancesRequest": {
+ "id": "InstanceGroupsRemoveInstancesRequest",
+ "properties": {
+ "instances": {
+ "description": "The list of instances to remove from the instance group.",
+ "items": {
+ "$ref": "InstanceReference"
+ },
+ "type": "array"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetHttpProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetHttpProxies.list",
- "path": "{project}/global/targetHttpProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetHttpProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupsScopedList": {
+ "id": "InstanceGroupsScopedList",
+ "properties": {
+ "instanceGroups": {
+ "description": "[Output Only] The list of instance groups that are contained in this scope.",
+ "items": {
+ "$ref": "InstanceGroup"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] An informational warning that replaces the list of instance groups when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceGroupsSetNamedPortsRequest": {
+ "id": "InstanceGroupsSetNamedPortsRequest",
+ "properties": {
+ "fingerprint": {
+ "description": "The fingerprint of the named ports information for this instance group. Use this optional property to prevent conflicts when multiple users change the named ports settings concurrently. Obtain the fingerprint with the instanceGroups.get method. Then, include the fingerprint in your request to ensure that you do not overwrite changes that were applied from another concurrent request.",
+ "format": "byte",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "The list of named ports to set for this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceList": {
+ "description": "Contains a list of instances.",
+ "id": "InstanceList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Instance resources.",
+ "items": {
+ "$ref": "Instance"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceList",
+ "description": "[Output Only] Type of resource. Always compute#instanceList for lists of Instance resources.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceListReferrers": {
+ "description": "Contains a list of instance referrers.",
+ "id": "InstanceListReferrers",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of Reference resources.",
+ "items": {
+ "$ref": "Reference"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceListReferrers",
+ "description": "[Output Only] Type of resource. Always compute#instanceListReferrers for lists of Instance referrers.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetHttpProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setUrlMap": {
- "id": "compute.targetHttpProxies.setUrlMap",
- "path": "{project}/targetHttpProxies/{targetHttpProxy}/setUrlMap",
- "httpMethod": "POST",
- "description": "Changes the URL map for TargetHttpProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceMoveRequest": {
+ "id": "InstanceMoveRequest",
+ "properties": {
+ "destinationZone": {
+ "description": "The URL of the destination zone to move the instance. This can be a full or partial URL. For example, the following are all valid URLs to a zone: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone \n- projects/project/zones/zone \n- zones/zone",
+ "type": "string"
+ },
+ "targetInstance": {
+ "description": "The URL of the target instance to move. This can be a full or partial URL. For example, the following are all valid URLs to an instance: \n- https://www.googleapis.com/compute/v1/projects/project/zones/zone/instances/instance \n- projects/project/zones/zone/instances/instance \n- zones/zone/instances/instance",
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceProperties": {
+ "description": "",
+ "id": "InstanceProperties",
+ "properties": {
+ "canIpForward": {
+ "description": "Enables instances created based on this template to send packets with source IP addresses other than their own and receive packets with destination IP addresses other than their own. If these instances will be used as an IP gateway or it will be set as the next-hop in a Route resource, specify true. If unsure, leave this set to false. See the Enable IP forwarding documentation for more information.",
+ "type": "boolean"
+ },
+ "description": {
+ "description": "An optional text description for the instances that are created from this instance template.",
+ "type": "string"
+ },
+ "disks": {
+ "description": "An array of disks that are associated with the instances that are created from this template.",
+ "items": {
+ "$ref": "AttachedDisk"
+ },
+ "type": "array"
+ },
+ "guestAccelerators": {
+ "description": "A list of guest accelerator cards' type and count to use for instances created from the instance template.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "description": "Labels to apply to instances that are created from this template.",
+ "type": "object"
+ },
+ "machineType": {
+ "annotations": {
+ "required": [
+ "compute.instanceTemplates.insert"
+ ]
+ },
+ "description": "The machine type to use for instances that are created from this template.",
+ "type": "string"
+ },
+ "metadata": {
+ "$ref": "Metadata",
+ "description": "The metadata key/value pairs to assign to instances that are created from this template. These pairs can consist of custom metadata or predefined keys. See Project and instance metadata for more information."
+ },
+ "minCpuPlatform": {
+ "description": "Minimum cpu/platform to be used by this instance. The instance may be scheduled on the specified or newer cpu/platform. Applicable values are the friendly names of CPU platforms, such as minCpuPlatform: \"Intel Haswell\" or minCpuPlatform: \"Intel Sandy Bridge\". For more information, read Specifying a Minimum CPU Platform.",
+ "type": "string"
+ },
+ "networkInterfaces": {
+ "description": "An array of network access configurations for this interface.",
+ "items": {
+ "$ref": "NetworkInterface"
+ },
+ "type": "array"
+ },
+ "scheduling": {
+ "$ref": "Scheduling",
+ "description": "Specifies the scheduling options for the instances that are created from this template."
+ },
+ "serviceAccounts": {
+ "description": "A list of service accounts with specified scopes. Access tokens for these service accounts are available to the instances that are created from this template. Use metadata queries to obtain the access tokens for these instances.",
+ "items": {
+ "$ref": "ServiceAccount"
+ },
+ "type": "array"
+ },
+ "tags": {
+ "$ref": "Tags",
+ "description": "A list of tags to apply to the instances that are created from this template. The tags identify valid sources or targets for network firewalls. The setTags method can modify this list of tags. Each tag within the list must comply with RFC1035."
+ }
},
- "targetHttpProxy": {
- "type": "string",
- "description": "Name of the TargetHttpProxy to set a URL map for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpProxy"
- ],
- "request": {
- "$ref": "UrlMapReference"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- }
- }
- },
- "targetHttpsProxies": {
- "methods": {
- "delete": {
- "id": "compute.targetHttpsProxies.delete",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
- "httpMethod": "DELETE",
- "description": "Deletes the specified TargetHttpsProxy resource.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceReference": {
+ "id": "InstanceReference",
+ "properties": {
+ "instance": {
+ "description": "The URL for a specific instance.",
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "InstanceTemplate": {
+ "description": "An Instance Template resource. (== resource_for beta.instanceTemplates ==) (== resource_for v1.instanceTemplates ==)",
+ "id": "InstanceTemplate",
+ "properties": {
+ "creationTimestamp": {
+ "description": "[Output Only] The creation timestamp for this instance template in RFC3339 text format.",
+ "type": "string"
+ },
+ "description": {
+ "description": "An optional description of this resource. Provide this property when you create the resource.",
+ "type": "string"
+ },
+ "id": {
+ "description": "[Output Only] A unique identifier for this instance template. The server defines this identifier.",
+ "format": "uint64",
+ "type": "string"
+ },
+ "kind": {
+ "default": "compute#instanceTemplate",
+ "description": "[Output Only] The resource type, which is always compute#instanceTemplate for instance templates.",
+ "type": "string"
+ },
+ "name": {
+ "annotations": {
+ "required": [
+ "compute.instanceTemplates.insert"
+ ]
+ },
+ "description": "Name of the resource; provided by the client when the resource is created. The name must be 1-63 characters long, and comply with RFC1035. Specifically, the name must be 1-63 characters long and match the regular expression `[a-z]([-a-z0-9]*[a-z0-9])?` which means the first character must be a lowercase letter, and all following characters must be a dash, lowercase letter, or digit, except the last character, which cannot be a dash.",
+ "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
+ "type": "string"
+ },
+ "properties": {
+ "$ref": "InstanceProperties",
+ "description": "The instance properties for this instance template."
+ },
+ "selfLink": {
+ "description": "[Output Only] The URL for this instance template. The server defines this URL.",
+ "type": "string"
+ }
},
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to delete.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "get": {
- "id": "compute.targetHttpsProxies.get",
- "path": "{project}/global/targetHttpsProxies/{targetHttpsProxy}",
- "httpMethod": "GET",
- "description": "Returns the specified TargetHttpsProxy resource. Get a list of available target HTTPS proxies by making a list() request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceTemplateList": {
+ "description": "A list of instance templates.",
+ "id": "InstanceTemplateList",
+ "properties": {
+ "id": {
+ "description": "[Output Only] Unique identifier for the resource; defined by the server.",
+ "type": "string"
+ },
+ "items": {
+ "description": "A list of InstanceTemplate resources.",
+ "items": {
+ "$ref": "InstanceTemplate"
+ },
+ "type": "array"
+ },
+ "kind": {
+ "default": "compute#instanceTemplateList",
+ "description": "[Output Only] The resource type, which is always compute#instanceTemplatesListResponse for instance template lists.",
+ "type": "string"
+ },
+ "nextPageToken": {
+ "description": "[Output Only] This token allows you to get the next page of results for list requests. If the number of results is larger than maxResults, use the nextPageToken as a value for the query parameter pageToken in the next list request. Subsequent list requests will have their own nextPageToken to continue paging through the results.",
+ "type": "string"
+ },
+ "selfLink": {
+ "description": "[Output Only] Server-defined URL for this resource.",
+ "type": "string"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning message.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to return.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "response": {
- "$ref": "TargetHttpsProxy"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "insert": {
- "id": "compute.targetHttpsProxies.insert",
- "path": "{project}/global/targetHttpsProxies",
- "httpMethod": "POST",
- "description": "Creates a TargetHttpsProxy resource in the specified project using the data included in the request.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstanceWithNamedPorts": {
+ "id": "InstanceWithNamedPorts",
+ "properties": {
+ "instance": {
+ "description": "[Output Only] The URL of the instance.",
+ "type": "string"
+ },
+ "namedPorts": {
+ "description": "[Output Only] The named ports that belong to this instance group.",
+ "items": {
+ "$ref": "NamedPort"
+ },
+ "type": "array"
+ },
+ "status": {
+ "description": "[Output Only] The status of the instance.",
+ "enum": [
+ "PROVISIONING",
+ "RUNNING",
+ "STAGING",
+ "STOPPED",
+ "STOPPING",
+ "SUSPENDED",
+ "SUSPENDING",
+ "TERMINATED"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "request": {
- "$ref": "TargetHttpsProxy"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "list": {
- "id": "compute.targetHttpsProxies.list",
- "path": "{project}/global/targetHttpsProxies",
- "httpMethod": "GET",
- "description": "Retrieves the list of TargetHttpsProxy resources available to the specified project.",
- "parameters": {
- "filter": {
- "type": "string",
- "description": "Sets a filter {expression} for filtering listed resources. Your {expression} must be in the format: field_name comparison_string literal_string.\n\nThe field_name is the name of the field you want to compare. Only atomic field types are supported (string, number, boolean). The comparison_string must be either eq (equals) or ne (not equals). The literal_string is the string value to filter to. The literal value must be valid for the type of field you are filtering by (string, number, boolean). For string fields, the literal value is interpreted as a regular expression using RE2 syntax. The literal value must match the entire field.\n\nFor example, to filter for instances that do not have a name of example-instance, you would use name ne example-instance.\n\nYou can filter on nested fields. For example, you could filter on instances that have set the scheduling.automaticRestart field to true. Use filtering on nested fields to take advantage of labels to organize and search for results based on label values.\n\nTo filter on multiple expressions, provide each separate expression within parentheses. For example, (scheduling.automaticRestart eq true) (zone eq us-central1-f). Multiple expressions are treated as AND expressions, meaning that resources must match all expressions to pass the filters.",
- "location": "query"
+ "type": "object"
+ },
+ "InstancesScopedList": {
+ "id": "InstancesScopedList",
+ "properties": {
+ "instances": {
+ "description": "[Output Only] List of instances contained in this scope.",
+ "items": {
+ "$ref": "Instance"
+ },
+ "type": "array"
+ },
+ "warning": {
+ "description": "[Output Only] Informational warning which replaces the list of instances when the list is empty.",
+ "properties": {
+ "code": {
+ "description": "[Output Only] A warning code, if applicable. For example, Compute Engine returns NO_RESULTS_ON_PAGE if there are no results in the response.",
+ "enum": [
+ "CLEANUP_FAILED",
+ "DEPRECATED_RESOURCE_USED",
+ "DEPRECATED_TYPE_USED",
+ "DISK_SIZE_LARGER_THAN_IMAGE_SIZE",
+ "EXPERIMENTAL_TYPE_USED",
+ "EXTERNAL_API_WARNING",
+ "FIELD_VALUE_OVERRIDEN",
+ "INJECTED_KERNELS_DEPRECATED",
+ "MISSING_TYPE_DEPENDENCY",
+ "NEXT_HOP_ADDRESS_NOT_ASSIGNED",
+ "NEXT_HOP_CANNOT_IP_FORWARD",
+ "NEXT_HOP_INSTANCE_NOT_FOUND",
+ "NEXT_HOP_INSTANCE_NOT_ON_NETWORK",
+ "NEXT_HOP_NOT_RUNNING",
+ "NOT_CRITICAL_ERROR",
+ "NO_RESULTS_ON_PAGE",
+ "REQUIRED_TOS_AGREEMENT",
+ "RESOURCE_IN_USE_BY_OTHER_RESOURCE_WARNING",
+ "RESOURCE_NOT_DELETED",
+ "SCHEMA_VALIDATION_IGNORED",
+ "SINGLE_INSTANCE_PROPERTY_TEMPLATE",
+ "UNDECLARED_PROPERTIES",
+ "UNREACHABLE"
+ ],
+ "enumDescriptions": [
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ "",
+ ""
+ ],
+ "type": "string"
+ },
+ "data": {
+ "description": "[Output Only] Metadata about this warning in key: value format. For example:\n\"data\": [ { \"key\": \"scope\", \"value\": \"zones/us-east1-d\" }",
+ "items": {
+ "properties": {
+ "key": {
+ "description": "[Output Only] A key that provides more detail on the warning being returned. For example, for warnings where there are no results in a list request for a particular zone, this key might be scope and the key value might be the zone name. Other examples might be a key indicating a deprecated resource and a suggested replacement, or a warning about invalid network settings (for example, if an instance attempts to perform IP forwarding but is not enabled for IP forwarding).",
+ "type": "string"
+ },
+ "value": {
+ "description": "[Output Only] A warning data value corresponding to the key.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "message": {
+ "description": "[Output Only] A human-readable description of the warning code.",
+ "type": "string"
+ }
+ },
+ "type": "object"
+ }
},
- "maxResults": {
- "type": "integer",
- "description": "The maximum number of results per page that should be returned. If the number of available results is larger than maxResults, Compute Engine returns a nextPageToken that can be used to get the next page of results in subsequent list requests. Acceptable values are 0 to 500, inclusive. (Default: 500)",
- "default": "500",
- "format": "uint32",
- "minimum": "0",
- "location": "query"
+ "type": "object"
+ },
+ "InstancesSetLabelsRequest": {
+ "id": "InstancesSetLabelsRequest",
+ "properties": {
+ "labelFingerprint": {
+ "description": "Fingerprint of the previous set of labels for this resource, used to prevent conflicts. Provide the latest fingerprint value when making a request to add or change labels.",
+ "format": "byte",
+ "type": "string"
+ },
+ "labels": {
+ "additionalProperties": {
+ "type": "string"
+ },
+ "type": "object"
+ }
},
- "orderBy": {
- "type": "string",
- "description": "Sorts list results by a certain order. By default, results are returned in alphanumerical order based on the resource name.\n\nYou can also sort results in descending order based on the creation timestamp using orderBy=\"creationTimestamp desc\". This sorts results based on the creationTimestamp field in reverse chronological order (newest result first). Use this to sort resources like operations so that the newest operation is returned first.\n\nCurrently, only sorting by name or creationTimestamp desc is supported.",
- "location": "query"
+ "type": "object"
+ },
+ "InstancesSetMachineResourcesRequest": {
+ "id": "InstancesSetMachineResourcesRequest",
+ "properties": {
+ "guestAccelerators": {
+ "description": "List of the type and count of accelerator cards attached to the instance.",
+ "items": {
+ "$ref": "AcceleratorConfig"
+ },
+ "type": "array"
+ }
},
- "pageToken": {
- "type": "string",
- "description": "Specifies a page token to use. Set pageToken to the nextPageToken returned by a previous list request to get the next page of results.",
- "location": "query"
+ "type": "object"
+ },
+ "InstancesSetMachineTypeRequest": {
+ "id": "InstancesSetMachineTypeRequest",
+ "properties": {
+ "machineType": {
+ "description": "Full or partial URL of the machine type resource. See Machine Types for a full list of machine types. For example: zones/us-central1-f/machineTypes/n1-standard-1",
+ "type": "string"
+ }
},
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project"
- ],
- "response": {
- "$ref": "TargetHttpsProxyList"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute",
- "https://www.googleapis.com/auth/compute.readonly"
- ]
- },
- "setSslCertificates": {
- "id": "compute.targetHttpsProxies.setSslCertificates",
- "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setSslCertificates",
- "httpMethod": "POST",
- "description": "Replaces SslCertificates for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this request.",
- "required": true,
- "pattern": "(?:(?:[-a-z0-9]{1,63}\\.)*(?:[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?):)?(?:[0-9]{1,19}|(?:[a-z0-9](?:[-a-z0-9]{0,61}[a-z0-9])?))",
- "location": "path"
+ "type": "object"
+ },
+ "InstancesSetMinCpuPlatformRequest": {
+ "id": "InstancesSetMinCpuPlatformRequest",
+ "properties": {
+ "minCpuPlatform": {
+ "description": "Minimum cpu/platform this instance should be started at.",
+ "type": "string"
+ }
},
- "requestId": {
- "type": "string",
- "description": "An optional request ID to identify requests. Specify a unique request ID so that if you must retry your request, the server will know to ignore the request if it has already been completed.\n\nFor example, consider a situation where you make an initial request and the request times out. If you make the request again with the same request ID, the server can check if original operation with the same request ID was received, and if so, will ignore the second request. This prevents clients from accidentally creating duplicate commitments.\n\nThe request ID must be a valid UUID with the exception that zero UUID is not supported (00000000-0000-0000-0000-000000000000).",
- "location": "query"
+ "type": "object"
+ },
+ "InstancesSetServiceAccountRequest": {
+ "id": "InstancesSetServiceAccountRequest",
+ "properties": {
+ "email": {
+ "description": "Email address of the service account.",
+ "type": "string"
+ },
+ "scopes": {
+ "description": "The list of scopes to be made available for this service account.",
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ }
},
- "targetHttpsProxy": {
- "type": "string",
- "description": "Name of the TargetHttpsProxy resource to set an SslCertificates resource for.",
- "required": true,
- "pattern": "[a-z](?:[-a-z0-9]{0,61}[a-z0-9])?",
- "location": "path"
- }
- },
- "parameterOrder": [
- "project",
- "targetHttpsProxy"
- ],
- "request": {
- "$ref": "TargetHttpsProxiesSetSslCertificatesRequest"
- },
- "response": {
- "$ref": "Operation"
- },
- "scopes": [
- "https://www.googleapis.com/auth/cloud-platform",
- "https://www.googleapis.com/auth/compute"
- ]
- },
- "setUrlMap": {
- "id": "compute.targetHttpsProxies.setUrlMap",
- "path": "{project}/targetHttpsProxies/{targetHttpsProxy}/setUrlMap",
- "httpMethod": "POST",
- "description": "Changes the URL map for TargetHttpsProxy.",
- "parameters": {
- "project": {
- "type": "string",
- "description": "Project ID for this reque